bootm命令移植

<bootm作用>

为linux内核的启动准备条件

<bootloader作用总结>

(1)初始化软/硬件(内存硬件/外部设备/堆栈)

(2)启动操作系统

<uImagine和zImagine之间的关系>

zImagine 是最纯粹的Linux内核

在zImagine之上加上一个信息头就成位了uImagine

信息头用于指明系统信息(何种OS,镜像文件是否压缩)

argv :命令行参数

<bootm处理流程>

(1)检查信息头

OS信息,压缩方式信息,幻数信息

(2)根据OS类型,调用相应的处理函数

获取内核地址

获取cpu型号

设置启动参数

参数结构:hdr + 具体参数(每一个都要加上这个参数)

注意:bootloader和内核之间是通过内存来传递参数

<cpu信号参数作用>

bootloader 会将这个cpu型号的参数传递给Linux内核,Linux内核中也会有处理参数,内核就会将这个参数和内核中的参数做对比,相同则处理与该cpu相适应的启动工作,反之则不能正常启动linux内核。

原文地址:https://www.cnblogs.com/big-devil/p/8589398.html

时间: 2024-10-10 13:22:57

bootm命令移植的相关文章

[国嵌攻略][069][Bootm命令移植]

Bootloader作用 1.初始化软硬件 2.启动操作系统 内核分类 1.zImage 不加信息头的内核 2.uImage 加信息头后的内核,用bootm命令来启动 bootm作用 1.检测信息头:压缩.操作系统.幻数 2.根据OS信息调用相应的处理函数:获取内核地址.知道CPU型号.设置启动参数 代码编写 1.获取启动地址 2.设置启动参数 2.1设置核心启动参数 2.2设置内存参数 2.3设置命令行参数 2.4设置参数结束行标志 3.启动操作系统 /********************

第1阶段——uboot启动函数bootm命令分析(9)

本节主要学习: 详细分析UBOOT中"bootcmd=nand read.jffs2 0x30007FC0 kernel;bootm 0x30007FC0"中怎么实现bootm命令启动内核. 其中bootm要做的事情:a 读取头部,把内核拷贝到合适的地方(0X30008000)b 在do_boom_linux()中把参数给内核准备好,并告诉内核参数的首地址c 在do_boom_linux()中最后使用theKernel () 引导内核. {注意:当在cmd_bootm.C中没有定义宏C

组建自己的Linux-02命令移植

1.找到命令的源文件路径 [[email protected] ~]# which ls alias ls='ls --color=auto' /bin/ls [[email protected] ~]# which cat /bin/cat #有的命令使用了别名,所以有alias相关信息,要把alias相关的去除 [[email protected] ~]#  [[email protected] ~]# which ls | grep -v "alias" #使用grep -v 去

命令移植实现脚本定时控制

偶尔需要写一个定时杀死的脚本. SHELL本身实现难度不小,或可以采用第三方语言控制. 发现Debian下有一个timeout很好用,可以方便地在Shell里实现脚本的给定时间段执行. 由于需要在redhat下运行(默认都是64位环境,不同位数是否有影响尚待测试),故在Debian下输入which timeout定位到该命令所在位置.然后找到“可执行文件”,将其拷贝到redhat里需要的目录下,经测试timeout运行正常!

用uboot 烧写uboot linux内核 文件系统到nandflash的 过程以及bootm go命令启动与区别

原文:http://blog.sina.com.cn/s/blog_6b94d5680100nd48.html 文章结构结构顺序有变化-1:烧写uboot0: bootargs bootcmd 命令参数的设置1:制作yaffs2的过程2:烧写yaffs2的过程3:制作uimage 的过程4: 烧写uiamge的过程5:uimage zimage vmlinux 的区别6: uboot传递给内核的参数结构 tag7:bootm go 的 启动过程 以及区别8:加载地址 入口地址 等 ///////

嵌入式学习笔记102-uboot_1.1.6移植(2)

接下来分析uboot的第二阶段,在第一阶段的start.S的末尾有: ldr pc, _start_armboot _start_armboot: .word start_armboot 而start_armboot()就是第二阶段的入口,首先我们要认识两个重要的结构体,start_armboot()函数的一系列初始化可以说都是以这个结构体为主线的: typedef struct global_data { bd_t *bd; unsigned long flags; unsigned long

uboot移植总结

1.uboot的介绍及体系结构 1.1 uboot的介绍 Uboot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, UBoot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统.UBoot除了支持PowerPC系列的处理器外,还能支持MIPS. x86.ARM.NIOS.XScale等诸多常用系列的处理器. 1.2 uboot的体系结构 目录树 |--board |--c

uboot在s3c2440上的移植(4)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动.因为测试u-boot引导内核我们要用到网络下载功能. 7)u-boot对CS8900或者DM9000X网

uboot在s3c2440上的移植(6)

一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 10)u-boot利用tftp服务下载内核和利用nfs服务挂载nfs文件系统. 知识点: tftp服务的安装与配置及测试: nfs服务的安装与配置及测试: u-boot到kernel的参数传递(重点). 我们知道使用tftp下载内核