首页 > 其他分享 >uboot: 制作环境变量的二进制文件

uboot: 制作环境变量的二进制文件

时间:2024-04-30 20:11:38浏览次数:16  
标签:kernel uboot addr 二进制 dtb env run 环境变量

依赖项

uboot需要设置相关配置,比如存储的地址,大小,存储介质等等,一般是使用文件env.bin烧写到flash的某一段固定区域。

#define CONFIG_ENV_IS_IN_MMC
#define CONFIG_SYS_MMC_ENV_DEV 0
#define CONFIG_ENV_OFFSET (0x2E0200)
#define CONFIG_ENV_SIZE (0x4000) /* env size */

工具

mkenvimage

示例:mkenvimage -p 0x00 -s 0x4000 -o env.bin env.conf

-p,非有效数据区域,填充的值,可以根据实际需要来设置;

-s,整个镜像的大小,环境变量一般也不大,1k-16k我认为就够用了;

env.conf是输入的文件,env.bin是输出的文件;

 

注意env.conf格式,示例:

setargs=setenv bootargs console=ttyAMA0,115200n8 root=/dev/mmcblk${rootfsdev}p2 rootfstype=ext4 rootwait init=/sbin/init loglevel=7 printk.time=1 consoleblank=0 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1
bootcmd=run setargs; run mmcboot
bootdelay=1
bootdev=1
bootpart=1
dtb_addr=0x7A000000
dtb_name=s5p4418-nanopi2-rev01.dtb
dtb_reserve=if test -n "$dtb_addr"; then fdt addr $dtb_addr; fi
fdt_high=0xffffffff
kernel=zImage
load_dtb=fatload mmc ${bootdev}:${bootpart} ${dtb_addr} ${dtb_name}; run dtb_reserve
load_kernel=fatload mmc ${bootdev}:${bootpart} ${loadaddr} ${kernel}
loadaddr=0x71080000
mmcboot=run load_kernel; run load_dtb; bootz ${loadaddr} - ${dtb_addr}
rootfsdev=0

最后

uboot启动后,会读取对应的地址的环境变量,先进性crc校验,如果成功,则认为数据有效,否则使用默认的环境变量。

 

标签:kernel,uboot,addr,二进制,dtb,env,run,环境变量
From: https://www.cnblogs.com/yddeboke/p/18168613

相关文章

  • C# 二进制数使用按位与运算(&)来获取子集选中的值。
    需求:现在有一个二进制数整集all,一个子集sub,要求根据整集的值获取子集被选中的值是多少?//假设完整值是15,1248的和intall=15;//1248的和intsub=7;//124的和intresult=all⊂//输出7,选中124int......
  • 【Quarkus】quarkus配置Map/jib设置镜像环境变量
    根据官网文档描述设置环境变量参数应该是一个Map<String,String>对象,但找了很多地方没找到Map对象的配置,经过尝试得到了有效配置,可供参考:./mvnwcleanpackage-U-Dmaven.test.skip=true-Dquarkus.container-image.build=true\#配置项是quarkus.jib.environment-variabl......
  • 二进制文件内存映射
    点击查看代码#对二进制文件做内存映射#使用mmap模块对文件进行内存有映射操作importmmapimportos.pathdefmemory_map(filename,access=mmap.ACCESS_WRITE):""":paramfilename::paramaccess:mmap.ACCESS_WRITE:读写mmap.A......
  • 二进制数组
    点击查看代码#读写二进制结构数组fromfunctoolsimportpartialfromstructimportStruct#Writedefwrite_records(records,format,f):"""Writeasequenceoftupletoabinaryfileofstructures"""record_struct=Struct(format)......
  • 复杂二进制数据
    点击查看代码#读取嵌套型和大小可变的二进制结构fromitertoolsimportchainimportstruct#多边形数组polys=[[(1.0,2.1),(2.0,3.2),(3.0,4.3)],[(1.1,2.2),(2.1,3.3),(3.1,4.4),(4.1,5.5)],[(1.2,2.3),(2.2,3.4),(3.1,4.5)],]#......
  • gdb 根据c语言二进制文件进程号查看内部多线程任务
    C语言二进制文件a编译时添加了-g(gdb调试),但是gdba这种方式有时不容易复现一些场景。这时可以先正常启动a,然后根据a的进程号启动gdb调试。#1.找到程序进程号psaux|grepa#2.使用GDB附加到该进程sudogdb-p[PID]#3.使用infothreads命令来列出......
  • p牛的环境变量的洞和shellshock的利用区别
    上一次简单探索了一下dash之后我把目标转向了p牛提到的很像的一个CVE:shellshock破壳漏洞简单看一下payload,两者确实很像,了解一番过后就在想p牛的那个payload能不能通过shellshock的方式通过cgi去利用环境部署:这里选择直接使用vulhub部署docker镜像在vulhub中shellshock在bash文......
  • etcd集群节点扩容【二进制】
    1、更新etcd集群证书信息#生成新证书cfsslgencert-initcaca-csr.json|cfssljson-bareca-cfsslgencert-ca=ca.pem-ca-key=ca-key.pem-config=ca-config.json-profile=wwwserver-csr.json|cfssljson-bareserver2、拷贝证书到旧节点和新节点#旧节点cp~/TLS/e......
  • HarmonyOS配置ohpm环境变量
    1、找到你的ohpm安装目录2、双击执行一下init.bat3、复制bin路径4、双击path5、点击新增,然后保存应用即可6、最终效果......
  • windows设置 java 的环境变量
    1.首先打开“我的电脑”里的环境变量如下的 ,选中 “属性” 2.选中属性之后打开高级系统设置 3.点击环境变量3.在系统变量中点击新建4.如图所示: 新建变量名:JAVA_HOME   变量值为:E:\ProgramFiles\java\jdk-22 (这个值是你自己下载jdk的路径)5.点......