zoukankan      html  css  js  c++  java
  • uboot2012.04移植

    开发平台:x86 redhat5.5
    目标平台:SMDK6410

    注意:

        该文档是移植完成之后的总结,所以并非按照真正的移植步骤所写, 只做参考
        修改完成后运行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]# "

  • 相关阅读:
    git的最常用命令总结
    java 多线程 sleep 和wait
    java 多线程 线程的状态和操作系统中进程状态的对应关系
    IDEA的最常见快捷键
    设计模式 单例模式的几种实现方式
    spring boot 项目部署到服务器上出现的问题
    算法与数据结构 (八) HashMap源码
    算法与数据结构 (七) 查找 数组的优化方向: 二分查找和哈希查找,
    算法与数据结构 (六) 排序 三 非比较类的排序 基数排序
    Native Crash定位方法
  • 原文地址:https://www.cnblogs.com/cainiaoaixuexi/p/3021426.html
Copyright © 2011-2022 走看看