久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > AT91SAM7Sxx系列MCU Boot-Loader的設計

AT91SAM7Sxx系列MCU Boot-Loader的設計

作者: 時間:2011-08-27 來源:網絡 收藏

2.3 的操作
把所有操作的函數定義在RAM空間,例如:
__ramfunc int C::Erase_All(void)
因為SAM7Sxx系列的Flash采用單層結構,不允許程序在Flash上運行的同時改寫Flash的內容, 所以要將操作Flash的程序放在RAM中運行.

2.4 數據包的處理
第一個數據包包含用戶啟動代碼和異常向量表。Boot-Loader需要修改復位向量,并保存用戶入口地址(偽代碼如下)
if (Page == 0) {
Get User Entrance Address
Replace User Entrance Address with Boot-Loader Entrance Address
Program first page into Flash
Set flag to indicate an unfinished task
Calculate checksum and return to PC
}
收到結束指令后需要設置完成標志(偽代碼如下):
if (Command == END_OF_TASK) {
Write last page into Flash
Reset unfinished flag
Calculate checksum and return to PC
}
如果頁地址與boot-loader 重疊,則不進行寫操作,僅返成功標志給PC:
if ( (Page >= BL_START_PAGE) (Page = BL_END_PAGE) ) {
ret = true ;
break ;
}

3 PC端下載軟件的實現簡介
下面是標準的PC端操作流程:
- 獲得USB HID 類GUID
- 獲得所有HID設備結構數組
- 根據 PID 獲得設備信息
- 打開設備句柄
- 與Boot-Loader 進行通訊
以上操作步驟在Windows, MacOS, Linux 中都是通用的,讀者可以在參考文獻3找到關于PC端程序實現的具體方法。

圖 Boot-loader 在Flash中的位置(以SAM7S256為例)

4 結論

本文介紹的實現方法簡化了系列用戶程序升級過程。HID類的USB接口增加了產品跨平臺應用的靈活性。筆者測試下載25K代碼約2秒鐘,具有一定實用價值。

參考文獻

[1] at91sam7s_full.pdf. Http://www.at91.com
[2] HID1_11.pdf. Http://www.usb.org
[3] Stuart Allman Using the HID class eases the job of writing USB device drivers. Http://www.edn.com


上一頁 1 2 下一頁

關鍵詞: AT91SAM7Sxx VID Flash

評論


相關推薦

技術專區

關閉