微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > S5PV210(TQ210)学习笔记——内核移植与文件系统构建

S5PV210(TQ210)学习笔记——内核移植与文件系统构建

时间:11-28 来源:互联网 点击:

  1. makeCONFIG_PREFIX=/nfsroot/rootfsinstall


(3)拷贝编译器运行库

我的编译器是4.5.1版本的,拷贝arm-none-linux-gnueabi/sys-root/lib的所有动态库到/nfsroot/rootfs/lib下,为了不拷贝连接,应该加上”-d"选项,执行

  1. cp*so*/nfsroot/rootfs/lib-d


同样拷贝arm-none-linux-gnueabi/sys-root/usr/lib下的所有动态库到/nfsroot/rootfs/usr/lib下,执行

  1. cp*so*/nfsroot/rootfs/usr/lib-d


(4)构建etc目录

在etc目录下创建Inittab文件,内容如下

  1. ::sysinit:/etc/init.d/rcS
  2. console::askfirst:-/bin/sh
  3. ::restart:/sbin/init
  4. ::ctrlaltdel:/sbin/reboot
  5. ::shutdown:/bin/umount-a-r
  6. ::shutdown:/sbin/swapoff-a


在etc/init.d/目录下创建rcS文件,内容如下

  1. echo"----------mountall.........."
  2. mount-a
  3. echo"----------Startingmdev......"
  4. echo/sbin/mdev>/proc/sys/kernel/hotplug
  5. mdev-s
  6. /bin/hostname-F/etc/sysconfig/HOSTNAME


为inittab和rcS文件添加可执行权限

  1. chmoda+xinittab
  2. chmoda+xrcS


在etc目录下创建fstab文件,内容如下

  1. #evicemount-pointtypeoptiondumpfsckorder
  2. proc/procprocdefaults00
  3. none/tmpramfsdefaults00
  4. mdev/devramfsdefaults00
  5. sysfs/syssysfsdefaults00


在etc目录下创建profile文件,内容如下

  1. PATH=/bin:/sbin:/usr/bin:/usr/sbin
  2. exportPATH
  3. #sethostname
  4. HOSTNAME=/bin/hostname
  5. exportHOSTNAME
  6. #SetPS1
  7. PS1=[u@hW]$
  8. exportPS1


拷贝主机/etc目录下的passwd和group文件到etc目录下。

(5) 设置HOSTNAME文件

在etc/sysconfig目录下创建HOSTNAME文件,在文件中写入主机名,我这里写的是bruce。

(6) 安装内核modules

进入内核源码目录,执行

  1. makemodules


待编译完成后安装modules,执行指令

  1. makemodules_installINSTALL_MOD_PATH=/nfsroot/rootfs


到这,根文件系统就构建完成了.

三 设置uboot启动参数

我的nfs根目录为/nfsroot,我的根文件系统目录是在该目录之下的,即/nfsroot/rootfs目录,故uboot启动参数设置如下

  1. noinitrdconsole=ttySAC0root=<主机IP>:/nfsroot/rootfsrwip=<开发板IP>:<主机IP>:<网关>:<子网掩码>::eth0:offinit=/linuxrc


需要注意的是,所有的冒号":"都不可省略。

四 网卡驱动移植(DM9000)

选择网卡移植是因为网卡驱动相对较为简单,对于DM9000就更加简单了,因为内核本身提供了DM9000的驱动程序,但是没有针对开发板进行管教配置,因此,我们配置下开发板相关的东西即可完成网卡驱动的移植。打开arch/arm/mach-s5pv210/mach-smdkv210.c文件,并作以下修改:

(1) 修改smdkv210_dm9000_resources定义如下

  1. staticstructresourcesmdkv210_dm9000_resources[]={
  2. [0]={
  3. .start=0x88000000,
  4. .end=0x88000000+3,
  5. .flags=IORESOURCE_MEM,
  6. },
  7. [1]={
  8. .start=0x88000000+4,
  9. .end=0x88000000+4+3,
  10. .flags=IORESOURCE_MEM,
  11. },
  12. [2]={
  13. .start=IRQ_EINT(10),
  14. .end=IRQ_EINT(10),
  15. .flags=IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,
  16. }
  17. };


(2) 修改smdkv210_dm9000_init函数如下

  1. staticvoid__initsmdkv210_dm9000_init(void)
  2. {
  3. unsignedlong*srom_bw=ioremap(0xE8000000,4);
  4. unsignedlong*srom_bc1=ioremap(0xE8000004,4);
  5. *srom_bc1=((0<28)|(0<24)|(5<16)|(0<12)|(0<8)|(0<4)|(0<0));
  6. *srom_bw&=~(0xf<4);
  7. *srom_bw|=(1<4)|(1<5);
  8. gpio_request(S5PV210_MP01(1),"nCS1");
  9. s3c_gpio_cfgpin(S5PV210_MP01(1),S3C_GPIO_SFN(2));
  10. gpio_free(S5PV210_MP01(1));
  11. iounmap(srom_bw);
  12. iounmap(srom_bc1);
  13. }


这样,就完成了DM9000网卡驱动的移植,其实这样修改是有逻辑的,根据TQ210的原理图可知DM9000连接的片选时nCS1,也就是网卡是接在来ROM控制器的BANK1上。

根据S5PV210的内存映射表可以看出,SROMC的BANK1地址空间为0x88000000~0x8FFFFFFF,故当CPU寻址该范围内的地址空间时才会使能片选nCS1。所以,我们采用的是0x88000000地址。

另外,从TQ210原理图的DM9000部分还可以看到,DM9000使用的是外部中断10,故将中断号修改为10号。

最后需要说明的是smdkv210_dm9000_init函数的修改,这是因为DM9000的数据访问、命令发送等是按照一定时序工作的,而DM9000接再SROMC上,因此需要配置SROMC时序,使其可以正确驱动DM9000,关于时序的详细配置我还没研究,不过韦东山老师的第二期视频中讲述了DM9000的驱动移植,也讲了时序配置,需要的话可以参考。

五 挂接文件系统

我们现在配置好了网卡驱动,还需要对内核稍作配置才能使内核支持网络文件系统挂载,具体的可以参考以下配置。

(1) 配置网络支持

  1. [*]Networkingsupport--->
  2. Networkingoptions--->
  3. <*>Packetsocket
  4. <*>Unixdomainsockets
  5. [*]TCP/IPnetworking
  6. [*]IP:multicasting
  7. [*]IP:kernellevelautocon

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top