TQ2440移植u-boot-2010.06-rc1---2搭建框架

发布者:chaochen最新更新时间:2018-04-15 来源: eefocus关键字:TQ2440  移植u-boot  搭建框架 手机看文章 扫描二维码
随时随地手机看文章

一. 准备工作

1. 软硬件

主  机:VMWare--ubuntu 10.10

开发板:TQ2440--128MB Nand, Kernel:3.4.0

编译器:EABI-4.3.3_EmbedSky_20091210.tar.bz2

u-boot:u-boot-2012.07.tar.bz2

2. 工具链,解压EABI-4.3.3_EmbedSky_20091210.tar.bz2到/opt目录

root@ubuntu:~/uboot# ls /opt/EmbedSky/

4.3.3/         crosstools_3.4.5_softfloat/ 

3. 这次移植是以smdk2410为模版,所以首先要删除多余的目录

//a. 删除arch下除arm以外的所有目录

root@ubuntu:~/uboot/u-boot-2012.07/arch# find . -maxdepth 1 -type d | grep -v arm | xargs rm -rf

//b. arm/cpu下除arm920t以外的所有目录

root@ubuntu:~/uboot/u-boot-2012.07/arch/arm/cpu# find . -maxdepth 1 -type d | grep -v arm920t  |xargs rm -rf

//c. arch/arm/cpu/arm920t 录下除s3c24x0以外的所有目录

root@ubuntu:~/uboot/u-boot-2012.07/arch/arm/cpu/arm920t# find . -maxdepth 1 -type d | grep -v s3c24x0  | xargs rm -rf 

//d. arch/arm/include/asm下除arch-s3c24x0以外的所有arch-xxxx, proc目录不能删

root@ubuntu:~/uboot/u-boot-2012.07/include/asm# find . -maxdepth 1 -type d | grep -v arch-s3c24x0 | grep -v proc  | xargs rm -rf 

//e. 删除include/configs目录下除smdk2410.h文件以外的所有头文件 

root@ubuntu:~/uboot/u-boot-2012.07/include/configs# ls | grep -v  smdk2410.h  | xargs rm -rf 

//f. 去掉board下多余的目录

root@ubuntu:~/uboot/u-boot-2012.07/board# find . -maxdepth 1 -type d | grep -v  samsung  | xargs rm -rf

root@ubuntu:~/uboot/u-boot-2012.07/board/samsung# find . -maxdepth 1 -type d | grep -v  smdk2410  | xargs rm -rf

4. 生成内存可运行的u-boot

a. 修改Makefile

  1.  156 ifeq ($(HOSTARCH),$(ARCH))

  2.  157 CROSS_COMPILE ?=

  3.  158 endif

  4.  159 

  5.  160 CROSS_COMPILE ?= /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-

b. 修改链接地址 board/samsung/smdk2410/config.mk 

  1.  #烧到板子上TEXT_BASE=0x33d80000

  2.  25 TEXT_BASE = 0x33d80000

  3.  #仿真器调试TEXT_BASE=0x33000000

  4.  26 #TEXT_BASE = 0x33000000

  5. #为什么要选这个呢? 因其只要在内存中就可以了,但是因为TQ2440有一个选项

  6. [7] Download Program (uCOS-II or TQ2440_Test) to SDRAM and Run it

  7. 写到内存的0x33000000并运行,这样编出u-boot.bin后,直接写到内存就可以运行了,非常方便.

c.编译,直接用smdk2410的,比较省事

  1. make smdk2410_config

  2. make

二. 可以从nand_flash启动的u-boot

2.1 初始化内存

修改board/samsung/smdk2410/lowlevel_init.S

L54 #define B1_BWSCON   (DW32) >  #define B1_BWSCON    (DW16)

L58 #define B5_BWSCON   (DW16) >  #define B5_BWSCON    (DW8)

L126 #define REFCNT   1113    >   #define REFCNT       0x4F4

2.2 初始化clock_controler ,并将u-boot代码复制到TEXT_BASE处

修改 arch/arm/cpu/arm920t/start.S

/*注掉这一段*/

#if 0

/* FCLK:HCLK:PCLK = 1:2:4 */

/* default FCLK is 120 MHz ! */

ldr r0, =CLKDIVN

mov r1, #3

str r1, [r0]

#endif

#endif /* CONFIG_S3C24X0 */

/*

 * we do sys-critical inits only at reboot,

 * not when booting from ram!

 */

#ifndef CONFIG_SKIP_LOWLEVEL_INIT

#if 1

bl cpu_init_crit

#endif

#endif

/*把栈初始化提前,因为下面要调用C函数*/

    /* Set up the stack  */

stack_setup:

ldr r0, _TEXT_BASE /* upper 128 KiB: relocated uboot */

