• (三)ubuntu学习前传—uboot常见环境变量


    1、环境变量如何参与程序运行
    (1)环境变量有2份,一份在Flash中,另一份在DDR中。uboot开机时一次性从Flash中读取全部环境变量到DDR中作为环境变量的初始化值,然后使用过程中都是用DDR中这一份,用户可以用saveenv指令将DDR中的环境变量重新写入Flash中去更新Flash中环境变量。下次开机时又会从Flash中再读一次。
    (2)环境变量在uboot中是用字符串表示的,也就是说uboot是按照字符匹配的方式来区分各个环境变量的。因此用的时候一定要注意不要打错字了。

    (3)如果环境变量写写错了,例如打算写:set bootdelay 10而写成了set botdelay 10然后save后重启后,发现bootdelay并没有改变。这是因为我们环境变量写错了,此时我们重新输入set bootdelay便可删除已建好的botdelay环境变量。

    2、自动运行倒数时间:bootdelay

    3、网络设置:ipaddr serverip
    (1)ipaddr是开发板的本地IP地址
    (2)serverip是开发板通过tftp指令去tftp服务器下载东西时,tftp服务器的IP地址。
    (3)gatewayip是开发板的本地网关地址
    (4)netmask是子网掩码
    (5)ethaddr是开发板的本地网卡的MAC地址。

     4、自动运行命令设置:bootcmd

    (1)uboot启动后会开机自动倒数bootdelay秒,如果没有人按下回车打断启动,则uboot会自动执行启动命令来启动内核。
    (2)uboot开机自动启动时实际就是在内部执行了bootcmd这个环境变量的值所对应的命令集。


    (3)bootcmd=movi read kernel 30008000; bootm 30008000 意思是:将iNand的kernel分区读取到DDR内存的0x30008000地址处,然后使用bootm启动命令从内存0x30008000处去启动内核。
    (4)set bootcmd printenv,然后saveenv;然后重启则会看到启动倒数后自动执行printenv命令打印出环境变量。这个小实验说明开机自动执行了bootcmd。

    执行了set bootcmd printenv后,然后save。然后重启,uboot bootdelay也会倒数,但是倒数结束后并不执行启动内核。而是只会执行printenv,打印环境变量。   

    (5)set bootcmd 'movi read kernel 30008000; bootm 30008000'

     如果写成 set bootcmd 'movi read kernel 30008000; bootm 30008000就会出错,因为中间有分号,不是一体的。因此我们要加单引号,即:set bootcmd 'movi read kernel 30008000; bootm 30008000'便可,加单引号后,uboot便认为单引号内是一体的。

     5、uboot给kernel传参:bootargs

    (1)linux内核启动时可以接收uboot给他传递的启动参数,这些启动参数是uboot和内核约定好的形式、内容,linux内核在这些启动参数的指导下完成启动过程。这样的设计是为了灵活,为了内核在不重新编译的情况下可以用不同的方式启动。
    (2)我们要做的事情就是:在uboot的环境变量中设置bootargs,然后bootm命令启动内核时会自动将bootargs传给内核。
    (3)bootargs=console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3 意义解释:
    console=ttySAC2,115200 控制台使用串口2,波特率115200.
    root=/dev/mmcblk0p2 rw 根文件系统在SD卡端口0设备(iNand)第2分区,根文件系统是可读可写的
    init=/linuxrc linux的进程1(init进程)的路径
    rootfstype=ext3 根文件系统的类型是ext3
    (4)内核传参非常重要。在内核移植的时候,新手经常因为忘记给内核传参,或者给内核传递的参数不对,造成内核启动不起来。

  • 相关阅读:
    memwatch使用简化
    memwatch检测内存泄露
    mtrace检测内存泄露
    2.14 环境变量及参数
    设计模式[索引]
    二叉树遍历
    AppCan 双击返回按钮退出应用
    MySQL语句相关经验总结
    mysql连接失败或出现“Too many connections”错误
    让IE的Button自适应文字宽度兼容
  • 原文地址:https://www.cnblogs.com/zhangshenghui/p/5841874.html
Copyright © 2020-2023  润新知