新路程------uboot环境变量没生效

2024-09-04 00:48

本文主要是介绍新路程------uboot环境变量没生效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    之前刷文件系统一种出错,出错log如下

hisilicon # sf probe 0;mw.b 0x82000000 0xff 0x1800000;tftp 0x82000000 rootfs_ucl
ibc_64k.jffs2;sf erase 0x500000 0x1800000;sf write 0x82000000 0x500000 0x1800000


32768 KiB hi_sfc at 0:0 is now current device
ETH0: PHY(phyaddr=1, rmii) link UP: DUPLEX=FULL : SPEED=100M
MAC:   00-00-23-34-45-66
TFTP from server 192.168.1.1; our IP address is 192.168.1.155
Download Filename 'rootfs_uclibc_64k.jffs2'.
Download to address: 0x82000000
Downloading: #################################################
done
Bytes transferred = 12178136 (b9d2d8 hex)
Erasing at 0x1d00000 -- 100% complete.
Writing at 0x1d00000 -- 100% complete.
hisilicon # saveenv
Saving Environment to SPI Flash...
Erasing SPI flash, offset 0x00080000 size 256K ...done
Writing to SPI flash, offset 0x00080000 size 256K ...done
hisilicon #
hisilicon # bootm
Wrong Image Format for bootm command
ERROR: can't get kernel image!

而且用

reset也一样的错误

结果认真一检查,发现参数不对,没加‘单引号,引以为戒。

本来是这样set bootargs mem=64M console=ttyAMA0,115200n8 mtdparts=hi_sfc:1M(uboot),4M(kernel),24M(root),3M(data) root=/dev/mtdblock2 rootfstype=jffs2


set bootcmd sf probe 0;sf read 0x82000000 0x100000 0x400000\;bootm 0x82000000

现在是

set bootargs 'mem=64M console=ttyAMA0,115200n8 mtdparts=hi_sfc:1M(uboot),4M(kernel),24M(root),3M(data) root=/dev/mtdblock2 rootfstype=jffs2'


set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000\;bootm 0x82000000'

查看0x82000000地址的内容

hisilicon # md 0x82000000
82000000: 56190527 de38bd8c b46c9e59 a0ca3100    '..V..8.Y.l..1..
82000010: 00800080 00800080 3a4c8930 00020205    ........0.L:....
82000020: 756e694c 2e332d78 35332e34 00000000    Linux-3.4.35....
82000030: 00000000 00000000 00000000 00000000    ................
82000040: e1a00000 e1a00000 e1a00000 e1a00000    ................
82000050: e1a00000 e1a00000 e1a00000 e1a00000    ................
82000060: ea000002 016f2818 00000000 0031caa0    .....(o.......1.
82000070: e1a07001 e1a08002 e10f2000 e3120003    .p....... ......
82000080: 1a000001 e3a00017 ef123456 e10f2000    ........V4... ..
82000090: e38220c0 e121f002 00000000 00000000    . ....!.........
820000a0: e59f47a4 ee110f30 e3800040 ee010f30    .G..0...@...0...
820000b0: eb00005a e28f0f4a e8901c4e e590d01c    Z...J...N.......
820000c0: e0400001 e0866000 e08aa000 e5da9000    ..@..`..........
820000d0: e5dae001 e189940e e5dae002 e5daa003    ................
820000e0: e189980e e1899c0a e08dd000 e28da801    ................
820000f0: e3a05000 e28aa901 e154000a 2a000016    .P........T....*

所以其实问题的关键在于,如果先烧kernel再烧文件系统,虽然已经将文件系统从内存的0x82000000这个地方写到spi flash里了,但是bootm又从0x82000000这个地方启动,本来这里就是文件系统在内存里的位置,当然读不到内核了

所以正确的方式应该是

如果单独烧内核,bootm 0x82000000可以生效

但是如果要烧文件系统,只能reset,因为内存里的0x8200这个地方已经变了

这篇关于新路程------uboot环境变量没生效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134523

相关文章

配置Java(JDK)环境变量

一、配置JDK环境变量 将JDK-22压缩包加压缩到指定目录下面,本机路径是:C:\Program Files\Java(可以加压缩到自己的指定路径,记住这个路径,配置环境变量时候要使用)。 鼠标右键“此电脑”,点击“属性”,点击“高级系统设置”,然后进入“环境变量”。 点击“新建”,然后变量名填“JAVA_HOME”,变量值填自己的JDK的下载路径,我这里是“C:\\P

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

[Linux]:环境变量与进程地址空间

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 环境变量 1.1 概念 **环境变量(environment variables)**一般是指在操作系统中用来指定操作系统运行环境的一些参数,具有全局属性,可以被子继承继承下去。 如:我们在编写C/C++代码的时,在链接的时候,我们并不知

【20240907问题记录(未解决)】Conda环境问题:SSH与本地环境变量不一致

Conda 允许用户在同一系统上创建多个独立的Python环境。然而,最近遇到了一个奇怪的问题:通过SSH连接到远程Ubuntu机器时,Conda环境变量的行为与本地机器不一致。以下是具体遇到的问题: 1. 问题描述 在本地Ubuntu机器上,我的conda的python版本是3.6,而pip版本可以通过命令 pip --version 查看,显示为: pip 21.3.1 from /ho

配置JAVA环境的时候,环境变量中administrator的用户变量和系统变量的区别?

迁移项目到新的服务器上: 需要Java运行环境时,经常要配置环境变量,如图所示 这里有administrator的用户变量(U),和系统变量(S), 那么,它们之间有什么区别呢? 简单的说,一个是当前用户使用,你用其它用户登陆,这个环境变量就不起作用了。 系统变量,是对所有用户都可使用的。 简单的说: 系统变量:不管以哪个用户名登陆到计算机都能使

postman基础教程-02环境变量

编写的API往往需要在多个环境下执行,而Postman 提供了两种类型的变量:环境变量和全局变量,从而很好的解决了这个问题。 环境变量有效范围仅仅在于你所选取的环境,全局变量对所有的环境都试用 api可能需要在拨通的环境中运行,所以api请求的服务器地址不能写死,希望是可以配置的,创建环境变量有多种方式。 环境变量 1.手工预先创建环境变量 点击小眼睛按钮即可创建环境变量,第一个是环境变量

react antd table expandable defaultExpandAllRows 不生效问题

原因:defaultExpandAllRows只会在第一次渲染时触发 解决方案:渲染前判断table 的datasource 数据是否已准备好 {pageList.length > 0 ? (<TablerowSelection={rowSelection}columns={columns}dataSource={pageList}style={{ marginTop: 24 }}pagina

java复习第三课,java环境变量的配置以及测试

JDK、JRE、JVM的区别 JDK:Java Development Kit,Java的开发工具包 JRE:Java Runtime Environment,Java运行时环境 JVM:Java Virtual Machine,Java虚拟机 他们三个是包含的关系,JDK包含了JRE,JRE里包含了JVM(看下图,了解即可) java虚拟机在windows系统,Liunx系统,

笔记整理—uboot番外(6)针对x210的网卡说明

对于x210而言,在三星中与九鼎官方的uboot都默认使用了二号串口。详见CONFIG_SERIALn(n=1~4)。         更改串口后,应先插回原串口,进行iROM打印,内部iNnad校验核失败的信息,之后再插入其串口进行启动。         修改CCONFIG_NETMASK等多个宏可以修改默认的网络环境。在进行完成修改后,如果依旧没进行改变,则应对iNand