sub r0, r0, #CONFIG_SYS_MALLOC_LEN /* malloc area */

sub r0, r0, #CONFIG_SYS_GBL_DATA_SIZE /* bdinfo  */

#ifdef CONFIG_USE_IRQ

sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)

#endif

sub sp, r0, #12  /* leave 3 words for abort-stack */

bl clock_init /*调用clock_init,初始化clock*/

    bl my_nand_init    /*调用my_nand_init,进行nand flash初始化*/

#ifndef CONFIG_SKIP_RELOCATE_UBOOT

relocate: /* relocate U-Boot to RAM     */

adr r0, _start /* r0 <- current position of code   */

ldr r1, _TEXT_BASE /* test if we run from flash or RAM */

cmp r0, r1 /* don't reloc during debug         */

beq clear_bss

ldr r2, _armboot_start

ldr r3, _bss_start

sub r2, r3, r2 /* r2 <- size of armboot            */

#if 1

bl my_nand_read_page  /*调用my_nand_read_page,将u-boot从nand复制到TEXT_BASE处*/  

#else

add r2, r0, r2 /* r2 <- source end address         */

copy_loop:

ldmia r0!, {r3-r10} /* copy from source address [r0]    */

stmia r1!, {r3-r10} /* copy to   target address [r1]    */

cmp r0, r2 /* until source end addreee [r2]    */

ble copy_loop

#endif

#endif /* CONFIG_SKIP_RELOCATE_UBOOT */

2.3 

a. 在board/samsung/smdk2410目录下建文件boot_init.c,完成初始化clock_controler ,并将u-boot代码复制到TEXT_BASE处的实际操作

b. 在arch/arm/include/asm/arch-s3c24x0/s3c24x0.h中

struct s3c24x0_clock_power {

u32 LOCKTIME;

u32 MPLLCON;

u32 UPLLCON;

u32 CLKCON;

u32 CLKSLOW;

u32 CLKDIVN;

u32     CAMDIVN;  /*增加*/

};

b. 同时在board/samsung/smdk2410/Makefile中

COBJS := smdk2410.o flash.o boot_init.o

c.在arch/arm/cpu/arm920t/u-boot.lds中,将lowlevel_init.o和boot_init.o链接到前4K.

   .text :

   { arch/arm/cpu/arm920t/start.o (.text)  board/samsung/smdk2410/lowlevel_init.o (.text)        board/samsung/smdk2410/boot_init.o     (.text)   *(.text)

   }   boot_init.c.txt   (下载后改名为boot.c放在board/samsung/smdk2410/下)

2.4 为了使u-boot启动后打印点东东,还需要修改arch/arm/cpu/arm920t/s3c24x0/speed.c

 speed.c.txt   (下载后改名为speed.c,替换以前的arch/arm/cpu/arm920t/s3c24x0/speed.c)

2.5. 最后写到内存0x33000000处还需要

a. 修改arch/arm/cpu/arm920t/start.S文件

161 #if 0

162     bl  cpu_init_crit

163 #endif 

b.修改 board/samsung/smdk2410/config.mk 

 25 #TEXT_BASE = 0x33d80000

 26 TEXT_BASE = 0x33000000

2.6 make后写到内存中.


关键字:TQ2440  移植u-boot  搭建框架 引用地址:TQ2440移植u-boot-2010.06-rc1---2搭建框架

上一篇:TQ2440移植u-boot-2010.06-rc1---6usb下载
下一篇:TQ2440移植u-boot-2010.06-rc1---1调试的思路

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

