u-boot-2012.04移植

发布时间:2016-12-10 14:50:20 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"u-boot-2012.04移植",主要涉及到u-boot-2012.04移植方面的内容,对于u-boot-2012.04移植感兴趣的同学可以参考一下。

u-boot-2012.04移植 开发平台:x86 redhat5.5 目标平台:SMDK6410   注意:     该文档是移植完成之后的总结,所以并非按照真正的移植步骤所写, 只做参考     修改完成后运行make进行编译,把编译生成的u-boot-nand.bin烧写到nand的0-0x40000后即可切换为nand启动方式来运行     在uboot启动后手动添加环境变量     [[email protected]]# set ipaddr 192.168.1.20     [[email protected]]# set serverip 192.168.1.254     [[email protected]]# set ethaddr 11:22:33:44:55:66     这些变量也可在smdk6400.h中以宏的方式定义     经测试,nand、tftp等命令都好用,如有问题请发邮箱:     [email protected]   以下为文件中修改的部分 一、修改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 "[[email protected]]# "    

上一篇:
下一篇:HDOJ 1564

相关文章

相关评论