<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于CAN總線(xiàn)的軟件IAP技術(shù)

基于CAN總線(xiàn)的軟件IAP技術(shù)

作者: 時(shí)間:2012-08-24 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:是一種使用協(xié)議的串行通信網(wǎng)絡(luò )。Silicon Laboratories公司的單片機C8051F040是完全集成的混合信號系統級芯片,而且內部集成了控制器。文中詳述了如何通過(guò)CAN實(shí)現對的升級,并給出具體的設計方案。
關(guān)鍵詞:C8051F040;CAN;

CAN是低成本、高利用率的工業(yè)控制總線(xiàn),在工業(yè)控制、汽車(chē)電子等方面有十分廣泛的用途。
C8051F040單片機內部集成的CAN控制器是Bosch全功能CAN模塊的完全實(shí)現,完全符合CAN規范2.0 B,其內部還集成了64 kB系統編程用FLASH存儲器,這就為的更新、升級提供了可能。當產(chǎn)品安裝位置不方便拆卸或需要一次更新大量產(chǎn)品軟件的時(shí)候,使用單片機JTAG接口來(lái)實(shí)現幾乎是不可能的事情。本文提出一種系統升級的方法,也對單片機的產(chǎn)品設計具有重要的參考價(jià)值。

1 總體思路
將C8051F040的64KB存儲器分為三個(gè)區域:0x0000~0x5fff作為正常運行的程序存儲區,0x6000~0xbfff作為從CAN總線(xiàn)接收到的需要更新程序的存儲區,0xc000以上作為bootloader程序的存儲區。
正常運行的程序在接收到上位機的程序更新命令后(用戶(hù)自定義通訊協(xié)議來(lái)實(shí)現),接收數據,且將其按接收順序寫(xiě)入到以0x6000開(kāi)始的區域中,直到接收完畢,然后主程序判斷接收數據是否完整、有效,如完整且有效則跳轉到bootloader程序中,由bootloader程序完成更新程序的工作。

2 程序軟件框圖
(1)bootloader程序
新建立一個(gè)proiect,其中包含程序初始化、端口配置、FLASH讀/寫(xiě)等函數。
①FLASH寫(xiě)框圖(見(jiàn)圖1)
②編譯控制項
在linker中,使用“CODE(0c000h,MAINRUN_3s(0c000h))”將程序編譯完成后的代碼放置到以0xc000開(kāi)始的地址空間。

本文引用地址:http://dyxdggzs.com/article/154083.htm

a.JPG


(2)主程序
主程序在確認更新程序的有效性后,需要跳轉到bootloader程序中運行。由于主程序和bootloader程序是采用不用的項目進(jìn)行編譯的,故不能直接調用,必須采用絕對調用的方法。采用函數指針是一種可行的方式,如:
void(*update_flash) 0=0xc000;
//定義函數指針指向0Xc000
(3)上位機軟件
由于本文中節點(diǎn)采用CAN總線(xiàn)連接到同一網(wǎng)絡(luò )上,且采用CAN通訊的方式來(lái)更新程序內容,所以,上位機也必須帶CAN控制器。
將需要更新的程序的hex文件通過(guò)HEXBTN.EXE文件轉換成BIN文件,然后再用BIN2C.EXE將生成的BIN文件轉換成一字節數組,將其拷貝到上位機軟件中,這就是需要更新的源程序。按自定義通訊協(xié)議,將其發(fā)送到目標CPU即可。

3 需要注意的事項
(1)程序有效性的判斷由自定義通訊協(xié)議完成
(2)在寫(xiě)FLASH的過(guò)程中,需要關(guān)中斷
(3)在寫(xiě)FLASH的過(guò)程中,需要關(guān)中斷

4 結束語(yǔ)
文中的通過(guò)CAN總線(xiàn)實(shí)王見(jiàn)軟件的方法,完全可以使用,而且抗干擾能力較強,已成功應用于蓄電池檢測系統中各個(gè)檢測模塊的程序更新。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>