U-BOOT移植的经验之谈

发布者:快乐之源最新更新时间:2015-07-27 来源: 51hei关键字:U-BOOT移植  经验之谈 手机看文章 扫描二维码
随时随地手机看文章
也不知道U-BOOT移植到底是不是成功了,或者说是完全成功了。移植后的U-BOOT其他的一些功能,比如printenv,loadb,bdi,fli等命令和显示的信息都是正确的 也能加载uclinux,但就是加载不成功有些uclinux内核能加载进去,可是不能解压;有些根本就没有显示,连内核头的一些信息都没显示,像是死机了,哎,也不知道是哪的原因,还要慢慢搞~~~ 上次也写过一篇差不多的文章:http://www.51hei.com/mcu/1135.html,本文只是做为那个的补充吧~~~现在就总体的记录一下U-BOOT移植过程中自己做的工作吧。还是用代码的形式进行描述吧,即简单,又讲的清楚:

(说明:顶行写的为需要修改的文件名 空一个TAB键写的内容中行前没有标记的为原样抄的内容,做定位用的,行前加‘-’号的为要修改的内容,行前加‘+’号的为修改后的内容。所以实际上是按照patch文件的书写方式来做的修改,便宜理解,也能够说的更清楚点,省的多花文字来描述,写代码还是挺直接的)

board/44b0/44b0/44b0.c
     boot_params = 0x0c000100
board/44b0/44b0/config.mk
     TEXT_BASE = 0x0c300000
board/44b0/44b0/Makefile
     OBJS := 44b0.o flash.o
board/44b0/44b0/lowlevel_init.S
     Tcos = 11 = 0x3 (4clk)
     Tacc = 001 = 0x1 (2clk)
     Toch = 0 (0clk)
     Tcah = 0 (0clk)
     Trcd = 01 (2clk)
     Trp = 00 (2clk)
     Trc = 11 (7clk)
     MCLK = 40MHz
     refresh_count = 1424
     BWSCON_val = 0x11110090
     最后三个
     .word 0x16
     .word 0x20
     .word 0x20
board/44b0/common/flash.c
     把所有的#ifdef CONFIG_B2改成#ifdef CONFIG_44b0(板子名称)
cpu/s3c44b0/config.mk (gcc版本过低,编译时报错时:)
     -PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
     +PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=pacs-gnu))
cpu/s3c44b0/serial.c
     void serial_setbrg(void)
      {
       switch(gd->baudrate)
       case 115200:
        divisor = 21  ;Mclk = 40Mhz

    }
cpu/s3c44b0/start.S(vectors_base = 0x0c0000008)
     ldr r1,=LOCKTIME
     ldr r0,=2000
     str r0,[r1]
 
     ldr r1,=PLLCON
     ldr r0,=0x48032 ;Mclk=40Mhz
include/configs/44b0.h (cp B2.h)
     -#define CONFIG_B2
     +#define CONFIG_44b0
     -#define CONFIG_S3C44B0_CLOCK_SPEED 75
     +#define CONFIG_S3C44B0_CLOCK_SPEED 40
     -#define CONFIG_DRIVER_LAN91C96
     -#define CONFIG_LAN91C96_BASE 0x04000300
     +#define CONFIG_DRIVER_RTL8019
     +#define RTL8019_BASE 0x06000300
     -#define CONFIG_COMMANDS (CONFIG_CMD_DFL |
          CFG_CMD_DATE |
          CFG_CMD_ELF |
          CFG_CMD_EEPROM |
          CFG_CMD_I2C)
     +define CONFIG_COMMANDS ( CONFIG_CMD_DFL|CONFIG_CMD_DATE|CONFIG_CMD_NET|CONFIG_CMD_ENV|CONFIG_CMD_FLASH)
      注:如采用上述的|换行,可能有的编译的时候会报错,我的就会,所以采用单行书写
     -#define CONFIG_BOOTFILE "~~~`"
     +#define CONFIG_BOOTFILE "uclinux.bin"
     -#define CONFIG_BOOTCOMMAND "bootm 20000 f0000"
     +#define CONFIG_BOOTCOMMAND "bootm 50000"
     -#define CFG_MEMTEST_START 0x0c400000  //还不明白这个定义是什么意思
     -#define CFG_MEMTEST_END 0x0c800000  //如果删除的话,编译的时候会报错 

    +#define CFG_MEMTEST_START 0x0c000000及//所以还是留着吧,适当的定义一下

    +#define CFG_MEMTEST_END  0x0c100000  //也不知道会有什么影响
     -#define CFG_LOAD_ADDR  0x0c700000
     +#define CFG_LOAD_ADDR  0x0c008000
     -#define PHYS_SDRAM_1  0xc0000000
     -#define PHYS_SDRAM_1_SIZE 0x01000000
     -#define PHYS_FLASH_1  0x00000000
     -#define PHYS_FLASH_SIZE 0x00400000
     +#define PHYS_SDRAM_1  0x0c000000
     +#define PHYS_SDRAM_1_SIZE 0x00800000
     +#define PHYS_FLASH_1  0x00000000
     +#define PHYS_FLASH_SIZE 0x00200000
     -#define CFG_MAX_FLASH_SECT 256
     +#define CFG_MAX_FLASH_SECT 32
     -#define CFG_ENV_IS_IN_EEPROM 1
     -#define CFG_ENV_OFFSET  0x0
     +#define CFG_ENV_IS_IN_FLASH 
     +#undef  CFG_ENV_IS_NOWHERE
     +#define CFG_ENV_ADDR  (CFG_FLASH_BASE + 0x20000)
     +#define CFG_ENV_SECT_SIZE 0x10000
     +#define CFG_MONITOR_BASE PHYS_SDRAM_1 ;ENV IS NOT IN EEPROM /tools/envcrc.c
