第二十節 協議棧Flash數據存儲

第二十節 協議棧Flash數據存儲
CC254x自帶了256K Flash,這256K的儲存空間不僅可以儲存代碼,也可以儲存用戶的數據,協議棧自帶了SNV管理代碼,我們只需要學會使用即可。
SNV的使用只有兩個函數,分別是讀函數osal_snv_read和寫函數osal_snv_write,在SNV的儲存中,儲存的每個數據都有一個唯一的ID,SNV也正是利用這個ID來管理儲存在Flash中的數據,在BLE的協議棧中,藍牙自身數據儲存用了一部分ID,我們儲存的數據ID不可使用這些ID,在bcomdef.h中有這些ID的定義。




下面我們往SNV中存入串口接收到的數據,然後開發板斷電重啓後讀取出這串字符串並通過串口發送出去,來演示SNV的斷電保存。


    首先我們定義一個我們儲存數據的ID,注意不能和已經有的定義衝突。
#define BLE_NVID_USER_CFG_START         0x80  //!< Start of the USER Configuration NV IDs
#define BLE_NVID_USER_CFG_END           0x89  //!< End of the USER Configuration NV IDs
我們在啓動事件中讀取SNV中0x80的值並通過串口輸出讀取結果,如果讀取成功,則會將讀取結果打印到PC端,如果讀取失敗,則會提示讀取失敗。




在串口接收事件中將接收到的數據存入SNV中,並且也進行相應的提示。




將工程編譯下載後,可以看到現象如下:




第一次上電可以看到,提示讀取數據失敗了,說明第一次運行時是沒有存儲數據的,接下來我們通過串口發送字符串 MT254xboard SNV Test字符串。


 可以看到成功的將我們發送過去的字符存入了SNV中,那是否成功存入呢?我們將開發板斷電後重啓,看看第二次上電是否能夠讀取出我們存入的數據。


重啓後可以發現我們成功的讀取出了第一次存入的數據,說明我們成功的將數據存入了SNV中。
本文章轉載自
http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/69222.aspx
請勿用於商業
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章