最近在研究uboot,做正式样机需要移植uboot,而不用自己写的boot程序。现将搭建toolchain的过程记录下来,其实用Ubuntu操作系统搭建交叉编译非常简单。分下面几步;
1.安装Ubuntu系统,这个不用多说,下载,安装在虚拟机上就可以直接用。
2.安装toolchain交叉编译环境。Ubuntu系统可以直接设置软件源,直接用命令行下载自己所需要的软件,很方便。
把这句话写入软件源 “deb http://download.analog.com/27516/distros/debian stable main”,手册上说可以直接用命令行添加,但是我试了很多次在命令行下直接添加老是出错,干脆在图形界面下直接添加了。
接着执行以下两个命令:
sudo apt-get update
sudo apt-get install blackfin-toolchain-uclinux blackfin-toolchain-linux-uclibc
前面一句是更新软件,后一句说明是安装blackfin-toolchain-uclinux 和 blackfin-toolchain-linux-uclibc两个工具,这就是交叉编译工具。一般不会出错。但是有的Ubuntu版本会提示你没有安装什么什么软件,但是它也会提示你该怎么做,你就按它提示的做就行了,一般就是输入一个命令的事,很简单,这里不详细说了。
3.安装完交叉编译环境之后,会在/opt目录下生成一个uclinux文件夹,此文件夹下有两个文件夹,分别存放安装好的文件。系统默认是安装到这里的,当然你也可以改变安装目录,个人感觉无所谓。
这时,要记得设置环境变量,即设置路径,输入以下命令:
export PATH=$PATH:/opt/uClinux/bfin-uclinux/bin:/opt/uClinux/bfin-linux-uclibc/bin
执行完毕之后,可以查看以下路径是不是加进去了,直接输入export就可以查看路径是否添加成功。
到现在为止,交叉编译环境已经建立完毕,可以直接使用了,是不是比RedHat系统要方便很多啊,呵呵
其实我写的这些在发行手册上都是有的,而且比我写的要详细的多,不过是英文版的,初学者可以参考以下我写的,然后去直接看文档,那样更快捷。
编译uboot:
1.下载uboot最新版本。打开Blackfin的开源网站的uboot页面http://blackfin.uclinux.org/gf/project/u-boot/
左边栏有个SVN,点开。找到Anonymous users stuck behind a firewall may use:
svn checkout svn://firewall-sources.blackfin.uclinux.org:80/svn/u-boot/trunk u-boot复制后半部分svn checkout svn://firewall-sources.blackfin.uclinux.org:80/svn/u-boot/trunk u-boot直接放在Ubuntu命令行,就可以直接下载uboot的最新版本了。
2.配置参数。这里下载的应该是个文件夹,所以不用解压,直接cd 到文件里面。配置参数,以bf537为例,输入下面命令:make bf537-stamp_config
make clean
3.make ,这一步直接make就行了。make成功会在当前目录下生成几个以uboot开头的文件,分别是System.map u-boot u-boot.bin u-boot.hex u-boot.ldr u-boot.ldr.hex u-boot.ldr.srec u-boot.map u-boot.srec 这几个文件中我们只关注u-boot.bin和u-boot.ldr就可以。*.bin文件可以在bypass模式下运行,在Flash模式下只能用ldr文件。因为bypass模式是代码直接在Flash里面执行,所以要二进制文件。如果加载模式是从flash引导的话,代码被加载到RAM中去执行,所以这时要用ldr格式,放在Flash上的文件也是LDR格式的。
这就是大体流程,还是那句话,英文版的发布文档比这里要详细的多,此处只做简单参考。