embsky的ChinaUnix博客
embsky
全部博文(8)
2014年(8)
Bsolar
fmcufmcu
pxbbr
IPMC_hd
jinjinha
LHshoote
adustdu2
小人物粪
zhtcat20
分类: 嵌入式
2014-02-28 23:25:00
该文档是移植完成之后的总结,所以并非按照真正的移植步骤所写, 只做参考 修改完成后运行make进行编译,把编译生成的u-boot-nand.bin烧写到nand的0-0x40000后即可切换为nand启动方式来运行 在uboot启动后手动添加环境变量 [zhangsan@nand]# set ipaddr 192.168.1.20 [zhangsan@nand]# set serverip 192.168.1.254 [zhangsan@nand]# set ethaddr 11:22:33:44:55:66 这些变量也可在smdk6400.h中以宏的方式定义 经测试,nand、tftp等命令都好用,如有问题请发邮箱: lizhiyong_beyond@163.com
一、修改u-boot-2012.04/arch/arm/cpu/arm1176/start.S 在132行添加如下,目的是找到命令段 132 .global uboot_cmd_start 133 uboot_cmd_start: 134 .word __u_boot_cmd_start - _start 135 .global uboot_cmd_end 136 uboot_cmd_end: 137 .word __u_boot_cmd_end - _start 注释掉386行,如下 @add lr, lr, r9 二、修改u-boot-2012.04/arch/arm/lib/board.c 在373到375行之间添加如下 372 addr -= gd->mon_len; 373 //myself 374 addr = 0x57e00000; 375 //myself 376 addr &= ~(4096 - 1); 把530到532行修改如下,因为该开发板没有NOR 530 puts("0K"); 531 //puts(failed); 532 //hang(); 三、修改u-boot-2012.04/arch/arm/lib/eabi_compat.c 注释掉第17行如下,该问题以后再解决 14int raise (int signum) 15 { 16 #if !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_ LIBCOMMON_SUPPORT) 17 // printf("raise: Signal # %d caught\n", signum) ; 18 #endif 19 return 0; 20 } 四、修改u-boot-2012.04/board/samsung/smdk6400/lowlevel_init.S 把第54到63行删除 在第54行到66行添加如下 这段代码的目的在于测试程序是否能执行到此,如果能则开发板的四个led都亮 55 ldr r0, =0x7f008820 56 ldr r1, [r0] 57 ldr r2, =0xffff 58 bic r1, r1, r2 59 orr r1, r1, #0x11 60 orr r1, r1, #0x1100 61 str r1, [r0] 62 /* LED ALL ON */ 63 ldr r1, =0x7f008824 64 ldr r2, [r1] 65 bic r2, r2, #0xf 66 str r1, [r2] 五、修改u-boot-2012.04/board/samsung/smdk6400/smdk6400.c 把board_eth_init函数修改如下,目的在于把DM9000网卡替换CS8900网卡 126 int board_eth_init(bd_t *bis) 127 { 128 int rc = 0; 129 #ifdef CONFIG_DM9000 130 rc = dm9000_initialize(bis); 131 #endif 132 #ifdef CONFIG_CS8900 133 rc = cs8900_initialize(0, CONFIG_CS8900_BASE) ; 134 #endif 135 return rc; 136 } 六、修改u-boot-2012.04/board/samsung/smdk6400/smdk6400_nand_spl.c 把board_init_f函数修改如下 33 void board_init_f(unsigned long bootflag) 34 { 35 // relocate_code(CONFIG_SYS_TEXT_BASE - TOTAL_MA LLOC_LEN, NULL, 36 // CONFIG_SYS_TEXT_BASE); 37 relocate_code(0x2000, NULL, CONFIG_SYS_TEXT_B ASE); 38 } 七、修改u-boot-2012.04/common/command.c 修改find_cmd函数如下,目的在于寻找命令段 138 cmd_tbl_t *find_cmd (const char *cmd) 139 { 140 int start, end; 141 int text_start; 142 // int len = &__u_boot_cmd_end - &__u_boot_cmd_start; 143 __asm__ __volatile__( 144 "ldr r0, =uboot_cmd_start\n" 145 "ldr %0, [r0]\n" 146 "ldr r0, =uboot_cmd_end\n" 147 "ldr %1, [r0]\n" 148 "ldr %2, =_start\n" 149 :"=&r"(start), "=&r"(end), "=&r"(text_start) 150 : 151 :"r0" 152 ); 153 return find_cmd_tbl(cmd, start + text_start, (end - start) / sizeof(cmd_tbl_t)); 154 // return find_cmd_tbl(cmd, &__u_boot_cmd_start, len); 155 } 八、修改u-boot-2012.04/include/configs/smdk6400.h 把81到83行注释掉,目的是取消CS8900网卡 添加85到90行如下,目的是添加DM9000网卡支持 81 //#define CONFIG_CS8900 /* we have a CS8900 on-board */ 82 //#define CONFIG_CS8900_BASE 0x18800300 83 //#define CONFIG_CS8900_BUS16 /* follow the Linux driver */ 84 85 #define CONFIG_DM9000 86 #define CONFIG_DRIVER_DM9000 87 #define CONFIG_DM9000_BASE 0X18000000 88 #define DM9000_IO CONFIG_DM9000_BASE 89 #define DM9000_DATA (CONFIG_DM9000_BASE + 4) 90 #define CONFIG_DM9000_BUS16 在114行到117行添加如下,目的在于打开网络支持和ping命令 114 //mysefl 115 #define CONFIG_CMD_NET 116 #define CONFIG_CMD_PING 117 //myself 把164行修改如下,目的在于修改uboot的shell名字 164 #define CONFIG_SYS_PROMPT "[zhangsan@nand]# "
上一篇:为linux内核添加新的系统调用
下一篇:没有了
登录 注册