確定對話框和S-record已經被下載到MCU中去了。一個星號(*)代表編程成功了一行。見圖6。

?
圖 6.下載用戶應用
怎么寫用戶應用程序
你必須確保用戶應用程序不會碰到bootloader的地址范圍(0xF000-0xFFFF)。
1. 在CodeWarrior for S12(X)集成開發環境中創建一個新工程。
2. 打開.prm文件
3. 把segment ROM_C000從原來的0xC000-0xFEFF改成0xC000-0xEFDF。這是因為地址0xF000-0xFFFF會放著bootloader,而0xEFE0-0xEFFF會用作用戶應用的重置向量。
如果使用了中斷:
4. 把segment ROM_4000從原來的0x4000-0x7FFF改成0x4000-0x7F0F。0x7F10-0x7FFF會被用于重定位中斷向量表。
5. 如附件示例應用那樣創建一個中斷向量表,并對應的設置IVBR寄存器。IVBR設置中斷向量表的基地址,這種情況下必須被設置為0x7F。
怎么轉換將被bootloader下載的S-Record
bootloader接受使用全局(線性)地址的s-records。所有的records必須被對齊為32字節,長度也必須是32字節。
1. 打開SRecCvt工具(SRecCvt-GUI.exe)
2. 選擇使用的MC9S12設備(取決你用的是哪個),選擇Memory為Flash,選擇Operation為Convert File。
3. 選擇輸入文件格式為Banked,輸出文件格式為Linear。
4. 設置S-Record Size為32.
5. 瀏覽輸入文件(由CodeWarrior生成的S19文件)并選擇輸出文件。
6. 點擊Convert按鈕。

圖 7.SRecCvt
?
怎么合并用戶應用和bootloader
用戶應用可以被獨立地開發,或說,不帶有bootloader。用戶應用可以被加載進微控制器并可以由BDM設備來直接的調試。然而,出于生產目的,將用戶應用與bootloader合并到一起是很有價值的,這樣就可以在單個s-record文件中把所有東西都下載進微控制器了。
這是推薦的流程:
1. 打開按照第6章“怎么寫用戶應用程序”中所述那樣創建的用戶應用程序。
2. 把一個用戶應用程序重置向量放到地址0xEFFE,這樣bootloader就可以使用這個向量了。拷貝以下三行到main.c中:
extern void near _Startup(void)
typedef void (*near tFunc)(void)
const tFunc rst_vec @0xEFFE = _Startup
3. 移除原先的用戶應用程序重置向量。
在Project.prm文件中注釋掉這行:
//VECTOR 0 _Startup
4. 復制準備好了的bootloader .s19文件到 ..\user_application_project\bin下。比如,s-record文件可以被重命名為bootloader.s19
5. 鏈接這個文件到用戶應用程序中。
在Project.prm的開頭加上這個命令:
HEXFILE bootloader.s19
6. 添加如下命令到文件..\user_application_project\cmd\P&E_Multilink_CyclonePro_Preload.cmd中:
FLASH NOUNSECURE
這個命令能確保燒寫器不會在MCU編程過程中自動地改變0xFF0F處的flash安全字節為一個不安全狀態(0xFE),這樣,這個phrase(0xFF08-0XFF0F)就可以被加載定義在bootloader中的值了。如果不使用這個命令,會導致在這個phrase發生ECC錯誤,芯片會被保護,并且flash會被完全保護。
7. 編譯項目。最終的s-record就準備好被BDM設備下載入微控制器了。 測試
這個bootloaders在這些開發板上測試成功過:
DEMO9S12PFAME
DEMO9S12HY64
TWR-S12G128
DEMO9S12XSFAME
EVB9S12XEP100
Zip文件的內容
所有提到的工程和工具都在這篇應用筆記相關的zip文件中。
Bootloader_S12 — S12微控制器的bootloader工程。
Bootloader_S12X — S12X微控制器的bootloader工程。
Demo_applications — 示例怎么寫用戶應用程序的工程。
Coverted_srecords — 源于Demo_applications的已經被SRecCvt工具轉換好的S-Records。這些S-Records可以由bootloader下載進MCU中。
Demo_applications_with_linked_bootloader — 包含bootloader的用戶應用程序。
SRecCvt — 用于轉換S-Record的工具。
S12XE_PLL_Calculator — 幫助設置PLL模塊的工具。
電子發燒友App























評論