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