S3C6410第一章 存儲器、地址映射與芯片啟動簡介
在尚觀聽了一陣課了,,收獲目前還算一般,,并沒有特別興奮的點。截止今日ARM內(nèi)容已經(jīng)結(jié)束,,有些課并不是很有興趣去聽,。根據(jù)本人一向頗為難以理解的習(xí)慣,當時不聽事后琢磨,,現(xiàn)在是仔細寫下東西的時候了,。那么,也不嫌再多單片機文檔的繁瑣,,重新開始這個從裸機到U-BOOT的小過程,。
目前我們使用的是ARM11核心的三星S3C6410作為處理器。事實上不搭系統(tǒng)就是單片機的類型,,起碼我一直是這么稱呼的,。深深的希望內(nèi)核驅(qū)動課程給我以啟發(fā),否則就太無趣了,。
很顯然,,我們的S3C6410微處理器是封裝了ARM1176JZF-S的核,關(guān)于ARM11另開博文再講自己的學(xué)習(xí),,這里僅僅針對高一層的6410微處理器,。按照自己的思路,開始吧,!
注,,本文屬于個人讀書筆記性質(zhì),有心的隨便看看就行了,,轉(zhuǎn)載請注明出處:
我的博客:Moon小夜曲 http://blog./uid/28720832.html 歡迎大家文明探討
1:哈佛結(jié)構(gòu)與馮諾伊曼結(jié)構(gòu)
哈佛結(jié)構(gòu)是程序指令與數(shù)據(jù)分開存儲的一種的結(jié)構(gòu),。它是一種并行結(jié)構(gòu),,如圖:
它的特點是程序的指令與數(shù)據(jù)分開存儲在不同的存儲空間,并且獨立編址,,獨立訪問,。
對于哈佛結(jié)構(gòu),一個明顯的例子就是51單片機了,。使用過匯編編程的都知道,,如AT89C51下有4KB的FLASH,128字節(jié)的RAM,,對應(yīng)的,,4KB就是程序存儲器,128字節(jié)的數(shù)據(jù)存儲器,。這兩者的地址分別為:FLASH 0x0000 – 0x0FFF ,;RAM 0x00 – 0x7F。這兩個地址的0地址對應(yīng)完全不同的存儲空間,,程序的地址由匯編的ORG指定,而RAM中包括有4套通用寄存器和各種SFR,。
馮諾伊曼結(jié)構(gòu)則是程序指令與數(shù)據(jù)存儲合并在一起的一種結(jié)構(gòu),。指令與數(shù)據(jù)共享總線,它們的存儲器是統(tǒng)一編址的,,指令與數(shù)據(jù)的識別與時間有關(guān),。S3C6410就是馮諾伊曼結(jié)構(gòu)的。由于是32位的地址范圍,,也即為0x00000000 – 0xFFFFFFFF 共4G的地址范圍,。 但是從0x80000000 – 0xFFFFFFFF 2G的地址是被保留了,因此,,所有的設(shè)備都對應(yīng)在0x00000000 – 0x7FFFFFFF 的范圍內(nèi),,也即為統(tǒng)一編址,如下圖所示:
0x00000000 – 0x7FFFFFFF這段地址,,被分為了兩個部分:高地址的0x7000_0000 – 0x7FFF_FFFF被用于對應(yīng)所有外設(shè)的寄存器,。低地址的0x0000_0000 – 0x6FFF_FFFF對應(yīng)于各種存儲器的地址。類似51中FLASH和RAM的部分并沒有具有單獨的地址,,而是使用唯一的地址,,也即是馮諾依曼結(jié)構(gòu)統(tǒng)一編址。
2:存儲器簡介
事實上來說,,就操作單片機而言,,可以認為所有的外設(shè)就是存儲器(寄存器),。這里,將是一個及其重要的部分,,首先還是整理下,“存儲器”這個東西,。
有篇文:什么是ROM、RAM,、DRAM,、SRAM和FLASH及區(qū)別_IT168文庫 地址:http://wenku.it168.com/d_000139890.shtml 關(guān)于存儲器說的比較多了,看的也是云里霧里,,但是概括的說:
ROM方面:
過去的EPROM之類基本上被FLASH全部取代了,,FLASH具有電擦除,掉電不丟數(shù)據(jù),,較快讀取等優(yōu)點,。FLASH主要分為nor FLASH與NAND FLASH。 這兩者的對比包括:nor FLASH的讀取與SRAM一樣,,因此可以直接從中直接運行加載在其中的代碼,,NAND FLASH中的程序不能直接運行,必須加載到內(nèi)存運行,;nor FLASH的訪問比NAND FLASH稍快,;NADN FLASH的寫入比nor FLASH快很多,擦除則快了很大的數(shù)量級,。 因此,,顯然的,基于以上的特點,,在1M ~ 4M等小容量存儲的時候,,nor FLASH是有很大優(yōu)勢的,但是作為類似硬盤的大量存儲時,,NADN FLASH是不二的選擇,。(如我們使用的up6410上掛載兩片NADN FLASH)。至于AT89C51上帶的4K FLASH是什么性質(zhì),,百度得知名為:FPEROM—Flash Programmable and Erasable Read Only Memory,就不得而知是什么物體了,,里面應(yīng)該是可以直接運行指令的,。這里做下注腳,,將來講到NAND FLASH與SRAM等的時候在仔細分析吧。
這里,,還有一種叫做one NAND的存儲設(shè)備,,它就是針對上面的nor FLASH與NAND FLASH的,它具有nor FLASH與NAND FLASH的優(yōu)勢,,是下一代嵌入式存儲設(shè)備,。S3C6410上是有one NAND控制器的。
RAM方面:
RAM分為兩大類,,一類就是靜態(tài)RAM----SRAM,,它是所有存儲器中速度最快的,當然啦,,價格也要貴,,一般用在最重要的地方。傳說中CPU的一級二級緩沖就是,。另一類就是動態(tài)-----DRAM,,DRAM比SRAM便宜的多,但是比所有的ROM快,,一般用于內(nèi)存,。 DDRRAM是DRAM的一類。 如我們使用的up6410板,,S3C6410芯片內(nèi)部有8KB的SRAM,32KB的SROM,,這是用于開機啟動初始化等等的,,外部則搭了貌似128M的DDR RAM,這一部分的DDRRAM被當做內(nèi)存使用,。裸機運行程序,,需要將NAND FLASH中的程序搬運到DDRRAM中,然后You Jump,I Jump~
另外還有外設(shè)寄存器的部分,,應(yīng)當是使用RAM,。
3:地址映射
3.1 S3C6410存儲器地址空間分類
上面介紹了些存儲器,接下來自然就是看看這些存儲器在統(tǒng)一編址下是怎樣的編址了,。 在第一小節(jié)介紹過,,被使用的低2G的地址空間分為兩部分, 高地址的0x7000_0000 - 0x7FFF_FFFF共計256MB的空間是分給S3C6410的外設(shè)寄存器的 低地址的0x0000_0000 - 0x6FFF_FFFF 共計 0x700 MB = 1792MB是分給存儲器的
高地址部分是ARM核通過PERI總線訪問,現(xiàn)在暫且認為里面皆是寄存器即可,。
低地址部分則比較復(fù)雜了,,根據(jù)S3C6410 data sheet第二章Memory Map,這一部分分為四個區(qū)域,,它通過SPINE總線訪問: Main memory is accessed via SPINE bus, and its address range is from 0x0000_0000 to 0x6FFF_FFFF. This main memory part is seperated into four areas, boot image area, internal memory area, static memory area, and dynamic memory area.
(1) Address range of boot image area is from 0x0000_0000 to 0x07FF_FFFF, but there is no real mapped-memory. Boot image area has mirrored image which points a partial region of internal memory area or static memory area. Start address of boot image is fixed to 0x0000_0000. 這里我們發(fā)現(xiàn),,這是個坑爹鏡像區(qū)。ARM體系復(fù)位后PC跳到0x0000_0000處開始運行指令,,因此這個地址出必須存儲一些啟動芯片的信息,。這個就是引導(dǎo)區(qū)得由來吧。這個區(qū)的大小是0x0000_0000 – 0x07FFF_FFFF,。然而,,文中說到,事實上,,這個區(qū)并沒有真實的對應(yīng)存儲器設(shè)備,。Boot image area has mirrored image which points a partial region of internal memory area or static memory area.直譯就是:引導(dǎo)鏡像區(qū)有鏡像指向內(nèi)存或者靜態(tài)存儲區(qū)。這個鏡像區(qū)的0x0000_0000地址將是一個爭奪的焦點,。
(2) internal memory area 內(nèi)部存儲區(qū) Internal memory area is used to access internal ROM and internal SRAM for boot loader, which is also called Steppingstone. Start address for each internal memory is fixed. Address range of internal ROM is from 0x0800_0000 to 0x0BFF_FFFF, but real storage is only 32KB. This region is read-only, and can be mapped to boot image area when internal ROM booting is selected. A ddress range of internal SRAM is from 0x0C00_0000 to 0x0FFF_FFFF, but real storage is only 4KB. 內(nèi)部存儲區(qū)包括兩個部分,,內(nèi)部SROM部分和內(nèi)部SRAM部分。這兩個部分基本上可以說就是為了boot loader準備的,。其中的SROM區(qū)的地址是0x0800_0000 – 0x0BFFF_FFFF,但是事實上沒有存滿,,僅僅存了32K。同理的,,SRAM的地址范圍,,但是只有4K的實際設(shè)備。(S3C6410里面8K),。非常有意思的一句:This region is read-only, and can be mapped to boot image area when internal ROM booting is selected.簡單的說,,當芯片被選擇為內(nèi)部ROM啟動時,這32K就映射到引導(dǎo)鏡像區(qū)了,,可見引導(dǎo)鏡像區(qū)是隨著啟動模式不一樣而不同映射的,。
(3) dynamic memory area 動態(tài)存儲區(qū) Address range of dynamic memory area is from 0x4000_0000 to 0x6FFF_FFFF. DMC1 has right to use address range from 0x5000_0000 to 0x6FFF_FFFF. Start address for each chip select is configurable. 動態(tài)存儲區(qū)的范圍是從0x4000_0000 – 0x6FFF_FFFF 也就是共計 0x300MB = 768MB的范圍。這個范圍是用于搭載DRAM的,,也就是是內(nèi)存的區(qū)域,。我們使用的板子內(nèi)存地址是從0x5000_0000開始的。很多資料上說的是0x4000_0000 – 0x5000_0000的地址被保留了,也有資料說是對應(yīng)到了別的部分,。
(4) static memory area 靜態(tài)存儲區(qū) 這是最復(fù)雜的一個區(qū): Address range of static memory area is from 0x1000_0000 to 0x3FFF_FFFF. SROM, SRAM, NOR Flash, asyncronous NOR interface device, OneNAND Flash, and Steppingstone can be accessed by this address area. Each area stands for a chip select, for example, address range from 0x1000_0000 to 0x17FF_FFFF stands for Xm0CSn[0]. Start address for each chip select is fix ed. NAND Flash and CF/ATA c annot be accessed via static memory area, so if any of Xm0CSn[5:2] is mapped to NFCON or CFCON, related address region should not be accessed. One exception is that if Xm0CSn[2] is used for NAND Flash, Steppingstone is mirrored to address region from 0x2000_0000 to 27FF_FFFF. 靜態(tài)存儲區(qū)的地址是0x1000_0000到0x3FFF_FFFF 各種各樣的存儲設(shè)備都可以被搭載在這個區(qū),,也包括Steppingstone。這個區(qū)域的大小為6*128MB,共有6個Bank,。對應(yīng)地址片選引腳Xm0CSn[0]~ Xm0CSn[5],。在我們使用的板子上,,這6個Bank搭載了的NAND FLASH,網(wǎng)卡,。也就是,,訪問這些地址,有的是訪問存儲器,,有的就選中了網(wǎng)卡,。接下來就對動態(tài)存儲區(qū)和靜態(tài)存儲區(qū)先粗略分析下吧,主要是讓地址明晰,。目前,,我們得到的0到2G的地址映射圖就是這樣的:
3.2: 動態(tài)存儲區(qū)(0x5000_0000 – 0x6FFF_FFFF)的設(shè)備
這個區(qū)在我們使用的up6410上用于接上了兩片DDRRAM(k4x51163PC),作為程序運行的內(nèi)存,。 先看看兩片DDRRAM的連接:
除了圖中標記的高亮部分和數(shù)據(jù)總線XM1_DATA,,兩片DDRRAM的連接一樣。另外一片對應(yīng)的信號線為“XM1_DQS2”“XM1_DQS3”“XM1_DQM2”“XM1_DQM3”,,對應(yīng)的數(shù)據(jù)線為XM1_DATA[16:31],。 其后是地址線,兩片均連接在XM1_ADDR[0:15]上,。
K4X51163是32M*16bit,,一片64M,兩片共計128M映射在我們使用的板子的動態(tài)存儲區(qū)的0x5000_0000 – 0x57FF_FFFF上,。其余地址未使用,。
3.3:靜態(tài)存儲區(qū)(0x1000_0000 – 0x4000_0000)掛載的設(shè)備
靜態(tài)存儲區(qū)分為6個Bank0 ~ Bank5,這六個Bank使用信號線XM0CSN[0:4]分別,。
現(xiàn)在來簡略看下在靜態(tài)存儲器的BANK上,,都掛載了哪些設(shè)備。
NADN FLASH 掛載在BANK2 BANK3
網(wǎng)卡,,掛載BANK1上,。
因此,在我們使用的開發(fā)板上BANK1 2 3掛載了設(shè)備,,其余并未使用,。 這個就決定了這些設(shè)備的地址,因為地址就是片選,。具體后面再說吧,現(xiàn)在僅僅為了個觀感,。
4 S3C6410的啟動過程
啟動過程近乎是S3C6410學(xué)習(xí)一定要明白的第一個點,,這是bootloader的基礎(chǔ),也是理解上面存儲器區(qū)間的很重要的點,。
首先,,認識下幾個6410外部的引腳:
這幾個引腳的OM1 – OM4,EINT13 - EINT15(也就是GPN[13:15]),是接在一個撥碼開關(guān)上的,,如下:
那么,,對照上面這張圖,可以大體明白這些引腳的作用:啟動時候的設(shè)備選擇,。 這里呢,,僅針對我使用的UP6410開發(fā)板分析吧,一則其他的模式我也未使用過,,不敢亂說,,二則本文很大程度也僅僅是個讀書筆記,不敢奢求大而全,。
(1)OM[0] OM[0]信號參見上圖的clock source時鐘源一欄,,該信號對于設(shè)備的選擇是無效力的(左側(cè)的設(shè)備選擇OM[0]位全是X),但是直接決定復(fù)位時時鐘的選擇,。 OM[0]信號為0時候選擇是一個叫“XXTIpll”的時鐘源,;為1時選擇的是“XEXTCLK”。 在6410的用戶手冊下搜索”XXTIpll”,,一箭雙雕,,找到了這樣一段話
可見,XXTIpll指的是外部晶振,,XEXTCLK指的是外部clock(我也不知道怎么翻譯了~),。 而在我使用的6410開發(fā)板下,這個可憐的引腳都沒有機會接到那個決定啟動的撥碼開關(guān)上,,在一個不起眼的角落里,,發(fā)現(xiàn)了它:
至于外部晶振,,貌似是12M,,不過內(nèi)部各種鎖相環(huán)倍頻。到了時鐘的時候再分析吧,。
(2)OM[4:1] 由上面的圖標Table 3-1可以看出,這四位直接決定了S3C6410的啟動模式(設(shè)備選擇),。 從開發(fā)板的原理圖上看不出這些引腳具體是怎么接的(撥碼開關(guān)是兩個撥碼的),,事實上我也沒弄明白這張圖的全部涵義 (囧),,在我們使用開發(fā)板的過程中,是有兩種啟動模式的:SD卡啟動與NANDFLASH啟動,。 當然,這里參考網(wǎng)上大神的說法,,把這幾個引腳的事情說清楚,具體對照Table3 – 1:
OM[4:0]:選擇啟動設(shè)備及時鐘源,。OM[0]為0選擇XXTlpll,為1選擇XEXTCLK,。 GPN[15:13]:用于識別所支持的Nandflash的類型,,包括Page的類型和地址周期,。 XSELNAND:選擇Nand啟動或者是OneNand啟動,。0為OneNand,1為Nand。 前面分析了我使用的板子,,上面是沒有oneNAND/nor FLASH的,因此XSELNAND為1,,而OM[0]直接接地線了,OM[0] = 0,;
2:S3C6410支持的啟動模式
然后看看OM[4:1] (此處轉(zhuǎn)載) 1. NORFlash啟動 通過Nor Flash啟動,此時OM[4:1]為0100或0101,,對應(yīng)8bit和16bit,。
2. NandFlash啟動 雖然在S3C6410 User Manual中沒有提到,但是也是支持的,從S3C6400 User Manual可以找到。OM[4:1]四個硬件管腳決定了Nandflash啟動,,以及支持的Nandflash的類型,,包括大Page和小Page,地址周期為3,4,,5,。當然,XSELNAND管腳也要為1。
3. OneNAND啟動 首先XSELNAND管腳為0,其次OM[4:1]為0110,,為OneNand啟動模式,。
4. MODEM啟動 當OM[4:1]為0111的時候,,為MODEM啟動。S3C6410通過MODEM接口下載boot代碼到內(nèi)部RAM中,,然后進行引導(dǎo),。
5. IROM啟動 當OM[4:1]為1111的時候,從Internal ROM中啟動,,此時GPN[15:13]用于識別設(shè)備的類型,。 IROM模式可以支持MoviNand,SD/MMC,,iNand,,OneNand和Nand等。 (轉(zhuǎn)載完畢--) 上面標為粉色部分與藍色部分為我使用的up6410開發(fā)板的使用的啟動類型,。
我使用的開發(fā)板的NANDFLASH啟動的方式可能是藍色或者粉色的一種,,這里為什么這么說呢,是因為之前的一句“撥碼開關(guān)不知道怎么接的”,。因此NANDFLASH的啟動也有可能與SD啟動一樣,,是IROM(粉色)方式。但是如果是最簡單的接法,就是將EINT[15:13],,XSELNAND,,OM[4:1]全部接在這個開關(guān)兩端,那么作為藍色的NANDFLASH啟動方式-也是完全說的通的,。如果按照這樣的接法,,我們就看見了如下效果:
這樣的話,當撥碼開關(guān)合上,,也就是所有信號都接上了1.從Table3-1表上可以是IROM啟動下的SD卡啟動,,這與我使用開發(fā)板時一致。 但是如果是接在一起的時刻,,就有疑問了,。這樣的話,開關(guān)斷開時候,,所有信號線全部接在了0(GND)上,而圖Table3-1中全部為0的一項是沒有的(reserved),。 這時,,也有牛人找出了可以解釋這個的原因,說是事實上,,S3C6410與S3C6400的啟動模式兼容,,而S3C6400的啟動模式中,上圖Table3-1的幾個保留項全部都是使用NANDFLASH啟動(汗),,如果是這個成立的話,,就完全能解釋了,也符合我使用up6410開發(fā)板的現(xiàn)象:向下搬動撥碼開關(guān)時,,S3C6410通過NANDFLASH啟動(不經(jīng)過IROM引導(dǎo)),。
這樣的話,現(xiàn)在如果我們認為藍色的NANDFLASH是我所使用的up6410的實際啟動方式,,那么,,它的流程可能是這樣的: 1:開機S3C6410拷貝NANDFLASH的前8K程序到SRAM(stepingstone)中 2:SRAM中的程序運行(實際0地址),這個程序要負責初始化各種設(shè)備,,以及內(nèi)存,,并且如果需要運行的程序大于SRAM的8K,把存在DNADFLASH中的程序拷貝到內(nèi)存中,,跳至內(nèi)存中運行,。 這個流程應(yīng)該說是使用NAND啟動還是有可能的,畢竟引導(dǎo)鏡像區(qū)是有指向靜態(tài)存儲區(qū)的,,但是如何拷貝程序就有很大疑問了,。疑問的關(guān)鍵在于,在芯片不運行內(nèi)部SROM的32K固化代碼的情況下(這就意味著很多設(shè)備包括NANDFLASH可能沒有初始化),將NANDFLASH的程序拷貝到8KSRAM運行,。現(xiàn)在的SAMSUNG似乎不提倡這種啟動方式以至于S3C6410的啟動方式表(也就是上文的Table3-1)上這種NANDFLASH啟動方式都reserved了,。不過,在網(wǎng)上找到的一段關(guān)于S3C2440的博文似乎給出了解釋: nandflash由于其自身的特點,,不具備運行程序的功能,。但s3c2440通過稱為“Steppingstone”的內(nèi)部SRAM緩存,實現(xiàn)了可以運行存儲在外部nandflash中的啟動代碼的功能,。它的機制是:當檢測到是由nandflash啟動時,,系統(tǒng)會自動把nandflash中的前4k字節(jié)的數(shù)據(jù)加載到Steppingstone中,然后把該Steppingstone映----------射為Bank0,,因此系統(tǒng)會從Steppingstone開始運行程序,,從而實現(xiàn)了s3c2440的nandflash自啟動的功能。這一過程是由系統(tǒng)自動完成的,,無需人為干預(yù),。在系統(tǒng)啟動以后,Steppingstone所在的SRAM就可以用作其他用途了,。 由于都是SAMSUNG出的家伙,,應(yīng)該認為是個合理的解釋。 然后接下來就是我們可愛的,,最重要的IROM模式了(粉色部分) (藍色部分的NANDFLASH流程與IROM的NANDFLASH流程主要不同于是否跑32K SROM)
上節(jié)說過,,我使用的開發(fā)板NANDFLASH啟動方式也有可能是與IROM方式(上節(jié)粉色方式),,這里再寫下來: IROM啟動: - 當OM[4:1]為1111的時候,,從Internal ROM中啟動,,此時GPN[15:13]用于識別設(shè)備的類型。 IROM模式可以支持MoviNand,,SD/MMC,,iNand,OneNand和Nand等,。
這個IROM啟動模式,,略微有些復(fù)雜。對于具體的某些部分究竟實現(xiàn)了某些功能,,因為這種啟動模式的主要模塊—32KSROM中的代碼是芯片固有的,,因此也只大概了解即可。以下的這張圖描述了這種啟動方式,。這里根據(jù)下圖概括下這種模式的流程,,標號與圖中對應(yīng):
圖中的BL0 BL1 BL2就是這種芯片的啟動代碼。全部三者的集合將會完成上電后初始化芯片設(shè)備,,拷貝存儲設(shè)備上的用戶需要運行的代碼到SRAM(或者DDRRAM內(nèi)存也是一樣),,跳轉(zhuǎn)到SRAM/DDRRAM等運行用戶程序等功能,。
①開機啟動,32KIROM(內(nèi)部SROM,地址參見內(nèi)部存儲區(qū))映射到0地址,,芯片跑存儲在其中的程序,。這個程序成為BL0,它是三星燒入的,,固有在芯片內(nèi)部,。它初始化了很多的東西,細節(jié)參見手冊,,這些東西必須保證芯片的初步運行,,筆者也不太說的全(云里霧里)。運行的結(jié)果之一當然是為了②步驟,。這個時候就要看外部的OM[4:1]與GPN[15:13]的接法了,,這段程序會初始化與之對應(yīng)的啟動方式的啟動設(shè)備(SD卡,NANDFLASH,,oneNAND等,,MMC是什么?~~~~),。然后把存儲在這些設(shè)備的中的BL1部分拷到8KSRAM中(內(nèi)部SROM,地址參見內(nèi)部存儲區(qū)),。
②此時程序跑到8KSRAM中。這部分的作用還是初始化某些設(shè)備堆棧神馬的,,然后,將BL2拷到SRAM或者DDRRAM之類的地方,,總之是可以跑程序的地方,,當然這些地方的初始化會在這一步完成。
③傳聞中BL2是比較復(fù)雜的,,當上一步的8K程序跑完,,就跳到內(nèi)存/SRAM之類的BL2地址了。運行它可以加載復(fù)雜的程序了,,例如加載操作系統(tǒng),。
然后一去不復(fù)返.......... 感覺好口水好低俗的描述,為了彌補下,,下文找個時間翻譯下文檔的這個流程,?算了,免得累死,! - - 描述IROM的文檔: S3C6410_Internal_ROM_Booting.pdf 至于其它的啟動模式,,沒有使用過,板子上也沒有nor FLASH或者MODEN或者one NAND,。很顯然,,IROM這種啟動方式將會受到偏愛,。后面的u-boot神馬的都得跟著這個來,這里架構(gòu)一定要清晰,。
5:0x0000_0000地址爭奪戰(zhàn)
其實前面提到過一個問題,,ARM體系復(fù)位的時候程序指針PC是指向0x0000_0000這個地址的。而現(xiàn)在,,在S3C6410中,,這個地址成為了所謂的“引導(dǎo)鏡像區(qū)”。也就是說,,根據(jù)啟動方式的不同,,不同的設(shè)備都有可能映射到這個地址。換言之,,不同啟動模式下的0x0000_0000的實際指向是不同的,。這是一個之前糾結(jié)了一陣的點,太詭異了不是么,?哈哈,! 當然了,這個還只是小事,。對應(yīng)的0地址之后不遠還有幾個異常向量表,。0地址漫天飛,這個向量表呢,?額,,難怪這里不能用所謂“與地址相關(guān)的指令”,看樣子也是漫天飛吧,。
2013.03.18 2013.03.18 劉 偷偷的祝我的女小導(dǎo)馮大媽生日快樂~懷念大一的時候?。∽K趶B門工作順利~
|
|