飛思卡爾 MC9S12XEP100 bootloader CAN
帶有bootloader的程式分為兩個工程:
1. bootloader;
2.user_app;
上述兩部分,官方資料已經提供。現在需要能夠讀懂這兩份程式碼,明確自己需要做什麼。
飛思卡爾的MC9S12XEP100的bootloarder啟動過程與STM32等晶片有所有不同。
STM32等是先執行bootloader超時後跳出迴圈,自然而然的就執行到 user_app;
MC9S12XEP 是根據條件判斷直接跳到 bootloader或user_app裡; 這個條件判斷在 .S檔案裡;換句話說,晶片重啟後,最先執行是.S檔案裡的語句,然後跳轉到 bootloader或user_app裡; 在user_app工程裡,是沒有.S檔案的,取而代之的是一個 .c檔案;
首先說明 bootloader部分:
1. 在bootloader工程與 user_app 工程中,有一個區別。就是,bootloader裡有一份 .s檔案,由彙編編寫,user_app卻沒有這份檔案;這份 .s檔案,有兩個條件判斷,一個是判斷某IO,另一個是判斷某地址的 數值,然後做跳轉,跳轉到bootloader程式段,或跳轉到應用程式段。所以,你要修改切換條件,應該從這裡開始著手處理;
現在,應該理解了bootloader與user_app是如何切換的了;
2.在bootloader裡的 .prm檔案裡,對 bootloader程式碼區與 user_app程式碼區的劃分;如下圖:
3.bootloadr的中斷程式,需要指定存放區域,指定為 RAM區域;
4. bootloader的中斷向量偏移;
5. 其他,保持不變即可;
待續.......
再說user_app部分:
1. 很顯然,ROM的一部分空間被 bootloader佔用了,所以,user_app 工程裡要修改ROM的空間劃分;在.prm檔案裡,把ROM的地址修改好;
2.中斷向量的重定位;
3. 其他照正常程式執行;