uboot启动第一阶段

发布者:温柔的心情最新更新时间:2025-02-14 来源: cnblogs关键字:第一阶段 手机看文章 扫描二维码
随时随地手机看文章

s5pv210的irom代码读取sd(mmc通道3)中的16kB(uboot第一阶段代码)到iram的0xd0020010中校验通过后开始执行


第一条指令位于cpu/s5pc11x/start.S

1   _start: b reset(第57行)

2  第149行设置CPU位svc模式禁止irq和fiq

3  200~204设置cache

4  209~211设置TLB和icache

5  216~221设置cp15的c1禁止mmu和cache

6  225~227读启动信息(CORTEXA8将启动信息保留在0xE0000004中)

7  243~278将我们设置的启动标志保存在寄存器

8  284~286设置栈

9  288 bl lowlevel_init (位于board/samsung/x210)

10  46~52(lowlevel_init) 根据复位状态跳转,冷启动则顺序执行

11  61~64(lowlevel_init)关看门狗

12  100~104(lowlevel_init)锁存上电信号

13  110~115(lowlevel_init)判断当前uboot在sram还是DDR中

14  118 bl system_clock_init初始化时钟系统

15  121 bl mem_ctrl_asm_init 初始化内存

16  125 bl uart_asm_init 初始化串口打印‘O’

17  151~156 打印‘K’ 返回start.s中

18  292~294 锁存上电信号和第12步一样

19  297~299 设置栈0x33e00000

20  313~318 如果 BL1复制于 SD/MMC CH2则跳转mmcsd_boot,我们这里是

21  349  bl      movi_bl2_copy 将uboot复制到内存0x33e00000

22  361~371设置域访问和TTB(页表基地址)

   该一级页表为兆式映射有效映射为c0000000-d0000000 30000000-40000000 256MB 3G-3.25G

23  374~381  开mmu

24  387~396 再次设置栈

25  400~411 清bss 长跳转到start_armboot函数


关键字:第一阶段 引用地址:uboot启动第一阶段

上一篇:linux内核Kernel3.0.8编译移植到天嵌210
下一篇:uboot启动第二阶段

推荐阅读最新更新时间:2026-03-20 11:47

