移植官方uboot到GEC210开发板

本文档详述了如何将uboot成功移植到GEC210开发板的过程,包括设置交叉编译器、修改串口、电源管理、DMC内存控制、SDRAM配置、DM9000网卡等步骤,并解决了启动内核失败的问题。移植完成后,uboot能正常启动并运行内核。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过一周的努力成功移植uboot到GEC210开发板,过程遇到最大的问题是不能启动内核,反复查看文档、重新编译、不断度娘,最终参考51CTO作者:http://11674570.blog.51cto.com 的移植文章修改成功。以下仅为移植步骤及修改方法,不详细讲解其中的原理,望见谅。(原理可到http://11674570.blog.51cto.com 查看作者的文章)
移植步骤:
1、解压
tar jxvf android_uboot_smdkv210.tar.bz2
2、进入目录
cd u-boot-samsung-dev
3、设置交叉编译器(交叉编译工具需提前安装)
vi Makefile
在 147 行,使用 arm-2009q3 编译器:
143 ifeq ($(ARCH),arm)
144 #CROSS_COMPILE = arm-linux-
145 #CROSS_COMPILE = /usr/local/arm/4.4.1-eabi-cortex-a8/usr/bin/arm-linux-
146 #CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
147 CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-//确保交叉编译工具位置一样
148 endif
4、修改串口设置文件
vim include/configs/smdkv210single.h
将:
145 #define CONFIG_SERIAL3 1 /* we use UART1 on SMDKC110 */
修改为:
145 #define CONFIG_SERIAL1 1 /* we use UART1 on SMDKC110 */
5、注释掉电源管理芯片的初始化函数
vi board/samsung/smdkc110/lowlevel_init.S 
118         /* bl PMIC_InitIp */
6、添加定义DMC0_MEMCONTROL         地址
vim include/configs/smdkv210single.h
添加新行
408 #define DMC0_MEMCONTROL0x00202400
7、修改SDRAM的块数量及大小
vim include/configs/smdkv210single.h
469 #define CONFIG_NR_DRAM_BANKS     1          /* we have 1 bank of DRAM */  由2改为1
470 #define SDRAM_BANK_SIZE         0x20000000    /* 512 MB */
471 #define PHYS_SDRAM_1            MEMORY_BASE_ADDRESS /* SDRAM Bank #1 */
472 #define PHYS_SDRAM_1_SIZE       SDRAM_BANK_SIZE
473 //#define PHYS_SDRAM_2            (MEMORY_BASE_ADDRESS + SDRAM_BANK_SIZ    E) /* SDRAM Bank #2 */
474 //#define PHYS_SDRAM_2_SIZE       SDRAM_BANK_SIZE
//注释掉PHYS_SDRAM_2            PHYS_SDRAM_2_SIZE的定义
476 #define CFG_FLASH_BASE          0x80000000
8、修改DRAM部分初始化代码
vi cpu/s5pc11x/s5pc110/cpu_init.S
将122行ldr     r1, =0x00212400
改为
122         ldr     r1, = DMC0_MEMCONTROL    
9、修改DM9000网卡
vim include/configs/smdkv210single.h
修改为
133 #define CONFIG_DM9000_BASE              ( 0x88000000)
134 #define DM9000_IO                       (CONFIG_DM9000_BASE)
135 #if defined(DM9000_16BIT_DATA)
136 #define DM9000_DATA                     (CONFIG_DM9000_BASE+ 8)
137 #else
138 #define DM9000_DATA                     (CONFIG_DM9000_BASE+1)
vi board/samsung/smdkc110/smdkc110.c
static void dm9000_pre_init(void)
 66 {
 67         unsigned int tmp;
 68 
 69 #if defined(DM9000_16BIT_DATA)
 70         SROM_BW_REG &= ~(0xf << 4);
 71         SROM_BW_REG |= (1<<4);
 73 #else
 74         SROM_BW_REG &= ~(0xf << 20);
 75         SROM_BW_REG |= (0<<19) | (0<<18) | (0<<16);
 76 #endif
 77         SROM_BC1_REG = ((0<<28)|(1<<24)|(5<<16)|(1<<12)|(4<<8)|(6<<4)|(    0<<0));
 78 
 79         tmp = MP01CON_REG;
 80         tmp &= ~(0xf<<4);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值