一、软硬件平台

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

基于TFTP方式加载启动Linux内核的更多相关文章

  1. Spring基于XML方式加载Bean定义信息(又名:Spring IOC源码时序图)-图解

  2. 内核加载与linux的grub

    计算机系统的启动是一个复杂的过程,启动过程大致可以分为以下几个阶段: +------计算机系统启动流程----------------------------- ------------------- ...

  3. Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核

    Qemu搭建ARM vexpress开发环境(二)----通过u-boot启动Linux内核 标签(空格分隔): Qemu ARM Linux 在上文<Qemu搭建ARM vexpress开发环 ...

  4. uboot学习之五-----uboot如何启动Linux内核

    uboot和内核到底是什么?uboot实质就是一个复杂的裸机程序:uboot可以被配置也可以做移植: 操作系统内核本身就是一个裸机程序,和我们学的uboot和其他裸机程序没有本质的区别:区别就是我们操 ...

  5. 动态链接库知识点总结之三(如何以显示的方式加载DLL)

    总结一下如何显示加载方式加载DLL, 首先,我们新建一个win32项目,选择dll,空项目,再添加一个源文件,一个模块定义文件(.def),具体如下图.(详细方法已经在前两篇文章中讲述,如有不懂,打开 ...

  6. ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...

  7. 001-ant design pro安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...

  8. 重新想象 Windows 8 Store Apps (54) - 绑定: 增量方式加载数据

    [源码下载] 重新想象 Windows 8 Store Apps (54) - 绑定: 增量方式加载数据 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 绑定 通过实 ...

  9. 三、js提交请求加载启动动画、请求完成成功回调、注销加载动画

    1.通过Query  post方式进行异步请求方法 jQuery.post(url, [data], [callback], [type]) 参数说明: url:发送请求地址 data:待发送 Key ...

随机推荐

  1. 关于python3链接虚拟机MongoDB 遇到的问题总结

    pymongo.errors.ServerSelectionTimeoutError: 192.168.12.230:27017: [Errno 61] Connection refused 1.如果 ...

  2. nodejs之koa-router与koa-body搭配使用

    简介 koa需要搭配中间件来做接口更方便,使用Koa-body & Koa-router 使用 koa2 创建接口,处理post请求 const koa=require("koa&q ...

  3. python面试30-40题

    1.简述python引用计数机制 python垃圾回收主要以引用计数为主,标记-清除和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题.   引用计数算法 当有1个变量保存了对 ...

  4. linq2db.EntityFrameworkCore 介绍

    linq2db.EntityFrameworkCore 是一个ef core的插件,对linq语法的扩展 对复杂的sql都有很好的支持,他是基于linq2db (provided by LINQ To ...

  5. Nginx的核心功能及应用实战

    反向代理功能及配置: 反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给interne ...

  6. Pychram 在model中修改class属性值后更新到Navicat Premium中

    一.pycharm数据更新的问题bug问题 1.在更改user_email字端属性后出现数据库信息无法更新到数据库,出现的bug原因是数据库修改了属性之后没有做migrate 和 makemigrat ...

  7. Python数据分析几个比较常用的方法

    1,表头或是excel的索引如果是中文的话,输出会出错 ​​解决方法:python的版本问题!换成python3就自动解决了!当然也有其他的方法,这里就不再深究 2,如果有很多列,如何输出指定的列? ...

  8. 字符转ASCII码

    char k = '成'; int str = (int)k; Console.WriteLine(str); 结果25104就是‘成’对应的ASCII值

  9. CentOS挂Windows的NFS备忘

    Windows NFS 安装和配置  注:需要将名称为“所有计算机”的访问类型改为“无访问权限”,再将可访问IP的访问类型改为“读写”,并勾选“允许根目录访问” ,如WINDOWS有防火墙开放“204 ...

  10. mysql四大特性与四种隔离级别

    四大特性 1:原子性.事务是一个不可分割的整体,事务开始的操作,要么全部执行,要么全部不执行. 2:隔离性.同一时间,只允许一个事务请求同一组数据.不同的事务彼此之间没有干扰. 3:一致性.事务开始前 ...