新聞中心

        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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 禄丰县| 莱西市| 家居| 墨玉县| 新化县| 洱源县| 古田县| 哈巴河县| 缙云县| 任丘市| 德惠市| 平武县| 嵊泗县| 闽侯县| 抚顺市| 甘南县| 黄梅县| 长白| 靖远县| 北川| 宜州市| 汉寿县| 沁水县| 北碚区| 闽侯县| 龙陵县| 延川县| 徐州市| 昌平区| 尼木县| 临安市| 榆中县| 泰州市| 古蔺县| 黔南| 土默特右旗| 顺平县| 绍兴县| 公安县| 合山市| 开封县|