zoukankan      html  css  js  c++  java
  • 利用uboot下载引导Kernel(TFTP)以及挂载网络Rootfs(NFS)

    背景:

      在嵌入式开发中,经常需要对系统的各个部分进行修改。倘若每次修改都烧写到板子中,一来浪费时间,其次影响存储介质寿命。

      所以,需要一些手段来避免此类问题。

    概览:

    1. 编译uboot

    2. 将uboot写入SD卡,并通过硬件设置从sd卡启动uboot程序

    3. 编译kernel,设置其可以通过NFS挂载根文件系统

    4. 开发环境安装TFTP服务器、NFS服务器

    5. 目标环境设置uboot参数,并进行测试

    6. 制作根文件系统(optional)

    7. 将uboot参数改回,烧写各部分到板子上

    第2步不一定是用sd卡,根据硬件特性的差异决定,也可以考虑将uboot写入板子中,再进行此后的操作。

    在这里我们重点介绍第三步以及第五步。其他步骤请参考其他资料。第三步以修改bootcmd为主,第五步以修改bootargs为主。

     

    设置uboot,使其通过下载并引导内核

    1.确保配置好了tftp服务器,并在tftp服务器指定的根目录下存放kernel镜像

    2.明白镜像的运行地址位于何处(第三步中需要用到)

    3.在uboot的下载模式中,设置bootcmd

    setenv bootcmd 'tftp 0x42000000 kernel;bootm 0x42000000'
    saveenv

    嵌入式系统Linux内核对nfs文件系统的支持:

    这里只做简单的介绍,具体细节可以参考:《配置uboot指定nfs挂载根文件系统

    1.进入内核配置页,根据以下参数进行配置

    -> Networking support
       -> Networking options
         [*]  IP: kernel level autoconfiguration
    ​
    -> File systems
       [*] Network File Systems
         <*>  NFS client support
         <*>   NFS client support for NFS version 3
         [*]    NFS client support for the NFSv3 ACL protocol extension
         [*]  Root file system on NFS
     

    2.uboot修改bootargs(最好是备份好bootargs) 添加下划线部分*其中的ip根据自己的实际情况进行修改

    setenv bootargs 'root=/dev/nfs nfsroot=${serverip}:/xxx/fs,v3,tcp rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask} ::eth0:on init=/linuxrc console=ttyAMA0,115200'
    saveenv

     

     

    这样一来,调试就非常方便而且高效了。

    改编自:《Tiny210v2( S5PV210 )平台下: 利用uboot启动远程Kernel(TFTP)以及挂载远程ROOTFS(NFS)

     

  • 相关阅读:
    新浪微博爬虫项目
    time
    黑客增长
    python2 3 区别
    爬虫高性能相关
    登录_爬取并筛选拉钩网职位信息_自动提交简历
    破解极验验证码
    tesseract-ocr 传统验证码识别
    刻意练习
    计算学员的考试总成绩以及平均成绩
  • 原文地址:https://www.cnblogs.com/schips/p/12096537.html
Copyright © 2011-2022 走看看