at91rm9200啟動過程教程 系統(tǒng)上電,檢測BMS,選擇系統(tǒng)的啟動方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩個地址處都可以訪問到ROM。由于9200的ROM中固化了一個BOOTLOAER程序。所以PC從0X0處開始執(zhí)行這個BOOTLOAER(準(zhǔn)確的說應(yīng)該是一級BOOTLOADER)。這個BOOTLOER依次完成以下步驟: 1、PLL SETUP,設(shè)置PLLB產(chǎn)生48M時鐘頻率提供給USB DEVICE。同時DEBUG USART也被初始化為48M的時鐘頻率; 2、相應(yīng)模式下的堆棧設(shè)置; 3、檢測主時鐘源(Main oscillator); 4、中斷控制器(AIC)的設(shè)置; 5、C 變量的初始化; 6、跳到主函數(shù)。 完成以上步驟后,我們可以認(rèn)為BOOT過程結(jié)束,接下來的就是LOADER的過程,或者也可以認(rèn)為是裝載二級BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、連接在外部總線上的8位并行FLASH的順序依次來找合法的BOOT程序。所謂合法的指的是在這些存儲設(shè)備的開始地址處連續(xù)的存放的32個字節(jié),也就是8條指令必須是跳轉(zhuǎn)指令或者裝載PC的指令,其實(shí)這樣規(guī)定就是把這8條指令當(dāng)作是異常向量表來處理。必須注意的是第6條指令要包含將要裝載的映像的大小。關(guān)于如何計算和寫這條指令可以參考用戶手冊。一旦合法的映像找到之后,則BOOT程序會把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超過16K-3K的大小。當(dāng)BOOT程序完成了把合法的映像搬到SRAM的任務(wù)以后,接下來就進(jìn)行存儲器的REMAP,經(jīng)過REMAP之后,SRAM從映設(shè)前的0X200000地址處被映設(shè)到了0X0地址并且程序從0X0處開始執(zhí)行。而ROM這時只能在0X100000這個地址處看到了。至此9200就算完成了一種形式的啟動過程。如果BOOT程序在以上所列的幾種存儲設(shè)備中找到合法的映像,則自動初始化DEBUG USART口和USB DEVICE口以準(zhǔn)備從外部載入映像。對DEBUG口的初始化包括設(shè)置參數(shù)115200 8 N 1以及運(yùn)行XMODEM協(xié)議。對USB DEVICE進(jìn)行初始化以及運(yùn)行DFU協(xié)議。現(xiàn)在用戶可以從外部(假定為PC平臺)載入你的映像了。在PC平臺下,以WIN2000為例,你可以用超級終端來完成這個功能,但是還是要注意你的映像的大小不能超過13K。一旦正確從外部裝載了映像,接下來的過程就是和前面一樣重映設(shè)然后執(zhí)行映像了。我們上面講了BMS為高電平,AT91RM9200選擇從片內(nèi)的ROM啟動的一個過程。如果BMS為低電平,則AT91RM9200會從片外的FLASH啟動,這時片外的FLASH的起始地址就是0X0了,接下來的過程和片內(nèi)啟動的過程是一樣的,只不過這時就需要自己寫啟動代碼了,至于怎么寫,大致的內(nèi)容和ROM的BOOT差不多,不同的硬件設(shè)計可能有不一樣的地方,但基本的都是一樣的。由于片外FLASH可以設(shè)計的大,所以這里編寫的BOOTLOADER可以一步到位,也就是說不用像片內(nèi)啟動可能需要BOOT好幾級了,目前AT91RM9200上使用較多的bootloer是u-boot,這是一個開放源代碼的軟件,用戶可以自由下載并根據(jù)自己的應(yīng)用配置。總的說來,筆者以為AT91RM9200的啟動過程比較簡單,ATMEL的服務(wù)也不錯,不但提供了片內(nèi)啟動的功能,還提供了UBOOT可供下載。筆者寫了一個BOOTLODER從片外的FLASHA啟動,效果還可以。 uboot結(jié)構(gòu)與使用uboot是一個龐大的公開源碼的軟件。他支持一些系列的arm體系,包含常見的外設(shè)的驅(qū)動,是一個功能強(qiáng)大的板極支持包。其代碼可以 http://sourceforge.net/projects/u-boot下載 在9200上,為了啟動uboot,還有兩個boot軟件包,分別是loader和boot。分別完成從sram和flash中的一級boot。其源碼可以從atmel的官方網(wǎng)站下載。 我們知道,當(dāng)9200系統(tǒng)上電后,如果bms為高電平,則系統(tǒng)從片內(nèi)rom啟動,這時rom中固化的boot程序初始化了debug口并向其發(fā)送'c',這時我們打開超級終端會看到ccccc...。這說明系統(tǒng)已經(jīng)啟動,同時xmodem協(xié)議已經(jīng)啟動,用戶可以通過超級終端下載用戶的bootloader。作為第一步,我們下載loader.bin.loader.bin將被下載到片內(nèi)的sram中。這個loder完成的功能主要是初始化時鐘,sdram和xmodem協(xié)議,為下載和啟動uboot做準(zhǔn)備。當(dāng)下載了loader.bin后,超級終端會繼續(xù)打印:ccccc....。這時我們就可以下在uboot了。uboot將被下載到sdram中的一個地址后并把pc指針調(diào)到此處開始執(zhí)行uboot。接著我們就可以在終端上看到uboot的shell啟動了,提示符uboot>,用戶可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了對內(nèi)存、flash、網(wǎng)絡(luò)、系統(tǒng)啟動等一些命令。 如果系統(tǒng)上電時bms為低電平,則系統(tǒng)從片外的flash啟動。為了從片外的flash啟動uboot,我們必須把boot.bin放到0x0地址出,使得從flash啟動后首先執(zhí)行boot.bin,而要少些boot.bin,就要先完成上面我們講的那些步驟,首先開始從片內(nèi)rom啟動uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz燒寫到flash中的目的,假如我們已經(jī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)先啟動boot,然后解壓縮uboot.gz,然后啟動uboot。注意,這里uboot必須壓縮成.gz文件,否則會出錯。 怎么編譯這三個源碼包呢,首先要建立一個arm的交叉編譯環(huán)境,關(guān)于如何建立,此處不予說明。建立好了以后,分別解壓源碼包,然后修改Makefile中的編譯器項目,正確填寫你的編譯器的所在路徑。 對loader和boot,直接make。對uboot,第一步:make_at91rm9200dk,第二步:make。這樣就會在當(dāng)前目錄下分別生成*.bin文件,對于uboot.bin,我們還要壓縮成.gz文件。 也許有的人對loader和boot搞不清楚為什么要兩個,有什么區(qū)別嗎?首先有區(qū)別,boot主要完成從flash中啟動uboot的功能,他要對uboot的壓縮文件進(jìn)行解壓,除此之外,他和loader并無大的區(qū)別,你可以把boot理解為在loader的基礎(chǔ)上加入了解壓縮.gz的功能而已。所以這兩個并無多大的本質(zhì)不同,只是他們的使命不同而已。 特別說名的是這三個軟件包都是開放源碼的,所以用戶可以根據(jù)自己的系統(tǒng)的情況修改和配置以及裁減,打造屬于自己系統(tǒng)的bootloder。
上傳時間: 2013-10-27
上傳用戶:wsf950131
NXP半導(dǎo)體設(shè)計的LPC3000系列ARM芯片,適用于要求高性能和低功耗結(jié)合的嵌入式應(yīng)用中。 NXP通過使用90納米的處理技術(shù),將一個帶有矢量浮點(diǎn)協(xié)處理器的ARM926EJ-S CPU內(nèi)核與一系列包括USB On-The-Go在內(nèi)的標(biāo)準(zhǔn)外設(shè)結(jié)合起來,從而實(shí)現(xiàn)LPC3000的性能目標(biāo)。LPC3000系列ARM可工作在高于266MHz的CPU頻率下。ARM926EJ-S CPU內(nèi)核加入5級流水處理并采用哈佛結(jié)構(gòu)。該內(nèi)核還具有一個完整的存儲器管理單元(MMU),以提供支持現(xiàn)代操作系統(tǒng)多程序設(shè)計所需的虛擬存儲器功能。ARM926EJ-S CPU內(nèi)核還包含了帶有單周期MAC操作的一系列DSP指令擴(kuò)展,以及Jazelle Java字節(jié)代碼執(zhí)行。NXP實(shí)現(xiàn)的器件具有一個32kB指令高速緩存和32kB數(shù)據(jù)高速緩存。
上傳時間: 2013-11-20
上傳用戶:xiaowei314
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è)自動化制作、POS系統(tǒng)和ATM的應(yīng)用。
上傳時間: 2013-10-16
上傳用戶:diets
ARM處理器的工作模式 ARM處理器狀態(tài) ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:第一種為ARM狀態(tài),此時處理器執(zhí)行32位的字對齊的ARM指令;第二種為Thumb狀態(tài),此時處理器執(zhí)行16位的、半字對齊的Thumb指令。在程序的執(zhí)行過程中,微處理器可以隨時在兩種工作狀態(tài)之間切換,并且,處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。但ARM微處理器在開始執(zhí)行代碼時,應(yīng)該處于ARM狀態(tài)。 ARM處理器狀態(tài) 進(jìn)入Thumb狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為1時,可以采用執(zhí)行BX指令的方法,使微處理器從ARM狀態(tài)切換到Thumb狀態(tài)。此外,當(dāng)處理器處于Thumb狀態(tài)時發(fā)生異常(如IRQ、FIQ、Undef、Abort、SWI等),則異常處理返回時,自動切換到Thumb狀態(tài)。 進(jìn)入ARM狀態(tài):當(dāng)操作數(shù)寄存器的狀態(tài)位為0時,執(zhí)行BX指令時可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài)。此外,在處理器進(jìn)行異常處理時,把PC指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到ARM狀態(tài)。ARM處理器模式 ARM微處理器支持7種運(yùn)行模式,分別為:用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)。快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理。外部中斷模式(irq):用于通用的中斷處理。管理模式(svc):操作系統(tǒng)使用的保護(hù)模式。數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時進(jìn)入該模式,可用于虛擬存儲及存儲保護(hù)。系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。ARM處理器模式 ARM微處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時,某些被保護(hù)的系統(tǒng)資源是不能被訪問的。 除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權(quán)模式;其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式,常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源等情況。ARM寄存器 ARM處理器共有37個寄存器。其中包括:31個通用寄存器,包括程序計數(shù)器(PC)在內(nèi)。這些寄存器都是32位寄存器。以及6個32位狀態(tài)寄存器。 關(guān)于寄存器這里就不詳細(xì)介紹了,有興趣的人可以上網(wǎng)找找,很多這方面的資料。異常處理 當(dāng)正常的程序執(zhí)行流程發(fā)生暫時的停止時,稱之為異常,例如處理一個外部的中斷請求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個異常同時發(fā)生,它們將會按固定的優(yōu)先級進(jìn)行處理。當(dāng)一個異常出現(xiàn)以后,ARM微處理器會執(zhí)行以下幾步操作:進(jìn)入異常處理的基本步驟:將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時能從正確的位置重新開始執(zhí)行。將CPSR復(fù)制到相應(yīng)的SPSR中。根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。如果異常發(fā)生時,處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時,處理器自動切換到ARM狀態(tài)。 ARM微處理器對異常的響應(yīng)過程用偽碼可以描述為: R14_ = Return LinkSPSR_= CPSRCPSR[4:0] = Exception Mode NumberCPSR[5] = 0 ;當(dāng)運(yùn)行于 ARM 工作狀態(tài)時If == Reset or FIQ then;當(dāng)響應(yīng) FIQ 異常時,禁止新的 FIQ 異常CPSR[6] = 1PSR[7] = 1PC = Exception Vector Address異常處理完畢之后,ARM微處理器會執(zhí)行以下幾步操作從異常返回:將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。將SPSR復(fù)制回CPSR中。若在進(jìn)入異常處理時設(shè)置了中斷禁止位,要在此清除。
上傳時間: 2013-11-15
上傳用戶:hanbeidang
本系統(tǒng)針對設(shè)計制作簡易多功能計數(shù)器能接收函數(shù)信號發(fā)生器產(chǎn)生的信號,實(shí)現(xiàn)周期測量、頻率測量和時間間隔測量的功能的要求。通過分頻和整形,利用C8051F020 [1] 的可編程計數(shù)器陣列(PCA)的邊沿捕捉模式對信號的上升沿捕捉并計時,從而達(dá)到對頻率、周期和時間間隔測量的目的,并能使測量的范圍和測量精度達(dá)到預(yù)期的要求,還能實(shí)現(xiàn)顯示溫度、時間和記憶10 個測量過的歷史數(shù)據(jù)、顯示峰值等擴(kuò)展需求。
標(biāo)簽: C8051F020 芯片 多功能 計數(shù)器
上傳時間: 2013-10-21
上傳用戶:13788529953
設(shè)計了一種基于C8051F005 單片機(jī)控制多路PZT(壓電陶瓷)的驅(qū)動電路,采用串行數(shù)據(jù)傳輸?shù)姆椒ǎ眯滦蛿?shù)模轉(zhuǎn)換器AD5308 具有8 通道DAC 輸出的特性,極大的簡化了電路設(shè)計,給出了硬件系統(tǒng)設(shè)計和軟件流程圖以及主要的軟件模塊設(shè)計。本電路主要用于自適應(yīng)光學(xué)合成孔徑成像相位實(shí)時校正系統(tǒng)中。結(jié)果表明,該電路可以成功為12 路PZT 提供所需的驅(qū)動電壓。
標(biāo)簽: PZT 單片機(jī)控制 多路 驅(qū)動
上傳時間: 2013-10-19
上傳用戶:pans0ul
針對人行徑方向測量的紅外探測系統(tǒng)需求,提出了實(shí)現(xiàn)多通道模數(shù)轉(zhuǎn)換器(ADC)的一種新方法,采用了雙片可獨(dú)立工作的帶有8 通道ADC 的單片機(jī),基于雙片單片機(jī)之間的SMBus 通訊可實(shí)現(xiàn)16 通道ADC 系統(tǒng),從而可簡化后端處理電路,提高系統(tǒng)的數(shù)據(jù)處理能力,并取得較好的數(shù)據(jù)采集的同步性。
標(biāo)簽: SMBus ADC 雙單片機(jī) 多通道
上傳時間: 2013-10-09
上傳用戶:jiiszha
針對機(jī)艙消防應(yīng)急救援模擬訓(xùn)練系統(tǒng)中訓(xùn)練環(huán)境控制的難題,設(shè)計了一種以AT89C52單片機(jī)為核心的多點(diǎn)溫度煙霧測控系統(tǒng)。該系統(tǒng)可實(shí)現(xiàn)對模擬系統(tǒng)中消防環(huán)境(煙霧,溫度)的實(shí)時測量和控制。根據(jù)訓(xùn)練系統(tǒng)對溫度煙霧指標(biāo)要求嚴(yán)格的特點(diǎn),引入了基于NCD 與優(yōu)化函數(shù)結(jié)合的非線性PID 對PID 參數(shù)進(jìn)行優(yōu)化整定,實(shí)現(xiàn)了實(shí)時控制。整個設(shè)計簡明,清晰。
標(biāo)簽: 單片機(jī) 多點(diǎn) 溫度 測控
上傳時間: 2013-10-21
上傳用戶:lunshaomo
本文介紹了一種以單片機(jī)為核心的智能糧庫溫度測量系統(tǒng),闡述了其工作原理,設(shè)計了硬件和軟件系統(tǒng)。介紹了測溫系統(tǒng)的組成,采用單片機(jī)對溫度傳感器進(jìn)行控制和數(shù)據(jù)傳輸,溫度信號采集由智能傳感器DS18B20完成。根據(jù)單總線獨(dú)特的優(yōu)點(diǎn),方便地組建傳感器網(wǎng)絡(luò)。多點(diǎn)溫度數(shù)據(jù)可通過中心控制室的PC機(jī)實(shí)現(xiàn)圖文顯示的效果。該系統(tǒng)采用RS485總線技術(shù),傳輸距離超過1200米,克服了電纜電阻對測量結(jié)果的影響,提高了測量的準(zhǔn)確性,能實(shí)現(xiàn)可靠的多點(diǎn)、動態(tài)的溫度監(jiān)控。試驗結(jié)果表明,該檢測系統(tǒng)精度高,檢測誤差均在0.5%以內(nèi)。該系統(tǒng)已經(jīng)在糧庫溫度測量中推廣應(yīng)用。
標(biāo)簽: 單片機(jī) 多點(diǎn)測溫
上傳時間: 2013-11-17
上傳用戶:黃酒配奶茶
為了解決用電安全隱患。該系統(tǒng)以電磁感應(yīng)線圈和變壓器的輸出電壓為檢測用電發(fā)生漏電、過載、短路和超壓故障時的取樣電壓信號,通過8051 單片機(jī)控制,運(yùn)用HD44780字符液晶顯示模塊和由ISD2650 語音芯片,使其具有字符提示和語音提示,在嚴(yán)重故障時又能自動提前跳閘。改變了目前的漏電保護(hù)器和過載保護(hù)器功能單一,故障出現(xiàn)時沒有任何提示等缺點(diǎn)。 經(jīng)大量實(shí)驗證明單片機(jī)多功能用電故障控制器具有性能穩(wěn)定、安全、可靠是理想的用電保護(hù)提示器。
標(biāo)簽: 單片機(jī) 多功能 用電故障 系統(tǒng)設(shè)計
上傳時間: 2013-11-03
上傳用戶:gyq
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1