u-boot-2012.04移植

发布者:梦想启航最新更新时间:2024-07-26 来源: cnblogs关键字:u-boot  移植  环境变量 手机看文章 扫描二维码
随时随地手机看文章

开发平台: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 caughtn', 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_startn'
    145                 'ldr %0, [r0]n'
    146                 'ldr r0, =uboot_cmd_endn'
    147                 'ldr %1, [r0]n'
    148                 'ldr %2, =_startn'
    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]# '


关键字:u-boot  移植  环境变量 引用地址:u-boot-2012.04移植

上一篇:在linux环境下搭建嵌入式开发平台
下一篇:linux2.6.32 内核移植s3c2440 - DM9000网卡驱动移植

推荐阅读最新更新时间:2024-11-12 19:43

将一款单片机程序移植到另一款单片机
引言 在一些特殊情况下,如成品需要降本,原来的芯片买不到货,需要将已经做好的产品应用程序有一款单片机移植到另一款单片机。本系列文章列出从现有的 STM32F1 器件移植到 STM32F0 器件所需的步骤,旨在帮助开发工程师节省更多开发时间。 3.7 GPIO 接口 与 F1 系列相比, STM32F0 GPIO 外设内置了多个新特性,主要包括: GPIO 映射到 AHB 总线上,可以获得更佳的性能。 I/O 引脚复用器和映射:引脚通过多路复用器连接到片上外设 / 模块,该复用器一次只允许一个外设复用功能 (AF) 连接到 I/O 引脚。这样便可确保共用同一个 I/O 引脚的外设之间不会发生冲突。 I/O 配置的方式和特性更加丰
[单片机]
将一款单片机程序<font color='red'>移植</font>到另一款单片机
TQ2440移植u-boot-2010.06-rc1---6usb下载
以前做过usb下载的东东,现在把它搞到u-boot-2010.06-rc1上去. 网上有usb下载的代码,可以在这儿下载: http://blogimg.chinaunix.net/blog/upfile2/100109001526.bz2 一. 先编译过再说 1.下载后,解压到u-boot-2010.06-rc1/drivers/usb/slave目录 并在顶层Makefile中添加: LIBS += drivers/usb/slave/libusb_slave.a 2. 将driver/usb/slave/目录下所有C文件所个替换 a. #if defined(CONFIG_S3C2400) #include s
[单片机]
LPC1788 emWin应用笔记
前不久照着ZLG的范例移植了emWin到LPC1788开发板,过程比较顺利,也感受到了emWin的强大,目前继续深入学习中。先整理个移植笔记吧。 NXP提供的emWin资源链接:http://www.lpcware.com/zh-hans/content/project/emwin-graphics-library 移植需要修改的地方见下图: 具体修改方法如下: 1.Global.h中 修改U8,U16等数据类型的宏定义。(注:在跨硬件平台的系统/软件包常使用这种方式定义数据类型,以便于移植) 2. LCDConf.c中: (1)修改液晶屏尺寸的宏定义。有物理尺寸(XSIZE_PHYS,YSIZE_PHYS),
[单片机]
μCOS-II移植到ARM处理器上的几个要点
  uCOS II是一个源码公开、可移植、可固化、可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写。总量约200行的汇编语言部分被压缩到最低限度,以便于移植到任何一种其它的CPU上。   uCOS II最多可支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore(信号量)、Mailbox (邮箱)、MessageQueue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,uCOS II公开所有的源代码。并可以免费获得,只对商业应用收取少量License费用。   uCOS II移植跟OS_CUP_C.C、OS_CPU_
[单片机]
【嵌入式】从零开始移植U-boot到mini2440(二)——烧录篇
烧录 相关工具:j-link 软件:j-flash ARM V4.70 在编译成功之后,会生成u-boot.bin在output目录下,这个二进制文件就可以直接用于烧录。 烧录位置的确定方法 烧录的时候,我这里选择直接烧写在NOR中,看S3C2440的SPEC和开发板的原理图(找NOR的CE接口和S3C2440哪个引脚相连),当我们选择从NOR启动的时候,NOR Flash被映射到内存0x0000_0000 ~ 0x0800_0000,也就是说我们直接把bin文件烧录到0地址即可。 这里有一篇写的蛮好的blog,解释了ARM是如何通过NOR和NAND启动的。 https://www.cnblogs.com/aaron
[单片机]
【嵌入式】从零开始<font color='red'>移植</font><font color='red'>U-boot</font>到mini2440(二)——烧录篇
STM32移植lwip之建立tcp客户端
本篇目标:在之前能ping通pc机的工程基础上搭建tcp客户端,并可以主动发数据给pc机,同时也能与pc机收发数据,并在网络调试工具上显示 材料准备: 基础工程:修改后能ping通pc机的工程(STM32官方移植lwip修改代码) 调试工具:用来调试tcp连接下的数据接收(网络调试助手) 搭建工程:最终搭建好tcp客户端数据接收的工程(tcp客户端建立工程) 搭建TCP客户端 搭建TCP客户端的过程与上一章TCP服务器也相似,所以尽量把重点的地方加粗显示来区别 在搭建TCP客户端之前可以先理一下概念,客户端与服务器的区别: 客户端:主动建立tcp去连接目标IP 服务器:拥有静态IP,能让其他设备被动连接 因此用STM
[单片机]
STM32<font color='red'>移植</font>lwip之建立tcp客户端
php5.4.5移植到arm-linux摘要,lighttpd配置
php5.4.5移植到arm-linux摘要. 因为有嵌入WEB服务的需求,再常识了N多的开源的嵌入服务后最终选择了lighttpd.Apache太大支了,而且在arm上对swf的支持不好. 其他的都不怎么理想. lighttpd的移植过程就省略了。这里只摘要了PHP移植,采用fastcgi与lighttpd 协作. php版本:php5.4.5 交叉编译设置参数: ./configure --enable-fastcgi --enable-force-cgi-redirect --enable-discard-path --disable-cli --without-iconv --enable-mbstring
[单片机]
opencv在arm和x86移植
一个、开发环境 操作系统:fedora14 Opencv版本号:2.0 Qt版本号:4.7 arm:mini6410 交叉编译工具:arm-linux-gcc-4.5.1 二、安装与配置 Linux系统的安装,交叉Qt-creator的安装还有交叉编译工具的安装,网上说的基本都没什么问题,測试后都能够用。 这里安装Qt-Creator遇到了一点小问题,依照网上的和mini6410开发手冊上的安装方法太复杂了。用QtSdk-offline-linux-x86-v1.2.1.run安装方便又准确。 这篇文章重点还是将怎样安装Opencv到linux下,而且配置Opencv到QT中。并实如今x86和arm平台上可以顺利执行qt+Op
[单片机]
opencv在arm和x86<font color='red'>移植</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved