關於flash擦除引起的bug問題小結

2021-07-10 19:39:40 字數 787 閱讀 1850

u16 irlib_get_free_block(const u8 * libno)

get_limitidx_by_libno(libno, &low, &up);

spi_flash_erase(irlibinfoaddr(low), irlibinfoaddr(up - low));

spi_flash_erase(irlibdataaddr(low), irlibdataaddr(up - low));

if (_libno == 0)

else

return low;

}

spi_flash_erase(irlibdataaddr(low), irlibdataaddr(up - low));
typedef

volatile

unsigned

short vu16;

此函式經過傳遞會在傳遞函式裡,出現引數的傳遞錯誤。原因是up和low引數被優化了。

解決的辦法是定義為vu16
void

spi_flash_erase(u32 addr, u32 len)

#endif

while (len > 0)

}

void

spi_flash_erase(u32 addr, s32 len)

#endif

while (len >= 0)

}

上面兩個函式都完美解決了,傳進來的長度不是4k整數的問題。

flash的讀寫擦除

flash快閃儲存器是非易失儲存器,可以對稱為塊的儲存器單元塊進行擦寫和再程式設計。任何 flash 器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。nand 器件執行擦除 操作是十分簡單的,而 nor則要求在進行擦除前 先要將目標塊內所有的位都寫為1...

虛擬路徑引起的bug

之前,遇到乙個問題,就是,專案訪問不了最新產生的pdf檔案。百思不得其解,為什麼,返回 idea 頁面就可以訪問了 真的只是返回 idea 頁面,不進行其他什麼的操作 一直以為是熱部署的問題 後來,在跟技術總管的交流下發現,其實是路徑的問題,pdf 確實生成了,但是它只是儲存在工程目錄中,沒有進入專...

linux下擦除 寫入flash的簡單程式設計參考

linux下對dataflash裝置操作 擦除 寫入檔案 的應用程式,注意,所有的操作必須要使用mtdx的字元裝置。mtdchar的字元裝置驅動程式設計參考!來自 include include include include include include include include incl...