目录

平台说明:

1.printenv内容如下:

2.注意:


平台说明:

zynq平台开发:petalinux下载的u-boot2017.1



1.printenv内容如下:

autoload=no                                     //配置自动下载,no
baudrate=115200                            //串口波特率设置
boot_img=BOOT.BIN                        //boot_img启动文件名称:BOOT.BIN
bootcmd=run default_bootcmd                //bootcmd启动命令行为:run default_bootcmd    ,即运行default_bootcmd
bootdelay=4                                //boot延迟4s
bootenv=uEnv.txt                        //bootenv的文件名称为:uEnv.txt
bootenvsize=0x20000                        //bootenvsize=0x20000:bootenv的尺寸为128KB
bootenvstart=0x500000                    //bootenvstart的起始地址:0x500000
clobstart=0x10000000                    //clobstart:??
console=console=ttyPS0,115200            //console变量为:console=ttyPS0,115200

//cp_dtb2ram:拷贝设备树到RAM
//第一步:mmcinfo    ,    输出mmc信息
//第二步:fatload mmc 0:1 ${dtbnetstart} ${dtb_img}    ,下载命令,将dtb_img下载到ram的dtbnetstart地址中
cp_dtb2ram=mmcinfo && fatload mmc 0:1 ${dtbnetstart} ${dtb_img}

//cp_kernel2ram:拷贝内核到RAM
//第一步:mmcinfo    ,    输出mmc信息
//第二步:fatload mmc 0 ${netstart} ${kernel_img}    ,下载命令,将kernel_img下载到ram的netstart地址中
cp_kernel2ram=mmcinfo && fatload mmc 0 ${netstart} ${kernel_img}

//默认启动命令,解释:
//第一步:run uenvboot    ,运行uenvboot命令
//第二步:run cp_kernel2ram    ,运行cp_kernel2ram命令
//第三步:run cp_dtb2ram    ,运行cp_dtb2ram命令
//第四步:运行bootm ${netstart} - ${dtbnetstart}    ,运行bootm命令,启动内核,到这里uboot的所有执行已完成
default_bootcmd=run uenvboot; run cp_kernel2ram && run cp_dtb2ram && bootm ${netstart} - ${dtbnetstart}

//dtb_img:设备树名称system.dtb        
dtb_img=system.dtb
//设备树下载地址:0x11800000
dtbnetstart=0x11800000

//eraseenv:擦除env命令
eraseenv=sf probe 0 && sf erase ${bootenvstart} ${bootenvsize}
//eth0的mac地址:
ethaddr=00:0a:35:00:1e:53

//fault:用于显示错误消息
fault=echo ${img} image size is greater than allocated place - partition ${img} is NOT UPDATED

//fdt的控制地址
fdtcontroladdr=1ffa7f70

//importbootenv:导入bootenv,从SD卡
importbootenv=echo "Importing environment from SD ..."; env import -t ${loadbootenv_addr} $filesize

//install_boot:安装boot,即往mmc 0中写 boot_img!!
install_boot=mmcinfo && fatwrite mmc 0 ${clobstart} ${boot_img} ${filesize}

//install_dtb:安装设备树,即往mmc 0中写设备树
install_dtb=mmcinfo && fatwrite mmc 0 ${clobstart} ${dtb_img} ${filesize}

//install_jffs2:安装文件系统,先擦除,再写入
install_jffs2=sf probe 0 && sf erase ${jffs2start} ${jffs2size} && sf write ${clobstart} ${jffs2start} ${filesize}

//install_bkernel:安装kernel,即往mmc 0中写kernel_img
install_kernel=mmcinfo && fatwrite mmc 0 ${clobstart} ${kernel_img} ${filesize}

//文件系统:rootfs.jffs2
jffs2_img=rootfs.jffs2

//内核名称:image.ub
kernel_img=image.ub