u-boot在s3c2410研发板上移植(NAND Flash Boot)过程
这篇文章对于我的U-Boot移植起了重要作用,阐述了U-Boot从NAND Flash启动需要做的修改,但是其做法并不是完全正确(只是个人意见)。在这里谢谢 Bekars涡轮增压 !! 这篇文章转载自他的博客:http://blog.csdn.net/bekars/archive/2006/05/06/710888.aspx 1)u-boot版本1.1.3,gcc version 3.3.3 (DENX ELDK 3.1.1 3.3.3-9) 2)在Makefile中加入 bks2410_config : unconfig @./mkconfig $(@:_config=) arm arm920t bks2410 NULL s3c
[单片机]
飞凌OK6410开发板移植u-boot官方最新版u-boot-2012.10.tar.bz2
Part0 准备知识 0.1 关键参数说明 0.1.1 开发板说明 OK6410是飞凌公司发布的一款开发板,当前有2个版本,OK6410-A和OK6410-B,我当前使用的是前者;前者也经历过升级,所以有128M ram的和较新的256内存的版本,nand flash大小也有区别,当前新的为4G,内存大小会影响到编译时smdk6410.c文件中mmu部分代码,后续会提到,可以参考飞凌提供的u-boot的该文件内容; 0.1.2 处理器说明 该开发板使用的是三星的s3c6410处理器, cup采用的指令集为: arm1176jzf-s, 属于armv6zk(使用gcc时,可通过-march=armv6zk来指定), 更多的对应关
[单片机]
uboot-2011.12移植到S3C2440(序二)—— binutils二进制工具集与u-boot
概述 binutils是一组二进制工具集,它包括addr2line、ar、gprof、nm、objcopy、objdumpr、ranlib、size、strings、strip等。 ar软件 ar用于建立、修改、提取库文件。ar至少需要两个参数才能运行,比如: $ ar rv libtest.a add.o minus.o 是指将add.o、minus.o做成库文件libtest.a。其中r是指将文件列表插入归档文件,v是指得到操作版本号。 这样我们引用库文件的时候就可以使用: $ gcc -o test test.c -ltest nm软件 nm软件的作用是现实目标文件的信息和属性,比如: $ nm test.o
[单片机]
U-Boot在基于ADSP BF533的嵌入式Linux系统上的移植
1 引言 Boot Loader(内核引导程序)是在操作系统内核运行之前运行的一段自举程序,用于初始化硬件设备、改变处理器运行模式、重组中断向量和建立内存空间映射图,从而将系统的软硬件带到一个合适的状态或者用户定制的特定状态,以便为最终加载操作系统内核准备好正确的环境 。 嵌入式Linux系统常用的Boot Loader有arm-boot、redboot、U-Boot等。U-Boot (全称Universal Boot Loader)是当前比较流行的遵循GPL条件的开放源码项目。U-Boot具有源码公开的特点,开发人员可根据自身需要进行裁减;支持多种处理器和嵌入式操作系统内核;具有多种设备驱动源码:支持种引导方式;具有功能强大
[应用]
U-boot 在 mini2440-S3C2440 上的移植(4):U-boot第二阶段代码:修改初始化代码
编译U-boot给mini2440时,要编译出能在ARM平台上使用的可执行文件-bin,首先要在ubuntu 中安装交叉编译工具链,因为我使用的是友善之臂的开发板,所以我使用的已经制作好的工具链,当然也可以自己制作工具链:如基于GCC和glibc制作工具链,可以使用cross tools编译; 我使用的工具链的版本是arm-linux-gcc-4.3.3版本,下载地址:下载地址 1.在pc端下载好以后,将压缩包用xftp传输到Ubuntu;当然也可以用其他软件上传;上传后把它放在根目录下的/usr/local文件夹中新建一个arm文件夹,然后把压缩包复制到这个文件夹;注意先建好文件夹再上传,可以减少很多工作量; 一定要上传压缩包,
[单片机]
<font color='red'>U-boot</font> 在 mini2440-S3C2440 上的<font color='red'>移植</font>(4):<font color='red'>U-boot</font>第二阶段代码:修改初始化代码
TQ2440的ADS工程文件移植到KEIL5中
TQ2440的例程都是ADS环境下的,ADS已经是古董级的软件,win7都不带支持何况WIN10。考虑需求就尝试将工程移植到keil5上。查找了大量资料,试验加修改总算是移植成功了。文后附上所参考的地址。这里总结一下,方便查看: keil环境配置 打开keil,下载相关的内核,sumsung2440的。 新建工程,选择相关内核(会提示添加源文件,如果自己有就不要添加了,直接导入),将文件导入到工程,此处和导入STM32的h文件,c文件一样 注意拷贝文件时inc文件一定要和源文件在一个文件夹(不是指工程中,是你实际存放文件的文件夹里)就是和2440init.s文件放一块 设置Target选项卡 这里SIZE可以自行设置10000
[单片机]
将<font color='red'>TQ2440</font>的ADS工程文件<font color='red'>移植</font>到KEIL5中
arm9(TQ2440)移植小结---环境搭建
从拿到板子开始移植至今已有一个月了,现在回头小结一下,以备后用吧。 第一阶段:搭建环境(vmware + redhat linux 9) 1.安装虚拟机没有什么问题。下面是在虚拟机上安装linux的过程: 虚拟机的设置按照默认也差不多了,内存给了256M,硬盘给了8G,从后面的使用来看, 硬盘还是越大越好,这个东东随时间的增长越来越大。 linux安装完成后就开始安装虚拟机工具(vmware Tools),这个东西安装的很不顺利, 具体方法前面一篇转载的已经说得很完整了,但是至今有个问题没有解决----安装并没有完全成功。 从效果来看,一个是分
[单片机]
arm9(<font color='red'>TQ2440</font>)<font color='red'>移植</font>小结---环境<font color='red'>搭建</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved