新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于CAN總線連接的MEGA8遠距離在線升級方案

        基于CAN總線連接的MEGA8遠距離在線升級方案

        作者: 時間:2012-08-04 來源:網絡 收藏

          ……

          ld temp,y+

          mov zl,temp ; Z指針地址賦值

          ld temp,y+

          mov zh,temp

          ldi temp,(1

          rcall Do_SPM ; 執行頁寫入

          ……

        3、BOOT程序介紹及流程圖

          Mega8單片機上電后設置冷啟動標志,而熱啟動入口則設置熱啟動標志。然后初始化堆棧、串口以及必要的I/O狀態等。初始化完成后,如果BOOT程序檢測到熱啟動標志則直接進入燒錄狀態;如果為冷啟動標志則繼續檢測下載位是否允許(本設計通過PB0開關選擇),如為高電平則進入燒錄狀態,如為低電平則進入用戶程序。

          程序在設計時提供了兩個入口,一個是系統復位時的冷啟動入口,另一個是用戶程序在運行時進入升級程序的熱啟動入口。BOOT程序主要包括燒錄子程序、串口發送、串口接收、引導主程序等。

          串口發送采用了查詢發送完成標志。這樣當該標志被設置時,證明串口的停止位已經發送完成,這對于通訊非常有用。燒錄程序主要使用“SPM” 指令,該指令完成對MEGA8的燒錄等功能。而讀取MEGA8的指令則使用“LPM”。由于擦除,頁填充,寫入,讀出等基本命令單片機都已解釋完成,因此所有過程都可以由計算機端程序進行控制。

          程序開始時,計算機端發送命令,先對單片機的頁進行擦除,然后接收一幀數據,接收完畢后執行頁寫入命令,寫入完成再進行讀出進行校驗,如果校驗無誤再繼續寫入下一頁,直到所有頁都寫入完畢,即完成一次下載過程。如果傳輸或頁校驗出現錯誤,程序會連續進行5次測試,如再仍不成功,則認為本次下載失敗。主程序流程圖如圖3。

          MEGA8單片機的主程序通過CAN接口執行計算機發送的命令,并且定義了一個更新代碼的特殊命令,當接收到該命令時,主程序首先關閉中斷,關閉看門狗,然后跳轉到BOOT的熱啟動入口,再執行BOOT下載燒錄程序。下載完成后再直接跳轉到$0000地址進入用戶程序區,這樣就完成了代碼的。為了保證該命令的可靠性,本程序設計時規定單片機必須在100ms內同時接收到兩次該命令才認為正確,超過100ms則不予認可。

        4、結束語

          由于采用了MEGA8單片機的BOOT功能,以及高速遠距離通信,同時抗干擾性強,使得遠距離,譬如通過以太網、無線等方式,成為了可能。這對于系統調試及以后的升級維護都提供了極大的便利,這也是今后單片機和發展的一個方向。由于該部分具有通用性,所以可很容易地移植到 AVR其它MEGA系列的設計方案中。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 镇远县| 融水| 鹤庆县| 那曲县| 西吉县| 东山县| 栖霞市| 古交市| 广元市| 玉龙| 安溪县| 临漳县| 井研县| 岳普湖县| 德阳市| 北京市| 苏尼特右旗| 青田县| 商洛市| 临汾市| 北宁市| 沁水县| 宁波市| 邵东县| 舒兰市| 海城市| 甘谷县| 得荣县| 喜德县| 鹤壁市| 舒兰市| 安宁市| 柘城县| 保德县| 措勤县| 南陵县| 湄潭县| 临城县| 连城县| 隆回县| 叙永县|