<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>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于USB息線(xiàn)的MC68HC908JB8 Flash在線(xiàn)編程

基于USB息線(xiàn)的MC68HC908JB8 Flash在線(xiàn)編程

作者: 時(shí)間:2008-01-14 來(lái)源:網(wǎng)絡(luò ) 收藏
Freescale公司的MC68HC(簡(jiǎn)稱(chēng)“”)是HC系列中的一種。它包括接口,是專(zhuān)為計算機人機接口設備設計的,諸如鼠標、鍵盤(pán)等應用。包含8KB的用戶(hù)存儲區和16字節的中斷復位向量,使用它內部產(chǎn)生的升壓泵就可以實(shí)現F1ash的燒寫(xiě)和擦除,而不需要高電壓。

ICP是一種在實(shí)際的目標電路板上燒寫(xiě)和擦除芯片的方法,無(wú)需從目標板上將芯片卸下來(lái)再編程實(shí)現用戶(hù)程序的修改。這種方法適用于產(chǎn)品開(kāi)發(fā)和代碼升級。目前市面上很多芯片(如Philips公司的P89C51、P89V51和LPC932A1,STC89C51和STC89L516RD+,以及AVR公司的ATmega8系列等)都支持串口ICP方式。本文采用接口的ICP方法,燒寫(xiě)速度快,無(wú)需專(zhuān)用的電平轉換芯片,硬件通過(guò)微處理器JB8的接口與計算機USB口連接即可。


1 底層軟件實(shí)現方法
1.1 配置
為使用ICP通信連接的USB接口,必須修改JB8中的用戶(hù)代碼以識別預先為ICP定義的USB命令。因此在出廠(chǎng)前,必須將ICP代碼燒入JB8中。JB8的配置如圖1所示。

圖1中,用戶(hù)Flash區范圍為$DC00~$FBFF,用戶(hù)Flash向量區是從$FFFO到$FFFF。ICP的配置中:ICP的代碼是從$F800到 $FBFF。用戶(hù)Flash向量區在ICP操作中是不能再編程的,這兩個(gè)區是JB8事先寫(xiě)入的,ICP操作可以對$DCOO~$F7FF的Flash區(圖1中陰影區)進(jìn)行擦除和燒寫(xiě)。
1.2 向量重定位
因為ICP的操作只能對用戶(hù)代碼進(jìn)行編程和燒寫(xiě),不能擦除用戶(hù)Flash向量,且用戶(hù)F1ash向量是固定的,因此在用戶(hù)代碼中的中斷服務(wù)子程序地址必須重新定位到合適的地址。這種重新定位是通過(guò)“假”向量來(lái)實(shí)現的,3字節的假向量包括JMP指令和在用戶(hù)代碼中的中斷服務(wù)子程序的絕對地址。圖2中指出了假向量是如何重定位的。只有復位向量沒(méi)有重新定位,總是指向$F800(ICP代碼的入口地址)。

表1列出了中斷向量地址和重定位“假”向量地址。

1.3 安全密鑰防止非法訪(fǎng)問(wèn)
$FFF6~$FFFD的8字節內容用于進(jìn)入JB8的監控模式。監控軟件能完全訪(fǎng)問(wèn)F1ash區,正常情況下,8字節的安全密鑰是不可能被猜出的,因為這些中斷服務(wù)程序的起始地址是被固化到用戶(hù)代碼區中的。
1.4 在ICP期間防止掉電的措施
配置ICP時(shí)必須考慮到ICP子程序運行過(guò)程中有可能掉電,系統必須能夠恢復和完成ICP程序。ICP_FLAG字的設計正是基于此目的。復位后讀ICP_FLAG字,決定JB8是進(jìn)入正常的工作模式還是ICP模式。該字地址是$F7FE,在用戶(hù)代碼區的最后2個(gè)字節。復位之后,復位向量地址$FFFE~$FFFF指向ICP程序入口地址$F800,一旦初始化完成,檢查進(jìn)入ICP模式或用戶(hù)模式的條件。在以下2種情況下JB8進(jìn)入ICP模式:
①“假”向量的高字節$FF7C是無(wú)效的,即不在$DC和$F7之間;
②ICP_FLAG字不等于校驗和。否則,JB8進(jìn)入正常的工作模式。
1.5 ICP編程
ICP編程流程圖如圖3所示。

一旦用戶(hù)代碼被燒入芯片,而“假”向量的高字節在無(wú)效的范圍($DC~$F7),同時(shí)ICP_FLAG被寫(xiě)入校驗和(不能是$0000),則在插撥USB設備后,ICP代碼跳轉到正常操作的用戶(hù)模式。
進(jìn)入JB8 ICP模式有2種方式:ICP_FLAG被寫(xiě)入$0000,或者PTA0被下拉成低電平。用戶(hù)代碼包括特別的命令來(lái)編寫(xiě)ICP_FLAG,一旦ICP_FLAG被寫(xiě)入零,則再次插撥上電后,JB8進(jìn)入ICP模式。ICP指令支持有限的USB標準協(xié)議,如讀取描述符和狀態(tài)字,設置地址和配置字,以及清特征字。
本文使用了一些必要的擦除、編程、校驗Flash命令,如表2所列。

在使用讀取狀態(tài)命令后,程序返回1字節的應答命令來(lái)表示Program Row(行編程命令)、Erase Block(塊擦除命令)和Verify Row(行校驗命令)命令是否成功。字節$01表示命令執行成功,字節$04表示命令執行失敗。
1.6 ICP_FLAG的編程
由于JB8是為HID應用設計的,最好使用HID命令來(lái)編寫(xiě)ICP_FLAG,這樣可以無(wú)需額外的驅動(dòng)。本文使用8字節的Set_Feature指令來(lái)設置ICP_FLAG,使用8字節的Get_Ack指令(只有1字節是有用的)來(lái)校驗設置是否正確(響應為$0O表示命令成功,為$01表示命令失敗)。設置8字節足出于安全的考慮,如果這8字節與JB8中$FFE6~$FFED的8字節相匹配,那么命令才是有效的。只有命令有效,ICP_FLAG才會(huì )被寫(xiě)入0。指令使用格式如表3所列。

2 應用軟件
USB ICP驅動(dòng)程序的安裝與普通的硬件驅動(dòng)程序安裝一樣,需要安裝USB ICP.SYS文件和注冊表文件USBICP.INF。USB ICP的Windows運行界面如圖4所示。

選擇燒寫(xiě)文件(.SX格式),擦除Flash(Erase Flash)后執行空檢查(Blank Check),然后選擇燒寫(xiě)(Program)芯片,最后執行校驗(Verify)。


結語(yǔ)
本文采用集成USBl.1協(xié)議的MC68HCJB8,擴展了ICP在串行口的應用方式用于開(kāi)發(fā),調試方便,實(shí)際運行效果很好,有一定的應用價(jià)值。
編者注:上位機驅動(dòng)程序代碼、下位機固件燒寫(xiě)代碼和測試程序見(jiàn)本刊網(wǎng)站www.mesnet.com.cn。



關(guān)鍵詞: Flash USB 908 JB8

評論


相關(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>