历史上的今天
返回首页

历史上的今天

今天是:2025年04月15日(星期二)

正在发生

2018年04月15日 | TQ2440移植u-boot-2010.06-rc1---2搭建框架

2018-04-15 来源:eefocus

一. 准备工作

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后写到内存中.


推荐阅读

史海拾趣

AITSEMI公司的发展小趣事

随着产品线的不断完善,AITSEMI公司开始积极寻求市场机会,并逐步在全球范围内建立销售网络。通过与各大消费电子品牌的紧密合作,AITSEMI的芯片产品成功应用于音频功放和电源管理等领域,为全球消费者提供了更优质的产品体验。同时,公司还积极拓展医疗、工业控制、照明等新兴市场,为公司的持续增长提供了强大的动力。

Dae Ryung Electronic Co Ltd公司的发展小趣事

随着技术实力的增强,Dae Ryung Electronic Co Ltd公司开始积极拓展市场。公司制定了国际化战略,逐步进入国际市场。通过参加国际展会、与海外企业建立合作关系等方式,公司成功打开了海外市场的大门。同时,公司还针对不同地区的市场需求,推出定制化的产品和服务,进一步提升了市场竞争力。

Gustav Klauke GmbH公司的发展小趣事

随着电子行业的不断发展和变革,Dae Ryung Electronic Co Ltd公司也面临着前所未有的挑战。为了应对这些挑战,公司积极调整战略和业务结构,加强在物联网、人工智能等新兴领域的研发和应用。同时,公司还注重人才培养和引进,吸引了一批高素质的技术和管理人才加入公司。这些努力使得公司在面对行业变革时能够保持领先地位并实现可持续发展。

Cygnal Integrated Products Inc公司的发展小趣事

在20世纪90年代末,Cygnal Integrated Products Inc由几位热衷于微控制器技术的工程师创立。他们看到了嵌入式系统在电子产品中的巨大潜力,并决定专注于开发高性能、低功耗的微控制器。通过不断的技术创新和市场调研,Cygnal成功推出了其首款产品——一款集成了多种外设接口的8位微控制器,受到了市场的热烈欢迎。

DLG Hanbit公司的发展小趣事

随着环保意识的提高,DLG Hanbit公司开始注重环保和可持续发展。公司引进了一系列环保设备和技术,减少了生产过程中的污染物排放。同时,公司还积极推广绿色电子产品,帮助客户实现节能减排。这种环保理念不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

明微公司的发展小趣事

随着全球半导体行业向中国市场的转移,明微公司意识到拓展海外市场的重要性。为了加快海外市场拓展步伐,公司积极加强与国际知名企业的合作与交流,引进先进的技术和管理经验。同时,公司还积极参加国际展会和论坛等活动,提升品牌影响力。这些举措使明微公司在国际市场上逐渐树立起良好的口碑和形象。

问答坊 | AI 解惑

交流电压测量

交流电压的测量实例…

查看全部问答>

LCD 背光控制

我的BL是PWM控制的(timer0 )也就是GPB0。 我在eboot最后加了: s2450PWM = (S3C2450_PWM_REG *)   OALPAtoVA(S3C2450_BASE_REG_PA_IOPORT,FALSE); s2450PWM->TCON |= (0X0…

查看全部问答>

SPI 的中断驱动只执行一次

最近在做SPI的中断模式驱动,在我向rSPTDAT0中写数据时,正常执行了ISR,IST,并且在IST中我输出了rSPRDAT0的值,也是我写入rSPTDAT0的数据,可是在我第二次向rSPTDAT0写数据时,竟然都不执行ISR了(我在ISR中输出了调试信息以检测ISR是否运行)。I ...…

查看全部问答>

公司闲置 hp pda H5550,价格 800-1000,有需要请联系QQ:31567611

公司闲置 hp pda H5550,价格 800-1000,有需要请联系QQ:31567611 http://group.zol.com.cn/1/38_273.html 相关介绍…

查看全部问答>

平台关机后, \Windows\XXXXX.Unload 这个文件会丢失, 造成软件无法卸载, 有好的解决办法吗?

我们有一个WinCE平台, 是Hive 注册表的. 客户在平台上用安装包安装软件. 安装过程中会写注册表, 会将相关文件写到flash中, 会在\\Windows\\目录下生成 一个XXXXX.Unload 的反安装信息文件. 平台关机后, \\Windows\\XXXXX.Unload 这个文件会丢失, ...…

查看全部问答>

DIY 直流电动机

所谓的直流电动机其实很简单,大家应该都做过吧。 2010-12-9 10:04 上传下载附件 (52.76 KB) 如上图,直流电动机所需要的材料。里面比较特殊的应该是两个别针,设计者想象力真的很丰富。 2010-12-9 10:04 上传下载附件 (41.09 KB) ...…

查看全部问答>

收闲置的49元8962套件 ... 有的扔过来啊 ....

一套或者光主板也行 自带价格 ... tt383@qq.com   [ 本帖最后由 tt383 于 2011-3-18 18:03 编辑 ]…

查看全部问答>

DirectDraw Display驱动模型

  DirectDraw提供了独立于硬件的直接访问显示设备的能力。它可以通过直接访问硬件抽象层(HAL)中的一些函数来达到直接操作显示设备的目的,在这个过程中,不再需要图形设备接口(GDI)的转换。这种直接的方法可以使图像更加连贯,也提高了显示的性能 ...…

查看全部问答>

中祥LED租赁显示屏为精彩汽车博览会锦上添花

 作者:中祥科技王经理   QQ:1044478274   2011中国西南(昆明)国际汽车博览会,英文简称(IAS Kun Ming)11月11日-15日(星期五-星期二)在昆明国际会展中心隆重开幕。本届车展以“展开,生活之翼”为主题,由中国国际 ...…

查看全部问答>