1. 程式人生 > >飛思卡爾 MC9S12XEP100 bootloader CAN

飛思卡爾 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. 其他照正常程式執行;