<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > MSPM0在指定Flash地址開(kāi)辟模擬EEPROM

MSPM0在指定Flash地址開(kāi)辟模擬EEPROM

作者:Captain Luo 時(shí)間:2023-10-18 來(lái)源:TI 收藏

在嵌入式系統中,諸如變頻器和伺服驅動(dòng)器等工業(yè)應用,乃至CD播放器等眾多消費電子產(chǎn)品,都需要保存最近的用戶(hù)設置,在下次上電后加載使用。如果使用MCU內置Flash,一般擦寫(xiě)次數限制在10k次,無(wú)法滿(mǎn)足壽命和耐久性要求,所以只能通過(guò)外置實(shí)現。

本文引用地址:http://dyxdggzs.com/article/202310/451710.htm

新推出的系列MCU支持使用Flash,在小容量存儲需求的場(chǎng)合能節省外部芯片,實(shí)現成本控制。系列MCU的Flash容量覆蓋16KB到128KB,其中低32KB的Flash區域支持10萬(wàn)次擦寫(xiě),而剩余區域支持1萬(wàn)次擦寫(xiě),如下圖G3507規格書(shū)所示。所以,在使用FlashEEPROM時(shí),應盡可能選擇低32KB區域。

當使用<=32KB Flash容量產(chǎn)品時(shí),這時(shí)芯片的全部Flash區域都支持10萬(wàn)次擦寫(xiě),只需要根據用戶(hù)代碼量以及存儲需求確定EEPROM的容量大小,然后放置到Flash的尾部地址即可。

當使用>32KB Flash容量產(chǎn)品時(shí),這時(shí)用戶(hù)代碼占用空間可能較大,如果直接選取低32KB尾部地址作為模擬EEPROM,有可能與用戶(hù)代碼地址相沖突而造成誤擦寫(xiě),如下圖所示:

這時(shí)則需要在代碼中向編譯器聲明EEPROM的位置及長(cháng)度,使其安排Code及Data時(shí)避開(kāi)用戶(hù)設置的EEPROM區域。

在CCS IDE with Clang中,需要做兩步修改:

  1. 在.cmd文件中添加Sections的聲明如下圖:

其中EEPROM 為自定義的section名字,0x00001000為自定義的開(kāi)始地址。

2. 在需要使用的.c文件中(如c)添加數組定義如下:

圖片.png

以上語(yǔ)句定義了一個(gè)名為EEPROM、類(lèi)型為uint32,長(cháng)度為4096的const數組,并且存放在上面開(kāi)辟的.EEPROM Sections,其中添加__attribute((used))可以避免編譯器把該數組優(yōu)化掉。

完成以上修改后,編譯器會(huì )避開(kāi)自定義的EEPROM SECONS,代碼只會(huì )存放于.text SECTIONS,這樣修改后就可以保證EEPROM地址和長(cháng)度都落在期望的Lower 32KB區域且不會(huì )與代碼段沖突。

添加修改并編譯后,查看Memory Allocation如下圖,可見(jiàn)EEPROM段與.text代碼段分開(kāi),所定義的EEPROM數組也成功初始化。

最后就可以進(jìn)行Flash的Erase/Program操作,具體可參考drivelib中的flashctl_program_with_ecc等例程,這里不再贅述。

本文針對MSPM0系列MCU使用Flash模擬EEPROM時(shí)需要在Lower 32KB開(kāi)辟EEPROM專(zhuān)用區域的工況,提出使用SECTIONS分配的方式解決與EEPROM和Code可能重合的問(wèn)題,配合SDK的Flash操作,可以很容易實(shí)現EEPROM在任意Flash區域的開(kāi)辟。



關(guān)鍵詞: TI MSPM0 模擬 EEPROM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>