TI论坛
直播中

陈思远

7年用户 207经验值
私信 关注
[问答]

CC2541 flash操作问题

我有在網上找到一些資訊,發現flash可以被osal_snv_read()與osal_snv_write()操作,我使用下列的程序可以正確讀寫page 0x80的一個byte
#define PG_ID                        0x80
static uint8 test=0;
osal_snv_read(PG_ID, sizeof(test), &test);
osal_snv_write(PG_ID, sizeof(test), &test);

請問這樣如何用smartRF programmer外部寫入同一個address呢??(這邊指的是對page 0x80操作)

回帖(3)

陈思远

2020-3-10 09:56:12
謝謝TY回覆,再請教。
任何位置的意思是,我每次呼叫osal_snv_write(),被寫入的address都會改變嗎? 還是寫入絕對位置?
我查到資料表示page與address的關係,好像是 (page* 2048) / 4 = address,這個對嗎?
若假設今天我寫入的address為 (125*2048) /4 =64000 = 0xFA00 ,要如何使用SmartRF Flash Programmer這此address進行燒錄呢?
举报

陈思远

2020-3-10 10:25:57
謝謝TY回覆,依照您提到的【当然,你熟悉hex格式,自己构造一个hex file,可能可以做到你要的功能。】
這個意思是我先找一個絕對的flash物理address,然後用FlashProgrammer利用裏頭的read flash into hex-file功能讀出,後去對hex file做修改再燒錄這個修改過的hex file嗎? 會有此一問是因為我先前已有詢問過類似的問題,有高人回覆這個解答,如下


題外一問,所以osal_snv_write(),這個寫入的方式是找一個不固定的address寫入,若要讀取此address可以透過ID去對應找出嗎?那是否有可能每次寫入的address都不相同? 若如此萬一page 125, 126使用完畢的話,會造成問題嗎? 還是有可能寫入重複的address,只是讀寫都依靠ID去mapping罷了?
举报

陈思远

2020-3-10 10:38:28
感謝TY回覆
1. 您的意思是把專案中的hex file直接打開,找到你用HalFlashWrite寫入的絕對位置並進行修改後,再燒入裝置嗎? 這樣是省去從flash中讀出的動作沒錯。
可我也不知道為何讀不出flash,如下圖

2. osal_snv_read與osal_snv_write看起來像是自己會記錄address,並offset,做為下一次read/write參考用,不知道我有沒有理解錯?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分