現(xiàn)在在rt-thread下,使用其中一個(gè)線程接收IP數(shù)據(jù)編程FLASH。發(fā)現(xiàn)隨機(jī)出現(xiàn)問(wèn)題(概率還極高)。打印信息,擦除地址應(yīng)該是沒(méi)問(wèn)題的:
erase?32K:8038000 erase?32K:8040000 erase?32K:8048000 erase?4K:8050000 erase?4K:8051000 erase?4K:8052000 erase?4K:8053000
????while(e_page_cnt>=8) ????{ ????????FLASH_EraseBlock_32K_Fast(addr); ????????DBG_PRINT("erase?32K:%x\r\n",?addr); ????????addr?+=?32?*?1024; ????????e_page_cnt?-=?8; ????} ????while?(e_page_cnt) ????{ ?????????FLASH_ErasePage(addr); ?????????DBG_PRINT("erase?4K:%x\r\n",?addr); ?????????addr?+=?4?*?1024; ?????????e_page_cnt--; ????}
但是擦除并編程完畢后,重啟就發(fā)現(xiàn)無(wú)法啟動(dòng)。調(diào)試查看FLASH內(nèi)容,發(fā)現(xiàn)0x8038000后面的數(shù)據(jù)的確成功擦寫(xiě)了。但是第一個(gè)4K頁(yè)的數(shù)據(jù)好像也被擦除了(顯示全部39E339E3)。是不是FLASH擦除的時(shí)候,不允許線程切換?
不知道為什么帖子修改之后,上面的空格編程問(wèn)號(hào)了……