LINUX BootLoader启动程序解析

  • 在进入linux 时

Linux 进入boot中的参数传递

在Linux进入bootloader

setenv bootargs root=/dev/mmcblk0p8 rw rootfstype= ext4 init=linuxrc lcd=...

内核在开机过程中执行这个传入的参数到内核中

  • 进入BL1阶段时

加载BL1

早期需要加载dts设备数,现如今直接和内核进行打包即可

例如在第2个SDcard 的第1个分区

开始编译

  • 清除编译痕迹

make distclean

  • 设置为目标平台

make x6818_config

  • 编译源码

make

  • 生成镜像(位于根目录下)

ubootpak.bin

镜像烧写

boot.img (内核镜像)

gtkfs.img (根文件系统镜像)

ubootpakbin (uboot 镜像)

  • 开机进入uboot命令行
  • 执行下载命令

fastboot

镜像配置过程

配置原理分析

  • make xxx_config 的

其实是调用 mkconfig -A xxxx 脚本来进行参数设置

在mkcofig中实现的是将 xxxx 对应的参数中获取 生成于include/config.mk文件中

  • mkconfig该脚本创建了 include/config.h 并且写入定制头文件和目标平台信息

裁剪方法

  • 休要裁剪的配置一般以 CONFIG_开头
  • 这个宏会被脚本解析为变量 定义在include/autoconf.mk 中
  • include/autoconf.mk 又会没makefile包含 之后makefile会知道之后怎么进行编译

uboot镜像产生

  • 直接通过参数指定程序入口地址和段段地址

arm-linux-ld -Ttext = 0x3000 -Tdata=0x4000 -e main -o app head.o main.o

相关推荐
网硕互联的小客服4 小时前
Linux服务器磁盘应该如何合理分区?
linux·运维·服务器
警醒与鞭策4 小时前
【无标题】
android·unity·性能优化·游戏引擎·perforce
贵沫末5 小时前
Ubuntu——常用软件安装
linux·运维·ubuntu
Doraemomo6 小时前
Linux内核驱动开发——中断与定时器
linux·运维·驱动开发
2301_808414386 小时前
Linux中动静态库的理解
linux·运维·服务器
传奇开心果编程6 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
M78佐菲7 小时前
ARM学习笔记(11)
linux·arm开发·笔记·嵌入式硬件·学习
M78佐菲7 小时前
ARM学习笔记(10)
linux·arm开发·笔记·嵌入式硬件·学习
半仙白桑7 小时前
内核篇第十五讲:system-V共享内存
linux·共享内存·shmget·shmat·shmdt·shmctl
一条破秋裤8 小时前
Linux 线程创建:pthread_create 与基本回收
java·linux·运维