新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于IAP的STM32程序更新技術(shù)

        基于IAP的STM32程序更新技術(shù)

        作者: 時間:2013-01-25 來源:網(wǎng)絡(luò) 收藏

        2.2 技術(shù)關(guān)鍵點

        通過研究技術(shù)實現(xiàn)用戶的過程,不難發(fā)現(xiàn),在過程中必須保證PC指針在Boot區(qū)移動,而不能隨意跳轉(zhuǎn)至常態(tài)存儲區(qū)。這個要求,結(jié)合微控制器原理可以得出需要特別注意的幾個關(guān)鍵點。

        (1) 禁止中斷

        毫無疑問,中斷會使得PC指針跳轉(zhuǎn)至中斷服務(wù)入口地址,因此,在進入Boot區(qū)前需要禁止所有中斷。

        (2) 禁用底層外圍接口

        對于有些外圍接口,比如當(dāng)采用ADC+DMA的方式進行多通道A/D采樣時,采樣過程會按照預(yù)先設(shè)置的通道順序進行A/D采樣。若在PC指針跳轉(zhuǎn)至Boot區(qū)前沒有禁用,則跳回常態(tài)存儲區(qū)時,其存儲A/D通道值就可能發(fā)生錯位的情況。

        (3) 使用實時操作系統(tǒng)

        如果使用具有搶占式RTOS(即硬實時操作系統(tǒng)),則需要禁止所有任務(wù),并且屏蔽所有的信號量及郵箱,以防止激活某個任務(wù),導(dǎo)致PC指針跳轉(zhuǎn)至常態(tài)存儲區(qū)。

        (4) 使用看門狗

        在考慮導(dǎo)致PC指針跳轉(zhuǎn)的原因時,看門狗很容易被忽略,而且很多芯片的看門狗一旦使能就不能禁用,所以不能通過禁用的方法達到目的。最安全的方法是,在Boot區(qū)中也加入看門狗的喂狗指令。特別要注意的是,當(dāng)需要擦除、寫入大量Flash數(shù)據(jù)時,需要對其過程所需時間進行定量的估計,有必要時可以在這個過程中多次喂狗。

        (5) 存儲空間分配

        Boot區(qū)以及常態(tài)存儲區(qū)的大小可以人為分配,一般而言,盡可能使常態(tài)存儲區(qū)最大化,因為產(chǎn)品的功能是在該區(qū)域得到體現(xiàn);而Boot區(qū)盡可能使其代碼簡潔,避免使用中斷以及復(fù)雜的底層驅(qū)動及算法。

        2.3 技術(shù)實現(xiàn)

        (1) 關(guān)閉相關(guān)中斷及禁用相關(guān)外圍接口

        如定時器中斷、SysTick中斷、A/D中斷、外部I/O中斷等。

        (2) 設(shè)定跳轉(zhuǎn)地址

        typedef void (*pFunction)(void);

        INT32U JumpAddress;//定義IAP入口地址pFunction Jump_To_Application;//定義指向IAP入口地址程序的函數(shù)指針

        JumpAddress=*(vu32*)(IAP_ADDR + 4);

        Jump_To_Application=(pFunction) JumpAddress;

        (3) 喂狗并執(zhí)行跳轉(zhuǎn)

        IWDG_ReloadCounter();//喂狗

        __set_MSP(*(__IO uint32_t*) IAP_ADDR);//初始化用戶應(yīng)用程序的堆棧指針

        Jump_To_Application();

        (4) IAP代碼(Boot區(qū)代碼)

        只需要驅(qū)動用到的底層接口,盡量不使用中斷,盡可能少地占用存儲空間,同時需要適時地喂狗。另外對該系列Flash操作會有所不同,比如F103ZE執(zhí)行擦除操作時,一頁為2 KB,而SMT32F103VC6等芯片一頁為1 KB,使用其他型號芯片時需要具體查閱相關(guān)數(shù)據(jù)手冊。

        3 總結(jié)

        本文從分析IAP技術(shù)原理入手,詳細論述了利用IAP技術(shù)實現(xiàn)用戶程序更新的要點。另外,可以想象,如果Boot區(qū)加入TCP/IP協(xié)議連入互聯(lián)網(wǎng),即可借助網(wǎng)絡(luò)對產(chǎn)品進行在線升級,既可提高系統(tǒng)的可維護性,又可降低產(chǎn)品的維護成本,必將在未來得到更為廣泛的應(yīng)用。


        上一頁 1 2 下一頁

        關(guān)鍵詞: 更新 新技 程序 STM32 IAP 基于

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 孟津县| 呼玛县| 卢龙县| 松潘县| 裕民县| 雅江县| 大庆市| 西丰县| 临汾市| 右玉县| 兴和县| 泸定县| 南充市| 扎鲁特旗| 基隆市| 即墨市| 冀州市| 曲靖市| 义乌市| 黄骅市| 文昌市| 绥中县| 威海市| 泗阳县| 石屏县| 昭苏县| 怀仁县| 大洼县| 庆元县| 林甸县| 彭泽县| 福海县| 绵竹市| 德钦县| 泸水县| 镇雄县| 荆州市| 通州市| 崇礼县| 武定县| 烟台市|