Makefile
     ifeq($(ARCH),arm)
     -CROSS_COMPILE = arm-linux-
     +CROSS_COMPILE = arm-elf-
     B2_config : unconfig
      @./mkconfig $(@:_config=) arm s3c44b0 B2 dave
     +44b0_config : unconfig
      #./mkconfig $(@:_config=) arm s3c44b0 44b0 44b0
lib_arm/board.c
     +#include 
     static int display_banner(void)
      {
        #endif 后加上一段代码:LED指示灯亮,蜂鸣器关
       PCONE |= (1<<10);   pe5=pcon(10:11)   
       PCONE &= ~(1<<11);
       PDATE &= ~(1<<5); ;beep=gpe5 
           //led0=pc1 led1=pc2 led2=pc3
       PCONC |= ((1<<2)|(1<<4)|(1<<6));  //pconc[1:2:3]=PCONC[765432]output=01
       PCONC &= ~((1<<3)|(1<<5)|(1<<7));
       PDATC |= (1<<1);  pdatc1=PDATC[1]=1 led0=light 
      }

按照这个修改后的U-BOOT大概功能是齐全的,也算是成功移植吧  至于到底是不是,还要继续验证了。

 另外,由于板子上网卡坏了,所以就没有去修改网卡相关的了。以后用到的话再说吧~~

关键字:U-BOOT移植  经验之谈 引用地址:U-BOOT移植的经验之谈

上一篇:stc电子表c51程序V2.0
下一篇:uclinux编译

推荐阅读最新更新时间:2024-03-16 14:26

