• 基于TFTP方式加载启动Linux内核


     

     

     

     

    一、软硬件平台

    1、开发板:创龙AM3359核心板,网口采用RMII形式。

    2、UBOOT版本:U-Boot-2016.05,采用FDT和DM。

    3、交换芯片MARVELL的88E6321.

    二、问题背景

      

        已经基于创龙的3359核心板资料以及UBOOT-2016.05完成了UBOOT的二次开发,实现了网口驱动,在UBOOT命令行中已经能够PING PC,在UBOOT中网口功能正常。

    因为Linux下需重点修改调试网口驱动。所以网口暂时不可用,现在准备使SD卡启动UBOOT,加载设备树文件,内核,文件系统。这样做必须多次插拔SD卡,效率低。

    想使用SD卡启动后,在命令行中设置通过TFTP启动内核和设备树文件,但还是通过SD卡挂载文件系统(因为NFS不可用),研究具体操作如下

    三、准备工作

    1、在Linux虚拟机上安装好TFTP环境;

    2、开发板可以PING通虚拟机。

    四、具体步骤

    1、 启动开发板

    2、 在UBOOT命令行中停住

    3、 测试PING通虚拟机

    4、 设置如下环境变量

    setenv ipaddr 192.168.1.30

    setenv serverip 192.168.1.50(Linux虚拟机地址)

    setenv loadimage  tftp  0x82000000  zImage

    saveenv

    reset

    五、分析

         使用以上步骤就可以实现从SD卡启动UBOOT,从TFTP加载内核,从SD卡相应分区加载设备树文件,从SD卡相应分区挂接文件系统。启动内核。

         具体看下以下启动参数及环境变量:

    /*SD卡启动时,先扫描SD卡是否插入,若检测到SD卡已经插入,则加载SD卡boot分区中的u-boot.img以及zImage内核镜像。加载完成后,运行run args_mmc,加载rootfs分区文件系统,以及设置控制台参数,加载完成后,运行bootz进行从SD卡启动。*/

    mmcboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};run envboot; if run loadimage; then run mmcloados;fi;fi;

    可以看到我们修改了loadimage环境变量,即使用了TFTP方式加载了内核。

    同理。可以修改设备树文件的加载方式(loadfdt环境变量)。

    若要恢复为默认的环境变量,在命令行下输入:

    U-Boot> env default -a

    U-Boot> saveenv

  • 相关阅读:
    vue移动端适配
    vue根据状态改变文字颜色
    vue使用富文本插件
    小程序echart使用
    小程序日历状态圆点
    echars属性详解
    小程序vant文档地址
    vue根据不同文字切换显示不同颜色
    小程序获取用户手机号码
    小程序图片上传
  • 原文地址:https://www.cnblogs.com/lh03061238/p/10583992.html
Copyright © 2020-2023  润新知