bootloder uboot 简介 make menuconfig

被刻印的时光 ゝ 提交于 2019-12-10 04:56:20

一个嵌入式系统从软件角度分为三个层次

1,引导加载程序  包含固化在固件中的boot程序(如BIOS),和Bootloader(如grub或lilo)两个部分。

2,linux内核

3,文件系统:包含应用程序和系统命令

BIOS在完成硬件检测和资源分配后,Bootloader将硬盘中的引导程序读到系统内存中,然后跳转到内存运行。

嵌入式系统一般没有boot,只需要bootloader,一种bootloader重新上电会跳到内存Flash 0x00000000开始执行。另一种bootloader 会进行一些硬件设备初始化,然后,跳转到bootloader指定的flash位置启动os内核。

编译bootloader 常用的指令 

一般用        arm-linux-gcc  hello.c -o hello    编译文件

反汇编命令   arm-linux-objdump -D -S hello >hello.txt (>hello.txt 把结果重定向到 hello.txt)

ELF文件查看 arm-linux-readelf -a hello (可以查看大段小段模式,及运行平台)

                arm-linux-readeld -d hello (查看hello使用的动态链接库)

编译uboot的源文件boot中的主要目录

board 和开发板相关的文件 如board/samsung/smdk6410

common uboot命令

cpu 处理器对应的文件

uboot常用命令 

help查看所有命令

printfenv: 查看当前环境变量

setenv : 添加环境变量    如setenv test 123 (添加环境变量 值123) setenv test (删除环境变量)

saveenv:保存当前环境变量 这样重启自己添加的环境变量就不消失了

tftp 下载文件

tftp c0000000  zImage (zImage 存在与宿主机tftp服务器的目录下)

nand 

nand info 查看nandflash 大小

nand erase 100000 700000 擦除 100000 到700000数据

go addr 运行addr(地址)的应用


make menuconfig

打开之后会出现选项,y 为*   n为空  m为M

(*) a.c  --- a.o ----- zImage 既编译又连接

(*) b.c  --- b.o ----- zImage 既编译又连接


(M) d.c ---  d.o  只编译不连接

( )  e.c              不编译

至于内核选项该如何配置,可以Google下Linux内核配置详解。由于太多不列举。

平时配置时,可以到/arch/arm/configs找到和开发板相近的config进行修改配置

cp /arch/arm/xxx_config /forlinux/linux3.0.1 也就是.config所在的目录(ls -a查看)


make  zImage V = 1会列出详细的编译信息,便于查找出错

生成的文件在 arch/arm/boot/ 下zImage


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!