TMS320F28335支持多種啟動模式,如下:
// $Boot_Table: // // GPIO87 GPIO86 GPIO85 GPIO84 // XA15 XA14 XA13 XA12 // PU PU PU PU // ========================================== // 1 1 1 1 Jump to Flash <- boot to Flash // 1 1 1 0 SCI-A boot // 1 1 0 1 SPI-A boot // 1 1 0 0 I2C-A boot // 1 0 1 1 eCAN-A boot // 1 0 1 0 McBSP-A boot // 1 0 0 1 Jump to XINTF x16 // 1 0 0 0 Jump to XINTF x32 // 0 1 1 1 Jump to OTP // 0 1 1 0 Parallel GPIO I/O boot // 0 1 0 1 Parallel XINTF boot // 0 1 0 0 Jump to SARAM // 0 0 1 1 Branch to check boot mode // 0 0 1 0 Boot to flash, bypass ADC cal // 0 0 0 1 Boot to SARAM, bypass ADC cal // 0 0 0 0 Boot to SCI-A, bypass ADC cal // Boot_Table_End$
一時興起,先說一些題外話,關於燒寫程序的問題:
1. 一般使用CCS+仿真器時,我們把程序燒進RAM中運行,這樣運行速度快,方便實際項目的開發與調試;
注意此時用的是28335_RAM_lnk.cmd文件
2. 當項目完成時,一般我們會選擇將程序燒進Flash中,以擺脫仿對真器的依賴;當我們用f28335.cmd連接文件時,會把程序燒進28335內部的Flash中,此時,就可以脫離仿真器運行了;從Flash啟動;——也就是上面的
XA15 XA14 XA13 XA12
即分別等於1 1 1 1 時,Jump to Flash;
當然,具體的配置不僅僅是修改cmd文件這麼簡單的,有時程序在RAM中運行良好,到Flash中後就會出現這樣那樣的問題;
最典型如US_DELAY延時的一個函數,在RAM運行是延時很精確的,但在Flash中卻不一樣了,這個後面會說;
3. 結束廢話,進入正題,當我們要沒有仿真器時,如何將程序燒進Flash中呢?
我們最上面的看啟動方式中有SCI-A boot, SCI是串行通信接口,我們可以從串口啟動引導28335;
在這之前,一般硬件上都有跳線設置,我們可以把XA12下拉為低電平;
這樣就可以設置啟動模式為:1 1 1 0 ——即為SCI-A啟動
第一步:
下載hex2000,使用hex2000將ccs編譯得到的.out文件轉換為.hex文件;
將ccs編譯得到的hex文件拷貝至到hex2000目錄下;
開始——運行——到hex2000目錄下 輸入:
hex2000.exe -romwidth 16 -memwidth 16 -i -o LED.hex LED.out
出現下圖所示信息代表轉換成功:
第二張圖是使用CCS自帶的生成HEX文件的一個功能選項,這樣可以不用下載hex2000;
第二步:
開發板切換為SCI-A啟動模式,即1110;
將XA12接地即可,其他X13-X15保持上拉的3.3V不變;
第三步:
第四步:
串口接好,啟動C2Prog,板子復位上電;
使用串口調試工具,測試打開的串口:發送ABC等應該原樣返回信息;
配置C2Prog後,點program即可燒寫
第五步:
切換為Flash啟動,觀察程序運行;
>>PS:我曾出現失敗的錯誤提示:
CRC Info added at 0x00330809: 0x9D1C 0x57C0 0x0000
*** PLEASE RESET TARGET IN SCI BOOT-LOADER MODE ***
Connecting with target (autobaud)... failed (no response)!
這個原因可能是因為232或485串口工作不良好,也可能是你的模式沒有切換正確;