在Ubuntu10.04搭建ltib(MPC8315E)开发环境
开始搭建一份MPC8315E的开发环境,之前的工程师提醒问题说问题比较多,网上随便百度了几下感觉问题确实比较多,为了让解决问题的思路更为清晰,这里写下了相关的笔记以便以后进行查阅.
一、安装linux环境(ubuntu10.04)
之所以安装这个版本是因为磊哥说我们开发就是在这个版本上进行了。为了不造成其他的问题。首选这个版本进行开发,换句话说作死的才选其他版本进行开发,说不定搞一天环境的搭建不起来。ubuntu10.04的下载地址如下:
安装过程我就不详细描述了。选择英文版本的安装就好了,为了避免很多因为中文导致的问题,装完ubuntu过后这个源肯定是不可以用的了。所以就直接百度找找可用的源,发现国内的源基本也就关闭了。还好运气好,没找几下就找到了。测试了一个下可以访问。就直接贴上来了:
## Major bug fix updates produced after the final release of the
## distribution.
deb http://old-releases.ubuntu.com/ubuntu/ maverick main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ maverick main restricted
deb http://old-releases.ubuntu.com/ubuntu/ maverick-updates main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ maverick-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://old-releases.ubuntu.com/ubuntu/ maverick universe
deb-src http://old-releases.ubuntu.com/ubuntu/ maverick universe
deb http://old-releases.ubuntu.com/ubuntu/ maverick-updates universe
deb-src http://old-releases.ubuntu.com/ubuntu/ maverick-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://old-releases.ubuntu.com/ubuntu/ maverick multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ maverick multiverse
deb http://old-releases.ubuntu.com/ubuntu/ maverick-updates multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ maverick-updates multiverse
弄完源过后,直接输入以下命令进行更新一下源,虽然速度可能慢点,但是终归是可以用的,有总比没有好嘛。
sudo apt-get update
再接下来就直接开始准备ltib(Linux Target Image Builder)的安装了,先贴上下载地址吧:
https://cache.nxp.com/secured/bsps/MPC8315ERDB_20100727_ltib.iso?gda=1482298505_a5224e7fc4e202c2a12cbed0544e6e44&fileExt=.iso
这些东西都下载好了就可以直接开始安装ltib的部分依赖环境了。
sudo apt-get install patch g++ rpm zlib1g-dev m4 bison libncurses5-dev libglib2.0-dev gettext build-essential tcl intltool libxml2-dev liborbit2-dev libx11-dev ccache flex uuid-dev liblzo2-dev
安装完了这些过后就开始尝试安装了,首先将ltib的iso文件通过ubuntu的ftp服务发送到虚拟机中,然后使用以下命令将其挂载到/mnt/目录下。(PS:为了方便我直接使用了SFTP,也就是只需要安装ssh服务器就可以使用的FTP)
sudo mount -o loop ltib.iso /mnt/
cd /mnt/
./install
之后会有一个选择目录的问题,我选择的是 /home/mckk/ppc 这个目录,正常安装会在终端中有如下提示:
Installation complete, your ltib installation has been placed in
/home/mckk/ppc/ltib-mpc8315erdb-20100719, to complete the installation:
cd /home/mckk/ppc/ltib-mpc8315erdb-20100719
./ltib
然后就要进行安装的第二部分了.这里我先说明下,由于ltib不允许root模式下安装,但是有些东西又需要root才能安装,所以需要预先修改一下部分设置.操作如下:
sudo visudo
在文件(/etc/sudoers)的最后面添加(我的用户名是mckk)
mckk ALL=NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm
然后就可以开始执行之前安装在PPC目录下的./ltib文件了.正常的话不会跳出相关权限的问题,但是此时你是编译不过的(一般情况下).
此后,又开始了一顿惨绝人寰的折腾,按照常理来说应该不会有啥问题的,但是我这里输入执行./ltib执行过后先输入下面的语句,后来报错了:
mckk@mckk-laptop:~/ppc/ltib-mpc8315erdb-20100719$ ./ltib
Installing host support packages.
This only needs to be done once per host, but may take up to
an hour to complete ...
If an error occurs, a log file with the full output may be found in:
/home/mckk/ppc/ltib-mpc8315erdb-20100719/host_config.log
果断去打开host_config.log文件,翻到最后找到报错的地方,原来是一个 /home/mckk/.gvfs这个目录出现访问错误,我尝试自己删除,竟然没法删除,百度了一会才发现需要如下才能删除:
sudo umount .gvfs
sudo rm -rf .gvfs
继续执行./ltib文件.又报错在说 /opt/freescale/pkgs目录无法创建。这问题好说,自己创建就可以了
sudo mkdir /opt/freescale/pkgs
sudo chmod 777 /opt/freescale/pkgs
继续开始./ltib编译..大概等了十分钟..终于编译成功了.最终提示如下:
creating an ext2 compressed filesystem image: rootfs.ext2.gz
genext2fs: Running in LTIB backwards compatibility mode: -i -> -N
creating a uboot ramdisk image: rootfs.ext2.gz.uboot
Image Name: uboot ext2 ramdisk rootfs
Created: Wed Dec 21 15:17:38 2016
Image Type: PowerPC Linux RAMDisk Image (gzip compressed)
Data Size: 4388828 Bytes = 4285.96 kB = 4.19 MB
Load Address: 0x00000000
Entry Point: 0x00000000
Started: Wed Dec 21 15:12:55 2016
Ended: Wed Dec 21 15:17:38 2016
Elapsed: 283 seconds
Build Succeeded
然后便可以开始了u-boot编译之路.这里使用版本是由之前项目的开发者提供的一个版本,这里也就不想了.他并没有提供相关的说明文档,所以均有个人搜索,尝试中完成。
编译
现在开始编译了,进入u-boot目录下,先尝试性的输入下make,不出意外是一个错误,看得出来这个是没找到编译工具的错误。打开Makefile文件。在Makefile中进行如下修改:
ifeq ($(ARCH),ppc)
CROSS_COMPILE = /opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-1/powerpc-e300c3-linux-gnu/bin/powerpc-e300c3-linux-gnu-
保存,然后输入以下指令
make MPC8315RDB_config
最终编译成功.最后输入如下:
/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-1/powerpc-e300c3-linux-gnu/bin/powerpc-e300c3-linux-gnu-objcopy -O srec u-boot u-boot.srec
/opt/freescale/usr/local/gcc-4.1.78-eglibc-2.5.78-1/powerpc-e300c3-linux-gnu/bin/powerpc-e300c3-linux-gnu-objcopy --gap-fill=0xff -O binary u-boot u-boot.bin
此篇编译文章结束。最后讲述一个小插曲,关于这个问题,有点心里不爽,过程不讲,就讲讲有点用的东西吧。
实际上在MPC P1010上的u-boot编译和 MPC8315的编译上,前面探路的工程师已经写相关的编译的“.SH”(shell脚本文件),提供编译的,但是呢?他就给我口头说这个是LTIB搞的,没有任何文档说明什么的,我按照我的配置并不能直接使用他的“.SH”文件。而我觉得实际上我之前的环境都配置好了,学习了部分shell的编程语言过后,了解到其实这部分操作没多少东西,直接将CORSS_COMPILE直接修改为相应的编译器就好了。为此挨了一通骂,你说骂就算了吧,还人身攻击。这都算了嘛,关键是他认为对的骂我的东西最后TM的是个错的。我真尼玛想不完,最后心里不服气,我自己非要验证下他的说法真假,最后验证了我心里想的东西过后我就舒坦了。
最后
有的朋友会遇到RPM版本太高的问题,可能是在8315E的2008版本的iso上,只需要卸载RPM,然后重装到RPM4.4版本就行了。这个2010版本的iso上我没有遇到该问题,完成编译时候就我的RPM版本是4.8。