//下面四个是通过tftp下载启动的方式:
load_boot=tftpboot ${clobstart} ${boot_img}
load_dtb=tftpboot ${clobstart} ${dtb_img}
load_jffs2=tftpboot ${clobstart} ${jffs2_img}
load_kernel=tftpboot ${clobstart} ${kernel_img}

loadaddr=0x10000000

//下载bootenv:
//$sdbootdev:$partid    :第一个表示第几个sd卡,第二个表示sd卡的第几个分区
//loadbootenv_addr    :下载地址
//bootenv的文件名称为:uEnv.txt
loadbootenv=load mmc $sdbootdev:$partid ${loadbootenv_addr} ${bootenv}
loadbootenv_addr=0x00100000

nc=setenv stdout nc;setenv stdin nc;

//netboot启动的过程
netboot=tftpboot ${netstart} ${kernel_img} && bootm
netstart=0x10000000

//ps侧的串口设置
psserial0=setenv stdout ttyPS0;setenv stdin ttyPS0

//sd_uEnvtxt_existence_test:sd卡中的txt文本测试
sd_uEnvtxt_existence_test=test -e mmc $sdbootdev:$partid /uEnv.txt

//sd卡更新jffs2
sd_update_jffs2=echo Updating jffs2 from SD; mmcinfo && fatload mmc 0:1 ${clobstart} ${jffs2_img} && run install_jffs2

//sd卡设备为0
sdbootdev=0
//串口设置
serial=setenv stdout serial;setenv stdin serial
//ip地址设置
serverip=192.168.19.128
//测试CRC
test_crc=if imi ${clobstart}; then run test_img; else echo ${img} Bad CRC - ${img} is NOT UPDATED; fi

//test_img
test_img=setenv var "if test ${filesize} -gt ${psize}; then run fault; else run ${installcmd}; fi"; run var; setenv var

uenvboot=if run sd_uEnvtxt_existence_test; then run loadbootenv; echo Loaded environment from ${bootenv}; run importbootenv; fi; if test -n $uenvcmd; then echo Running uenvcmd ...; run uenvcmd; fi
update_boot=setenv img boot; setenv psize ${bootsize}; setenv installcmd "install_boot"; run load_boot ${installcmd}; setenv img; setenv psize; setenv installcmd
update_dtb=setenv img dtb; setenv psize ${dtbsize}; setenv installcmd "install_dtb"; run load_dtb ${installcmd}; setenv img; setenv psize; setenv installcmd
update_jffs2=setenv img jffs2; setenv psize ${jffs2size}; setenv installcmd "install_jffs2"; run load_jffs2 test_img; setenv img; setenv psize; setenv installcmd
update_kernel=setenv img kernel; setenv psize ${kernelsize}; setenv installcmd "install_kernel"; run load_kernel ${installcmd}; setenv img; setenv psize; setenv installcmd

Environment size: 3067/131068 bytes


2.注意:

本人所使用的zynq开发板卡,支持SD卡启动

(1)下载文件说明:image.ub是patalinux软件生成的映像文件,与标准的kernel映像(zImage或uImage)略有区别;

(2)可以修改从sd卡启动,并设置映像文件的名称:

修改过程如下:

U-Boot-PetaLinux> env default -a            # resets environment
U-Boot-PetaLinux> setenv sdboot_devtree "echo boot Petalinux; mmcinfo && fatload mmc 0 0x01000000 zImage && fatload mmc 0 0x02080000 devicetree.dtb && bootz 0x01000000 - 0x02080000"
U-Boot-PetaLinux> setenv default_bootcmd run sdboot_devtree
U-Boot-PetaLinux> saveenv                    #save env to qspi
U-Boot-PetaLinux> run sdboot_devtree         #boot from sd card

