我的嵌入式linux开发步骤:
1. 安装虚拟机,见<安装及使用心得>,选择桥接模式
2. 虚拟机串口设置,见<VMare里linux使用MINCOM通信>;
3. 用交叉网线连接PC&开发板.
4.NFS(PC)设置:见<安装及使用心得>&<Linux启动流程>&< linux开关机脚本相关>
备注: a.nfs的文件权限设置777
b.挂载/卸载nfs时候,注意当前所在文件夹,以免不成功
让PC linux的/etc/rc.d/rc.local里面增加了部分命令,随机启动.如下:
[root@localhost rc.d]# more rc.local
#!/bin/sh
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
ifconfig eth0 10.96.15.169
ifconfig eth0 netmask 255.255.255.0
/etc/rc.d/init.d/smb start
/etc/rc.d/init.d/nfs start
/etc/rc.d/init.d/portmap start
/etc/rc.d/init.d/iptables stop
echo "nfs setup OK from /etc/rc.d/rc.local."
[root@localhost rc.d]#
4. NFS(开发板)设置:见<安装及使用心得>
在开发板设置脚本/usr/yangchu.sh,这样开机运行该脚本来自动挂载
#!/bin/sh
ifconfig eth0 10.96.15.170
mount -t nfs 10.96.15.169:/home/myth /mnt -o nolock
echo “nfs ok!”
此时由于NFS的缘故,可以在开发板mnt文件里看到实时变化的10.96.15.169:/home/myth文件夹的情况.
在开发板/etc/init.d/rcS的最后加入了执行上述脚本的语句,开机会自动运行
这里发现一个问题:发现板子启动时,不会去执行/usr/etc/rc.local文件,而且/etc/init.d/rcS文件包含了/usr/etc/rc.local的所有语句.不晓得这个是不是板子
的一个bug,所以开发商把后者的语句都让前者去执行完毕了.
此外一个小发现记录下来:之前用minicom连上板子后,一直是看不到光标的,这给操作带来很大不便,但无意中发现在minicom执行一个非法操作:cat /usr/1.jpg后会自动退出
minicom.不过重新进入minicom后就可以看到光标了.
5.在PC上编辑hello.c文件分别见虚拟机myth文件,用autotools生成makefile,并用GDB调试.见<C编写基础>&<GDB调试精粹及使用实例>
6.在PC上安装交叉编译工具,见<交叉编译场景(arm-linux)分析>:
一般情况下,主机和目标机是同一类型的计算机,这就是正常的编译,没有什么好说的。所谓交叉编译就是在主机上为目标机编译,比如在PC上编译,然后在手机上运行,这种
编译就叫交叉编译.交叉编译需要交叉编译器,不同的目标机(主要是看芯片类型)需要不同的交叉编译器,比如我们这里要介绍的arm-linux交叉编译,所用的交叉编译器就是arm-linux-gcc系列。
使用稳定版本cross-2.95.3.tar.bz2来建立交叉编译环境:
a.将cross-2.95.3.tar.bz2解压到/usr/local/arm,会在该文件夹生成文件夹2.95.3,并删除压缩包cross-2.95.3.tar.bz2
b.在/etc/profile最后行增加环境变量"export PATH=$PATH:/usr/local/arm/2.95.3/bin"
7.利用交叉编译工具,在PC上将步骤6生成的hello.c的makefile生成可在开发板运行的hello
a.修改makefile里的gcc工具
b../configure --host=arm-linux --prefix=/xxx
--host:指定目标机的平台类型。一般格式为CPU类型-操作系统名称。比如,目标机的CPU为arm,操作系统为linux,可以这样写--host=arm-linux。
--prefix:这是安装路径的前缀,即编译结果放置的位置。默认值是/usr或者/usr/local,交叉编译时不能使用默认值,否则它会覆盖你本机的文件,所以要指定一个路径。比如,可以指定为--prefix=/work/cross/rootfs/usr.配置完成后,运行make编译,运行make install安装。
8.做几个<S3C2410完全开发流程>里的实验.
9.内核模块编译:见<内核模块编译>:
10.驱动: