嵌入式之路

来源:互联网 发布:网站搜索引擎优化教程 编辑:程序博客网 时间:2024/06/08 08:24

源文来自http://zhilong2382.blog.163.com/blog/static/748042212009610114180/

又一个月,时间特快,每天都是很忙碌,试也考完了,现在在做一些实训,在这个月里我觉得是我的一个转折点,一下子懂了很多,但这个月也是我最累的,首先很庆幸的是我的计算机三级过了,呵呵,觉得蛮幸运的,我一直都是认为我过不了的,继续努力! 

  到今天为止,我学嵌入式linux刚好半年,我是从元旦开始买书自学的,过程曲折可谓一语难尽!在此期间我也失落过,也曾一度热情高涨,总的来说我对嵌入式LINUX有了浓厚的兴趣,在这个月一下子让我懂了很多,现在我对它充满了信心!可以说到现在,我只是爬到了嵌入式的大门,看到了里面的阶梯小路,要想入这个门还得要更加努力!下面我对这半年来所学的东西进行一个总结,方便以后可以找到回归的路,在网上搜集了很多资料,但都是不全的,或者那些只能针对他所说的环境,根本不适合自己,不过我还是要感谢他们,没有这些资料,我是学不了那么快的,还有梁老师和黄老师对我的指导,把资料整理成自己的东西,再学习原理,如果都是按步就班,那结果自然是很多莫名其妙的错误。

  首先介绍一下我的开发环境:(这里只总结下minicom、NFS、交叉编译、Qt图形界面)

PC系统: Ubuntu 8.04

开发板: 飞凌嵌入式公司的OK2440-III  ,内核:2.6.12

网卡:我用两个网卡,一个集成,一个PCI的,都是10/100M自适应网卡,一个用来上网,一个用来挂载开发板

如果新安装linux ubuntu 8.04,安装后先配置一下网卡IP,可以用ifconfig查看IP,如果是双网卡,注意eth0、eth1对应的是那块网卡,可以用ifconfig eth0 192.168.0.10 netmask 255.255.255.0来设置IP和掩码,可以用ifconfig eth0 up/down开或关网卡,具体可以参照其它资料。如果提示无法连接,先关掉其中一块网卡,登录网络后再开网卡,先使用更新管理器更新一下校验软件包,否则后面用apt-get install都会提示无法找到软件包! 

-、minicom

安装软件包 sudo apt-get install minicom

输入 minicom -s 进行设置

选择  serial port setup  按A键,删除完,输入/dev/ttyS0 ,按enter,再按F,选择为NO,退出选择save setup as df1保存,以后每次使用输入minicom就得了,至于使用,资料很多,自行参考。

注意:/dev/ttyS0指串口1,ttyS1指串口2,你要确保你的目标板选用的串口与之相同,目标板共有两个,一个是启动Bootloader用来接收信息的,一个是linux控制台串口,建议把这两个都选择为串口1,可以在windows下通过DNW来更改设置,否则不能正常工作。

二、NFS配置

安装 sudo apt-get install nfs-kernel-server

配置共享文件: /etc/exports 在后面添加要共享的文件夹或目录如 /home/yy/share *(rw,sync,no_root_squash)

查看IP: 看一下pc端的IP和板上的IP是否同一个网段,如把PC改为192.168.0.10,板改为192.168.0.15,一定要设置好!

启动服务 sudo /etc/init.d/nfs-kernel-server start

目标板进行挂载:mount -t nfs 192.168.0.10:/home/yy/share /mnt -o nolock

可能会提示你的版本过低之类的信息,不要紧,不影响使用,现在切到/mnt可以看到pc端的share文件内容了,-t表示临时挂载,-o nolock表示不锁,默认是使用UDP协议,对一些小文件不要紧,如果文件较大,可以使用-o tcp来指定使用TCP协议,否则掉包很严重!可随时用df命令来查看是否有文件挂载。

三、安装交叉编译工具链

