您的位置:首页 > 其它

13.裸机程序和交叉编译工具链

2016-04-03 19:00 375 查看
13.1.USB配合dnw下载裸机程序

(1)S5PV210的启动过程:我们必须将OM5打到VCC,才能从USB启动,开机时先执行内部的iROM中的BL0,然后BL0做了一系列的初始化后,再读取外部OMpin的设置来确定用户选择了从哪里启动。当检测到我们设置的是USB启动时,S5PV210就会从USB的OTG接口试图连接主机进行下载启动。实际上GEC210开发板是通过OMpin引脚选择从SD卡启动,经过校验和失败后进行第2选项启动(首先尝试UART启动,然后尝试USB启动)。

(2)dnw工具介绍:dnw是一个软件,是三星公司编写的,这个软件的功能是通过USB线连接开发板和电脑主机,然后从主机下载文件镜像到开发板中去烧录系统。该软件需要连接USB线、安装驱动(Win7的64版本驱动安装非常麻烦,因为微软启用了USB设备驱动签名政策)、设置下载地址。

(3)裸机程序下载地址:从usb启动做裸机实验时,因为不需要16字节的校验头(把裸机程序当作BL1来使用,BL1有16字节的校验头,BL1真正的内容放在0xd0020010处),所以直接下载到0xd0020010。

13.2.SD卡下载裸机程序

(1)一般情况下,用USB下载来调试裸机程序比较方便;但是有时候电脑使用dnw会频繁蓝屏,这时候用SD卡下载调试是不错选择。实际上GEC210开发板是通过OMpin引脚选择从SD卡启动即可。

(2)在windows和linux下都可制作启动SD卡,具体参考”GEC210开发板刷机汇总”。

(3)如果电脑本身支持usb启动下载而且不蓝屏,建议以后做实验用usb下载调试。

13.3.windows与linux安装软件的特点

(1)Windows中装软件使用安装包,安装包解压后有2种情况:1种是一个安装文件(.exe或.msi),双击进行安装,下一步直到安装完毕,安装完毕后会在桌面上生成快捷方式,我们平时使用快捷方式来启动这些程序;1种是所谓的绿色软件、免安装软件,其不用安装,直接解压开里面就有exe可以直接双击执行。

(2)linux中安装软件比windows中复杂,linux中安装软件一般有以下几种方法:第1种是在线安装(譬如ubuntu中使用apt-get install vim命令来安装vim软件);第2种是自己下载安装包来安装,这种方式的缺陷就是你不知道你下载的安装包和你的系统是否匹配;第3种是源代码安装,适合职业玩家。

(3)我们安装交叉编译工具链(arm-linux-gcc)实际采用第2种安装方式。

13.4.交叉编译工具链的选择和安装

(1)选择交叉编译工具链的原则:和我们所使用的目标平台(给哪款SoC编程)尽量去匹配。譬如我们开发S5PV210的程序就是用arm-2009q3这个版本,因为三星官方在开发S5pv210时就使用该版本的交叉编译工具链,这样可以最大限度的避免稀奇古怪的问题出现。

(2)交叉编译工具链的安装:步骤1-打开虚拟机,在/usr/local/下创建/usr/local/arm文件夹;步骤2-先将安装包从Windows中弄到linux中去(共享文件夹、Samba、cuteftp);步骤3:解压(tar -jxvf arm-2009q3.tar.bz2)。程序已经安装完毕,真正的应用程序安装在/usr/local/arm/arm-2009q3/bin目录下。

(3)linux中的目录管理方法:从技术角度来讲,linux中所有目录性质都是一样的,所以我们把软件安装到哪里都行。但是因为如果胡乱放置,将来程序可能不好找。所以久而久之大家就总结了文件放置的一般定义,譬如说/bin目录放置一些系统自带的用户使用的应用程序,/sbin目录下存放的是系统自带的系统管理方面的应用程序。我们装软件一般都在/usr目录下。我们安装arm-linux-gcc,就在/usr/local/目录下创建一个arm文件夹,然后装到里面。

(4)安装后的测试:到真正的应用程序的安装目录下(/usr/local/arm/arm-2009q3/bin),执行”./arm-none-linux-gnueabi-gcc -v”命令,执行后可以得到一长串输出,其中有”gcc version 4.4.1”字样,即表示安装成功。

13.5.导出交叉编译工具链到环境变量

(1)环境变量的意义:环境变量就是操作系统的全局变量。每一个环境变量对操作系统来说都是唯一的(名字和所代表的意义都是唯一的)。linux系统可以有很多个环境变量,有一部分是linux系统自带的,还有一些是我们自己来扩充的。此处涉及到的环境变量是PATH,该环境变量是系统自带的,它的含义就是系统在查找可执行程序时会搜索的路径范围。

(2)将工具链导出到环境变量:查看当前终端下的环境变量PATH(echo dollaPATH)。执行”export PATH=/usr/local/arm/arm-2009q3/bin:dollaPATH” 在某个终端中执行以上命令后,该终端中就可以直接使用”arm-none-linux-gnueabi-gcc”命令,注意我们在本次终端中执行时的操作只是针对本终端,以后再打开的终端并未被执行过这个命令所以没导出成功。解决方案是在”~/.bashrc”文件中,添加”export PATH=/usr/local/arm/arm-2009q3/bin:$PATH”即可(每次打开某个终端后会自动执行.bashrc文件)。

(3)注意我们导出这个环境变量是在当前用户,如果你登录时在其他用户(普通用户和ROOT用户)下是没用的。

13.6.为工具链创建arm-linux-xxx符号链接

(1)譬如ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line。

(2)建议使用脚本实现,参考”mk-arm-linux-.sh”文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: