新路程------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

相关文章

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

配置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++代码的时,在链接的时候,我们并不知