imx6ull uboot启动流程
首先,NXP提供的uboot经过编译最终烧写进存储介质中的是uboot.imx文件,这个imx后缀的文件不同于传统的比如S3C2440最终烧写的uboot.bin文件。 imx文件是在bin文件的基础上加上了一个头部,IMX6ULL芯片内部自带的BOOTROM程序会根据拨码开关的高低电平选择对应的启动介质,从中读取这个头部信息,然后对头部信息进行解析,头部中最重要的是一个叫DCD表的东西。 DCD表中包含了时钟寄存器的地址和寄存器的值,引脚复用寄存器地址和寄存器的值,DDR控制器的寄存器地址和寄存器的值。imx6ull内部的BOOTROM程序会根据DCD表的内容打开时钟,初始化外部DDR。因此NXP提供的uboot代码的汇
[单片机]
imx6ull <font color='red'>uboot</font><font color='red'>启动</font>流程
uboot总结:uboot配置和启动过程3(config.mk分析)
说明:文件位置:在uboot的目录下,文件名为:config.mk。是一个makefile文件,以后会被主Makefile调用。 它的主要作用的是: (1)具体的设置交叉编译工具链接(主Makefile中也有设置交叉编译工具链) (2)加载include/autoconfig.mk文件(这个文件是在主Makefile中生成的) (3)指定-Ttext链接地址 (4)makefile的推导规则 下面来具体的分析代码: 1、设置交叉编译工具链 2、加载autoconfig.mk文件,这个文件是在主Makefile中生成 3、设置链接地址,这个TEXT_BASE是在主Makefile中的x210_sd_config部分配
[单片机]
记录在tiny6410平台上采用4GSD卡来启动uboot和烧写nand flash uboot
下面这种方法是从网上转的 没有验证 环境:ubuntu 13.04 一、首先制作sd启动盘: 插入SD卡 sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmcblk0 seek=1 tiny210v2-uboot.bin来自: http://www.arm9home.net/read.php?tid-80476.html 二、SD卡分区 卸载SD卡, sudo /sbin/fdisk /dev/mmcblk0 如果你的SD卡上有几个分区 Command (mfor help): d   回车 删除硬盘分割区属性 Partitionn
[单片机]
ok6410 nandflash 启动uboot 超过256k怎么办
1\在调试ok6410 nandflash启动uboot时,需要添加调试信息,导致uboot大于256k 2需要修改下面几个地方 参考资料 在uboot中可以添加文字菜单,但是不够美观。 利用photoshop制作一张jpg菜单图片,在ubuntu中使用jpeg2bmp.sh将jpg图片转换成bmp格式 uboot/tools/bmp_logo.c编译生成的工具bmp_logo可以根据bmp格式图片生成bmp_logo.h,图片的信息存储在数组当中。当图片的分配率越大,转换成的数组越大,导致最后编译的uboot.bin越大。当uboot.bin超过242K时,下载uboot到flash后不可启动。 解决办法: 在
[单片机]
ok6410 nandflash <font color='red'>启动</font><font color='red'>uboot</font> 超过256k怎么办
uboot启动后在内存中运行裸机程序hello
如题,实现过程中发现3额问题,先写下来,待解答: 1、uboot启动后再dnw上打印许多信息,我想改变其中的打印信息或加上自己的打印信息以证明程序运行到何处。修改完后重新编译uboot.bin。 在DNW下执行dnw 50008000 USB下载uboot.bin到内存50008000处, go 50008000,从内存50008000处运行我刚下载的程序,发现我修改的内容并未显示。 重新执行dnw 50008000,nand erase 0 100000,nand write.uboot 50008000 0 100000,后从nand直接启动,发现我修改的内容被打印出来了。 总结:可能的原因:1、程序下载到50008000
[单片机]
uboot的简单易懂的启动流程
static ulong get_PLLCLK(int pllreg) { S3C24X0_CLOCK_POWER* const clk_power = S3C24X0_GetBase_CLOCK_POWER(); ulong r, m, p, s; if (pllreg == MPLL) r = clk_power- MPLLCON; else if (pllreg == UPLL) r = clk_power- UPLLCON; else hang(); m = ((r & 0xFF000) 12) + 8; p = ((r & 0x003F0) 4) + 2; s =
[单片机]
<font color='red'>uboot</font>的简单易懂的<font color='red'>启动</font>流程
使用u-boot_2016_01启动mini2440(二)uboot内存分布
启动内存的分布主要是在board_init_f内划分的: 按照我的代码,分布如下: 代码log: U-Boot 2016.01-g3401853-dirty (Apr 04 2016 - 08:06:26 -0400) U-Boot code: 33A00000 - 33A7BEF4 BSS: - 33ACAAE4 CPUID: 32440001 FCLK: 405.600 MHz HCLK: 101.400 MHz PCLK: 50.700 MHz DRAM: Monitor len: 000CAAE4 Ram size: 04000000 Ram top: 34000000 TLB table from 3
[单片机]
使用u-boot_2016_01<font color='red'>启动</font>mini2440(二)<font color='red'>uboot</font>内存分布
Exynos4412 Uboot 移植(二)—— Uboot 启动流程分析
uboot启动流程分析如下: 第一阶段: a -- 设置cpu工作模式为SVC模式 b -- 关闭中断,mmu,cache v -- 关看门狗 d -- 初始化内存,串口 e -- 设置栈 f -- 代码自搬移 g -- 清bss h -- 跳c 第二阶段 a -- 初始化外设,进入超循环 b -- 超循环处理用户命令 可见, U-Boot 属于两阶段的Bootloader 第一阶段的文件: arch/arm/cpu/armv7 /start.S 平台相关,CPU工作模式设为SVC模式,关MMU,关icahce(CPU相关) board/samsung/fs4412/lowle
[单片机]
Exynos4412 <font color='red'>Uboot</font> 移植(二)—— <font color='red'>Uboot</font> <font color='red'>启动</font>流程分析
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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