MSP430常见问题之FLASH存储类
Q1:用IAR Embedded Workbench for MSP430 通過(guò)JTAG往MSP430上寫(xiě)程序。為了知道片內(nèi)程序的版本,必須讀出Flash 中內(nèi)容。什么工具軟件可以通過(guò)JTAG口實(shí)現(xiàn)這個(gè)功能?
A1:熔絲未燒斷的話,做個(gè)空程序的項(xiàng)目,然后在C-SPY選項(xiàng)里選擇保留未改變的區(qū)域,DEBUG后看MEMORY里的內(nèi)容!熔絲燒斷的話只能用編程器或BSL,如果加密了,只能通過(guò)BSL來(lái)讀了,不過(guò)你要知道中斷向量表的32個(gè)字節(jié)的內(nèi)容,即密碼。
Q2:MSP430F449中我想把一個(gè)整形的數(shù)A存入某地方掉電也不丟失,作為以后程序運(yùn)行的參數(shù)。是放在flash里面嗎?用代碼怎么實(shí)現(xiàn)?
A2:如果只是個(gè)巴字節(jié)的話就把它作為數(shù)組或者變量定義到FLASH就可以了。如: const unsigned char Value@0x0C000;
Q3: 430里面Flash的主存儲(chǔ)區(qū)和信息存儲(chǔ)區(qū)有什么區(qū)別么?是不是程序是保存在主存儲(chǔ)區(qū)里面的?那信息存儲(chǔ)區(qū)是存什么信息的呢?存進(jìn)去之后是不是隨時(shí)能夠讀寫(xiě)出來(lái)呢?
A3: Flash分主Flash和信息Flash。如你所說(shuō),Flash主存儲(chǔ)區(qū)主要來(lái)存儲(chǔ)程序。信息Flash就是保存數(shù)據(jù)用的,可以隨時(shí)讀取。不過(guò)從物理特性而言他們是一模一樣的,就段的長(zhǎng)度有區(qū)別。當(dāng)然信息段你也可以用來(lái)存儲(chǔ)程序使用。
Q4:在flash 單字節(jié)寫(xiě)的時(shí)候,如我寫(xiě)在D區(qū),可以不用全部清D區(qū)嗎?因?yàn)镈區(qū)還有先前保存的數(shù)據(jù).
A4: 不可以。只能先讀出然后全部擦除再重新寫(xiě)入,如果FLASH可以如您說(shuō)的那么操作,那就是EEPROM了
Q5: 目前使用的單片機(jī)是5V供電,買(mǎi)的flash存儲(chǔ)芯片3.3V供電,單片機(jī)和存儲(chǔ)芯片的連接是怎么的呢?我查看一些相關(guān)資料,說(shuō)是可以直接連接,但是直接連接有問(wèn)題,請(qǐng)問(wèn)如何連接??需要什么樣的方法??
A5: 最好在FLASH與MCU之間接一個(gè)電平轉(zhuǎn)換芯片, 或者用MOFET管轉(zhuǎn)換一下電平。
Q6:請(qǐng)問(wèn)擦寫(xiě)FLASH 選擇頻率時(shí),有沒(méi)有要特別注意的,如果我用8M的,不分頻,這樣可以嗎?
A6:要注意啊,擦寫(xiě)Flash的頻率在250~470K(具體可以查查手冊(cè));必須對(duì)FCTL2進(jìn)行設(shè)置,使頻率在這個(gè)范圍內(nèi)。
Q7: 用jtag接口往430 中寫(xiě)程序會(huì)不會(huì)破壞原有flash信息段保存的數(shù)據(jù)啊?
A7:取消擦除信息段選項(xiàng),即在IAR project 的options 選項(xiàng)中DEBUG 下的選項(xiàng)。
Q8:從數(shù)據(jù)手冊(cè)上來(lái)看,在寫(xiě)的過(guò)程中,好像要求判斷BUSY位來(lái)決定接下來(lái)的操作,可是為什么TI的例程里面沒(méi)有判斷BUSY bit ?是不是MCU會(huì)自動(dòng)判斷?
A8:430對(duì)FLASH的寫(xiě)操作多種。比如塊寫(xiě)(××OCKWRITE)和字節(jié)/字寫(xiě)(BYTE/WORDWRITE),在不同模式下,允許寫(xiě)的操作也不同。比如在字節(jié)寫(xiě)(BYTE WRITE)操作下,允許在FLASH MEMORY或在RAM下進(jìn)行。當(dāng)在FLASH MEMORY下進(jìn)行寫(xiě)操作時(shí),此時(shí)CPU是掛起的,直到寫(xiě)操作完成它才能執(zhí)行下一個(gè)指令操作,但是當(dāng)擦除程序是在RAM內(nèi)初始化的,那么CPU就可以一直執(zhí)行,如果不判斷BUSY位的話,當(dāng)RAM內(nèi)代碼執(zhí)行完畢(us級(jí)),PC跳轉(zhuǎn)到FLASH,而此時(shí)FLASH還再做擦除操作(ms級(jí))就會(huì)造成非法訪問(wèn),產(chǎn)生不可屏蔽中斷。
Q9:MSP430的編譯器默認(rèn)是將數(shù)組定義在RAM 里面。請(qǐng)問(wèn)如果我要將定義的數(shù)組直接保存在flash里面應(yīng)該如何定義呢?是不是要修改編譯器的某個(gè)配置信息,然后直接用const 定義呢?
A9:這個(gè)如何分配,以及用什么關(guān)鍵字都是由編譯器決定的,如果你用的是IAR Embedded Workbench for 430,那再在數(shù)組聲明的時(shí)候,前面加一個(gè)CONST那么在編譯的時(shí)候就會(huì)將數(shù)組分配到FLASH空間。如果不加const默認(rèn)的情況是分配到RAM空間的。
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專(zhuān)家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的MSP430常见问题之FLASH存储类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: wordpress on Zencart
- 下一篇: TCPDUMP详解(续)