日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uboot的环境变量分析(printenv)

發布時間:2025/3/21 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uboot的环境变量分析(printenv) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

平臺說明:

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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。