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

     在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的环境变量就会拼结起来形成完整的变量。

时间: 2024-09-27 07:48:21

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

u-boot中分区和内核MTD分区关系

一.u-boot中环境变量与uImage中MTD的分区关系 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 一般我们只需要分3-4个区,第一个为boot区,一个为boot参数区(传递给内核的参数),一个为内核区,一个为文件系统区.(但是有的内核就会有很多分区,比如内核参数会有两个,还有会Logo的地址) 而对于bootloader中只要能将内核下载到A~B区的A地址开始处就可以,C~D区的C起始地址下载文件系统--.这些起始地

u-boot 环境变量参数设置

今天本来是烧写内核,结果一不小心把uboot也整不能用了,无奈之下只好重新烧个uboot,等都弄好以后,发现系统还是启动不了,原来是启动参数设置不对,于是找到了这篇文章,//是我添加的内容.   原文地址:http://blog.chinaunix.net/u3/94312/showart_1923637.html 原文:      看到这个标题,可能觉得这个并没有什么的,其实不然,编好了u-boot了,但是如何来使用确不是那么简单的,想当初我将uboot制作出来后以为全部都搞定了,屁颠屁颠的烧

Visual Studio 2008 、 Windows 环境变量介绍 和 如何在文件中引用环境变量 .

Visual Studio 2008  和 Windows 环境变量对设置 相对路径很重要,这样便于代码的移植,即使换一台计算机,代码不用更改配置,直接就能用. 可以在项目的"工具""属性页"对话框中任何接受字符串的位置使用这些宏.这些宏不区分大小写.  关于如何自己定义环境变量详见我的另一文章:http://blog.csdn.net/jtop0/article/details/7574139     宏 说明 $(RemoteMachine) 在"调试

uboot 环境变量

从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部0×40字节的信息,将uImage定位到正确的地址,同时找到linux的内核入口地址. 这个地方就涉及到uImage的头部0×40字节信息到底是什么的问题?uboot提供了mkimage命令去把0×40字节加在linux内核头部. mkimage -n "Kernel 2.4.18″ -A arm -O linux -T kernel -C none -a 30007fc0 -e 30008000 -d

uboot环境变量(设置bootargs向linux内核传递正确的参数)

这是我uboot的环境变量设置,在该设置下可以运行initram内核(从内存下载到nandflash再运行),但是运行nfs根文件系统的时候一直出错,各种错误.查看了很多资料后猜想应该是uboot传递给linux内核的参数有问题,也就是bootargs的设置有问题. #printenv bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 rootfstype=yaffs2 rw mem=64M bo

uboot环境变量与内核MTD分区关系

uboot 与系统内核中MTD分区的关系: 分区只是内核的概念,就是说A-B地址放内核,C-D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等. 1:在内核MTD中可以定义分区A~B,C~D......并予以绝对的地址赋值给每个分区.我们可以来看看在内核中是怎样来对MTD进行分区的:arch/arm/plat-s3c24xx/common-smdk.c static struct mtd_partition smdk_default_nand_part[] = { [0] = {

U-boot的环境变量: bootcmd 和bootargs

U-boot的环境变量: bootcmd 和bootargs   u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数.   现在我的bootcmd的参数设置为:bootcmd=nfs 0x30008000 192.168.1.149:/opt/FriendlyARM/uImage;bootm 表示uboot以nfs的方式加载位置在于192.168.1.149:/opt/

嵌入式应用中CGI编程中POST、GET及环境变量详解

原载地址:http://3633188.blog.51cto.com/3623188/828095     1.POST和GET      一个CGI程序在于服务器之间的信息传输和数据传输一般通过两种方法,即POST和GET.具体是哪一种方法这需要通过CGI的一个环境变量REQUEST_METHOD判断(具体怎么判断我会在下面详细讲解),在这之前先讲一下URL编码.      1.1 URL编码       虽然在设置表单信息的传输方式时有POST和GET两种方法,但是不管采取哪种方法,浏览器采

shell-linux中Makefile引用的环境变量跟系统的环境变量不是同一个吗

问题描述 linux中Makefile引用的环境变量跟系统的环境变量不是同一个吗 makefile引用了$(HOME),值是/root,但是在shell中是/home/william,而且export的各种环境变量都不生效,请问是怎么回事 解决方案 如果是全局的,就是一样的. 解决方案二: 你是不是root用户执行的makefile,这样环境变量跟你用户权限时不一样