有三种方法:

1、分步编译安装所需的库和源代码,最终生成交叉编译工具链,最复杂。

2、通过Crosstool脚本工具来实现一次性生成,相对简单许多。

3、直接用已经制作好的交叉编译工具链,最简单省事,但局限性较大,毕竟是人家构建好的,也就是固定没灵活性,使用时可能出   现许多莫名的错误。下面介绍第三种方法,其它的另行参考资料。

把cross-3.4.1.tar.bz2拷到任一目录;解压: tar xjvf cross-3.4.1.tar.bz2

此时会生成一个文件,把3.4.1拷到/usr/local/arm,如果没有目录创建即可;

设置一下路径:比如/home/yy/.bashrc 在后面加入export PATH=$PATH:/usr/local/arm/3.4.1/bin

重新登录,输入arm-linux-gcc -v 看是否成功;

再安装这个必需包: sudo apt-get install build-essential,还有编译内核时可能用到这些包kernel-package,libncurses5-dev fakeroot 

四、Qt图形界面

  终于到Qt了,Qt是我花的时间最多的,我觉得学Qt不能象以往那样,把一个例程完整地写完,运行发现没问题了,再看看每一步的意思,我们要先懂每一步的意思,再把Qt移植到arm板上,移植常见的有这三种:

1、从一个硬件平台移植到另外一个硬件平台;

2、从一个操作系统移植到另一个操作系统;

3、从一种软件库环境移植到另一种软件环境;

Qt移植属第三种,这里我选用Qt4.2.2的,因为我手头上刚好有Qt4.2的资料,编译器用3.4.1的,下面开始了:

下载qtopia的开源代码 www.qtch.org/download/qtopia-core-opensource-src-4.2.2.tar.gz

解压: tar xzvf qtopia-core-opensource-src-4.2.2.tar.gz 到任一目录,

重命名 mv qtopia-core-opensource-src-4.2.2 qtopia-core-opensource-src-4.2.2-arm

进入解压的文件 cd qtopia-core-opensource-src-4.2.2-arm

配置 ./configure -embedded arm -xplatform qws/linux-arm-g++ -depths all -no-qt3support -qt-mouse-linuxtp  更多选项可以输入./configure -help来查看,如果要支持Qvfb,可以加入-qvfb

没什么错误的话可以make了,这个过程较长,最后make install软件安装在/usr/local/Trolltech/QtopiaCore-4.2.2-arm下,这样就安装完了;

接下来要移植了,先准备好这些文件:libQtGui.so.4.2.2,libQtNetwork.so.4.2.2,libQtCore.so.4.2.2,fonts,

libstdc++.so.6,libstdc++.so.6在/usr/local/arm/3.4.1/arm-linux/lib下,其它的都可以在/usr/local/Trolltech/QtopiaCore-4.2.2-arm下找到,再在demos找个例程,如mainwindow,把准备的这些文件放到/home/yy/share下(也可以放在其它目录,能通过NFS挂载即可)然后按照前面介绍的方法把这些文件挂到开发板,

把*.so.4.2.2的这几个文件拷到开发板的/usr/lib并全部命名为*.so.4,libstdc++.so.6也是拷到这里,但不用重命名, 

然后把fonts放到 /usr/local/Trolltech/QtopiaCore-4.2.2-arm/lib,这个目录自己创建;然后ps查看qpe的PID,把它给kill掉,如kill 399,然后再切到mainwindow执行./maindow -qws 哇画面出来了,此时可以插上usb鼠标,可以动了!!关于怎样用触摸屏还有待研究,至于怎样自行启动可以到/etc/init.d/rcS中修改,最后送上一句话:

每个人的文件系统不一样,你照着做了也不一定得,初学者最不喜欢看到这句话了,包括我, 

但又必须面对,解决方法是从原理着手!这在ok2440-III上试验成功。这是我一个一个字打出来的,也蛮累的,转载注明出处!

 

原创粉丝点击