资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,基于linux的DTU开发环境的搭建,姓名:孟刚,学号:093107,导师:时龙兴,日期:20101122,目录,SEP4020 典型存储空间分配结构,搭建Linux主机开发环境,利用NandFlash烧写软件烧写U-Boot和kernal,搭建网络文件系统,内核的编译以及cramfs和yaffs的制作,利用U-Boot烧写Linux操作系统和Cramfs文件系统,利用NandFlash烧写软件烧写kernal和yaffs文件系统,各种文件系统下的应用开发简介,第一部分,SEP4020 典型存储空间分配结构,SEP4020 典型存储空间分配结构,U-Boot,内核启动参数,Linux内核,根文件系统,SDRAM,NAND Flash,NOR Flash,说明:上图是SEP4020大开发板的典型存储结构。所给DTU的DEMO板中U-Boot是放在NandFlash中的,上电后从NandFlash启动U-Boot,通过U-Boot,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。,第二部分,搭建Linux主机开发环境,在虚拟机上安装Ubuntu,具体步骤可以借鉴网上相关说明,在此不做具体介绍,安装交叉编译工具,首先下载一个源码包:,解压到目录/usr/local/arm下,解压后确认目录的顺序是否为/usr/local/arm/3.4.1/,添加环境变量到系统中:打开/etc/bash.bashrc,并在bashrc文件的最后一行添加:export PATH=/usr/local/arm/3.4.1/bin:$PATH,保存,此时环境变量已经添入系统。,此时只要在终端中输入arm-linux-gcc v,会出现一下信息的话代表交叉编译工具已经安装成功,如果没有下图信息,再检查前面几步有没有出错,Windows下安装串口调试工具secureCRT,自己从网上下载一个secureCRT软件包后安装即可,另外也可以使用Windows自带的超级终端,看个人习惯,第三部分,利用NandFlash烧写软件烧写Uboot和kernal,利用NandFlash烧写软件烧写Uboot,连接好J-Link调试器后打开NandFlash烧写软件,连接成功后,如下图进行选择选择:(其中u-boot.bin文件是给定的),点击“下载”按钮后,会显示烧写进度条,成功烧写后,会如下显示,(如果下载时提示无法与服务程序通信,可以重启一下板子再进行烧写),Kernal的烧写过程相同:,注:U-Boot可以分别烧写,也可以同时烧写,第四部分,搭建网络文件系统,主机端的nfs配置,首先设置虚拟机下Ubuntu的IP地址,比如我的是,由于Ubuntu下默认是没有提供nfs服务的,所以你要自己下载并安装nfs服务程序,方法是执行命令,apt-get install nfs-kernal-server,编辑文件/etc/exports添加nfs目录的支持:,/home/nfs/nfs 10.6.15.94(rw,sync,no_root_squash),其中是开发板的ip。,其中:,/nfs表示 nfs 共享目录,它可以作为开发板的根文件系统通过 nfs 挂接;,rw 表示挂接此目录的客户机对该目录有读写的权力,no_root_squash 表示允许挂接此目录的客户机享有该主机的 root 身份,编辑/etc/hosts.deny文件,该文件用于设置拒绝相关IP的nfs的服务请求,编辑/etc/hosts.allow文件,该文件用于设置允许的IP对nfs服务de请求,开发板端的nfs配置,开发板端的配置比较简单,主要是修改U-Boot的bootargs参数,修改后的参数应为:,set bootargs root=/dev/nfs rw nfsroot=10.6.15.99:/home/nfs/nfs ip=10.6.15.94:10.6.15.99:10.6.15.1:255.255.255.0 console=ttyS0,115200 mem=32mb,修改后敲入save命令,将开发板和主机用直连网线相连接,开启板子会看到已经把nfs文件系统挂载上去了,说明:其中为开发板的IP,为Ubuntu的IP,有的kernal可能不支持nfs,这是需要对内核重新编译,可以用make menuconfig 命令选中相关选项后重新编译。,由于debo板给的内核支持nfs,所以在此不做详细介绍,感兴趣的话请查阅相关资料,说明:在挂载所给的nfs时,出现Warning:unable to open an initial console.,解决方法:在虚拟机终端输入mknod/nfs/dev/console c 5 1,其中/nfs是你nfs所在的目录,第五部分,内核的编译以及cramfs和yaffs的制作,内核的配置与编译,首先进入linux内核目录,注:如果无法正常输入make相关命令,需要按照提示安装相关软件,执行make menuconfig命令,利用空格选中或不选中相关选项,选中的选项前面会有“*”,表示编译进内核,有的选项会显示“M”表示将该选项编译为模块;之前提到的要让kernal支持nfs,需要选中如下几项:,配置完后保存退出,执行make命令进行编译,编译好的内核位于,/linux/arch/arm/boot/zImage,刚刚生成的内核还是不能直接给我们的板子使用,为了让U-Boot能准确认出我们的内核,必须给我们的内核再进行一条命令,在执行这条命令前首先要将mkimage这个程序拷贝到/bin目录下,这个程序在上也能下到。,可能直接拷进去会出现权限不够的提示,在终端下输入命令chmod 777/bin/mkimage,在终端中输入命令:,mkimage-n Kernel 2.6.16-A arm-O linux-T kernel-C none-a 30007fc0-e 30008000-d./arch/arm/boot/zImage vmlinux.img,这时在当前目录下就生成了我们想要的,vmlinux.img文件,该文件可直接烧录进flash中运行。,如果想恢复之前的默认配置只需执行,make sep4020_defconfig,Cramfs文件系统的制作,挂载nfs完成应用程序的开发后,需要将nfs转换为可以在开发板上运行的文件系统,其中转换为cramfs的方法如下:,首先要将mkcramfs这个程序拷贝到/bin目录下,在nfs当前目录下执行mkcramfs/nfs nfs.cramfs命令,即可生成我们想要的nfs.cramfs文件,Yaffs文件系统的制作,方法同cramfs文件系统的制作,首先要将mkyaffsimage这个程序拷贝到/bin目录下,在nfs当前目录下执行mkyaffsimage/nfs nfs.yaffs命令,即可生成我们想要的nfs.yaffs文件,第六部分,利用U-Boot烧写Linux内核和Cramfs文件系统,内核的烧录,在U-Boot已经烧写好的情况下可以用tftp命令将vmlinux.img传到sdram中,然后用nand write命令将vmlinux.img文件烧录到相应的地址空间中。,方法:,启动板子,进入U-Boot命令行,设置好ipaddr(板子的IP)和serverip(主机的IP),在主机端打开tftpd32软件,并指定vmlinux.img所在目录,在U-Boot命令行中顺序执行命令,tftp 31000000 vmlinux.img,nand erase 0 x00100000 0 x00200000,nand write 0 x31000000 0 x00100000 0 x00200000,这样内核就烧录到了相应的地址空间中,Cramfs文件系统的烧录,方法同上,顺序执行如下命令:,nand erase 0 x600000 0 x1e00000,tftp 31000000 nfs.cramfs,nand write 0 x31000000 0 x600000 0 xd00000,第七部分,利用NandFlash烧写软件烧写kernal和yaffs文件系统,说明:其实也可以用tftp的方式烧录yaffs但是既然提供了方便的,NandFlash烧写软件,完全可以利用好该软件,方法与之前烧录U-Boot的方法相同,只是注意如下选项:,第八部分,各种文件系统下的应用开发简介,Cramfs下的应用开发,在U-Boot里设置启动参数如下,set bootargs root=/dev/mtdblock2 console=ttyS0,115200 rootfstype=cramfs mem=32mb,save后reset,这样系统就挂载了cramfs,此时可以将交叉编译后的应用程序tftp传输到开发板上运行。(主机要打开tftpd32软件,并将相应的可执行程序放入制定目录中),tftp命令如下:,从主机到开发板的传输:tftp gr filename PC_IP,(例如 tftp gr hello 10.6.15.99),从开发板到主机的传输:tftp p l filename PC_IP,(例如 tftp p l hello 10.6.15.99),说明:因为cramfs为只读的所以,只能进入tmp目录进行下载!,Yaffs下应用程序开发,方法同cramfs下应用开发,由于yaffs为可读可写文件系统,所以开发时相对cramfs方便的多。,具体方法同上,不同的是可以进入任何目录下载运行,Nfs下的应用程序开发,用cramfs和yaffs开发时,每次都要将应用程序下载,不太方面,在开发时推荐挂载虚拟机下的NFS分区作为根文件系统,挂载nfs的方法之前已经介绍了,当挂载nfs成功后,只要将应用程序交叉 编译,开发板端就可直接执行,相当方便。,Thanks!,
展开阅读全文