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

时间:2021-10-17 04:02:26

 

 

 

 

一、软硬件平台

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 &lpar;54&rpar; - 绑定&colon; 增量方式加载数据

    [源码下载] 重新想象 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. ES6入门系列四(测试题分析)

    0.导言 ES6中新增了不少的新特性,来点测试题热热身.具体题目来源请看:http://perfectionkills.com/javascript-quiz-es6/. 以下将一题一题来解析what ...

  2. JavaScript基础插曲---apply,call和URL编码等方法

    Js基础学习 Js的压缩: 就是利用js的语法格式通过缩短变量名,去掉空格等来进行压缩. Apply和call的使用 1:apply方法:应用某一对象的方法,用于一个对象替换当前对象.主要是改变thi ...

  3. mac 10&period;9开启有道词典取词功能

    取词时候,有道词典给出提示,说要去开启辅助功能,但提示的是在mac 10.8上面怎么操作,在10.9的话,就是以下位置去改了. 补充以下: 在mac机器上,实际上大多数的单词都能从自带的词典中查找到. ...

  4. java数组元素的输出

    java数组元素的输出 利用Arrays.toString(数组名即可) String[] name = {"Tom", "John", "Nike& ...

  5. 25个让人无法抗拒的HTML5网站设计实例

    原文地址:http://www.goodfav.com/html5-website-designs-8272.html HTML5在其功能方面给网络市场带来了惊人的改进. HTML5是万维网联盟,在起 ...

  6. &lbrack;jobdu&rsqb;矩形覆盖

    推导一下,就是斐波那契数列那样的.但是要注意的是,int存不下,算一下需要long long才行,因为是指数级上升的. #include <cstdio> #define LEN 75 # ...

  7. codeforces 546E&period; Soldier and Traveling 网络流

    题目链接 给出n个城市, 以及初始时每个城市的人数以及目标人数.初始时有些城市是相连的. 每个城市的人只可以待在自己的城市或走到与他相邻的城市, 相邻, 相当于只能走一条路. 如果目标状态不可达, 输 ...

  8. c&num; ProxyServer 代理服务器 不是很稳定

    /**C# Programming Tips & Techniquesby Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill ...

  9. 使用 ASP&period;NET Core MVC 创建 Web API(一)

    从今天开始来学习如何在 ASP.NET Core 中构建 Web API 以及每项功能的最佳适用场景.关于此次示例的数据库创建请参考<学习ASP.NET Core Razor 编程系列一> ...

  10. Python OS模块中的fork方法实现多进程

    import os '''使用OS模块中的fork方式实现多进程''' '''fork方法返回两次,分别在父进程和子进程中返回,子进程中永远返回0,父进程返回的是子进程的is''' if __name ...