關(guān)于S3C2440開(kāi)發(fā)板Nand flash程序燒寫(xiě)和運(yùn)行的一些理解
出處:eefocus 發(fā)布于:2018-07-23 14:05:30
這兩天剛開(kāi)始學(xué)習(xí)ARM9的裸機(jī)編程和Linux系統(tǒng)移植,在燒寫(xiě)Nand flash內(nèi)存的時(shí)候?qū)σ恍┲付ǖ牡刂樊a(chǎn)生了疑惑。
我看過(guò)很多教學(xué)視頻,他們?cè)跓龑?xiě)程序到Nand flash的時(shí)候一般會(huì)指定一個(gè)地址0X3000_0000,而S3C2440的手冊(cè)上指明了0X3000_0000地址對(duì)應(yīng)的片內(nèi)外設(shè)是SDRAM。這不禁讓我產(chǎn)生了疑問(wèn)。明明是指定了SDRAM卻燒寫(xiě)到了Nand flash,為什么?
為了解決我的疑惑,在網(wǎng)上看了很多人的解釋,這不僅解開(kāi)了我的疑惑,還引出了許多相關(guān)知識(shí)點(diǎn)。
要解答這個(gè)問(wèn)題,首先要從Nand flash本身的結(jié)構(gòu)說(shuō)起。Nand flash的結(jié)構(gòu)和RAM不一樣,它的數(shù)據(jù)線是復(fù)用的,內(nèi)與足夠的地址線用來(lái)尋址,對(duì)于它的數(shù)據(jù)存取通常是以塊為單位。這一點(diǎn)跟Nor flash不一樣,Nor flash帶有RAM接口,有足夠的地址線進(jìn)行尋址,所以CPU可以訪問(wèn)Nor flash內(nèi)部的每一個(gè)字節(jié),程序可以在nor flash中運(yùn)行,而Nand flash不行,所以Nand flash中的程序想要運(yùn)行必須拷貝到內(nèi)存(一般是SDRAM)當(dāng)中來(lái)。
當(dāng)我們想燒寫(xiě)程序至Nand flash中時(shí),會(huì)借助一個(gè)“中轉(zhuǎn)站”,既SDRAM。程序先燒寫(xiě)到SDRAM中(這就是指定0X3000_0000地址的原因),然后在從SDRAM中拷貝到Nand flash中去,而這個(gè)拷貝工作由實(shí)現(xiàn)燒寫(xiě)到Nor flash中的uboot程序引導(dǎo)完成。
此外,當(dāng)我們向2440開(kāi)發(fā)板移植Linux系統(tǒng)的時(shí)候,要向Nand flash燒寫(xiě)三個(gè)文件,分別是:uboot、Linux kernel和文件系統(tǒng)。每一步的燒寫(xiě)也跟前面一樣借用SDRAM作為燒寫(xiě)的“中轉(zhuǎn)站”。但是,我們?cè)跓龑?xiě)的時(shí)候并沒(méi)有對(duì)每一步的燒寫(xiě)地址做特定的處理,那怎么能夠保證寫(xiě)著三個(gè)文件的時(shí)候后面的不會(huì)覆蓋前面的呢?我的理解是:還是Nor flash中的uboot程序的功勞,它會(huì)引導(dǎo)著三個(gè)文件分別拷貝到Nand flash的不同位置中。
那么,說(shuō)完了Nand flash燒錄的問(wèn)題,自然而然就應(yīng)該說(shuō)一下Nand flash中程序運(yùn)行的問(wèn)題。前面我們說(shuō)到,Nand flash中不可以執(zhí)行程序,而在我們選擇從Nand flash啟動(dòng)的時(shí)候,S3C2440會(huì)自動(dòng)將Nand flash的前4KB的代碼拷貝到內(nèi)存當(dāng)中一個(gè)Stepping Stone(一般稱為墊腳石)的片內(nèi)內(nèi)存當(dāng)中(這一步操作由芯片內(nèi)部的硬件決定,不用我們操心),PC跳轉(zhuǎn)到0地址去執(zhí)行這些代碼。但是,這個(gè)片內(nèi)內(nèi)存只有4KB,當(dāng)我們?cè)贜and flash中的程序大于4KB的時(shí)候怎么辦呢?這時(shí)候,就是這拷貝過(guò)去的4KB代碼發(fā)揮作用的時(shí)候了。這4KB的代碼會(huì)幫我們初始化SDRAM,然后將Nand flash中剩下的代碼一并拷貝到SDRAM中,PC跳轉(zhuǎn)到SDRAM中去執(zhí)行剩下的程序(所以我們的裸機(jī)程序一般不會(huì)超過(guò)4KB)。
終于說(shuō)完了,雖然燒寫(xiě)只有短短的幾步,但是其中蘊(yùn)含的知識(shí)點(diǎn)還是蠻多的,這或許也就是嵌入式的特點(diǎn)吧。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 電表互感器匝數(shù)倍率怎么看?2025/9/5 17:05:11
- 顏色傳感器原理及實(shí)際應(yīng)用案例2025/9/5 16:09:23
- 調(diào)諧器和調(diào)制器的區(qū)別2025/9/4 17:25:45
- 有載變壓器和無(wú)載變壓器的區(qū)別有哪些2025/9/4 17:13:35
- 什么是晶體諧振器?晶體諧振器的作用2025/9/4 16:57:42
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號(hào)完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對(duì)系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測(cè)試方法
- PCB電磁兼容(EMC)設(shè)計(jì)與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測(cè)量的低通濾波器設(shè)計(jì)與本振凈化技術(shù)
- MOSFET在高頻開(kāi)關(guān)中的EMI問(wèn)題









