• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 鲁山县| 铜山县| 潜山县| 化州市| 广南县| 麻江县| 微山县| 巴彦县| 东乡县| 高阳县| 虞城县| 上犹县| 永兴县| 福泉市| 固原市| 从江县| 静安区| 泰州市| 浦江县| 介休市| 石楼县| 前郭尔| 临武县| 和龙市| 红原县| 抚宁县| 土默特右旗| 天台县| 钟山县| 都昌县| 兰考县| 如皋市| 资阳市| 芷江| 南充市| 丹江口市| 德保县| 靖西县| 芜湖县| 河东区| 成武县|