全志H3 uboot传参到内核分析,boot.scr文件分析
传参过程
uboot倒计时结束,默认以bootcmd
来启动内核,它等于
fatload mmc 0:1 ${scriptaddr} boot.scr; source ${scriptaddr}
上面两个语句的含义是:从mmc 0设备的第一个分区加载boot.scr文件到scriptaddr地址,然后执行boot.scr脚本。
查看mmc 0:1中的文件,的确有boot.scr:
在uboot源码中搜索scriptaddr,发现它定义在include/configs/sunxi-common.h
它的值为43100000,和uboot启动信息对应上了:
boot.scr脚本内容如下:
# Recompile with: mkimage -C none -A arm -T script -d boot.cmd boot.scr
# CPU=H3
# OS=friendlycore/ubuntu-oled/ubuntu-wifiap/openwrt/debian/debian-nas...echo "running boot.scr"
setenv load_addr 0x44000000
setenv fix_addr 0x44500000
fatload mmc 0 ${load_addr} uEnv.txt # 从MMC 0读取uEnv.txt到0x44000000
env import -t ${load_addr} ${filesize} # 从uEnv.txt中引入环境变量fatload mmc 0 ${kernel_addr} ${kernel} # 从MMC 0读取zImage文件到0x46000000
fatload mmc 0 ${ramdisk_addr} ${ramdisk} # 从MMC 0读取rootfs.cpio.gz文件到0x47000000
setenv ramdisk_size ${filesize}fatload mmc 0 ${dtb_addr} sun8i-${cpu}-${board}.dtb # 从MMC 0读取设备树文件文件到0x48000000
fdt addr ${dtb_addr} # 指定设备树在内存中的地址# merge overlay
fdt resize 65536 # Resize fdt to size + padding to 4k addr
overlay search # overlay 文件系统
for i in ${overlays}; doif fatload mmc 0 ${load_addr} overlays/sun8i-h3-${i}.dtbo; thenecho "applying overlay ${i}..."fdt apply ${load_addr}fi
done
fatload mmc 0 ${fix_addr} overlays/sun8i-h3-fixup.scr
source ${fix_addr}# setup XR819 MAC address
if test $board = nanopi-duo; then fdt set xr819 local-mac-address ${wifi_mac_node}; fi# setup boot_device
fdt set mmc${boot_mmc} boot_device <1>setenv overlayfs data=/dev/mmcblk0p3
#setenv hdmi_res drm_kms_helper.edid_firmware=HDMI-A-1:edid/1280x720.bin video=HDMI-A-1:1280x720@60
setenv pmdown snd-soc-core.pmdown_time=3600000setenv bootargs "console=${debug_port} earlyprintk
root=/dev/mmcblk0p2 rootfstype=ext4 rw rootwait fsck.repair=${fsck.repair}
panic=10 fbcon=${fbcon} ${hdmi_res} ${overlayfs} ${pmdown}"bootz ${kernel_addr} ${ramdisk_addr}:${ramdisk_size} ${dtb_addr}
uEnv.txt文件内容
#################################################################
# General options
#################################################################
ramdisk=rootfs.cpio.gz
kernel=zImage
fix_addr 0x44500000
kernel_addr=0x46000000
ramdisk_addr=0x47000000
dtb_addr=0x48000000debug_port=ttyS0,115200
fsck.repair=yes# 0 = /dev/fb0, First framebuffer
# 1 = /dev/fb1, Second framebuffer
# README: linux/Documentation/fb/fbcon.txt
fbcon=map:0#################################################################
# Overlay options
# README: /overlays/README.txt
##################################################################uart0/enable=no
#uart1/enable=no
#uart2/enable=no
#uart3/enable=no#i2c0/enable=no
#i2c1/enable=no
#i2c2/enable=no#spi0/enable=no#pwm0/enable=no#ir/enable=no#tft28/enable=no
#tft28/speed=50000000
#tft28/rotate=90
#tft28/fps=33
#tft28/debug=0x0#tft13/enable=no
#tft13/speed=50000000
#tft13/rotate=0
#tft13/fps=0x0
#tft13/debug=0x0
从上面的分析可以看出内核、设备树的地址都是在uEnv.txt文件中定义的,如果需要修改,修改这个文件就可以了。
同时可以知道设备树的名字是 sun8i-${cpu}-${board}.dtb
,
生成boot.scr
boot.scr是由boot.cmd使用mkimage工具生成的。
mkimage工具在uboot/tools文件夹下
boot.scr放在TF卡第一分区。
其他的参考
全志v3s学习笔记(4)——u-boot传参(boot.scr)和参数配置(script.bin)文件
制作uboot 能执行的脚本
等后续用到再来仔细研究。
全志H3 uboot传参到内核分析,boot.scr文件分析相关推荐
- 设备树学习(四、内核head.S对uboot传参的处理)
之前在uboot学习中分析bootm原理的,我们知道了uboot启动内核是通过传入三个参数来启动的. kernel_entry为内核zImage在内存的首地址. 之前我们传的三个参数分别是: 0,芯片 ...
- 回调函数自定义传参_koroFileHeader:一个用于生成文件头部注释和函数注释的插件...
小金子 读完需要 2分钟 速读仅需 1 分钟 大家好,我是你们的小金子. 今天给大家分享的这个工具呢?对于使用 VS Code 的同学来讲,是一个好东西. koroFileHeader,一个在 vsc ...
- Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...
- android资apk资源加密,4399游戏盒 安卓APK sign 加密分析 之 so文件分析
4399游戏盒 安卓APK加密分析 + so文件分析 4399 游戏盒都知道吧 今天玩他的加密 不过他的加密在so里面 是个md5 java层首先拼接的一段明文 传入到so里面在so里面有一个秘钥 ...
- 【Android 逆向】Android 系统文件分析 ( /proc/ 目录文件分析 | 记录系统和进程信息 | version 内核版本信息文件 )
文章目录 一.proc 目录简介 二.version 内核版本信息文件 一.proc 目录简介 进入 /proc/ 目录 , 查看该目录下的文件 , 该目录中的文件的作用 , 主要是记录系统和进程的信 ...
- MIT6.828 boot.S文件分析
#include <inc/mmu.h># Start the CPU: switch to 32-bit protected mode, jump into C. # The BIOS ...
- 全志V3s学习记录(5)uboot:传参(boot.scr)参数配置(script.bin)
文章目录 一.boot.scr的简介与制作 1.1 BSP内核配置 1.2 主线内核配置 1.3 使用mkimage工具 使用mkimage生成boot.scr 拷贝boot.scr到启动卡的第一分区 ...
- Vue路由传参的几种方式
前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式可以划分为params传参和query传参,params传参又可以分为url中显示参数和不显示参数两种方式.具 ...
- U-Boot的LDS文件分析
U-Boot.lds文件分析: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32- ...
最新文章
- 对象----《你不知道的JS》
- Tkinter的Text组件
- [SCOI2012] 喵星球上的点名
- matlab库存点仿真教程,基于MATLABSimulink库存系统建模与仿真.doc
- Modbus教程| Modbus协议,ASCII和RTU帧,Modbus工作
- numpy 生成任意shape的随机整数
- Leetcod每日一题:151.reverse-words-in-a-string(翻转字符串里的单词)
- 火狐浏览器手机版_火狐浏览器第三方编译版:tete009 Firefox
- Install Java on Ubuntu server
- bootstrap 使用总结
- pdf加密阅读html,pdf文档加密如何解除
- STM32 - L4系列芯片手册: LTDC功能
- 目标文件(.obj)的COFF文件结构
- ZBrush中保存历史记录太多该如何解决
- 远程桌面提示 “终端服务器超出了最大允许连接数” 的解决方法
- 基于Docker的Redis集群搭建
- android 解决ScrollView中的子布局不能够填充整个ScrollView
- 16g电脑内存有什么好处_16G电脑运行内存可以达到什么样子。
- python 合并文件夹内所有Excel文件 xslx
- IDM浮动条无法弹出怎么办?
热门文章
- mac写python3_跟我读python3文档:004_mac与python3配置
- 得力人脸识别考勤机密码设置_百度大脑人脸识别公有云日均调用量过亿 成为业内第一...
- python装keras_python – 在anaconda中安装keras时出错. / p KER...
- listener filter servlet_实战Spring Boot 2.0系列:Listener, Servlet和Filter
- eeglab教程系列(12)-使用ICA分解数据
- 新上市Lighthouse专用芯片TS3633规格介绍
- “让技术做好事”,最特殊的创投在大湾区成立
- 高糊视频秒变4K,速度比TecoGAN快了9倍!东南大学提出新的视频超分辨率系统
- 刚输一行代码就报5次假漏洞,npm让程序员们累觉不爱
- 我在A4纸上看宫崎骏动画