Просмотр исходного кода

update:little_flash完善错误打印

Dozingfiretruck 1 год назад
Родитель
Сommit
155a3085b2
1 измененных файлов с 25 добавлено и 10 удалено
  1. 25 10
      components/little_flash/src/little_flash.c

+ 25 - 10
components/little_flash/src/little_flash.c

@@ -105,7 +105,10 @@ static lf_err_t little_flash_write_enabled(const little_flash_t *lf, uint8_t ena
     lf->spi.transfer(lf,enable?(uint8_t[]){LF_CMD_WRITE_ENABLE}:(uint8_t[]){LF_CMD_WRITE_DISABLE}, 1,LF_NULL,0);
 
     result = little_flash_wait_busy(lf,1);
-    if (result) return result;
+    if (result) {
+        LF_ERROR("Error: Write enabled timeout.");
+        return result;
+    }
 
     if (lf->chip_info.type==LF_DRIVER_NOR_FLASH){
         result |= little_flash_read_status(lf, 0, &status);
@@ -132,7 +135,7 @@ lf_err_t little_flash_init(void){
 }
 
 #ifdef LF_USE_SFDP
-lf_err_t little_flash_sfdp_read(const little_flash_t *lf, uint32_t offset, uint8_t *data, size_t size){
+static inline lf_err_t little_flash_sfdp_read(const little_flash_t *lf, uint32_t offset, uint8_t *data, size_t size){
     lf_err_t result = LF_ERR_OK;
     uint8_t cmd_data[]={LF_CMD_SFDP_REGISTER,(uint8_t)(offset>>16),(uint8_t)(offset>>8),(uint8_t)(offset),0XFF};
     result = lf->spi.transfer(lf,cmd_data, sizeof(cmd_data), data, size);
@@ -207,7 +210,7 @@ lf_err_t little_flash_sfdp_probe(little_flash_t *lf){
     //      [9] = 0x09    0x00    0x00    0x00
 
     memcpy(&sfdp.pt, parameter_table, sfdp.parameter_length*4);
-    LF_DEBUG("sfdp.pt Flash_Memory_Density 0x%08X",sfdp.pt.Flash_Memory_Density);
+    // LF_DEBUG("sfdp.pt Flash_Memory_Density 0x%08X",sfdp.pt.Flash_Memory_Density);
 
     if (sfdp.pt.Flash_Memory_Density & 0x80000000){
         lf->chip_info.capacity = sfdp.pt.Flash_Memory_Density;
@@ -238,13 +241,15 @@ lf_err_t little_flash_sfdp_probe(little_flash_t *lf){
         lf->chip_info.addr_bytes |= LF_ADDR_BYTES_4;
     }
 
+    // LF_DEBUG("capacity: %d bytes",lf->chip_info.capacity);
+    // LF_DEBUG("erase_size: %d bytes",lf->chip_info.erase_size);
+    // LF_DEBUG("prog_size: %d bytes",lf->chip_info.prog_size);
 
-    // LF_DEBUG("capacity %d",lf->chip_info.capacity);
     // LF_DEBUG("erase_cmd 0x%02X",lf->chip_info.erase_cmd);
-    // LF_DEBUG("erase_size %d",lf->chip_info.erase_size);
-    // LF_DEBUG("prog_size %d",lf->chip_info.prog_size);
     // LF_DEBUG("addr_bytes 0x%02X",lf->chip_info.addr_bytes);
 
+    LF_DEBUG("Found a flash chip. Size is %d bytes.",lf->chip_info.capacity);
+
     return result;
 }
 #endif /* LF_USE_SFDP */
@@ -305,8 +310,11 @@ lf_err_t little_flash_deinit(void){
 static lf_err_t little_flash_cheak_erase(const little_flash_t *lf){
     lf_err_t result = LF_ERR_OK;
     uint8_t status;
-    result |= little_flash_wait_busy(lf,2000);
-    if (result) return result;
+    result |= little_flash_wait_busy(lf,4000);
+    if (result) {
+        LF_ERROR("Error: Cheak erase timeout.");
+        return result;
+    }
     if(lf->chip_info.type==LF_DRIVER_NAND_FLASH){
         result |= little_flash_read_status(lf, LF_NANDFLASH_STATUS_REGISTER3, &status);
         if (result || (status&0x04)){
@@ -320,7 +328,10 @@ static lf_err_t little_flash_cheak_write(const little_flash_t *lf){
     lf_err_t result = LF_ERR_OK;
     uint8_t status;
     result |= little_flash_wait_busy(lf,700);
-    if (result) return result;
+    if (result) {
+        LF_ERROR("Error: Cheak write timeout.");
+        return result;
+    }
     if(lf->chip_info.type==LF_DRIVER_NAND_FLASH){
         result |= little_flash_read_status(lf, LF_NANDFLASH_STATUS_REGISTER3, &status);
         if (result||(status&0x08)){
@@ -334,7 +345,10 @@ static lf_err_t little_flash_cheak_read(const little_flash_t *lf){
     lf_err_t result = LF_ERR_OK;
     uint8_t status;
     result |= little_flash_wait_busy(lf,60);
-    if (result) return result;
+    if (result) {
+        LF_ERROR("Error: Cheak read timeout.");
+        return result;
+    }
     if(lf->chip_info.type==LF_DRIVER_NAND_FLASH){
         result |= little_flash_read_status(lf, LF_NANDFLASH_STATUS_REGISTER3, &status);
         // 以下也是要根据不同型号移植的
@@ -387,6 +401,7 @@ lf_err_t little_flash_chip_erase(const little_flash_t *lf){
     }
     return LF_ERR_OK;
 error:
+    LF_ERROR("Error: Chip erase failed.");
     little_flash_write_enabled(lf, LF_DISABLE);
     if (lf->unlock) {
         lf->unlock(lf);