基于80C196KC與PSD4235G2在線編程的實(shí)現(xiàn)
隨著MCU的廣泛應(yīng)用,其性能不斷提高,集成度也日益提高。傳統(tǒng)的MCU系統(tǒng)設(shè)計(jì),在選好MC U后還要采購(gòu)大量的分離器件(如地址鎖存器、譯碼器、擴(kuò)展芯片、RAM,EPROM,PLD等),使系統(tǒng)復(fù)雜度高、可靠性低,且調(diào)試繁瑣、效率低下,造成設(shè)計(jì)復(fù)雜,印制板面積增大。還要考慮到各種干擾,總線競(jìng)爭(zhēng)等很多因素,系統(tǒng)常常不穩(wěn)定。
本文引用地址:http://cafeforensic.com/article/171753.htm本文介紹一種基于閃爍存儲(chǔ)器的在線可編程微處理器外圍器PSD4235G2組成的MCU系統(tǒng)。即通過(guò)計(jì)算機(jī)串口將程序代碼在線遠(yuǎn)程下載到MCU系統(tǒng)的存儲(chǔ)器中,實(shí)現(xiàn)IAP的功能。
1PSD4235G2的性能特點(diǎn)
PSD4235G2( Programmable System Devices) 是ST公司設(shè)計(jì)生產(chǎn)的一種基于閃爍存儲(chǔ)器的在線可編程外圍器件。他將MCU系統(tǒng)外圍器件高度集成在一起,并與MCU進(jìn)行無(wú)縫連接,只需用2顆芯片MCU+PSD 即可代替眾多的外圍器件組成一套完整的MCU系統(tǒng);他還集成了優(yōu)化的“微控制器宏單元”邏輯結(jié)構(gòu),使系統(tǒng)地址/數(shù)據(jù)總線可以與內(nèi)部寄存器直接互連,簡(jiǎn)化了控制總線的設(shè)計(jì)。PSD產(chǎn)品以其設(shè)計(jì)靈活、資源豐富和極高的性價(jià)比在嵌入式系統(tǒng)應(yīng)用領(lǐng)域得到廣泛應(yīng)用。此外,PSD4235G2還具有以下特性:
(1) 采用多路復(fù)用或非多路復(fù)用的16位總線為控制器的簡(jiǎn)單接口??偩€接口邏輯使用地址譯碼和讀寫(xiě)時(shí)由微控制器自動(dòng)產(chǎn)生的控制信號(hào),可方便地與16位單片機(jī)80C196KC直接相連。
(2) 4 Mb主Flash,被分為8個(gè)大小相同的塊,由用戶規(guī)定的地址訪問(wèn);256 kb次Flash,具有在更新閃爍存儲(chǔ)器的同時(shí)執(zhí)行代碼的能力;64 kb SRAM通過(guò)連接外部電池可保護(hù)SRAM的內(nèi)容使之免受電源故障的影響。
(3) 主Flash和次Flash可同時(shí)編程,即在執(zhí)行來(lái)自一個(gè)存儲(chǔ)器的代碼時(shí)可同時(shí)對(duì)另一個(gè)存儲(chǔ)器編程。
(4) 器件PSD4235G2包括2個(gè)PLD塊,譯碼PLD(DPLD)和復(fù)合PLD(CPLD)。DPLD用于地址譯碼并產(chǎn)生內(nèi)部存儲(chǔ)器和寄存器的芯片選擇信號(hào);CPLD實(shí)現(xiàn)用戶定義的邏輯功能。這些邏輯由16個(gè)輸出宏單元和24個(gè)輸入宏單元和“與”陣列構(gòu)成。
(5) 52個(gè)單獨(dú)可配置的I/O端口引腳,配置成MCU I/O,PLD I/O,鎖存MCU地址輸出、特殊功能I/O,漏極開(kāi)路輸出的I/O端口。
(6) 具有可編程電源管理功能(PMU),支持掉電模式的低功耗模式,使5 V待機(jī)狀態(tài)的電流低至50μA;另外還具有自動(dòng)檢測(cè)控制器工作的功能。
(7) 內(nèi)置JTAG的串行接口,使系統(tǒng)具有整個(gè)芯片系統(tǒng)內(nèi)編程的能力。利用這個(gè)功能,用戶可以對(duì)空的器件編程或現(xiàn)場(chǎng)對(duì)器件重新編程。
2系統(tǒng)設(shè)計(jì)
整個(gè)系統(tǒng)是由80C196KC單片機(jī),PSD4235G2,D/A轉(zhuǎn)換器和LCD顯示器等構(gòu)成,并通過(guò)上位機(jī)對(duì)其進(jìn)行遠(yuǎn)程編程。其系統(tǒng)結(jié)構(gòu)如圖1所示。
80C196KC內(nèi)部集成10位的A/D轉(zhuǎn)換器,因而模擬量可以直接輸入MCU。PSD4235G2具有2塊大容量Flash、16個(gè)輸出宏單元和24個(gè)輸入宏單元,因而在與單片機(jī)組成系統(tǒng)時(shí),很少需要外圍分立器件,多數(shù)通過(guò)PSD4235G2中的宏單元邏輯組合產(chǎn)生與單片機(jī)連接的地址總線、數(shù)據(jù)總線、控制總線;同時(shí),通過(guò)內(nèi)部的邏輯譯碼產(chǎn)生3塊獨(dú)立存儲(chǔ)區(qū)片選信號(hào),即主Flash片選FS i、次Flash片選CSBOOTi和SRAM片選RS0。并且PSD4235G2與LCD、D/A電路的接口直接用其PA、PB口連接,只需在軟件設(shè)計(jì)和單片機(jī)程序中相應(yīng)設(shè)計(jì)為I/O模式或地址鎖存模式。
系統(tǒng)由復(fù)位電路對(duì)80C196KC和PSD4235G2進(jìn)行復(fù)位,主程序放入PSD4235G2中。程序升級(jí)時(shí),上位機(jī)與80C196KC進(jìn)行聯(lián)絡(luò),聯(lián)絡(luò)成功后由上位機(jī)將升級(jí)程序發(fā)送下去,調(diào)制后送到該遠(yuǎn)程系統(tǒng),而將數(shù)據(jù)解調(diào)后,通過(guò)80C196KC接口寫(xiě)到PSD4235G2的數(shù)據(jù)存儲(chǔ)區(qū)。當(dāng)接到上位PC機(jī)的切換命令后,80C196KC向PSD4235G2的寄存器中送一個(gè)狀態(tài)值,由PSD4235G2的PLD對(duì)程序存儲(chǔ)區(qū)和數(shù)據(jù)存儲(chǔ)區(qū)進(jìn)行切換,再加上其他的功能電路,就構(gòu)成了一個(gè)完整的可遠(yuǎn)程程序升級(jí)的系統(tǒng)。80C196KC,PSD4235G2和串口的接口電路如圖2所示。
3IAP(在線編程)設(shè)計(jì)
PSD4235G2有2個(gè)內(nèi)部寄存器:頁(yè)寄存器(page)和VM寄存器。8位的頁(yè)寄存器可使MCU的尋址空間擴(kuò)大256倍,他的內(nèi)容可以由MCU來(lái)讀寫(xiě)。頁(yè)寄存器可直接參與PSD內(nèi)部存儲(chǔ)器的地址選擇,在作為頁(yè)尋址時(shí)寫(xiě)入要訪問(wèn)的頁(yè)地址,PSD內(nèi)部地址譯碼邏輯就立刻選中目標(biāo)存儲(chǔ)器空間。另外,在頁(yè)寄存器實(shí)現(xiàn)分頁(yè)存儲(chǔ)時(shí),應(yīng)該設(shè)置一個(gè)公共存儲(chǔ)器區(qū),即程序在任何頁(yè)面位置執(zhí)行時(shí)都能訪問(wèn)到的空間(或者說(shuō)是與頁(yè)不相關(guān)的地址空間),用于放置初始化程序、中斷服務(wù)程序、頁(yè)切換程序以及物理設(shè)備驅(qū)動(dòng)程序等重要子程序。同樣,重要數(shù)據(jù)也應(yīng)當(dāng)在任何頁(yè)都可以訪問(wèn),例如PSD控制寄存器、I/O、用于保存堆棧和全局變量的系統(tǒng)RAM等。VM寄存器用來(lái)分開(kāi)程序空間和數(shù)據(jù)空間,并把PSD4235G2中主Flash、次Flash和SR AM設(shè)置在不同空間。
在進(jìn)行在線編程時(shí),首先將PSD的次Flash存儲(chǔ)器映射到80C196KC的程序存儲(chǔ)區(qū),將PSD的主F lash存儲(chǔ)器映射到80C196KC的數(shù)據(jù)存儲(chǔ)區(qū),系統(tǒng)從PSD的次Flash啟動(dòng),執(zhí)行引導(dǎo)/下載程序,如果需要的話從上位機(jī)下載程序到PSD的主Flash存儲(chǔ)器;然后,再通過(guò)PSD中的VM寄存器,將主Flash存儲(chǔ)器存儲(chǔ)空間從數(shù)據(jù)存儲(chǔ)區(qū)跳變到程序存儲(chǔ)區(qū),轉(zhuǎn)而執(zhí)行Flash存儲(chǔ)器中的程序,從而實(shí)現(xiàn)對(duì)原程序的升級(jí)。
系統(tǒng)的運(yùn)行有2個(gè)基本模式:一個(gè)是引導(dǎo)/下載模式;另一個(gè)是正常運(yùn)行模式。系統(tǒng)啟動(dòng)時(shí)從引導(dǎo)/下載模式到正常運(yùn)行模式轉(zhuǎn)換過(guò)程中系統(tǒng)存儲(chǔ)器的變化步驟為:
(1) 上電時(shí)系統(tǒng)存儲(chǔ)器映射
上電時(shí)系統(tǒng)開(kāi)始執(zhí)行次Flash中的程序,檢查是否要通過(guò)MCU對(duì)主Flash中的程序進(jìn)行升級(jí)。此時(shí),PSD中主Flash存儲(chǔ)器存儲(chǔ)空間都處于MCU的數(shù)據(jù)空間,而次Flash存儲(chǔ)空間則處于MCU的程序空間。
(2) 主Flash存儲(chǔ)空間從數(shù)據(jù)空間移至程序空間
在完成對(duì)Flash中程序升級(jí)或不需要升級(jí)時(shí),寫(xiě)VM寄存器為06H,將主Flash的存儲(chǔ)空間從MCU的數(shù)據(jù)空間移到程序空間。
(3) 切換主Flash和次Flash存儲(chǔ)空間
MCU從PSD次Flash中運(yùn)行程序跳到主Flash中的運(yùn)行程序。在程序?qū)?到‘swap’位(上電時(shí)‘swap’的值是0)進(jìn)行地址“切換”,程序就進(jìn)入主Flash中運(yùn)行了。
(4) 次Flash存儲(chǔ)空間移至數(shù)據(jù)空間
程序已經(jīng)在PSD的主Flash中運(yùn)行,寫(xiě)0CH到VM寄存器,把次Flash的存儲(chǔ)空間從MCU的程序空間移到數(shù)據(jù)空間。并且,MCU轉(zhuǎn)跳到在PSD的主Flash的復(fù)位入口地址,用戶的程序開(kāi)始真正執(zhí)行。
用戶程序啟動(dòng)模塊的流程如圖3所示。
4結(jié)語(yǔ)
PSD4235G2的獨(dú)特結(jié)構(gòu)簡(jiǎn)化了硬件接口電路,為嵌入式MCU系統(tǒng)提供了簡(jiǎn)單靈活的解決方案。其IAP功能使產(chǎn)品可以在應(yīng)用中編程和測(cè)試,并遠(yuǎn)程升級(jí)程序代碼,縮短了產(chǎn)品開(kāi)發(fā)周期,降低了產(chǎn)品維護(hù)和升級(jí)成本,搶先占領(lǐng)市場(chǎng)。
參考文獻(xiàn)
[1]孫涵芳.Intel 16位單片機(jī)[M].北京:北京航空航天大學(xué)出版社,1999
[2]劉復(fù)華.8*C196KX單片機(jī)及其應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:清華大學(xué)出版社,2002
[3]孫涵芳.單片機(jī)現(xiàn)場(chǎng)可編程外圍芯片PSD的原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1998
[4]可編程單片及外圍芯片技術(shù)手冊(cè).
評(píng)論