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


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”文件(关于脚本格式问题,使用vi打开脚本文件,运行”:set fileformat=unix”,强制保存”:wq!”)。


13.mk-arm-linux-.sh
#!/bin/sh
# 为工具链创建arm-linux-xxx符号链接

ln arm-none-linux-gnueabi-addr2line -s arm-linux-addr2line
ln arm-none-linux-gnueabi-ar -s arm-linux-ar
ln arm-none-linux-gnueabi-as -s arm-linux-as
ln arm-none-linux-gnueabi-c++ -s arm-linux-c++
ln arm-none-linux-gnueabi-c++filt -s arm-linux-c++filt
ln arm-none-linux-gnueabi-cpp -s arm-linux-cpp
ln arm-none-linux-gnueabi-g++ -s arm-linux-g++
ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc
ln arm-none-linux-gnueabi-gcc-4.4.1 -s arm-linux-gcc-4.4.1
ln arm-none-linux-gnueabi-gcov -s arm-linux-gcov
ln arm-none-linux-gnueabi-gdb -s arm-linux-gdb
ln arm-none-linux-gnueabi-gdbtui -s arm-linux-gdbtui
ln arm-none-linux-gnueabi-gprof -s arm-linux-gprof
ln arm-none-linux-gnueabi-ld -s arm-linux-ld
ln arm-none-linux-gnueabi-nm -s arm-linux-nm
ln arm-none-linux-gnueabi-objcopy -s arm-linux-objcopy
ln arm-none-linux-gnueabi-objdump -s arm-linux-objdump
ln arm-none-linux-gnueabi-ranlib -s arm-linux-ranlib
ln arm-none-linux-gnueabi-readelf -s arm-linux-readelf
ln arm-none-linux-gnueabi-size -s arm-linux-size
ln arm-none-linux-gnueabi-sprite -s arm-linux-sprite
ln arm-none-linux-gnueabi-strings -s arm-linux-strings
ln arm-none-linux-gnueabi-strip -s arm-linux-strip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值