U-Boot在S3C2410上的移植
引言 U-Boot是用于初始化目标板硬件,为嵌入式操作系统提供目标板硬件配置信息,完成嵌入式操作系统装载、引导和运行的固件程序。它能够将系统的软硬件紧密衔接在一起。S3C2410是三星公司的一款基于ARM920T核的嵌入式通用处理器。本文将详细介绍U-Boot在S3C2410开发板上的移植与运行。 U-BOOT简介 U-Boot支持ARM、 PowerPC等多种架构的处理器,也支持Linux、NetBSD和VxWorks等多种操作系统。它提供启动加载和下载两种工作模式。启动加载模式也称自主模式,一般是将存储在目标板Flash中的内核和文件系统的镜像装载到SDRAM中,整个过程无需用户的介入。在使用嵌入式产品时,一
[应用]
U-Boot移植(9)u-boot主要的数据结构
u-boot的主要功能是用于引导OS的,但是本身也提供许多强大的功能,可以通过输入命令行来完成许多操作。所以它本身也是一个很完备的系统。u-boot的大部分操作都是围绕它自身的数据结构,这些数据结构是通用的,但是不同的板子初始化这些数据就不一样了。所以u-boot的通用代码是依赖于这些重要的数据结构的。这里说的数据结构其实就是一些全局变量。  1)gd 全局数据变量指针,它保存了u-boot运行需要的全局数据,类型定义:  typedef struct global_data { bd_t *bd; //board data pointor板子数据指针 unsigned long flags;  /
[单片机]
【Linux 移植 】——2、移植 u-boot-2012.04.01指分析启动过程
一、移植 u-boot-2012.04.01指分析启动过程 a、获取源代码: 从 ftp://ftp.denx.de/pub/u-boot/ 下载u-boot-2012.04.01.tar.bz2,下载交叉编译链arm-linux-gcc-4.3.2.tar.bz2。 b、将 u-boot-2012.04.01.tar.bz2 解压到 PC 上,并建立 Source Insight 工程。 将 u-boot-2012.04.01.tar.bz2 放到 Ubuntu 上面 进行解压,同时安装 arm-linux-gcc-4.3.2.tar.bz2。 c、建好Source Insight 工程后添加相应
[单片机]
U-Boot在FL2440上移植(三)----支持NAND Flash
一 支持NAND Flash 1. 首先在配置文件 include/config/fl2440.h 的宏 CONFIG_COMMANDS 中增加 CFG_CMD_NAND, #define CONFIG_COMMANDS (CONFIG_CMD_DFL | CFG_CMD_CACHE | CFG_CMD_NAND | 2.在配置文件 include/configs/fl2440.h 中增加如下3个宏 #define CFG_NAND_BASE 0 //无实际意义:基地址,在board_nand_init中重新定义 #define CFG_MAX_NAND_DEVICE 1 //NAND Flash设备数目为1
[单片机]
推荐:资深工程师经验之谈关于电源设计问答十二题
  关于 电源 设计问题大家一定有很多想知道的事情,下面小编通过采访资深工程师了解到常见12个问题的解决方法,整理如下:与大家共享!    电源设计问题1:如何来评估一个系统的电源需求?   Answer:对于一个实际的电子系统,要认真的分析它的电源需求。不仅仅是关心输入电压,输出电压和电流,还要仔细考虑总的功耗,电源实现的效率,电源部分对负载变化的瞬态响应能力,关键器件对电源波动的容忍范围以及相应的允许的电源纹波,还有散热问题等等。功耗和效率是密切相关的,效率高了,在负载功耗相同的情况下总功耗就少,对于整个系统的功率预算就非常有利了,对比LDO和 开关电源 ,开关电源的效率要高一些。同时,评估效率不仅仅是看在满负载的时候电源电
[电源管理]
u-boot-2015.04 在tq2440上的移植(使用spl引导u-boot
本次移植跟以往的不同之处是采用了spl来引导u-boot,参考了博客 http://blog.csdn.net/fulinus/article/details/42738641 下载链接: http://pan.baidu.com/s/1bnlRKgn 使用方法: 1、 编译   make tq2440_defconfig   make 2、 然后会在u-boot根目录下生成u-boot.bin,在spl目录下会生成u-boot-spl.bin,目前的分区是: u-boot-spl.bin (1M) u-boot.bin (1M) kernel (3M) rootfs (剩余) 自己可以改动,在arc
[单片机]
at91sam9260 OpenWRT u-boot移植
1. 直接在make menuconfig中选择编译at91sam9260ek平台的u-boot,烧写到开发板后效果 **U-Boot 2010.06-dirty (Jun 28 2017 - 09:14:34) DRAM: 64 MiB NAND: 1024 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: macb0 macb0: Starting autonegotiation...** ==警告,u-boot环境变量校验失败,并且一段时间后启动重启(怀疑看门狗打开,但没
[单片机]
u-boot-2016.11移植到S3C2440之第一阶段修改(2)
1、u-boot-2016.11的第一个启动的文件为archarmlibvectors.S,系统上电时,产生复位异常,从vectors.S中的reset跳转到start.S (archarmcpuarm920t),在该文件中修改系统时钟代码,并添加上icache的启动代码加快启动速度(添加到屏蔽IRQ中断代码之后): /******************初始化系统时钟********************/ ldr r0,=0x4c000014 mov r1,#0x05 /*FCLK:HCLK:PCLK = 1:4:8 = 400M:100M:50M*/ str r1, mrc p15, 0
[单片机]
u-boot-2016.11<font color='red'>移植</font>到S3C2440之第一阶段修改(2)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

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

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

更多精选电路图
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved