传参过程

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文件分析相关推荐

  1. 设备树学习(四、内核head.S对uboot传参的处理)

    之前在uboot学习中分析bootm原理的,我们知道了uboot启动内核是通过传入三个参数来启动的. kernel_entry为内核zImage在内存的首地址. 之前我们传的三个参数分别是: 0,芯片 ...

  2. 回调函数自定义传参_koroFileHeader:一个用于生成文件头部注释和函数注释的插件...

    小金子 读完需要 2分钟 速读仅需 1 分钟 大家好,我是你们的小金子. 今天给大家分享的这个工具呢?对于使用 VS Code 的同学来讲,是一个好东西. koroFileHeader,一个在 vsc ...

  3. Windbg内核调试之四: Dump文件分析

    Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...

  4. android资apk资源加密,4399游戏盒 安卓APK sign 加密分析 之 so文件分析

    4399游戏盒 安卓APK加密分析 + so文件分析 4399 游戏盒都知道吧 今天玩他的加密 不过他的加密在so里面 是个md5  java层首先拼接的一段明文  传入到so里面在so里面有一个秘钥 ...

  5. 【Android 逆向】Android 系统文件分析 ( /proc/ 目录文件分析 | 记录系统和进程信息 | version 内核版本信息文件 )

    文章目录 一.proc 目录简介 二.version 内核版本信息文件 一.proc 目录简介 进入 /proc/ 目录 , 查看该目录下的文件 , 该目录中的文件的作用 , 主要是记录系统和进程的信 ...

  6. MIT6.828 boot.S文件分析

    #include <inc/mmu.h># Start the CPU: switch to 32-bit protected mode, jump into C. # The BIOS ...

  7. 全志V3s学习记录(5)uboot:传参(boot.scr)参数配置(script.bin)

    文章目录 一.boot.scr的简介与制作 1.1 BSP内核配置 1.2 主线内核配置 1.3 使用mkimage工具 使用mkimage生成boot.scr 拷贝boot.scr到启动卡的第一分区 ...

  8. Vue路由传参的几种方式

    前言:顾名思义,vue路由传参是指嵌套路由时父路由向子路由传递参数,否则操作无效.传参方式可以划分为params传参和query传参,params传参又可以分为url中显示参数和不显示参数两种方式.具 ...

  9. U-Boot的LDS文件分析

    U-Boot.lds文件分析: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32- ...

最新文章

  1. 对象----《你不知道的JS》
  2. Tkinter的Text组件
  3. [SCOI2012] 喵星球上的点名
  4. matlab库存点仿真教程,基于MATLABSimulink库存系统建模与仿真.doc
  5. Modbus教程| Modbus协议,ASCII和RTU帧,Modbus工作
  6. numpy 生成任意shape的随机整数
  7. Leetcod每日一题:151.reverse-words-in-a-string(翻转字符串里的单词)
  8. 火狐浏览器手机版_火狐浏览器第三方编译版:tete009 Firefox
  9. Install Java on Ubuntu server
  10. bootstrap 使用总结
  11. pdf加密阅读html,pdf文档加密如何解除
  12. STM32 - L4系列芯片手册: LTDC功能
  13. 目标文件(.obj)的COFF文件结构
  14. ZBrush中保存历史记录太多该如何解决
  15. 远程桌面提示 “终端服务器超出了最大允许连接数” 的解决方法
  16. 基于Docker的Redis集群搭建
  17. android 解决ScrollView中的子布局不能够填充整个ScrollView
  18. 16g电脑内存有什么好处_16G电脑运行内存可以达到什么样子。
  19. python 合并文件夹内所有Excel文件 xslx
  20. IDM浮动条无法弹出怎么办?

热门文章

  1. mac写python3_跟我读python3文档:004_mac与python3配置
  2. 得力人脸识别考勤机密码设置_百度大脑人脸识别公有云日均调用量过亿 成为业内第一...
  3. python装keras_python – 在anaconda中安装keras时出错. / p KER...
  4. listener filter servlet_实战Spring Boot 2.0系列:Listener, Servlet和Filter
  5. eeglab教程系列(12)-使用ICA分解数据
  6. 新上市Lighthouse专用芯片TS3633规格介绍
  7. “让技术做好事”,最特殊的创投在大湾区成立
  8. 高糊视频秒变4K,速度比TecoGAN快了9倍!东南大学提出新的视频超分辨率系统
  9. 刚输一行代码就报5次假漏洞,npm让程序员们累觉不爱
  10. 我在A4纸上看宫崎骏动画