S5PV210(TQ210)學(xué)習(xí)筆記——內(nèi)核移植與文件系統(tǒng)構(gòu)建
在etc目錄下創(chuàng)建Inittab文件,內(nèi)容如下
- ::sysinit:/etc/init.d/rcS
- console::askfirst:-/bin/sh
- ::restart:/sbin/init
- ::ctrlaltdel:/sbin/reboot
- ::shutdown:/bin/umount-a-r
- ::shutdown:/sbin/swapoff-a
在etc/init.d/目錄下創(chuàng)建rcS文件,內(nèi)容如下
- echo"----------mountall.........."
- mount-a
- echo"----------Startingmdev......"
- echo/sbin/mdev>/proc/sys/kernel/hotplug
- mdev-s
- /bin/hostname-F/etc/sysconfig/HOSTNAME
為inittab和rcS文件添加可執(zhí)行權(quán)限
- chmoda+xinittab
- chmoda+xrcS
在etc目錄下創(chuàng)建fstab文件,內(nèi)容如下
- #evicemount-pointtypeoptiondumpfsckorder
- proc/procprocdefaults00
- none/tmpramfsdefaults00
- mdev/devramfsdefaults00
- sysfs/syssysfsdefaults00
在etc目錄下創(chuàng)建profile文件,內(nèi)容如下
- PATH=/bin:/sbin:/usr/bin:/usr/sbin
- exportPATH
- #sethostname
- HOSTNAME=/bin/hostname
- exportHOSTNAME
- #SetPS1
- PS1=[u@hW]$
- exportPS1
拷貝主機/etc目錄下的passwd和group文件到etc目錄下。
(5) 設(shè)置HOSTNAME文件
在etc/sysconfig目錄下創(chuàng)建HOSTNAME文件,在文件中寫入主機名,我這里寫的是bruce。
(6) 安裝內(nèi)核modules
進(jìn)入內(nèi)核源碼目錄,執(zhí)行
- makemodules
待編譯完成后安裝modules,執(zhí)行指令
- makemodules_installINSTALL_MOD_PATH=/nfsroot/rootfs
到這,根文件系統(tǒng)就構(gòu)建完成了.
三 設(shè)置uboot啟動參數(shù)
我的nfs根目錄為/nfsroot,我的根文件系統(tǒng)目錄是在該目錄之下的,即/nfsroot/rootfs目錄,故uboot啟動參數(shù)設(shè)置如下
- noinitrdconsole=ttySAC0root=<主機IP>:/nfsroot/rootfsrwip=<開發(fā)板IP>:<主機IP>:<網(wǎng)關(guān)>:<子網(wǎng)掩碼>::eth0:offinit=/linuxrc
需要注意的是,所有的冒號":"都不可省略。
四 網(wǎng)卡驅(qū)動移植(DM9000)
選擇網(wǎng)卡移植是因為網(wǎng)卡驅(qū)動相對較為簡單,對于DM9000就更加簡單了,因為內(nèi)核本身提供了DM9000的驅(qū)動程序,但是沒有針對開發(fā)板進(jìn)行管教配置,因此,我們配置下開發(fā)板相關(guān)的東西即可完成網(wǎng)卡驅(qū)動的移植。打開arch/arm/mach-s5pv210/mach-smdkv210.c文件,并作以下修改:
(1) 修改smdkv210_dm9000_resources定義如下
- staticstructresourcesmdkv210_dm9000_resources[]={
- [0]={
- .start=0x88000000,
- .end=0x88000000+3,
- .flags=IORESOURCE_MEM,
- },
- [1]={
- .start=0x88000000+4,
- .end=0x88000000+4+3,
- .flags=IORESOURCE_MEM,
- },
- [2]={
- .start=IRQ_EINT(10),
- .end=IRQ_EINT(10),
- .flags=IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,
- }
- };
(2) 修改smdkv210_dm9000_init函數(shù)如下
- staticvoid__initsmdkv210_dm9000_init(void)
- {
- unsignedlong*srom_bw=ioremap(0xE8000000,4);
- unsignedlong*srom_bc1=ioremap(0xE8000004,4);
- *srom_bc1=((0<<28)|(0<<24)|(5<<16)|(0<<12)|(0<<8)|(0<<4)|(0<<0));
- *srom_bw&=~(0xf<<4);
- *srom_bw|=(1<<4)|(1<<5);
- gpio_request(S5PV210_MP01(1),"nCS1");
- s3c_gpio_cfgpin(S5PV210_MP01(1),S3C_GPIO_SFN(2));
- gpio_free(S5PV210_MP01(1));
- iounmap(srom_bw);
- iounmap(srom_bc1);
- }
這樣,就完成了DM9000網(wǎng)卡驅(qū)動的移植,其實這樣修改是有邏輯的,根據(jù)TQ210的原理圖可知DM9000連接的片選時nCS1,也就是網(wǎng)卡是接在來ROM控制器的BANK1上。
根據(jù)S5PV210的內(nèi)存映射表可以看出,SROMC的BANK1地址空間為0x88000000~0x8FFFFFFF,故當(dāng)CPU尋址該范圍內(nèi)的地址空間時才會使能片選nCS1。所以,我們采用的是0x88000000地址。
評論