本帖最后由 iysheng 于 2015-8-2 09:52 编辑
今天终于到达搭建Liunx环境这个步骤了,这一次,主要完成以下几个步骤:
1。VMware的安装
2。在VMware中新建一个Linux的虚拟机(我用的是RHEL6.6 Desktop)
3。在REHEL6.6中,借助
cross-ng编译制作
arm-cortex_a8-linux-gnueabi-*系列的交叉编译工具链
4。借助自己编译的交叉编译工具链完成u-boot和内核的编译测试
5。编写led电灯程序,并测试运行
接下来,我们细说中间我遇到的问题和解决办法。
1。VMware的安装
2。在VMware中新建一个Linux的虚拟机(我用的是RHEL6.6
Desktop)
Desktop是我在安装RHEL6.6时选择的。
这两步骤,可以按照用户手册上的来进行操作,没有什么大问题,要注意的就是我在
第三篇已经强调的安装VMware-8.0.2-591240时,要用管理员方式运行。
3。这一步比较繁琐,也没什么难的,就是很费时间,主要和我的电脑的运算速度也有一定的关系。
- 在crosstool-ng.org上下载crosstool-ng-1.18.0.tar.bz2
- 在用户目录下,创建文件夹arm-linux-tools,接下来很多操作都是在这个文件夹内完成的。
- 在arm-linux-tools文件夹内创建src,crosstool-build,crosstool-install三个文件夹,并在该文件夹内把crosstool-ng解压缩出来,进入crosstool-ng-1.80.0文件夹
- 进行依赖检测./configure –prefix/home/ys/arm-linux-tools/crosstool-install
- 根据对应的错误,安装相应的软件包,本次我的安装主要用到是原RHEL6.6镜像中的软件包,也就是本地源(这种制作本地源的方法网上很多,比较简单的,如果有疑问,可以给我留言,我会及时解答的)。
- 本次我安装了bison,flex,gperf(http://ftp.gnu.org/gnu/gperf/),libtool,expat-devel,textinfo,ncurses-devel,ncurses-term。
- 上述软件包,出了gperf我是在网站上下载的源码以外,其余都是用的本地源,在顺利安装了以上软件包以后,就可以进行ct-ng的安装了,
- 首先make然后make install,这样ct-ng就被安装到~/arm-linux-tools/crosstool-install/bin目录中了
- 把ct-ng的路径加入环境变量中,使系统可以找到该命令,下面就要进行配置了
- 复制cross-ng-1.18.0/samples/arm-cortex_a8-gnueabi目录到crosstool-build文件夹下,并复制arm-cortex_a8-gnueabi文件夹下的crosstool.config到crosstool-build文件夹下,重命名为.config
- 在该文件夹下执行ct-ng menuconfig进来配置,主要更改以下内容
更改第一个图片中内容主要是为了更改路径,
Local tarballsdirectory和Prefix directory,
更改第二个途中内容的原因是,官方网站上现在只有这个0.15.11版本的,避免麻烦,这样修改。
还要更改
这是网上教我的办法。很有必要,要不然会报错的。然后就保存。
12。ct-ng build开始编译,我等待了接近两个小时,编译完成,
13。接下来就是加入环境变量,建立arm-linux-*的软连接。至此,交叉编译工具链就住做好了,验证如下:
下面就是按照手册上的介绍自己动手编译u-boot和zImage,其中编译zImage的时候,我遇到了交叉编译工具链路径不对的问题,根据提示我又建立了新的软连接,解决了问题,成功完成了编译。
最后说一下我的led电灯程序,主要是测试一下自己编译的交叉编译工具链是否好用。
代码很简单,直接贴出来了,
- start:
- @;output
- ldr r0,=0xe0200340
- ldr r1,=0x11110000
- str r1,[r0]
- @;data
- ldr r0,=0xe0200344
- ldr r1,=0x30
- str r1,[r0]
- halt:
- b halt
编译链接生成
bin文件,通过串口下载到
开发板。
上电出现如下所示时,按任意键,接着按7,进入u-boot
这是我在minicom中,观察串口的数据。
通过我的实验,
minicom(本地源安装 yum install minicom)中,以ymodem协议发送数据(输入loady 0x20008000),正常没有问题,我在minicom中用kermit协议没有成功。我重新下载了ckermit的源码,编译 安装 之后,可以用
kermit依照kermit协议下载裸机bin文件成功了。
下面附上我的效果图:
kermit下kermit协议的下载
minicom下使用ymodem协议的下载
go 0x20008000命令完成裸机程序的运行
程序效果图两个led灯亮了,如下所示:
好了,今天就写到这里,接下来的几天我想多看看驱动的内容,加油。