s3c44b0移植uboot

最近uclinux的应用程序基本完成,闲来无事,准备玩玩底层驱动,就先从uboot开始:

移植之前确保系统中安装好arm-elf-gcc。

1.在官网上下载最新的uboot源码,u-boot-1.3.4.tar.bz2

2.解压u-boot-1.3.4.tar.bz2

3.首先在Board下建立自己的开发板类型,名字为vd44b0;在uboot里找到Board文件夹,将dave文件夹里的b2文件夹拷贝到vd44b0文件里,改名为vd44b0。把dave文件夹下的common文件夹放到vd44b0里。

将文件夹和相关的文件内的B2替换成vd44b0;

4.修改lowlevel_init.S,直接替换成一下内容

/* Bank 0 parameter */ .equ    B0_Tacs,      0x3 /* 0clk */ .equ    B0_Tcos,      0x3 /* 0clk */ .equ    B0_Tacc,      0x7 /* 14clk */ .equ    B0_Tcoh,      0x3 /* 0clk */ .equ    B0_Tah,       0x3 /* 0clk */ .equ    B0_Tacp,      0x1 /* 0clk */ .equ    B0_PMC,       0x0 /* normal(1data) */ /* Bank 1 parameter */ .equ    B1_Tacs,      0x0 /* 4clk */ .equ    B1_Tcos,      0x1 /* 4clk */ .equ    B1_Tacc,      0x2 /* 14clkv */ .equ    B1_Tcoh,      0x1 /* 4clk */ .equ    B1_Tah,       0x0 /* 4clk */ .equ    B1_Tacp,      0x0 /* 6clk */ .equ    B1_PMC,       0x0 /* normal(1data) */ /* Bank 2 parameter - */ .equ    B2_Tacs,      0x0 /* 4clk */ .equ    B2_Tcos,      0x2 /* 4clk */ .equ    B2_Tacc,      0x4 /* 14clk */ .equ    B2_Tcoh,      0x2 /* 4clk */ .equ    B2_Tah,       0x3 /* 4clk */ .equ    B2_Tacp,      0x3 /* 6clk */ .equ    B2_PMC,       0x0 /* normal(1data) */ /* Bank 3 parameter */ .equ    B3_Tacs,      0x3 /* 4clk */ .equ    B3_Tcos,      0x3 /* 4clk */ .equ    B3_Tacc,      0x7 /* 14clk */ .equ    B3_Tcoh,      0x3 /* 4clk */ .equ    B3_Tah,       0x3 /* 4clk */ .equ    B3_Tacp,      0x3 /* 6clk */ .equ    B3_PMC,       0x0 /* normal(1data) */ /* Bank 4 parameter */ .equ    B4_Tacs,      0x3 /* 4clk */ .equ    B4_Tcos,      0x3 /* 4clk */ .equ    B4_Tacc,      0x7 /* 14clk */ .equ    B4_Tcoh,      0x3 /* 4clk */ .equ    B4_Tah,       0x3 /* 4clk */ .equ    B4_Tacp,      0x3 /* 6clk */ .equ    B4_PMC,       0x0 /* normal(1data) */ /* Bank 5 parameter */ .equ    B5_Tacs,      0x0 /* 4clk */ .equ    B5_Tcos,      0x1 /* 4clk */ .equ    B5_Tacc,      0x4 /* 14clk */ .equ    B5_Tcoh,      0x1 /* 4clk */ .equ    B5_Tah,       0x0 /* 4clk */ .equ    B5_Tacp,      0x0 /* 6clk */ .equ    B5_PMC,       0x0 /* normal(1data) */ /* Bank 6(if SROM) parameter */ .equ    B6_Tacs,      0x3 /* 4clk */ .equ    B6_Tcos,      0x3 /* 4clk */ .equ    B6_Tacc,      0x7 /* 14clk */ .equ    B6_Tcoh,      0x3 /* 4clk */ .equ    B6_Tah,       0x3 /* 4clk */ .equ    B6_Tacp,      0x3 /* 6clk */ .equ    B6_PMC,       0x0 /* normal(1data) */ /* Bank 7(if SROM) parameter */ .equ    B7_Tacs,      0x3 /* 4clk */ .equ    B7_Tcos,      0x3 /* 4clk */ .equ    B7_Tacc,      0x7 /* 14clk */ .equ    B7_Tcoh,      0x3 /* 4clk */ .equ    B7_Tah,       0x3 /* 4clk */ .equ    B7_Tacp,      0x3 /* 6clk */ .equ    B7_PMC,       0x0 /* normal(1data) */ /* Bank 6 parameter */ .equ    B6_MT,        0x3 /* SDRAM */ .equ    B6_Trcd,      0x1 /* 2clk */ .equ    B6_SCAN,      0x0 /* 8bit */ .equ    B7_MT,        0x3 /* SDRAM */ .equ    B7_Trcd,      0x1 /* 2clk */ .equ    B7_SCAN,      0x0 /* 8bit */

