u-boot-2014.10移植第11天----深入分析代码(六)

硬件平台:tq2440

开发环境:Ubuntu-3.11

u-boot版本:2014.10

本文允许转载,请注明出处:http://blog.csdn.net/fulinus

“从relocate_code回到_main中,接下来是main最后一段代码”也就是arch/arm/lib/crt0.S文件中:

b   relocate_code
here:
//从这里开始u-boot已经在重定位的地方运行了

/* Set up final (full) environment */

bl  c_runtime_cpu_setup /* we still call old routine here */ 但是这里还需要调用一下重定位之前的代码。??为什么呢?难道这个函数值没有被修改吗?估计是,rel.dyn段中放着的应该是C函数中用到的一些变量,而汇编中用到的地址没有改变吧?(有待进一步研究),我们进入c_runtime_cpu_setup函数中去。明天继续。

ldr r0, =__bss_start    /* this is auto-relocated! */
    ldr r1, =__bss_end      /* this is auto-relocated! */

mov r2, #0x00000000     /* prepare zero to clear BSS */

clbss_l:cmp r0, r1          /* while not at end of BSS */
    strlo   r2, [r0]        /* clear 32-bit BSS word */
    addlo   r0, r0, #4      /* move to next */
    blo clbss_l

bl coloured_LED_init
    bl red_led_on

/* call board_init_r(gd_t *id, ulong dest_addr) */
    mov     r0, r9                  /* gd_t */
    ldr r1, [r9, #GD_RELOCADDR] /* dest_addr */
    /* call board_init_r */
    ldr pc, =board_init_r   /* this is auto-relocated! */

/* we should not return here. */

#endif

ENDPROC(_main)

时间: 2024-12-20 11:04:50

u-boot-2014.10移植第11天----深入分析代码(六)的相关文章

u-boot-2014.10移植第9天----深入分析代码(四)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus ENTRY(_main) /* * Set up initial C runtime environment and call board_init_f(0). */ #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK) //在smdk2410开发板的相

u-boot-2014.10移植第8天----深入分析代码(三)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 接着第七天的代码分析,下面是cpu_init_crit的代码段,同样位于文件arch/arm/cpu/arm920t/start.S中: /* ************************************************************************* * * CPU_init_cri

u-boot-2014.10移植第6天----深入分析代码(一)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 前面我们看到了一个lds文件,我们这里深入的了解一下: section.c: /* * Copyright: (C) 2014 EAST fulinux <[email protected]> */ #include <stdio.h> #include <stdlib.h> int localm

u-boot-2014.10移植第12天----深入分析代码(七)

c_runtime_cpu_setup函数在arch/arm/cpu/arm920t/start.S文件中: .globl  c_runtime_cpu_setupc_runtime_cpu_setup:  mov pc, lr //没做什么就返回了 回到arch/arm/lib/crt0.S文件中: bl  c_runtime_cpu_setup /* we still call old routine here */ //bss段清零    ldr r0, =__bss_start    /

u-boot-2014.10移植第7天----深入代码分析(二)

现在从代码的角度来分析启动的流程: 从u-boot.lds文件知: ENTRY(_start) SECTIONS { . = 0x00000000; . = ALIGN(4); .text : { *(.__image_copy_start) *(.vectors) CPUDIR/start.o (.text*) *(.text*) } 文件中__image_copy_start位映像文件复制起始地址,它在文件arch/arm/lib/sections.c中如下定义: char __image_

将websever从10.0移植到11.0中基本步骤

将websever从10.0移植到11.0中基本步骤: 1.用11.0打开原10.0工程文件,然后打开SOPC Builder工具,重新生成nios系统(这一步很重要):然后回到quartus工程中重新编译硬件系统,最后将.sof下载到开发板. 2.启动nios SBT(win7系统中需要以管理员身份启动),设置工作区目录:然后新建一个web sever模板应用工程和bsp工程,将原软件中的.c和.h文件拷贝到新的软件中,然后编译软件工程. 3.将硬件系统.sof下载到开发板(如果在第一步中已下

yaffs2 源码错误 too few arguments to function &#39;yaffs_flush_file&#39; 2014.10.11

来自:http://blog.csdn.net/cinmyheart/article/details/38747505 yaffs2 源码错误 错误: 2014-08-06 Charles Mannin 版本的 yaffs 有误! yaffs_flush_file的定义: source file :yaffs_guts.c [cpp] view plaincopyprint? int yaffs_flush_file(struct yaffs_obj *in, int update_time,

2014年10月31~11月1日,杨学明老师《新产品开发流程优化和项目管理》内训课程在中山某企业成功举办!

2014年10月31~11月1日,著名研发管理和产品创新专家杨学明老师在中山市某企业成功举办为期两天的<新产品开发流程优化和项目管理>内训,此次培训之前杨老师与企业研发老总和副总进行了深入的交流,就内训需求通过电话会议的方式进行了深入的访谈,准确把握到该企业在项目管理过程中遇到的各种问题,并针对该企业的行业特点设置了多个案例,在培训之中进行了深入的研讨,一共65人参加了培训,包括总经理,副总和中层干部.两天的培训,不但学习了项目管理的知识,更重要的是改变了大家的思维模式,学到了从原来的职能化运

u-boot-2014.10移植第29天----nand flash的SPL启动(一)

硬件平台:tq2440 开发环境:Ubuntu-3.11 u-boot版本:2014.10 本文允许转载,请注明出处:http://blog.csdn.net/fulinus 前面在移植nand flash启动时做了很多探索性的工作,但是后来发现在relocate.S文件中调用的函数中有调用大部分的库函数,牵扯到的文件较多,很难将它们一一包含到前面4K空间中去.正在想其他方法时,突然意识到SPL功能.我初步了解了一下SPL的功能,简而言之是一个将u-boot从nand flash拷贝到SDRAM