at91rm9200啟動(dòng)過程教程 系統(tǒng)上電,檢測(cè)BMS,選擇系統(tǒng)的啟動(dòng)方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動(dòng)。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩個(gè)地址處都可以訪問到ROM。由于9200的ROM中固化了一個(gè)BOOTLOAER程序。所以PC從0X0處開始執(zhí)行這個(gè)BOOTLOAER(準(zhǔn)確的說應(yīng)該是一級(jí)BOOTLOADER)。這個(gè)BOOTLOER依次完成以下步驟: 1、PLL SETUP,設(shè)置PLLB產(chǎn)生48M時(shí)鐘頻率提供給USB DEVICE。同時(shí)DEBUG USART也被初始化為48M的時(shí)鐘頻率; 2、相應(yīng)模式下的堆棧設(shè)置; 3、檢測(cè)主時(shí)鐘源(Main oscillator); 4、中斷控制器(AIC)的設(shè)置; 5、C 變量的初始化; 6、跳到主函數(shù)。 完成以上步驟后,我們可以認(rèn)為BOOT過程結(jié)束,接下來的就是LOADER的過程,或者也可以認(rèn)為是裝載二級(jí)BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、連接在外部總線上的8位并行FLASH的順序依次來找合法的BOOT程序。所謂合法的指的是在這些存儲(chǔ)設(shè)備的開始地址處連續(xù)的存放的32個(gè)字節(jié),也就是8條指令必須是跳轉(zhuǎn)指令或者裝載PC的指令,其實(shí)這樣規(guī)定就是把這8條指令當(dāng)作是異常向量表來處理。必須注意的是第6條指令要包含將要裝載的映像的大小。關(guān)于如何計(jì)算和寫這條指令可以參考用戶手冊(cè)。一旦合法的映像找到之后,則BOOT程序會(huì)把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超過16K-3K的大小。當(dāng)BOOT程序完成了把合法的映像搬到SRAM的任務(wù)以后,接下來就進(jìn)行存儲(chǔ)器的REMAP,經(jīng)過REMAP之后,SRAM從映設(shè)前的0X200000地址處被映設(shè)到了0X0地址并且程序從0X0處開始執(zhí)行。而ROM這時(shí)只能在0X100000這個(gè)地址處看到了。至此9200就算完成了一種形式的啟動(dòng)過程。如果BOOT程序在以上所列的幾種存儲(chǔ)設(shè)備中找到合法的映像,則自動(dòng)初始化DEBUG USART口和USB DEVICE口以準(zhǔn)備從外部載入映像。對(duì)DEBUG口的初始化包括設(shè)置參數(shù)115200 8 N 1以及運(yùn)行XMODEM協(xié)議。對(duì)USB DEVICE進(jìn)行初始化以及運(yùn)行DFU協(xié)議。現(xiàn)在用戶可以從外部(假定為PC平臺(tái))載入你的映像了。在PC平臺(tái)下,以WIN2000為例,你可以用超級(jí)終端來完成這個(gè)功能,但是還是要注意你的映像的大小不能超過13K。一旦正確從外部裝載了映像,接下來的過程就是和前面一樣重映設(shè)然后執(zhí)行映像了。我們上面講了BMS為高電平,AT91RM9200選擇從片內(nèi)的ROM啟動(dòng)的一個(gè)過程。如果BMS為低電平,則AT91RM9200會(huì)從片外的FLASH啟動(dòng),這時(shí)片外的FLASH的起始地址就是0X0了,接下來的過程和片內(nèi)啟動(dòng)的過程是一樣的,只不過這時(shí)就需要自己寫啟動(dòng)代碼了,至于怎么寫,大致的內(nèi)容和ROM的BOOT差不多,不同的硬件設(shè)計(jì)可能有不一樣的地方,但基本的都是一樣的。由于片外FLASH可以設(shè)計(jì)的大,所以這里編寫的BOOTLOADER可以一步到位,也就是說不用像片內(nèi)啟動(dòng)可能需要BOOT好幾級(jí)了,目前AT91RM9200上使用較多的bootloer是u-boot,這是一個(gè)開放源代碼的軟件,用戶可以自由下載并根據(jù)自己的應(yīng)用配置。總的說來,筆者以為AT91RM9200的啟動(dòng)過程比較簡(jiǎn)單,ATMEL的服務(wù)也不錯(cuò),不但提供了片內(nèi)啟動(dòng)的功能,還提供了UBOOT可供下載。筆者寫了一個(gè)BOOTLODER從片外的FLASHA啟動(dòng),效果還可以。 uboot結(jié)構(gòu)與使用uboot是一個(gè)龐大的公開源碼的軟件。他支持一些系列的arm體系,包含常見的外設(shè)的驅(qū)動(dòng),是一個(gè)功能強(qiáng)大的板極支持包。其代碼可以 http://sourceforge.net/projects/u-boot下載 在9200上,為了啟動(dòng)uboot,還有兩個(gè)boot軟件包,分別是loader和boot。分別完成從sram和flash中的一級(jí)boot。其源碼可以從atmel的官方網(wǎng)站下載。 我們知道,當(dāng)9200系統(tǒng)上電后,如果bms為高電平,則系統(tǒng)從片內(nèi)rom啟動(dòng),這時(shí)rom中固化的boot程序初始化了debug口并向其發(fā)送'c',這時(shí)我們打開超級(jí)終端會(huì)看到ccccc...。這說明系統(tǒng)已經(jīng)啟動(dòng),同時(shí)xmodem協(xié)議已經(jīng)啟動(dòng),用戶可以通過超級(jí)終端下載用戶的bootloader。作為第一步,我們下載loader.bin.loader.bin將被下載到片內(nèi)的sram中。這個(gè)loder完成的功能主要是初始化時(shí)鐘,sdram和xmodem協(xié)議,為下載和啟動(dòng)uboot做準(zhǔn)備。當(dāng)下載了loader.bin后,超級(jí)終端會(huì)繼續(xù)打印:ccccc....。這時(shí)我們就可以下在uboot了。uboot將被下載到sdram中的一個(gè)地址后并把pc指針調(diào)到此處開始執(zhí)行uboot。接著我們就可以在終端上看到uboot的shell啟動(dòng)了,提示符uboot>,用戶可以u(píng)boot>help 看到命令列表和大概的功能。uboot的命令包含了對(duì)內(nèi)存、flash、網(wǎng)絡(luò)、系統(tǒng)啟動(dòng)等一些命令。 如果系統(tǒng)上電時(shí)bms為低電平,則系統(tǒng)從片外的flash啟動(dòng)。為了從片外的flash啟動(dòng)uboot,我們必須把boot.bin放到0x0地址出,使得從flash啟動(dòng)后首先執(zhí)行boot.bin,而要少些boot.bin,就要先完成上面我們講的那些步驟,首先開始從片內(nèi)rom啟動(dòng)uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz燒寫到flash中的目的,假如我們已經(jīng)啟動(dòng)了uboot,可以這樣操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系統(tǒng)復(fù)位,就可以看到系統(tǒng)先啟動(dòng)boot,然后解壓縮uboot.gz,然后啟動(dòng)uboot。注意,這里uboot必須壓縮成.gz文件,否則會(huì)出錯(cuò)。 怎么編譯這三個(gè)源碼包呢,首先要建立一個(gè)arm的交叉編譯環(huán)境,關(guān)于如何建立,此處不予說明。建立好了以后,分別解壓源碼包,然后修改Makefile中的編譯器項(xiàng)目,正確填寫你的編譯器的所在路徑。 對(duì)loader和boot,直接make。對(duì)uboot,第一步:make_at91rm9200dk,第二步:make。這樣就會(huì)在當(dāng)前目錄下分別生成*.bin文件,對(duì)于uboot.bin,我們還要壓縮成.gz文件。 也許有的人對(duì)loader和boot搞不清楚為什么要兩個(gè),有什么區(qū)別嗎?首先有區(qū)別,boot主要完成從flash中啟動(dòng)uboot的功能,他要對(duì)uboot的壓縮文件進(jìn)行解壓,除此之外,他和loader并無大的區(qū)別,你可以把boot理解為在loader的基礎(chǔ)上加入了解壓縮.gz的功能而已。所以這兩個(gè)并無多大的本質(zhì)不同,只是他們的使命不同而已。 特別說名的是這三個(gè)軟件包都是開放源碼的,所以用戶可以根據(jù)自己的系統(tǒng)的情況修改和配置以及裁減,打造屬于自己系統(tǒng)的bootloder。
上傳時(shí)間: 2013-10-27
上傳用戶:wsf950131
USB-1620A工業(yè)多串口卡采用的是最新的USB2.0接口技術(shù),兼容的USB2.0以下接口。可以應(yīng)用于傳統(tǒng)的RS-232串行通訊領(lǐng)域,擴(kuò)充PC機(jī)標(biāo)準(zhǔn)RS-232通訊端口的數(shù)量,如工業(yè)自動(dòng)化制作、POS系統(tǒng)和ATM的應(yīng)用。
上傳時(shí)間: 2013-10-16
上傳用戶:diets
本文介紹了基于USB單片機(jī)的彈載測(cè)量系統(tǒng)地面測(cè)試臺(tái)的固件程序設(shè)計(jì)方法。地面測(cè)試臺(tái)用來對(duì)彈載數(shù)據(jù)記錄裝置進(jìn)行自檢,在本測(cè)試臺(tái)上采用EZ-USB FX2系列單片機(jī)CY7C68013來實(shí)現(xiàn)上位機(jī)與地面測(cè)試臺(tái)間的通信,固件程序的功能包括產(chǎn)生測(cè)試臺(tái)狀態(tài)信號(hào)、下載各種信號(hào)源數(shù)據(jù)及進(jìn)行實(shí)時(shí)監(jiān)測(cè)數(shù)據(jù)回讀。文中通過測(cè)試臺(tái)的工程實(shí)例,詳細(xì)介紹了端口模式下固件程序的編寫流程,并給出了部分程序代碼。
上傳時(shí)間: 2013-10-30
上傳用戶:thesk123
7.1 串行通信基本知識(shí)7.2 串行口及應(yīng)用7.3 RS-232C標(biāo)準(zhǔn)接口總線 及串行通信硬件設(shè)計(jì)7.4 89C51與89C51點(diǎn)對(duì)點(diǎn)異步通信7.5 89C51與PC機(jī)間通信軟件的設(shè)計(jì)7.6 PC機(jī)與多個(gè)單片機(jī)間的通信本章將介紹89C51串行口的結(jié)構(gòu)及應(yīng)用PC機(jī)與89C51間的雙機(jī)通信一臺(tái)PC機(jī)控制多臺(tái)89C51前沿機(jī)的分布式系統(tǒng),以及通信接口電路和軟件設(shè)計(jì),并給出設(shè)計(jì)實(shí)例,包括接口電路、程序框圖、主程序和接收/發(fā)送子程序.
標(biāo)簽: 89C51 串行口 串行通信技術(shù)
上傳時(shí)間: 2013-10-27
上傳用戶:firstbyte
帶您從零學(xué)單片機(jī)之串口通信 串口應(yīng)用簡(jiǎn)介51的單片機(jī)除了定時(shí)器/計(jì)數(shù)器和中斷外.還擁有串行通信接口.有了這個(gè)接口我們可以用它和電腦通信.我們可以利用串口向電腦發(fā)送數(shù)據(jù),也可以用串口接收電腦的數(shù)據(jù).有了這個(gè)接口我們可以利用它來設(shè)計(jì)很多東西,數(shù)據(jù)采集,多機(jī)通信,遠(yuǎn)程控制等等. 串行通信是將一組數(shù)據(jù)分成一位位的方式在數(shù)據(jù)線上傳送.串行通信的優(yōu)點(diǎn):占用IO口少.遠(yuǎn)距離傳輸時(shí)候成本低.串行通信的缺點(diǎn):相對(duì)并行通信傳輸速度慢,傳輸方式比較復(fù)雜.DS1302 ADC0832等等都是串行傳輸數(shù)據(jù).
上傳時(shí)間: 2013-10-27
上傳用戶:jing911003
MCU51的串口調(diào)試工具:本站會(huì)員 gxujjd 及sltian 推薦的Mcu51網(wǎng)站的免費(fèi)串口調(diào)試工具。此版本使用C++Builder編寫.
標(biāo)簽: MCU 51 串口調(diào)試工具
上傳時(shí)間: 2013-11-08
上傳用戶:Togetherheronce
介紹了作者所設(shè)計(jì)的基于I2C 總線的測(cè)試系統(tǒng)的結(jié)構(gòu)及I2C 總線通信協(xié)議的特點(diǎn),給出了I2C 總線在avr 單片機(jī)Atmega128 和三個(gè)Atmega168 通信時(shí)的具體主發(fā)和從收程序的流程圖及部分C 語言程序,實(shí)現(xiàn)了Atmega128 單片機(jī)與三個(gè)Atmega168 單片機(jī)之間的可靠通信。最后,總結(jié)了編寫I2C 通信程序時(shí)的注意事項(xiàng)。
上傳時(shí)間: 2013-10-31
上傳用戶:9牛10
單片機(jī)I/O口的使用:對(duì)單片機(jī)的控制,其實(shí)就是對(duì)I/O口的控制,無論單片機(jī)對(duì)外界進(jìn)行何種控制,亦或接受外部的控制,都是通過I/O口進(jìn)行的。單片機(jī)總共有P0、P1、P2、P3四個(gè)8位雙向輸入輸出端口,每個(gè)端口都有鎖存器、輸出驅(qū)動(dòng)器和輸入緩沖器。4個(gè)I/O端口都能作輸入輸出口用,其中P0和P2通常用于對(duì)外部存儲(chǔ)器的訪問。§4.1 MCS-51單片機(jī)的并行端口結(jié)構(gòu)與操作 51系列單片機(jī)有4個(gè)I/O端口,每個(gè)端口都是8位準(zhǔn)雙向口,共占32根引腳。每個(gè)端口都包括一個(gè)鎖存器(即專用寄存器P0~P3)、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。通常把4個(gè)端口籠統(tǒng)地表示為P0~P3。
標(biāo)簽: 單片機(jī)
上傳時(shí)間: 2013-11-06
上傳用戶:zhouxuepeng1
PCM-16xx系列工業(yè)多串口卡可以應(yīng)用于傳統(tǒng)的RS-232/422/485串行通訊領(lǐng)域,快速擴(kuò)充PC機(jī)標(biāo)準(zhǔn)COM通訊端口的數(shù)量。兼容PC/104規(guī)范,即插即用;集成4個(gè)串行通訊端口;同一PC可安裝多達(dá)8塊同型號(hào)卡;RS-232端口最高速率可達(dá)921.6Kbps;PCM-16xx系列工業(yè)多串口卡提供2~8個(gè)RS-232/422/485通訊端口,每個(gè)端口的通訊速率可以高達(dá)921.64Kbps。多串口卡采用工業(yè)級(jí)設(shè)計(jì),每一個(gè)通訊端口都集成防浪涌30KV ESD保護(hù),可選的高速電氣隔離保護(hù)。同一PC最多可安裝8塊同一型號(hào)的PCM-16xx工業(yè)多串口卡。
上傳時(shí)間: 2013-11-08
上傳用戶:zl5712176
TKS_COM串口調(diào)試助手在具備一般串口調(diào)試助手功能的同時(shí)增加了對(duì)多串口的實(shí)時(shí)監(jiān)控、橋接、多播和數(shù)據(jù)過濾等功能。
標(biāo)簽: 串口 調(diào)試助手 用戶手冊(cè)
上傳時(shí)間: 2013-12-01
上傳用戶:sdfsdfs1
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1