九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
linux驅(qū)動(dòng)移植(nand,yaffs2)

linux驅(qū)動(dòng)移植(nand,yaffs2)  

2010-04-24 23:19:12|  分類(lèi): 嵌入式Linux學(xué)習(xí) |  標(biāo)簽: |字號(hào) 訂閱

 

在linux操作系統(tǒng)的順利移植之后,linux的內(nèi)核雖然在板子上跑了起來(lái),但是此時(shí)linux還不支持板子的的各個(gè)硬件,比如說(shuō)lcd,攝像頭,聲卡,usb等模塊,我們必須要在板子上裝入驅(qū)動(dòng)程序后,才能上這些硬件在linux操作系統(tǒng)下工作。

       這些驅(qū)動(dòng)在內(nèi)核中都有驅(qū)動(dòng)的源碼,我們要做的就是將這些驅(qū)動(dòng)源碼編譯到內(nèi)核中,當(dāng)然在編譯之前是需要對(duì)驅(qū)動(dòng)源碼做相關(guān)的修改的,因?yàn)槲覀兊挠布蛢?nèi)核中的驅(qū)動(dòng)很有可能是不匹配的。在對(duì)驅(qū)動(dòng)進(jìn)行編譯的時(shí)候,我們還要有選擇的去挑選一些我們需要的驅(qū)動(dòng),把我們不需要的驅(qū)動(dòng)舍棄,稱(chēng)之為裁剪內(nèi)核。

       首先必須要開(kāi)發(fā)板的linux操作系統(tǒng)支持nandflash和掛載上yaffs2文件系統(tǒng),只有掛載了yaffs2文件系統(tǒng)的操作系統(tǒng)才能算是完整的操作系統(tǒng)。

       為什么驅(qū)動(dòng)是在內(nèi)核中修改的呢?那是因?yàn)閮?nèi)核就操作系統(tǒng),就是用來(lái)管理各硬件設(shè)施的。

(一)   支持nandflash的驅(qū)動(dòng):

Linux新版本的內(nèi)核中提供了支持大頁(yè)nand的驅(qū)動(dòng)。這對(duì)我們nand驅(qū)動(dòng)的移植就很方便了,我們只要在內(nèi)核中找到相應(yīng)的驅(qū)動(dòng)并進(jìn)行一些修改即可。

(1)       修改內(nèi)核中nand的分區(qū)(MTD分區(qū))表

修改:arch/arm/plat-s3c24xx/common-smdk.c文件,在第110行:

這里我們要使nandflash同時(shí)支持64M,256M或更高容量。

       

[0] = {

.name = "boot",             name就是分區(qū)名,可以隨便取。

.offset = 0,                offset是偏移量,就是分區(qū)的起始地址。

.size = SZ_1M,              size就是此分區(qū)的大小

},

[1] = {

.name = "kernel",

.offset = SZ_1M + SZ_128K,

.size = SZ_4M,

},

[2] = {

.name = "yaffs2",

.offset = SZ_1M + SZ_128K + SZ_4M,

.size = SZ_256M - SZ_4M - SZ_1M – SZ_128K, }

#endif

};

 

第一個(gè)分區(qū)是boot分區(qū)(1M),就是存放uboot的。第二個(gè)分區(qū)是kernel分區(qū)(4M),是存放os內(nèi)核的。第三個(gè)分區(qū)是yaffs2(根文件系統(tǒng)分區(qū))。

現(xiàn)在來(lái)說(shuō)下分區(qū)的概念:分區(qū)有兩種意義上的分區(qū),一個(gè)是內(nèi)核的MTD分區(qū),一個(gè)是uboot的分區(qū)。兩者都是和nand的分區(qū)相關(guān)的,但卻不能等同。在內(nèi)核中,Nand上面劃分了一些分區(qū),這些分區(qū)稱(chēng)之為MTD分區(qū),都可以通過(guò)linux系統(tǒng)中的設(shè)備文件來(lái)訪問(wèn)。所以在內(nèi)核中必須有MTD對(duì)uboot,內(nèi)核映像,文件系統(tǒng)在nand上的分區(qū)信息。而uboot的分區(qū)則是nand的實(shí)際分區(qū),在系統(tǒng)上電后通過(guò)sram將uboot放到內(nèi)存中運(yùn)行,并初始化各引導(dǎo)程序,和空間地址。這時(shí)的空間地址是nandflash的真實(shí)地址。而內(nèi)核啟動(dòng)后所執(zhí)行的不說(shuō)從uboot中去讀地址,而是從內(nèi)核MTD分區(qū)地址中在讀地址,因此內(nèi)核MTD分區(qū)與uboot的分區(qū)必須相同。

 

(2)     修改nand的匹配時(shí)間(查芯片手冊(cè))

(3)     修改Kconfig文件,在配置時(shí)選擇NAND類(lèi)型。讓內(nèi)核選擇支持哪種容量的nandflash

(4)     配置內(nèi)核,支持nandflash。

 

 

這些過(guò)程實(shí)際上就是在修改內(nèi)核中的nand驅(qū)動(dòng)源碼,然后在修改編譯選項(xiàng),最后自己用make menuconfig來(lái)配置,最后在linux的集成開(kāi)發(fā)環(huán)境下編譯內(nèi)核生成映像文件,下載到arm開(kāi)發(fā)板上。這樣的內(nèi)核就支持nand的了啦。

 

 

 

(二)  yaffs2文件系統(tǒng)移植

(1)下載yaffs2源碼(在光盤(pán)資料/源碼包/其他軟件源碼/目錄下)

解壓,進(jìn)入yaffs2目錄:

#tar xzvf yaffs2.tar.gz

#cd cvs/yaffs2/

(2)給內(nèi)核打上yaffs2文件系統(tǒng)的補(bǔ)丁,執(zhí)行:

#./patch-ker.sh c /………/linux-2.6.31/ ?這個(gè)是你的內(nèi)核源碼的目錄

這時(shí)內(nèi)核源碼fs目錄下多了一個(gè)yaffs2目錄,同時(shí)Makefile文件和Kconfig文件也增加了yaffs2的配置和編譯條件。

           (3)最后利用uboot燒如寫(xiě)好的yaffs2文件系統(tǒng)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
移植過(guò)程問(wèn)題總結(jié)
嵌入式Linux系列第4篇:Kernel編譯下載
(精)移植linux2.6.29內(nèi)核到mini2440
linux-2.6內(nèi)核移植
嵌入式Linux下NAND存儲(chǔ)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
uboot環(huán)境變量與內(nèi)核MTD分區(qū)關(guān)系一
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服