第二章、Tiny4412 U-BOOT移植二 启动分析

发布者:Mingyue1314最新更新时间:2021-12-08 来源: eefocus关键字:Tiny4412  U-BOOT移植  启动分析 手机看文章 扫描二维码
随时随地手机看文章

一、启动过程说明

 讲解启动过程,首先的源头就是打开电源,这个相信没人人不知道。CPU上电后,此时SP指针指向0x0000_0000,从这个地址取第一条指令。但此时:PLL没有启动,CPU工作频率为外部输入晶振频率,非常低http://blog.csdn.net/zsy2020314/article/details/9824035

其基于tiny210也进行分析了启动过程,大家可以再去看看,下面一些内容和图来自于此。

虽然我是要去分析Exynos4412的启动过程,但在s5pv210_irom_application手册中,对启动过程几个阶段的流程有详细描述,见下图2-3所示,而我又找不到Exynos4412的类似说明文档,大家还是凑合着看看吧。



图2-3、S5PV210启动顺序图

启动过程原理

必须要明白的一点是,当代码从存储介质(nand flash,SD,norflash,onenand等)中搬运到了DRAM中后随即会跳转到内存中运行U-Boot,接着会有一个重定位(relocate_code)的过程,relocate_code子函数在start.S中,而给relocate_code子函数传参数的是crt0.S中的main子函数。当判断到当前U-Boot在内存的低地址处,那么relocate_code就会工作,把U-Boot代码从低地址处再搬运到内存地址的顶端,然后跳转到新的位置去继续运行U-Boot。而搬运的目标地址是在board_init_f()函数(此函数在/arch/arm/lib/board.c中)中计算出来的,见图2-4。



图2-4、U-BOOT重定位示意图

下面,以start.S为主线,画出了其程序流程图,如图1-5所示、图中同样也表现出启动的整个流程和启动代码文件间的组织关系。大家可以先看看,然后以tiny210的代码来参考,一行一行的分析,相信花点时间,大家应是可以看明白这个流程的。



图2-5、start.s启动流程图

关键字:Tiny4412  U-BOOT移植  启动分析 引用地址:第二章、Tiny4412 U-BOOT移植二 启动分析

上一篇:第一章、Tiny4412 U-BOOT移植一 说明
下一篇:第三章、Tiny4412 U-BOOT移植三 时钟设置

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

