rINTCON=0x5 //Non-vectored,IRQ enable,FIQ disable rINTMOD=0x0 //All=IRQ mode
標(biāo)簽: Non-vectored IRQ rINTCON disable
上傳時(shí)間: 2013-12-17
上傳用戶:thuyenvinh
本程序執(zhí)行了MMU初始化,使能,設(shè)置domain,目的是使0x10000000開(kāi)始的地址映射到0x0處. 以便可以修改異常向量表.
標(biāo)簽: 0x10000000 domain MMU 0x0
上傳時(shí)間: 2014-01-20
上傳用戶:zhichenglu
BIT_SELFREFRESH EQU (1<<22) ;定義SDRAM自刷新標(biāo)志位 16 17 ;Pre-defined constants 預(yù)定義6種工作模式 18 USERMODE EQU 0x10 ;用戶模式 19 FIQMODE EQU 0x11 ;快速中斷模式 20 IRQMODE EQU 0x12 ;中斷模式 21 SVCMODE EQU 0x13 ;監(jiān)管模式 22 ABORTMODE EQU 0x17 ;異常中斷模式 23 UNDEFMODE EQU 0x1b ;未定義模式 24 25 MODEMASK EQU 0x1f ;模式掩碼 26 NOINT EQU 0xc0 ;取消中斷 27 28 ;The location of stacks;設(shè)置6種工作模式的堆棧的起始地址 29 ;在option.inc中定義了_STACK_BASEADDRESS EQU 0x33ff8000 30 UserStack EQU (_STACK_BASEADDRESS-0x3800) ;0x33ff4800 ~ 31 SVCStack EQU (_STACK_BASEADDRESS-0x2800) ;0x33ff5800 ~ 32 UndefStack EQU (_STACK_BASEADDRESS-0x2400) ;0x33ff5c00 ~ 33 AbortStack EQU (_STACK_BASEADDRESS-0x2000) ;0x33ff6000 ~ 34 IRQStack EQU (_STACK_BASEADDRESS-0x1000) ;0x33ff7000 ~ 35 FIQStack EQU (_STACK_BASEADDRESS-0x0) ;0x33ff8000 ~
標(biāo)簽: Mini 2440 啟動(dòng)代碼
上傳時(shí)間: 2013-10-07
上傳用戶:m62383408
at91rm9200啟動(dòng)過(guò)程教程 系統(tǒng)上電,檢測(cè)BMS,選擇系統(tǒng)的啟動(dòng)方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動(dòng)。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩個(gè)地址處都可以訪問(wèn)到ROM。由于9200的ROM中固化了一個(gè)BOOTLOAER程序。所以PC從0x0處開(kāi)始執(zhí)行這個(gè)BOOTLOAER(準(zhǔn)確的說(shuō)應(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過(guò)程結(jié)束,接下來(lái)的就是LOADER的過(guò)程,或者也可以認(rèn)為是裝載二級(jí)BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、連接在外部總線上的8位并行FLASH的順序依次來(lái)找合法的BOOT程序。所謂合法的指的是在這些存儲(chǔ)設(shè)備的開(kāi)始地址處連續(xù)的存放的32個(gè)字節(jié),也就是8條指令必須是跳轉(zhuǎn)指令或者裝載PC的指令,其實(shí)這樣規(guī)定就是把這8條指令當(dāng)作是異常向量表來(lái)處理。必須注意的是第6條指令要包含將要裝載的映像的大小。關(guān)于如何計(jì)算和寫(xiě)這條指令可以參考用戶手冊(cè)。一旦合法的映像找到之后,則BOOT程序會(huì)把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超過(guò)16K-3K的大小。當(dāng)BOOT程序完成了把合法的映像搬到SRAM的任務(wù)以后,接下來(lái)就進(jìn)行存儲(chǔ)器的REMAP,經(jīng)過(guò)REMAP之后,SRAM從映設(shè)前的0X200000地址處被映設(shè)到了0x0地址并且程序從0x0處開(kāi)始執(zhí)行。而ROM這時(shí)只能在0X100000這個(gè)地址處看到了。至此9200就算完成了一種形式的啟動(dòng)過(guò)程。如果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í)終端來(lái)完成這個(gè)功能,但是還是要注意你的映像的大小不能超過(guò)13K。一旦正確從外部裝載了映像,接下來(lái)的過(guò)程就是和前面一樣重映設(shè)然后執(zhí)行映像了。我們上面講了BMS為高電平,AT91RM9200選擇從片內(nèi)的ROM啟動(dòng)的一個(gè)過(guò)程。如果BMS為低電平,則AT91RM9200會(huì)從片外的FLASH啟動(dòng),這時(shí)片外的FLASH的起始地址就是0x0了,接下來(lái)的過(guò)程和片內(nèi)啟動(dòng)的過(guò)程是一樣的,只不過(guò)這時(shí)就需要自己寫(xiě)啟動(dòng)代碼了,至于怎么寫(xiě),大致的內(nèi)容和ROM的BOOT差不多,不同的硬件設(shè)計(jì)可能有不一樣的地方,但基本的都是一樣的。由于片外FLASH可以設(shè)計(jì)的大,所以這里編寫(xiě)的BOOTLOADER可以一步到位,也就是說(shuō)不用像片內(nèi)啟動(dòng)可能需要BOOT好幾級(jí)了,目前AT91RM9200上使用較多的bootloer是u-boot,這是一個(gè)開(kāi)放源代碼的軟件,用戶可以自由下載并根據(jù)自己的應(yīng)用配置。總的說(shuō)來(lái),筆者以為AT91RM9200的啟動(dòng)過(guò)程比較簡(jiǎn)單,ATMEL的服務(wù)也不錯(cuò),不但提供了片內(nèi)啟動(dòng)的功能,還提供了UBOOT可供下載。筆者寫(xiě)了一個(gè)BOOTLODER從片外的FLASHA啟動(dòng),效果還可以。 uboot結(jié)構(gòu)與使用uboot是一個(gè)龐大的公開(kāi)源碼的軟件。他支持一些系列的arm體系,包含常見(jiàn)的外設(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í)我們打開(kāi)超級(jí)終端會(huì)看到ccccc...。這說(shuō)明系統(tǒng)已經(jīng)啟動(dòng),同時(shí)xmodem協(xié)議已經(jīng)啟動(dòng),用戶可以通過(guò)超級(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)到此處開(kāi)始執(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,就要先完成上面我們講的那些步驟,首先開(kāi)始從片內(nèi)rom啟動(dòng)uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz燒寫(xiě)到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)于如何建立,此處不予說(shuō)明。建立好了以后,分別解壓源碼包,然后修改Makefile中的編譯器項(xiàng)目,正確填寫(xiě)你的編譯器的所在路徑。 對(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并無(wú)大的區(qū)別,你可以把boot理解為在loader的基礎(chǔ)上加入了解壓縮.gz的功能而已。所以這兩個(gè)并無(wú)多大的本質(zhì)不同,只是他們的使命不同而已。 特別說(shuō)名的是這三個(gè)軟件包都是開(kāi)放源碼的,所以用戶可以根據(jù)自己的系統(tǒng)的情況修改和配置以及裁減,打造屬于自己系統(tǒng)的bootloder。
上傳時(shí)間: 2013-10-27
上傳用戶:wsf950131
使用的是API編程,可格式化、校驗(yàn)和讀寫(xiě)特殊扇區(qū)。可用作Windows下的磁盤(pán)加密。本函數(shù)還有以下兩個(gè)缺點(diǎn)以待改進(jìn): 1.本函數(shù)還只能讀能讀 A: 和 B:,即只能對(duì)軟盤(pán)操作 2.不能改變磁盤(pán)扇區(qū)大小,只能是標(biāo)準(zhǔn)的 512 個(gè)字節(jié)。 參數(shù)說(shuō)明: command 操作: 0 重置磁盤(pán) 2 讀扇區(qū) 3 寫(xiě)扇區(qū) 4 校驗(yàn)磁道 5 格式化磁道 8 得到設(shè)備參數(shù) (int 1EH) drive 驅(qū)動(dòng)器 A:=0 B:=1 head 磁頭號(hào),范圍 0 - 1 track 磁道號(hào),范圍 0 - 84 ( 80 - 84 為特殊磁道,通常用來(lái)加密 ) sector 扇區(qū)號(hào),范圍 0 - 255 ( 19 - 255 為非標(biāo)準(zhǔn)扇區(qū)編號(hào),通常用來(lái)加密) nsectors 每次讀或?qū)懙纳葏^(qū)數(shù),不能超出每磁道的最大扇區(qū)數(shù) buffer 數(shù)據(jù)寫(xiě)入或讀出的緩沖區(qū),大小為 512 個(gè)字節(jié) 返回值 ( 同 Int 13H ): 0x0 成功 0x1 無(wú)效的命令 0x3 磁盤(pán)被寫(xiě)保護(hù) 0x4 扇區(qū)沒(méi)有找到 0xa 發(fā)現(xiàn)壞扇區(qū) 0x80 磁盤(pán)沒(méi)有準(zhǔn)備好
標(biāo)簽: Windows API 函數(shù) 磁盤(pán)
上傳時(shí)間: 2013-12-05
上傳用戶:moerwang
改寫(xiě)的U-boot for s3c4510 (注意此源碼是在windows下壓縮了)。 1、支持串口下載,ftp下載。 2、flash操作。 3、總之,u-boot是一個(gè)可移植在多種單片機(jī)上的bootloader。其功能特別強(qiáng)大。 4、本移植針對(duì)s3C4510,flash 1片2M 16位寬度,SDRAM 1片16M 16寬度。網(wǎng)絡(luò)物理層RTL8019。 5、你可以直接windows解壓后,把u-boot.bin燒寫(xiě)到FLASH的0x0,或放到redhat 9下重新make.
標(biāo)簽: s3c4510 windows U-boot for
上傳時(shí)間: 2013-12-20
上傳用戶:sqq
采用Wiggle電纜通過(guò)JTAG口在線燒寫(xiě)FLASH 1,在axd命令行中使用ob anorom.ini 2,按照提示燒寫(xiě), load_addr = 0x0
標(biāo)簽: Wiggle FLASH JTAG 電纜
上傳時(shí)間: 2014-01-07
上傳用戶:wxhwjf
-file /win8.vdf 鏡像文件名,無(wú)此參數(shù)將搜索當(dāng)前目錄的iso鏡像 -dev PciRoot(0x0)/Pci(0x1,0x1)/Ata(Primary,Master,0x0)/HD(3,MBR,0x9553A441,0xEFFF800,0x13FF800) 設(shè)備路徑,無(wú)此參數(shù)默認(rèn)為當(dāng)前設(shè)備 -wait 50 啟動(dòng)前等待 -mem 將鏡像載入內(nèi)存, -type HD 可選CD HD FD,無(wú)此參數(shù)默認(rèn)HD鏡像類型,類型錯(cuò)了不能啟動(dòng) -dev auto 搜索所有設(shè)備
上傳時(shí)間: 2020-12-20
上傳用戶:
霍尼韋爾 HMC5883L 是一種表面貼裝的高集成模塊,并帶有數(shù)字接口的弱磁傳感器芯片,應(yīng)用于低成本羅盤(pán)和磁場(chǎng)檢測(cè)領(lǐng)域。HMC5883L 包括最先進(jìn)的高分辨率HMC118X 系列磁阻傳感器,并附帶霍尼韋爾專利的集成電路包括放大器、自動(dòng)消磁驅(qū)動(dòng)器、偏差校準(zhǔn)、能使羅盤(pán)精度控制在1°~2°的12 位模數(shù)轉(zhuǎn)換器.簡(jiǎn)易的I2C 系列總線接口。HMC5883L 是采用無(wú)鉛表面封裝技術(shù),帶有16 引腳,尺寸為3.0X3.0x0.9mm。HMC5883L 的所應(yīng)用領(lǐng)域有手機(jī)、筆記本電腦、消費(fèi)類電子、汽車導(dǎo)航系統(tǒng)和個(gè)人導(dǎo)航系統(tǒng)。HMC5883L 采用霍尼韋爾各向異性磁阻(AMR)技術(shù),該技術(shù)的優(yōu)點(diǎn)是其他磁傳感器技術(shù)所無(wú)法企及。這些各向異性傳感器具有在軸向高靈敏度和線性高精度的特點(diǎn).傳感器帶有的對(duì)于正交軸低敏感行的固相結(jié)構(gòu)能用于測(cè)量地球磁場(chǎng)的方向和大小,其測(cè)量范圍從毫高斯到 8 高斯(gauss)。 霍尼韋爾的磁傳感器在低磁場(chǎng)傳感器行業(yè)中是靈敏度最高和可靠性最好的傳感器。
上傳時(shí)間: 2022-07-23
上傳用戶:
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1