uboot的环境变量分析(printenv)相关推荐

  1. uboot环境变量分析

    项目情景 最近我在一个新平台的开发过程中遇到烧录问题. 具体的问题是使用原厂提供的烧录脚本烧录成功,但是固件却没有更新. 其中kernel和dtb烧录指令如下: adnl.exe Partition ...

  2. uboot之bootcmd环境变量分析

    在uboot默认环境变量修改_雪狐JXH的博客-CSDN博客U-BOOT通过修改源码来修改环境变量https://blog.csdn.net/qq_39525606/article/details/1 ...

  3. uboot之环境变量

    一.环境变量基础知识 1.环境变量的作用 环境变量的最大作用就是在我们不需要改变源代码的情况下,改变程序的执行情况.比如我们的bootdelay时间,通过修改对应的环境变量的值,就可以改变uboot开 ...

  4. uboot常用命令(printenv、setenv、movi、saveenv、ping、tftp、nand、mm、mw、md、bootm、go...)

    文章目录 Part1:类似Linux终端的行缓冲命令 Part2:有些命令有简化的别名 Part3:有些命令会带参数 Part4:命令中的特殊符号 Part5:有些命令是一个命令族 Part6:第一个 ...

  5. uboot中环境变量的实现

    1.环境变量介绍 uboot中环境变量的作用类似于全局变量,需要某个环境变量的值时调用getenv函数就可以得到.环境变量会指导程序的运行,不必修改代码重新编译,通过修改环境变量就可以改变uboot的 ...

  6. 从bootm 命令讲起/U-boot的环境变量: bootcmd 和bootargs

    从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址. 这个地方就涉及到u ...

  7. uboot默认环境变量修改

    uboot的默认环境变量决定了系统是通过何种方式启动的,对于定制化的嵌入式系统,uboot的定制化修改也是必要的. uboot有两种修改方式: 1.直接修改源码或者修改uboot配置 2.在uboot ...

  8. PowerPC uboot交叉编译环境搭建说明

                                                                    MPC8640D uboot交叉编译环境搭建说明 目录 1 概括... ...

  9. uboot中环境变量的加载、写入过程详解

    1.uboot启动中环境变量的加载 1.1.uboot加载环境变量流程分析 (1)首先使用默认的环境变量default_environment[]: (2)然后加载SD卡中env分区的环境变量,校验读 ...

最新文章

  1. vue.js 第四课
  2. Spring Cloud构建微服务架构:服务消费(基础)
  3. python实现八皇后问题(百练OJ:2754:八皇后)
  4. vue-element-admin后台管理模板脚手架
  5. java list 移除_java 中List删除实例详解
  6. php ini include,php.ini文件中的include_path设置
  7. 无偏PU learning简介
  8. EFLS开源 | 阿里妈妈联邦学习解决方案详解
  9. Java调试器–权威的工具列表
  10. c++ 随机字符串_第3章 别碰白块(《C和C++游戏趣味编程》配套教学视频)
  11. Pure-Ftp:基于虚拟账号的FTP服务器
  12. FreeBSD8下安装软件相关
  13. [Regionals 2012 :: Asia - Tokyo ]
  14. 使用src.rpm包安装软件
  15. Flash Builder4.7破解方法
  16. win7开启远程桌面
  17. 熊猫烧香病毒 杀毒记
  18. 转行做程序员到底可不可行?转行前先考虑好以下几点
  19. 蓝牙芯片----BK3431开发笔记------RW stack中添加自定义服务教程(4)
  20. 想进入游戏建模行业,必须要了解的基础知识

热门文章

  1. Java断言(assert)
  2. 在Spring MVC中使用Apache Shiro安全框架
  3. 什么是Code Review 代码审查
  4. OpenCV中SUFR、SIFT无法使用的原因及解决办法
  5. 鸟哥的Linux私房菜(服务器)- 簡易 OpenWebMail 設定
  6. 人工智能:第九章 Agent (艾真体)
  7. 《分布式操作系统》知识点(35~38)六
  8. Spring event 使用完全指南
  9. 如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密
  10. 机器学习:数据预处理之独热编码(One-Hot)