日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

當(dāng)前位置:機(jī)電之家首頁 >> PLC技術(shù)>> plc應(yīng)用 >> 其它PLC應(yīng)用 >> 基于AT90CAN128單片機(jī)的Boot Loader應(yīng)用設(shè)計(jì)
基于AT90CAN128單片機(jī)的Boot Loader應(yīng)用設(shè)計(jì)

1引言
隨著微處理器技術(shù)的發(fā)展,近年來PLC的發(fā)展有了一個(gè)新的方向——基于微處理器的嵌入式軟PLC技術(shù),它充分綜合了現(xiàn)代計(jì)算機(jī)軟、硬件資源以及成熟的現(xiàn)場總線和網(wǎng)絡(luò)通訊技術(shù),為開發(fā)以軟件技術(shù)為核心的嵌入式軟PLC鋪平了道路。采用高端微處理器作為PLC的CPU,大大加強(qiáng)了PLC的功能,逐步發(fā)展成為廣泛應(yīng)用的新一代工業(yè)自動(dòng)化控制裝置,研究高可靠性和精確實(shí)時(shí)性的新型嵌入式軟PLC必將是工業(yè)控制領(lǐng)域的發(fā)展趨勢。
2嵌入式軟PLC硬件架構(gòu)
考慮到煤礦井下現(xiàn)場工業(yè)控制的復(fù)雜環(huán)境,嵌入式軟PLC運(yùn)行系統(tǒng)硬件平臺必須保證整個(gè)系統(tǒng)運(yùn)行的可靠性和穩(wěn)定性,并且要求抗干擾能力強(qiáng),利于擴(kuò)展。嵌入式軟PLC硬件平臺主要由以下幾個(gè)部分構(gòu)成:CPU處理器核心、電源模塊、通訊模塊、輸入/輸出模塊以及各種外圍擴(kuò)展單元等,系統(tǒng)整體架構(gòu)如圖1所示。
該設(shè)計(jì)中CPU選用的是Atmel公司的一款8位AVR內(nèi)核結(jié)構(gòu)的微處理器AT90CAN128。AT90CAN128是一款基于AVR增強(qiáng)型RISC結(jié)構(gòu)、低功耗、采用高密度非易失存儲器技的單片機(jī)。芯片執(zhí)行單時(shí)鐘周期的高效指令,高達(dá)1MIPS/MHz的數(shù)據(jù)吞吐率,有效地優(yōu)化了系統(tǒng)在處理速度和功耗之間的矛盾[1]。
AT90CAN128芯片內(nèi)的ISP Flash,可以通過SPI接口多次編程。一個(gè)引導(dǎo)程序使用任何接口,下載用戶程序到應(yīng)用Flash存儲器,實(shí)現(xiàn)用戶程序的多次編程,這為嵌入式軟PLC運(yùn)行系統(tǒng)的設(shè)計(jì)應(yīng)用提供了靈活且低成本的解決方案。設(shè)計(jì)中,在嵌入式微處理器上的系統(tǒng)應(yīng)用程序只需要移植一次,就可以在不同的用戶環(huán)境中正確執(zhí)行。即使當(dāng)硬件平臺發(fā)生變化時(shí),只需要對用戶程序進(jìn)行編輯移植就可,而系統(tǒng)應(yīng)用程序則不需要任何改變。這樣有效保護(hù)了系統(tǒng)應(yīng)用程序資源,提高了系統(tǒng)開發(fā)效率,增加了應(yīng)用程序的復(fù)用率。
3Boot Loader的原理
在嵌入式應(yīng)用軟件平臺上,Boot Loader的作用其實(shí)同我們使用的PC上的BIOS類似,通過這段程序,我們可以對運(yùn)行系統(tǒng)上的主要硬件進(jìn)行初始化、建立內(nèi)存空間映射等工作,為應(yīng)用系統(tǒng)的啟動(dòng)準(zhǔn)備環(huán)境。我們使用Boot Loader可以在目標(biāo)板上實(shí)時(shí)下載更新梯形圖文件,因此一個(gè)功能強(qiáng)大的Boot Loader已經(jīng)相當(dāng)于一個(gè)微型操作系統(tǒng)了。
一般來講,在嵌入式系統(tǒng)中Boot Loader的設(shè)計(jì)是嚴(yán)重依賴于其硬件的,要想建立一個(gè)通用的Boot Loader幾乎是無法實(shí)現(xiàn)的。不同的硬件體系結(jié)構(gòu)都對應(yīng)于不同的Boot Loader。Boot Loader的設(shè)計(jì)還依賴于嵌入式微處理器的配置應(yīng)用,所以論文中對AT90CAN128上的Boot Loader需要專門設(shè)計(jì)。PC硬件平臺上,硬件通過BIOS啟動(dòng)的。在嵌入式平臺上,AT90CAN128中沒有像BIOS那樣的固件程序,Boot Loader是硬件上執(zhí)行的第一段代碼,因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全是由Boot Loader來完成。當(dāng)引導(dǎo)程序完成任務(wù)后,將控制權(quán)交至應(yīng)用程序進(jìn)行執(zhí)行代碼任務(wù)。
論文中基于AT90CAN128的Boot Loader編程設(shè)計(jì)采用交叉編譯方法,使用C語言內(nèi)嵌匯編方式編寫,具有可移植性強(qiáng)、閱讀方便理解、代碼內(nèi)存小等優(yōu)點(diǎn)。Boot Loader的設(shè)計(jì)是實(shí)現(xiàn)梯形圖實(shí)時(shí)更新下載的關(guān)鍵,論文中設(shè)計(jì)的嵌入式軟PLC與PC機(jī)之間的通信和交換數(shù)據(jù)是通過RS232串口實(shí)現(xiàn), Boot Loader設(shè)計(jì)要點(diǎn)主要有對于進(jìn)入和切換Boot Loader和應(yīng)用程序區(qū)的方式的設(shè)計(jì)。
4AT90CAN128的Boot Loader程序設(shè)計(jì)
論文中運(yùn)用AT90CAN128單片機(jī)的Boot Loader程序設(shè)計(jì),用戶可以方便地利用PC機(jī)對嵌入式軟PLC控制分站進(jìn)行應(yīng)用程序遠(yuǎn)程升級。我們只需要在單片機(jī)中加入一個(gè)Boot Loader程序,當(dāng)需要更新梯形圖程序時(shí),上位機(jī)編輯好梯形圖程序后通過RS232串口下載,即可以實(shí)現(xiàn)用戶對PLC控制分站梯形圖的自編程更新。而在嵌入式微處理器上的梯形圖程序解釋只需要在開始時(shí)移植一次,就可以實(shí)現(xiàn)梯形圖的不斷更新,解決了現(xiàn)場工作人員對計(jì)算機(jī)系統(tǒng)程序知識缺乏的問題,提高了的工作效率。
AT90CAN128片內(nèi)具有128K字節(jié)的Flash,F(xiàn)lash程序存儲器被分成了兩個(gè)區(qū):引導(dǎo)程序區(qū)和應(yīng)用程序區(qū)。嵌入式軟PLC運(yùn)行系統(tǒng)的軟件設(shè)計(jì)主要分為兩部分:加載更新梯形圖的引導(dǎo)程序區(qū)Boot Loader程序設(shè)計(jì)、梯形圖解釋執(zhí)行的應(yīng)用程序區(qū)程序設(shè)計(jì)。其軟件編程設(shè)計(jì)框架如圖2所示。
對運(yùn)行系統(tǒng)中的軟件進(jìn)行設(shè)計(jì)時(shí),編輯環(huán)境是使用Image Craft的ICCAVR編譯器,下載器采用AVR Studio4,編輯語言采用C語言程序設(shè)計(jì)。ICCAVR是一種使用符合ANSI標(biāo)準(zhǔn)的C語言來開發(fā)微控制器程序的一個(gè)工具,它綜合了編輯器和工程管理器的集成工作環(huán)境(IDE)。這個(gè)工程管理器可以直接生成我們希望得到的可以直接使用的INbbb HEX格式文件,INbbb HEX格式文件被大多數(shù)編程器所支持,包含了程序的機(jī)器代碼,用于下載程序到芯片中去。AVR Studio4是一個(gè)完整的開發(fā)工具,包括了編輯、仿真功能,我們可以編輯源代碼,并將源代碼下載到AVR器件上運(yùn)行。
4.1Boot Loader程序進(jìn)入方式的選擇
為了實(shí)現(xiàn)從應(yīng)用程序區(qū)到Boot Loader區(qū)的跳轉(zhuǎn),在基于AT90CAN128單片機(jī)的軟件設(shè)計(jì)中,我們使用中斷信號觸發(fā)、運(yùn)行系統(tǒng)上電復(fù)位和通過調(diào)用跳轉(zhuǎn)函數(shù)這3種方式,都可以進(jìn)入Boot Loader區(qū)。
通過中斷信號觸發(fā)進(jìn)入到Boot Loader區(qū),其實(shí)就是由一些觸發(fā)信號啟動(dòng),例如在程序運(yùn)行過程中,串行端口中斷被觸發(fā)接收到一些相關(guān)的字節(jié)命令,運(yùn)行系統(tǒng)即進(jìn)入到中斷操作中。在程序運(yùn)行中,上位機(jī)通過向UART端口發(fā)送遠(yuǎn)程控制命令時(shí),程序進(jìn)入U(xiǎn)ART中斷運(yùn)行程序,論文中程序設(shè)計(jì)為當(dāng)微處理器的USART1接受到串口0xFF信號時(shí)進(jìn)入中斷。此方法在應(yīng)用程序區(qū)中的軟件的編程比較簡單,只需要在程序中加入一條中斷指令。當(dāng)運(yùn)行系統(tǒng)在運(yùn)行時(shí),若監(jiān)測到UART1中斷被觸發(fā)時(shí),論文中軟件設(shè)計(jì)判斷觸發(fā)信號是否為0xFF字符,若是此信息則執(zhí)行看門狗復(fù)位發(fā)生,使得程序運(yùn)行從應(yīng)用程序區(qū)跳到Boot Loader區(qū)。如果是別的字符命令,則根據(jù)軟件定義進(jìn)行相應(yīng)的操作。
#pragma interrupt_handler uart1_rx_isr:31
void uart1_rx_isr(void)
{
char pflag;
pflag = UDR1;
if(pflag == 0xff)
while(1);
}
第二種方法即上電復(fù)位更加直接,因?yàn)锽oot Loader是在系統(tǒng)加電后就立即運(yùn)行的第一段代碼,我們可以通過編程引導(dǎo)復(fù)位熔絲位,使得復(fù)位向量指向引導(dǎo)Flash區(qū)的起始地址,而Boot Loader通常放置在不易丟失的存儲器的開始地址,這樣運(yùn)行系統(tǒng)斷電上電就等于發(fā)生了一個(gè)復(fù)位操作,Boot Loader就被啟動(dòng)了。因?yàn)閱纹瑱C(jī)本身不會改變?nèi)劢z位的設(shè)置,所以當(dāng)我們通過軟件上將復(fù)位熔絲位編程后,這就意味著復(fù)位向量會一直指向Boot Loader的起始地址。熔絲位可以通過串行或并行編程的方法來改變,完成Boot Loader加載用戶程序代碼后,程序開始執(zhí)行應(yīng)用程序代碼。
第三種方法通過調(diào)用跳轉(zhuǎn)函數(shù)的方式進(jìn)入到Boot Loader區(qū)也比較簡單,當(dāng)需要進(jìn)入到Boot Loader區(qū)時(shí),只需要加入一個(gè)跳轉(zhuǎn)函數(shù)。論文中通過AVR Studio4設(shè)置嵌入式軟PLC的Boot Loader區(qū)大小配置為4096字節(jié),Boot Loader區(qū)復(fù)位地址(Boot Loader起始地址)為0xf000。結(jié)合匯編語言,這樣一個(gè)簡單的通過跳轉(zhuǎn)指令進(jìn)入引導(dǎo)程序C編程代碼如下所示:
void appl_boot(void)
{
MCUCR = 0x00;
MCUCR = 0x01; //中斷向量表遷移到Boot區(qū)頭部
RAMPZ = 0x01; //RAMPZ初始化
asm("jmp 0xf000\n");//跳轉(zhuǎn)到Flash的0xf000處,執(zhí)行引導(dǎo)加載程序
}
這樣等待用戶梯形圖程序更新完成,加載了梯形圖應(yīng)用代碼后,會自動(dòng)進(jìn)入用戶應(yīng)用程序,MCU開始執(zhí)行應(yīng)用程序代碼。執(zhí)行更新完程序后從Boot Loader區(qū)跳出自動(dòng)運(yùn)行用戶應(yīng)用程序,是通過下面語句實(shí)現(xiàn)的。
void boot_appl (void)
{
MCUCR = 0x01;
MCUCR = 0x00;    //中斷向量表遷移到應(yīng)用程序區(qū)頭部
RAMPZ = 0x00;     //RAMPZ清零初始化
asm("jmp 0x0000\n"); //跳轉(zhuǎn)到Flash的0x0000處,執(zhí)行用戶應(yīng)用程序
}
完成了以上工作,接下來就可以進(jìn)行實(shí)際的C程序設(shè)計(jì)了。
4.2Boot Loader程序設(shè)計(jì)
Boot Loader有兩種不同的操作模式:“啟動(dòng)加載”和“下載”模式。
啟動(dòng)加載是Boot Loader的正常工作模式,Boot Loader從單片機(jī)的固態(tài)存儲器上將操作系統(tǒng)加載到RAM中運(yùn)行等,整個(gè)過程沒有用戶的介入。下載模式是指Boot Loader通過串口連接或者網(wǎng)絡(luò)連接等通信手段從主機(jī)下載文件。
論文為實(shí)現(xiàn)梯形圖的可在線下載更新,設(shè)計(jì)的Boot Loader支持這兩種模式,而且允許在這兩種工作模式之間切換[2]。
比如當(dāng)系統(tǒng)上電后Boot Loader在啟動(dòng)時(shí)處于正常就啟動(dòng)加載模式,但是程序會延時(shí)等待1分鐘(等待時(shí)間長短可以根據(jù)實(shí)際情況調(diào)整程序可變),設(shè)計(jì)中通過初始化PORTE2口控制LED的亮滅來觀察系統(tǒng)的運(yùn)行狀態(tài)。如果在一分鐘內(nèi)如果UART1口接收到編程下載更新梯形圖代碼命令,則將切換到下載模式,進(jìn)入梯形圖代碼更新狀態(tài),等待梯形圖代碼更新完畢后開始執(zhí)行更新后的新應(yīng)用程序。如果1分時(shí)間內(nèi)沒有收到編程下載更新梯形圖代碼命令,程序自動(dòng)跳轉(zhuǎn)到應(yīng)用程序區(qū),繼續(xù)執(zhí)行單片機(jī)內(nèi)原有保存的PLC梯形圖程序,
作者:未知 點(diǎn)擊:894次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:基于AT90CAN128單片機(jī)的Boot Loader應(yīng)用設(shè)計(jì)
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請《基于AT90CAN128單片機(jī)的Boot Loader應(yīng)用設(shè)計(jì)》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個(gè)人求購

戴先生 【求購】  美孚s-2...  2025-12-23
李先生 【求購】  一體化消防...  2025-12-22
何經(jīng)理 【求購】  亨通電纜  2025-12-22
肖先生 【求購】  氣缸LCR...  2025-12-22
王嘉文 【求購】  減速機(jī)  2025-12-22
付先生 【求購】  循環(huán)水處理  2025-12-22
楊金軍 【求購】  玉柴船用發(fā)...  2025-12-22
陳經(jīng)理 【求購】  星諾XIN...  2025-12-19
VIP公司推薦