基于USB總線(xiàn)的MC68HC908JB8 Flash在線(xiàn)編程
ICP是一種在實(shí)際的目標電路板上燒寫(xiě)和擦除芯片的方法,無(wú)需從目標板上將芯片卸下來(lái)再編程實(shí)現用戶(hù)程序的修改。這種方法適用于產(chǎn)品開(kāi)發(fā)和代碼升級。目前市面上很多芯片(如Philips公司的P89C51、P89V51和LPC932A1,STC89C51和STC89L516RD+,以及AVR公司的ATmega8系列等)都支持串口ICP方式。本文采用USB接口的ICP方法,燒寫(xiě)速度快,無(wú)需專(zhuān)用的電平轉換芯片,硬件通過(guò)微處理器JB8的USB接口與計算機USB口連接即可。
本文引用地址:http://dyxdggzs.com/article/156311.htm1 底層軟件實(shí)現方法
1.1 Flash配置
為使用ICP通信連接的USB接口,必須修改JB8中的用戶(hù)代碼以識別預先為ICP定義的USB命令。因此在出廠(chǎng)前,必須將ICP代碼燒入JB8中。JB8的Flash配置如圖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列出了中斷向量地址和重定位“假”向量地址。

評論