uboot for zaurus的编译

简介: uboot for zaurus的编译skykiker2009/5/28  高版本pdaxrom(比如r198)使用uboot进行引导。本文介绍一下这个用在zaurus上的pdaxrom修订版的uboot的编译过程。
uboot for zaurus的编译
skykiker
2009/5/28

  高版本pdaxrom(比如r198)使用uboot进行引导。本文介绍一下这个用在zaurus上的pdaxrom修订版的uboot的编译过程。

1)建立交叉编译环境
  本文是在Windows上建立的交叉编译环境。以下就以Windows为例说明。Linux平台的配置方法也是大同小异。

1.1) 安装cygwin
  cygwin的安装路径中最好不要有空格。cygwin中至少安装以下工具
gcc
patch
make
binutils

1.2) 安装ARM-GCC交叉编译器
  安装ARM-GCC交叉编译器,比如:bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.exe。
注意安装路径中不能有空格,否则后面编译uboot时可能会报下面的错误。
 stdarg.h: No such file or directory
  安装过程中,安装程序会提示是否安装cygwin DLL。切记不要安装,否则会和之前安装的cygwin冲突。

2)下载zaurus用的uboot的源码

http://ftp.nluug.nl/ftp/pub/os/Linux/distr/pdaxrom/src/u-boot-2006-04-18-1106.tar.bz2
http://ftp.nluug.nl/ftp/pub/os/Linux/distr/pdaxrom/download/u-boot/u-boot-2006-04-18-1106.diff.bz2

下载后在当前目录解压上面2个压缩包,并在原始版uboot的基础上打上补丁。使用下面的命令

patch -p0
3)修改几个必要的文件

3.1) 设置交叉编译程序
u-boot-2006-04-18-1106/Makefile:
ifeq ($(ARCH),arm)
CROSS_COMPILE = armv5tel-linux-
endif
==>
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-elf-
endif

3.2)回避一处编译错误
u-boot-2006-04-18-1106/examples/Makefile:
all:    .depend $(OBJS) $(LIB) $(SREC) $(BIN)
==>
all:    .depend $(OBJS) $(LIB) hello_world $(SREC) $(BIN)

上面的修改是为了回避后面编译时可能发生的下面的错误。
make -C examples all
make[1]: Entering directory `/cygdrive/e/fromx24/chj/microLinux/zaurus/u-boot-20
06-04-18-1106/examples'
arm-elf-ar crv libstubs.a  stubs.o
r - stubs.o
make[1]: *** No rule to make target `hello_world.srec', needed by `all'.  Stop.
make[1]: Leaving directory `/cygdrive/e/fromx24/chj/microLinux/zaurus/u-boot-200
6-04-18-1106/examples'
make: *** [examples] Error 2

可能是这个Makefile使用了我安装的make程序不支持的特性,其它环境中不一定发生。不过改了也不会有什么坏处。

4)编译
cd u-boot-2006-04-18-1106
make akita_config
make all

5)将uboot导入到eclipse集成开发环境
  前面是在命令行下编译的,下面介绍将其导入到eclipse中的步骤。

5.1)安装eclipse+CDT插件
  这个应该不用多讲的啦。

5.2)导入uboot项目
  在前面的u-boot-2006-04-18-1106目录下建一个eclipse的C项目。然后对项目属性做一些修改。具体如下:

C/C++ Build->Builder settings
  取消自动生成Makefile的选项(Generate Makefiles automatically)

C/C++ Build->Environment
  把PWD环境变量(如果有的话)的值设置为空,接着试着编译一下,应该没什么问题了。

  将PWD属性设置为空的原因是eclipse设置的PWD中带有冒号(比如C:/xxxx),而Makefile会使用PWD环境变量,如果PWD环境变量不为空的话。

TOPDIR    := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)

结果会导致后面183行出项2个以上冒号(还有一个冒号在变量LDSCRIPT中)。
u-boot:        depend version $(SUBDIRS) $(OBJS) $(LIBS) $(LDSCRIPT)

于是编译时会出现下面的错误。
make all
Makefile:183: *** multiple target patterns.  Stop.

相关文章
|
8月前
|
Linux 芯片 Windows
嵌入式Linux系列第3篇:uboot编译下载
嵌入式Linux系列第3篇:uboot编译下载
|
11月前
|
安全 Linux 编译器
【Linux编译器gcc/g++】带你了解代码是如何变成可执行程序的!
【Linux编译器gcc/g++】带你了解代码是如何变成可执行程序的!
|
C语言 内存技术
PowerPC下uboot命令
PowerPC下uboot命令
94 0
|
存储 Linux 内存技术
uboot环境变量和硬件驱动
uboot环境变量和硬件驱动
383 0
|
机器学习/深度学习 SoC 内存技术
|
测试技术 Linux 芯片
uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试
      今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行。这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟4412是一样的架构了,今天将uboot加载流程基本上算是搞明白了,也明白了uboot最后是通过一些手段,最终能够去加载kernel.img,最终启动内核,后面就是加载文件系统了。
1424 0
|
开发工具
编译Valgrind arm交叉编译
1. 下载源码: http://valgrind.org/downloads/valgrind-3.9.0.tar.bz2   2. 加压缩: mkdir sw cd sw tar zxf valgrind-3.
1321 0