飞思卡尔IMX6修改uboot默认启动参数

来源:互联网 发布:javascript编程题目 编辑:程序博客网 时间:2024/06/06 09:05

硬件平台:飞思卡尔IMX6

内核版本:kernel3.0.35


问题来源:

开发板的默认显示方式是FPC接口800*480的屏,本项目中用到的屏是工业级的1024*768接口的LVDS屏,更换屏之后,除了移植相应的屏驱动和触摸驱动之外,就是uboot传输给内核的启动参数bootargs需要修改,涉及到批量生产之后,不可能每台机器在烧写玩系统之后,还去命令行修改参数,所以在uboot源码里要将默认的启动参数bootargs修改好


解决方法:

第一步:定位修改的环境变量名称

拿到这个问题,我想到的入手点就是查看uboot环境变量,进入uboot命令行模式,输入print,得到一堆环境变量如下

MX6Q SABRESD U-Boot > print
bootdelay=1
baudrate=115200
ipaddr=192.168.1.103
serverip=192.168.1.101
netmask=255.255.255.0
loadaddr=0x10800000
rd_loadaddr=0x11000000
gatewayip=192.168.1.2
netdev=eth0
ethprime=FEC0
bootloaderimgname=u-boot.bin
kernelimgname=uImage
nfsroot=/opt/EmbedSky/root_nfs
ethaddr=12:32:43:34:21:43
nfsserverip=192.168.1.100
displayArgs=video=mxcfb0:dev=ldb,TQ-ldb_1280768,if=RGB666,bpp=32 ldb=dul0 video=mxcfb1:off video=mxcfb2:off fbmem=48M
bootargs_base_ubuntu=setenv bootargs console=ttySAC0,115200 ${displayArgs}
bootargs_base_linux=setenv bootargs console=ttySAC0,115200 ${displayArgs}
bootargs_base_andorid=setenv bootargs console=ttySAC0,115200 init=/init ${displayArgs} vmalloc=400M androidboot.console=ttySAC0 androidboot.hardware=freescale
bootargs_nfs=setenv bootargs ${bootargs} root=/dev/nfs ip=${ipaddr} fec_mac=${ethaddr} nfsroot=${nfsserverip}:${nfsroot},v3,tcp
bootcmd_net=run bootargs_base_andorid bootargs_nfs; tftpboot ${loadaddr} ${kernelimgname}; bootm
bootargs_mmc_ubuntu=setenv bootargs ${bootargs} root=/dev/mmcblk0p1 rootwait
bootcmd_mmc_ubuntu=run bootargs_base_ubuntu bootargs_mmc_ubuntu; mmc dev 3; mmc read ${loadaddr} 0x800 0x3000; bootm
bootargs_mmc_linux=setenv bootargs ${bootargs} root=/dev/mmcblk0p1 rootwait
bootcmd_mmc_linux=run bootargs_base_linux bootargs_mmc_linux; mmc dev 3; mmc read ${loadaddr} 0x800 0x3000; bootm
bootcmd_mmc_android=run bootargs_base_andorid; booti mmc3
fastboot_dev=mmc3
bootcmd=run bootcmd_mmc_ubuntu
splashimage=0x30000000
splashpos=m,m
lvds_num=1
stdin=serial
stdout=serial
stderr=serial
ethact=FEC0

分析这些环境变量,跟bootargs类似的,就几个,而且我用的是Linux,所以定位bootargs在本系统中被命名为bootargs_base_linux,再查看bootargs_base_linux,发现显示参数是另外一个变量displayArgs,继而得出:在uboot源码中修改此参数即可

第二步:在源码中找到displayArgs的初始化位置,通过在souce insight中查找,定位于include/configs/mx6q_sadroid.h的81行

第三步:另一个问题来了,怎么修改?对于天嵌的IMX6板子有一个非常简单的办法,在uboot菜单栏中,选中display args的选项之后,保存退出,到命令行模式,print  displayArgs即可得到需要的displayArgs值,然后将其复制到uboot源码include/configs/mx6q_sadroid.h中替换displayArgs的值

第四步:重新编译uboot源码,得到uboot.bin


注意:第三步中,如果是其他公司的板子,可能没有uboot菜单栏的形式,这样可能不知道怎么去修改值,这里还有其他的办法,同样是在source insight中搜索displayArgs,肯定搜到有对这个参数进行处理的代码,比如天嵌的IMX6板子上,就是在common/cmd_menu.c文件中有对其进行的处理,在这里就可以找到自己对应的屏对应的displayArgs设置




0 0
原创粉丝点击