uboot对linux的引导
来源:互联网 发布:广州网店美工培训 编辑:程序博客网 时间:2024/05/16 11:34
启动armlinux,bootloader必须提供下面几步:
1. 设置并初始化ram
2. 初始化一个串口
3. 检测处理器类型
4. 设置内核标记列表
5. 调用内核映像
1. 设置并初始化ram
bootloader要找到并初始化系统中所有的ram,内核将这些ram用于可变数据的存储。
2. 初始化一个串口
bootloader应该在目标板上初始化并使能一个串串口。这将允许内核串口驱动自动检测它应该用哪个串口作为内核控制台。
另外,bootloader也可通过标记列表传递相关的”console=”选项到内核来指定串口以及串口格式(奇偶位,停止位等)
3. 检测处理器类型
bootloader应该通过某种方法检测它所运行的处理器的类型,它最终必须能够向内核提供一个MACH_TYPE_xxx值。
4.设置内核标记列表
bootloader必须创建并初始化内核标记列表。一个有效的标记列表起始于ATAG_CORE而终止于ATAG_NONE。任何数量的标记都可以加入这个列表。bootloader至少要向内核传送系统内存的大小和位置以及根文件系统的位置。
标记列表必须放在某个内存区域,这个区域既不能被内核解压器重写,也不能被initrd ‘boot0’ 程序重写。推荐的位置是RAM开头的16K。
5. 调用内核映像
有两种调用kernel zImage的选择。如果zImage存储在flash中,并且被正确的连接从flash运行,那么对于bootloader来说,直接从flash调用zImage是合法的。
zImage也可以放到系统RAM中任何位置并在那个位置调用。注意,内核使用这个映像下面的16K RAM存储页表。推荐将映像存放在RAM的32K位置处。
在任何情况下,下面的重要条件都必须满足:
――屏蔽所有具有DMA功能的设备,以便内存不会被伪造的网络包或磁盘数据误导。这将大大节约你的调试时间
――cpu寄存器设置
r0 = 0,
r1 = 处理器类型号
r2 = 标记列表在系统内存中的物理地址
uboot中调用内核时:
theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
这里第1、2、3个参数就分别存储在r0、r1、r2中。
――caches, MMUs
MMU必须关闭
指令cache可关闭或打开
数据cache必须关闭
――bootloader被指望通过直接跳转到内核映像的第一条指令来调用内核映像
- uboot对linux的引导
- uboot引导linux内核
- uboot 引导Linux
- uboot 引导Linux
- uboot引导linux内核
- uboot在引导linux之前要做的事
- uboot引导内核的经验总结
- GRUB下对linux系统的引导
- LINUX 对引导加密
- uboot 引导Linux 内核步骤--经典
- uboot引导linux内核命令bootm
- 【原创】uboot 自引导linux 内核
- 嵌入式linux软件平台--uboot引导流程
- uboot引导Linux部分--链接脚本内容
- uboot 的bootm 引导内核的过程
- uboot引导powerpc,bootm的用法
- Uboot的bootargs引导参数说明
- uboot在引导linux之前要做的事 theKernel 作用
- android所有版本源码下载网站
- 字符串匹配的KMP算法-16张图片看明白
- eclipse的快捷键及其使用和程序的断点调试
- 图片浏览的ScrollView
- 不能从局域网访问虚拟机的方法
- uboot对linux的引导
- cpu top监控脚本
- Web表单提交之disabled问题
- [Linux] 远程 SSH 两级跳转用户sodu的问题--sudo: no tty present and no askpass program specified
- c链表反转
- sql游标的基本语法
- <c:forEach>循环 List<List<String>>
- Android学习篇章12-GestureDetector手势动作的识别
- 用户、组或角色 在当前数据库中已存在