知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Ubuntu搭建嵌入式开发环境-续

发布时间:2014-09-05 14:50:16作者:知识屋

Ubuntu搭建嵌入式开发环境-续
 
嵌入式开发环境包括两个部分,工具环境和调试环境。在前一篇文章《嵌入式开发环境-交叉编译+tftp+minicom》中介绍了工具环境的搭建,在这篇续中,将介绍利用这些工具环境搭建的一个嵌入式的调试环境。当然,我这篇续不是什么操作指导文章,只是说明一下我个人比较喜欢的调试方式,相比vxworks,linux驱动开发环境还是非常的原始,vxworks下workbench一统天下,无论是BSP还是驱动程序,抑或是RTP程序,一个workbench让你从编码到在线调试都可以顺利完成,用着非常的惬意。当然其代价就是非常多的dollar,有钱的享受服务,没钱的就自己动手。
 
         嵌入式开发无非就是BSP开发和驱动开发两个部分,和所有其它开发工作一样,调试时间占开发周期的大部分实际,能够方便的调试修改后的内核和驱动程序将大大的提高工作效率。想一想我们通常的开发步骤,就是修改然后下载到板子上调试,通过串口查看调试结果。这里介绍下我比较喜欢的一种调试模式:u-boot先移植、调试成功,固化到flash中,使用tftp在线加载内核,挂载一个nfs文件系统。这样无论是内核还是新编写的驱动程序,都可以迅速的进行测试,而不用大动干戈的擦写flash。
 
        开发板是OK6410,u-boot是1.1.6版,自己添加、修改使其支持OK6410的DM9000网卡驱动。
 
一、下载内核
       在阅读我的上篇文章《嵌入式开发环境-交叉编译+tftp+minicom》后,启用tftp服务端和串口终端很简单。
 
        #sudo service tftpd-hpa restart
 
        #minicom
 
        顺利的话,在串口终端中你已经可以看到u-boot的初始化调试信息了,迅速的按任意键进入u-boot的命令模式。
 
        #tftp 0xc0008000 zImage
 
        上面的命令是告诉u-boot,从tftp的服务端根目录下,读取zImage文件到内存0xc0008000位置。(如你所知,这步要顺利完成,你必须将一个可用的内核zImage文件置于tftp服务端的根目录下)
 
        待tftp读取zImage文件完成后,运行bootm 0xc0008000,正常的话就开始内核运行了,你将会看到熟悉的starting kernel。
 
        正常的话,你将看到kernel panic,因为你没有根文件系统。
 
        在这里你有两种选择,一是烧写可用的根文件系统到flash指定位置;另一各是使用nfs。若你决定使用nfs,请继续下一个部分。
 
二、加载nfs
 
        首先建立一个目录,拥有nfs的根目录。
 
        #mkdir nfs/root
 
        #cp yaffs /nfs/root
 
        如果你以前没有使用过nfs,那么使用前你必须安装一些基础软件。主要操作如下:
 
        #sudo apt-get install portmap
 
        #sudo apt-get install nfs-kernel-server
 
        安装这两个软件后,需要配置以下nfs服务端。
 
        #sudo vi /etc/exports
 
         在文件最后加上一段
 
         /home/eric/Documents/nfs *(rw,sync,no_root_squash) (这里的/home/eric/Documents/nfs请根据自己的实际情况配置,注意,在nfs下请建立一个root目录,否则服务可能启动失败)
 
         接下来启动nfs服务
 
         #sudo /etc/init.d/portmap restart
         #sudo /etc/init.d/nfs-kernel-server restart
         确保没有fail出现,就表示服务启动成功了,下面查看一下nfs服务状态
 
         #service portmap status
         portmap start/running, process 26038
         #service nfs-kernel-server status
         nfsd running
         
         如果上面一切正常,表示nfs服务已经可以使用了,接下来配置一下u-boot的环境变量,让它告诉内核挂载nfs。
 
         设置u-boot的环境变量,更改启动参数,我的如下:
 
         setenv bootargs "root=/dev/nfs nfsroot=192.168.1.10:/home/eric/Documents/nfs/root/FileSystem-Yaffs2        ip=192.168.1.20:192.168.1.10:192.168.1.1:255.255.255.0:witech.com.cn:eth0:off console=ttySAC0,115200"    
        saveenv
 
        注意:
 
         192.168.1.20是板子的ip地址
 
         192.168.1.10是主机的ip地址
 
         192.168.1.1是网关地址
 
         255.255.255.0是子网掩码
          
         接下来,我们的系统可以顺利启动了。使用tftp 0xc0008000 zImage下载系统,bootm 0xc0008000启动,顺利的话你可以看到系统正常启动,并且挂载了你主机上的nfs。        
         当你正常的一步步都这里,你已经可以很容易的开始你的BSP和驱动的调试了,至少是很容易的在板子上运行你修改后的代码,你可以将你的驱动放在nfs下,这样板子一启动你就可以测试的驱动是否正确,同样你也可以测试你的应用程序。当然,你要是觉得这样文件不清晰的话,可以挂载主机的某个目录到目标机上,形成两者目录的共享。
 
三、挂载目录到目标机
 
         网路环境配置和挂载nfs类似,你在目标机上建立一个目录,执行下面的命令。
         #mount -t nfs -o nolock 192.168.1.10:/mnt  /tmp
 
         操作完成后,你在目标机上执行ls -l,就可以看到主机mnt目录下的所有内容。
         虽然有这些工具可以帮我们比较迅速的调试程序,但是,这样终究没有在IDE下开发效率高,希望什么时候linux平台下有一个免费、开源的workbench类软件,那样应该会有更多的人投入linux开发的怀抱。
 
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