Tiny4412和Tiny210裸板程序烧写比较
1、Tiny4412启动时首先运行固化在芯片内部iROM中的程序,把启动设备(可能是EMMC/nand flash、SD、USB启动)特定位置处的程序读入片内存 (iRAM) ,并执行它,BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个被称为 BL2(Bootloader 2) ,是我们编写的源码。(详情可参考博文“Exynos4412的启动过程分析”)在汇编流水灯程序中我们通过mkbl2工具制作的BL2: sudo ./sd_fusing.sh /dev/sdc ../../../hardware/1th_led_s/led.bin 分析sd_fusing.sh可知: #################
[单片机]
移植u-boot 1.1.6到TQ2440开发板-第三阶段
上一阶段增加了对TQ2440开发板的支持,通过编译之后产生了uboot.bin文件,可以加载到内存中运行。但是我们需要继续增加uboot的模块使其能够支持Nor Flash 移植u-boot 1.1.6到TQ2440开发板-第三阶段 配置Nor Flash 现在还无法通过U- Boot命令烧写Nor Flash 。本开发板中的Nor Flash 型号为EN29LV160AB,而配置文件include/configs/TQ2440.h 中默认型号为AM29LV400。因为本开发板Nor Flash 为 2MB,和AM29LV800 很相似,所以对Nor Flash 配置修改如下。 #if 0 #define CONF
[单片机]
u-boot移植(友善smart210开发板)
U-boot 源代码下载: ftp://ftp.denx.de/pub/u-boot/ 启动过程分析:1.小于8Kb的程序:IROM从nand读8K数据到ISRAM中运行; 2.大于8kb程序(主要指u-boot):IROM从nand读前8k数据到SRAM中主要做两件事: 第一:初始化DRAM; 第二:将剩下的代码搬运到DRAM运行。 3.在DRAM中就可以引导系统启动了。 BL0:IROM,出厂已固化代码 BL1:ISRAM的前16kb,u-boot-spl.bin BL2:ISRAM的后80kb,u-boot.bin ISRAM是内置内存,不用初始化就可以使用; DRAM是外接内存,需要初始化才能使用。 uboot有两种模
[单片机]
电源重新上电引起的MCU启动失败的原因分析
对于主电源掉电后需要继续工作一段时间来用于数据保存或者发出报警的产品,我们往往都能够看见产品PCB板上有大电容甚至是超级电容器的身影。大容量的电容虽然能延时系统掉电,使得系统在电源意外关闭时MCU能继续完成相应操作,而如果此时重新上电,却经常遇到系统无法启动的问题。那么这到底是怎么回事呢?遇到这种情况又该如何处理呢? 一、上电失败问题分析 1. 上电缓慢引起的启动失败 对于需要进行掉电保存或者掉电报警功能的产品,利用大容量电容缓慢放电的特性来实现这一功能往往是很多工程师的选择,以便系统在外部电源掉电的情况下,依靠电容的储能来维持系统需要的重要数据保存及安全关闭的时间。此外,在不需要掉电保存数据的系统中,为了防止电源纹波
[电源管理]
LPC1768 eCos 启动代码分析(1)系统复位
要了解eCos的CortexM启动代码,需要理清下面几个文件的编译和链接关系。 packages/hal/cortexm/arch/current/src/vector.S packages/hal/cortexm/arch/current/src/hal_misc.c packageshalcortexmlpc17xxlpc1766stkcurrentincludepkgconfmlt_cortexm_lpc1766_rom.ldi mlt_cortexm_lpc1766_rom.ldi: // eCos memory layout #include pkgconf/hal.h #include cyg/infra/
[单片机]
STM32再学习——启动流程分析
我们写嵌入式程序,基本上采用C语言来编写,以main()作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main函数的复位连接等,这些工作就需要一个专门的启动程序来完成,由于需要做的工作内容不多,并且需要更直接的管理内存,一般采用汇编编写。 本文引用地址:http://www.eepw.com.cn/article/236700.htm 无论是STM32、ARM系列的单片机,还是简单的如51,PIC等,都以为上述原因,需要启动程序,只不过51,PIC等单片机的启动程序已经在相应的IDE编译、链接的时候隐含的编译了,故在写单片机程序的时候无需考虑。而STM32的启动有相
[单片机]
u-boot在s3c2410开发板上移植过程
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 s3c24x0 我把我的板子起名叫bks2410,可以依自己的喜好修改 3)建立board/bks2410目录,拷贝board/smdk2410下的文件到board/bks2410目录,将smdk2410.c更名为bks2410.c 4)cp include/configs/smdk2410.h include/configs/
[单片机]
U-Boot移植(5)dnw串口终端没有反应
把上面生成的u-boot.bin文件,在cmd下利用sfj2410方式烧入板中,首先拔掉短路帽。。。然后经过连续几个0,之后,开始烧入板子,烧完后退出。重启板子,在串口端下竟然没有看见一点信息,心凉了一大截。。。呵呵! 编译、连接没问题,烧写也没有问题,那为什么uboot启动不了呢? 于是上了 http://www.100ask.net 论坛,这个论坛的超级版主就是《嵌入式linux应用开发完全手册》的作者,真的是百问网,问什么都答。。。 开始怀疑是ylp2410的晶振问题,后来看了下优龙板晶振也都是12MHZ,在YLP2410_BIOS下启动linux过程也可以看到这方面的信息。。所以也不是晶振问题。 到了晚上10点多,
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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