我通過CH582的OTA后臺式升級后,想在備份區(qū)存儲(chǔ)歷史數(shù)據(jù),想問一下貴公司按照后臺式升級所劃分的四個(gè)存儲(chǔ)區(qū),備份區(qū)如何進(jìn)行讀寫操作?能否提供示例代碼?
郵箱:個(gè)人信息保護(hù),已隱藏
我通過CH582的OTA后臺式升級后,想在備份區(qū)存儲(chǔ)歷史數(shù)據(jù),想問一下貴公司按照后臺式升級所劃分的四個(gè)存儲(chǔ)區(qū),備份區(qū)如何進(jìn)行讀寫操作?能否提供示例代碼?
郵箱:個(gè)人信息保護(hù),已隱藏
①參考FLASH例程進(jìn)行數(shù)據(jù)讀寫;
②Backup的方式是有對應(yīng)的備份,建議先參考一下例程。
我參考了flash示例代碼寫了兩個(gè)讀寫函數(shù),跑代碼時(shí),出現(xiàn)了藍(lán)牙連接后自動(dòng)斷開的問題,排除了一下發(fā)現(xiàn)屏蔽這個(gè)函數(shù):FLASH_ROM_READ(current_location_addr, TestBuf, 8)程序能正常跑。下面是我仿照示例代碼后的程序:
需要怎么改動(dòng)?
①提供一下藍(lán)牙斷開的原因;
②確定擦除的地方是否為藍(lán)牙協(xié)議?;蛘咂渌匾a占用的地方,防止擦除的地方有問題;
③藍(lán)牙保持連接是需要在連接間隔到來的時(shí)候發(fā)送數(shù)據(jù),可理解為心跳包。如果出現(xiàn)某個(gè)任務(wù)的時(shí)間過長導(dǎo)致藍(lán)牙本身的任務(wù)無法來得及執(zhí)行,則可以出現(xiàn)藍(lán)牙斷開的情況。可以拉個(gè)io查看操作任務(wù)的時(shí)間,并需要將藍(lán)牙連接間隔配置為最長任務(wù)的時(shí)長的兩倍。
我通過串口調(diào)試助手進(jìn)行調(diào)試,藍(lán)牙斷開原因不被打印出來,也不知道什么原因讓它斷開的原因不能被打印出來,我也添加了打印連接斷開狀態(tài)的原因代碼,而且代碼正常跑通時(shí),藍(lán)牙調(diào)試助手主動(dòng)斷開時(shí)能打印它的連接斷開的原因。
這是我放開FLASH_ROM_READ(current_location_addr, TestBuf, 8)這段代碼后藍(lán)牙異常時(shí)串口打印情況(打印不出連接斷開的原因):
這是我藍(lán)牙調(diào)試助手的實(shí)時(shí)日志:
我屏蔽掉FLASH_ROM_READ(current_location_addr, TestBuf, 8)這段代碼后程序能正常跑,也能正常連接和收發(fā)數(shù)據(jù),藍(lán)牙調(diào)試助手主動(dòng)斷開時(shí)也能正常打印連接斷開的原因。
屏蔽的代碼段:
藍(lán)牙調(diào)試助手主動(dòng)斷開時(shí)也能正常打印連接斷開的原因:
①擦除按照4KB(倍數(shù))擦除;
②將藍(lán)牙的連接間隔拉大,reason8是超時(shí)斷開。
藍(lán)牙BLE從機(jī)Peripheral講解一(廣播間隔和連接間隔) - SweetTea_lllpc - 博客園 (cnblogs.com)
③too large noti,檢查noti的打開和發(fā)送數(shù)據(jù)量,參考:
藍(lán)牙BLE從機(jī)Peripheral講解十二(MTU) - SweetTea_lllpc - 博客園 (cnblogs.com)