/* REFRESH parameter */ .equ    REFEN,        0x1 /* Refresh enable */ .equ    TREFMD,       0x0 /* CBR(CAS before RAS)/Auto refresh */ .equ    Trp,        0x0 /* 2clk */ .equ    Trc,        0x3 /* 0x1=5clk 0x3=11clk*/ .equ    Tchr,       0x0 /* 0x2=3clk 0x0=0clks */ .equ    REFCNT,       1550 MEMORY_CONFIG: .long   0x01001102 /* Bank0 = OM[1:0] , Bank1-7 16bit, Bank2=Nowait,UB/LB*/ .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC)) /*GCS0*/ .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC)) /*GCS1*/ .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC)) /*GCS2*/ .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC)) /*GCS3*/ .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC)) /*GCS4*/ .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC)) /*GCS5*/ .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) /*GCS6*/ .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) /*GCS7*/ .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT) /*REFRESH RFEN=1, TREFMD=0, trp=3clk, trc=5clk, tchr=3clk,count=1019*/ .word 0x10      /*SCLK power down mode, BANKSIZE 16M/16M*/ .word 0x20      /*MRSR6 CL=2clk*/ .word 0x20      /*MRSR7*/

.globl lowlevel_init lowlevel_init: /* the next instruction fail due memory relocation... we'll find the right MEMORY_CONFIG address with the next 3 lines... */ adr r0, MEMORY_CONFIG ldmia r0, {r1-r13} ldr   r0, =0x01c80000 stmia r0, {r1-r13} mov pc, lr

  

 

5.修改主目录下的makefile:

编译工具:arm-linux-gcc改成arm-elf-gcc

在S3C44B0 Systems中按照B2的格式添加(具体格式的定义 自己去百度)

vd44b0_config : unconfig  @./mkconfig $(@:_config=) arm s3c44b0 vd44b0 vd44b0

6.在include/configs的文件夹下建立自己板子的头文件vd44b0.h  拷贝B2.h的内容进去

修改时钟频率:#define CONFIG_S3C44B0_CLOCK_SPEED 60 /* we have a 60Mhz S3C44B0*/

其他的ram flash配置(大小,起始地址等) 自己照着自己的硬件改

7.在cpu/star44b0文件夹下找到start.s 与serial.c,修改与频率设置相关的设置。

8.其他暂时不管,先编译一下; make vd44b0_ config      make  然后就是waiting。。。出错了:

arm-elf-gcc -g  -Os   -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float  -D__KERNEL__ -DTEXT_BASE=0x0C100000 -I/home/li/uboot/u-boot-1.1.4/include -fno-builtin -ffreestanding -nostdinc -isystem /usr/local/lib/gcc-lib/arm-elf/2.95.3/include -pipe  -DCONFIG_ARM -D__ARM__ -march=armv4 -mtune=arm7tdmi -msoft-float -mabi=apcs-gnu -Uarm -Wall -Wstrict-prototypes -c -o hello_world.o hello_world.c cc1: Invalid option `abi=apcs-gnu' make[1]: *** [hello_world.o] 错误 1 make[1]: 离开目录“/home/li/uboot/u-boot-1.1.4/examples” make: *** [examples] 错误 2 解决办法: 修改 cpu\s3c44b0\config.mk 文件, 替换 PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)   为     PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option, -mabi=apcs-gnu))

9.继续make 又出错了

arm-elf-gcc:start.o:????????

arm-elf-gcc:unrecognized option '-MQ'

arm-elf-gcc:cpu.o:????????

arm-elf-gcc:unrecognized option '-MQ'

arm-elf-gcc:interrupts.o:????????

arm-elf-gcc:unrecognized option '-MQ'

发现原来是 编译器版本太低。换句话也可以说是uboot太新。郁闷

最后只有重新下载了1.1.4的版本,就OK了。

只是大概的记录了下,若有不对之处,敬请谅解。也可留言,一起探讨。。。。

posted @ 2017-03-03 09:44  倾月轩萱  阅读(326)  评论(0编辑  收藏  举报