学习心得:嵌入式linux开发环境的建立

2019-07-12 22:01发布

刚开始学习嵌入式的时候,周围没有人请教,幸好的是有一块板子,至少可以摸着石头过河。 在网上找了很多资料,看的很晕,没个人写的都不一样,针对不同的板子,也许方法各异,后来才发现都是殊途同归,即使有些微差异,也是大同。可是在初学者看来却很迷茫 ,至少我曾经经历过那样的迷茫。 绝大多数的linux软件开发都是以native方式进行的,就是本机(host)开发,调试,本机运行的方式。但这种方式不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在板子上运行开发工具和调试工具。所以嵌入式系统的软件开发一般都是采用一种交叉编译调试的方式。交叉编译调试环境建立在一台主机(pc)上,开发是使用主机上的交叉编译、汇编及连接工具形成在目标板上可以运行的二进制代码。然后下载到板子上运行。 下面我将自己在s3c2410上的过程总结一下。也许跟别的板子有出入,前面说了,殊途同归。希望对需要用的着的朋友有用。 我用的是GX的arm9-s3c2410实验箱,主机环境是RedHat 9.0。过程如下: 一、建立主机开发环境  将光盘放入CDROM中,然后在终端输入 mount /dev/cdrom /mnt/cdrom

cd 
/mnt/cdrom

.
/install
系统会自动安装,这时只要等就行了,一般需要20分钟左右,这个过程中会有一些提示信息,也有时要等一段时间才会有提示信息输出,耐心等待,别等不及就终止了。 安装完成之后会在根目录下生成两个目录: 工作目录/s3c2410_linux和交叉编译环境目录/opt s3c2410_linux下有这些目录: opt下有: 二、配置minicom minicom类似于windows中的超级终端,这里利用minicom作为开发目标的终端,在使用之前需要配置正确配置。配置的过程如下: 在Linux终端中输入: minicom -s 对minicom进行设置。选择serial port setup,然后按A选择Serial Device为/dev/ttyS0,表示串口1,如果有多个串口可以根据自己具体的情况进行选择,一般PC机都只有一个串口,就是COM1,即ttyS0。然后按E选择波特率为115200,8N1。然后按F选择Hardware Flow Control模式为No. 回车退出之后选择Save setup as df1,保存刚才的设置。OK!   三、配置tftp 安装tftp服务器端,google之后下载tftp-server-0.17-9.i386.rpm。进入rpm所在文件夹做以下操作 [root@localhost yangdk]# rpm -ivh tftp-server-0.17-9.i386.rpm
warning: tftp
-server-0.17-9.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [
100%]
   
1:tftp-server            ########################################### [100%]
[root@localhost yangdk]#vi /etc/xinetd.d/tftp
然后编辑将disable改为no,其他不变如下: service tftp
{
        socket_type             
= dgram
        protocol                
= udp
        wait                    
= yes
        user                    
= root
        server                  
= /usr/sbin/in.tftpd
        server_args             
= -/tftpboot
        disable                 
= no
}

接下来建立默认的tftp根目录,要跟上面的server_args的路径一样,这里是/tftpboot: [root@localhost yangdk]# cd /
[root@localhost 
/]# mkdir tftpboot
[root@localhost 
/]# /etc/rc.d/init.d/xinetd restart
停止 xinetd:                                              [  确定  ]
启动 xinetd:                                              [  确定  ]
[root@localhost 
/]# 好了,然后在命令行输入setup, [root@localhost root]# setup 选择选中tftp并去掉iptables选项,再 [root@localhost /]# /etc/rc.d/init.d/xinetd restart 这样就ok了,可以试着自己tftp自己测试tftp服务器是否启动了   四、配置NFS 这个比tftp要简单一些 [root@localhost root]# setup 同上选择选上nfs并去掉iptables ipchains(没有的话不用管)两项。退出后输入: [root@localhost root]# /etc/rc.d/init.d/nfs restart 这样nfs服务就打开了,但是nfs需要配置exports目录,就是共享出来的目录,最终在板子上mount上去,所有的程序最后都放在这个目录下,在板子上mount上去之后就能在这里运行。所以在板子上运行的程序实际上还是在主机上的,只不过是以网络文件系统(nfs)的方式挂载(mount)上去而已。键入vi /etc/exports [root@localhost root]# vi /etc/exports 在exports中加入下面这一行 /s3c2410_linux/nfs 192.168.1.101(rw,insecure,no_root_squash,no_all_squash) 其中/s3c2410_linux/nfs为主机上一个已存在的目录。192.168.1.101指开发板的IP,一定要这样具体,有些资料上写成192.168.1.*或者192.168.1/24,我试过了,都不行。必须是具体到制定的ip如192.168.1.101。 退出之后再来一遍这个 [root@localhost root]# /etc/rc.d/init.d/nfs restart 这样,NFS就配置完成了。OK了!可以编写嵌入式程序了,明天继续。