新聞中心

        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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 闵行区| 江华| 南江县| 黄大仙区| 丹寨县| 甘德县| 多伦县| 饶河县| 泌阳县| 七台河市| 巴彦淖尔市| 兰坪| 皋兰县| 潜江市| 泰顺县| 日喀则市| 南充市| 扎鲁特旗| 通江县| 平谷区| 蕲春县| 塔城市| 五大连池市| 广宗县| 黔江区| 沧州市| 金山区| 广饶县| 峨眉山市| 镇沅| 四子王旗| 嵊州市| 泰顺县| 天长市| 正镶白旗| 洛宁县| 睢宁县| 屯门区| 南华县| 宿松县| 凤山市|