如何解决在UBOOT中通过串口输入长度较大的环境变量的问题

简介:      在uboot中,需要很多的环境变量,比如内核的启动参数、网络IP地址、启动设备块选择、延时设置等,当有些变量较长,串口输入时,超过一定长度时就会以“O”出现,“O”是黑色的实心圈,当你save以后再printenv后,你会发现你想保存的环境变量只有一部分、不全,没有达到效果,那怎么解决长度达的环境变量呢?笔者通过实践提供如下两种解决办法:     改变串口接收BUFFER的大小。

     在uboot中,需要很多的环境变量,比如内核的启动参数、网络IP地址、启动设备块选择、延时设置等,当有些变量较长,串口输入时,超过一定长度时就会以“O”出现,“O”是黑色的实心圈,当你save以后再printenv后,你会发现你想保存的环境变量只有一部分、不全,没有达到效果,那怎么解决长度达的环境变量呢?笔者通过实践提供如下两种解决办法:

    <一> 改变串口接收BUFFER的大小。如果你有uboot的源代码,编译比较方便的话,这种方法是彻底方便的。在common/main.c文件中,有一个宏叫MAX_CMDBUF_SIZE,也就是串口接收buffer的大小,在uboot工程中,默认的大小为256,将此宏的值改大即可,比如调整成1024,这样就能扩大通过串口输入环境变量的长度。

    <二>使用中间变量。如果没有uboot工程源码,又必须保存一个超长的环境变量的话,那就可以通过中间变量来完成。比如有一个环境变量的为BOOTARGS=ABCDEFGHIJKLMNOPQRSTUVWXYZ,但是一次又无法保存这么长的变量,我们就可以把BOOTARGS分成两截、或者多截来完成。先设置中间变量TMP=OPQRSTUVWXYZ,再在串口中输入setenv BOOTARGS BCDEFGHIJKLMN$TMP,这样保存以后,BOOTARGS的环境变量就会拼结起来形成完整的变量。

目录
相关文章
|
5月前
|
机器学习/深度学习 Serverless 文件存储
函数计算操作报错合集之在网络设置完成后进行挂载的指令,报错:找不到网络路径,该如何处理
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
6月前
|
存储 Linux C++
【Linux】详解信号的保存&&信号屏蔽字的设置
【Linux】详解信号的保存&&信号屏蔽字的设置
|
6月前
|
存储 编解码 Shell
【Shell 命令集合 系统设置 】⭐Linux 设置和调整帧缓冲设备 fbset命令 使用指南
【Shell 命令集合 系统设置 】⭐Linux 设置和调整帧缓冲设备 fbset命令 使用指南
112 0
|
6月前
|
Linux
Linux在文件特定偏移量处读写pread和pwrite
系统调用 pread()和 pwrite()完成与 read()和 write()相类似的工作,只是前两者会在 offset 参数所指定的位置进行文件 I/O 操作,而非始于文件的当前偏移量处,且它们不会改变文件的当前偏移量。
134 0
Linux在文件特定偏移量处读写pread和pwrite
|
存储 自然语言处理 编译器
BIT-7文件操作和程序环境(16000字详解)
BIT-7文件操作和程序环境(16000字详解)
77 0
树莓派gpio指令问题:找不到指令和不能识别板子类型
安装wiringpi库之后,运行gpio readall,想查看一下引脚状态。但是出现下面的错误提示:Oops – unable to determine board type… model: 17,字面意思就是没有识别板子类型。错误提示:找不到该指令,也是同样的解决方法。
646 0
win10反复提示显示输入信号超出有效范围1680*1050@60Hz
win10反复提示显示输入信号超出有效范围1680*1050@60Hz
1046 0
|
存储 编译器 内存技术
Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
388 0
|
存储 编译器 C语言
支持硬件输入输出的IN指令和OUT指令及测试输入和输出程序
支持硬件输入输出的IN指令和OUT指令及测试输入和输出程序
179 0
|
芯片
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
具体单板的按键驱动程序(查询方式)-以IMX6ull单板为例子
97 0