说实话,我这板子是09年七月份买的,由于中间考研什么的,就放起来睡大觉了,最后没有考上研究生,就去工作了。但是工作上,没有用到arm9等高端的芯片,仅仅是stm32芯片,所以工作一年了,也没有怎么碰我的arm9的板子,最近从抽屉里发现了它,想了想,放着多可惜,就玩玩吧。最近觉得我应该多做一下arm9方面的东西,增加一下自己的经验。呵呵。
看着飞凌的板子资料,着实有些老了,呵呵 ,09年的嘛,特别是bootloader非主流,现在大家都在玩uboot,咱也试试吧,由于我的板子上没有uboot相关的资料,飞凌官方也下不了,只有自己做了。
我用的虚拟机是最新的7.1.4 build-385536版本的,用在很爽,redhat9,uboot是u-boot-2010.06.tar.bz2,编译器arm-linux-gcc-4.3.2.tgz。
1、首先在根目录新建一个文件夹board,在其中接着新建/samsung/OK2440IV/uboot。
2、把从网上下载下来的uboot文件(通过虚拟机共享文件夹方式)拷贝到uboot目录下解压
tar -xjvf u-boot-2010.06.tar.bz2
3、配置uboot
进入u-boot-2010.06/board/samsung/,新建目录OK2440,复制同目录下的smdk2410里面所有文件到OK2440
进入OK2440目录,把复制过来的smdk2410.c 改为 OK2440.c
在include/configs/目录下复制smdk2410.h副本一份,并改名为OK2440.h
修改board/samsung/OK2440目录下的Makefile文件
COBJS := OK2440.o flash.o
修改u-boot-2010.06根目录下的Makefile文件,指定交叉编译器,如果难找,大家可以通过查找的方式进行查找
CROSS_COMPILE ?= arm-linux-
然后接着修改本Makefile下的OK2440的编译选项,由于uboot没有默认支持2440,我们需要根据smdk2410的编译选项进行修改
复制smdk2410 编译选项
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
在smdk2410 编译选项下面进行粘贴并修改
OK2440_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t OK2440 samsung s3c24x0
*注意:编译选项的第二行要以Tab开头,否则编译会出错。
这样的话,就可以测试了
命令行进入u-boot-2010.06根目录
首先清理一下
#make clean
#make distclean
#make OK2440_config
#make all
接下来就是等待编译完成。
=============================================================================
不过我中间遇到一个问题,编译到最后出现了一下问题
lib_arm/libarm.a(_udivsi3.o):/u-boot-1.1.6/lib_arm/_udivsi3.S:17: first defined here
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivdi3.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivdi3.o)
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivsi3.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_udivsi3.o)
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_dvmd_lnx.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_dvmd_lnx.o)
arm-linux-ld: ERROR: Source object /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_clz.o) has EABI version 5, but target u-boot has EABI version 0
arm-linux-ld: failed to merge target specific data of file /usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/armv4t/libgcc.a(_clz.o)
最后是通过修改 u-boot-2010.06/arch/arm/cpu/arm920t/下的config.mk文件的最后两行才得以解决
PLATFORM_CPPFLAGS +=$(call cc-option,)
PLATFORM_RELFLAGS +=$(call cc-option,$(call cc-option,))
以上就是我今天开始做的工作,咱现是个菜鸟,所以有很多东西要做,接下来就是移植驱动,任务艰巨呀。