如何在uboot上实现从网络下载版本镜像并直接在内存中加载之?
这是作者近期项目上遇到的一个需求,描述如下:
一块MT7620N的路由器单板,Flash中已存放一个版本并可以通过uboot正常加载并启动。现在需要:在uboot上电启动过程中,通过外部按键触发干涉,使得uboot可以从网络上下载一个临时版本,并直接在内存中启动之。即保证Flash中的原有版本不被更改
解决思路如下:
1. 利用单板上的Factory Reset按键,实现外部按键触发。
在uboot的board_init_r函数中,在调用main_loop死循环之前,检测Factory Reset按键是否被按下。如果按下,则进入新的分支处理流程。
2. 当检测到Factory Reset按键被按下后,则依次执行如下动作:
A. 调用setenv("autostart", "yes"); ---- 临时设置环境变量:autostart=yes 这样:后续通过tftpboot命令下载版本后就会自动下载;同时这样还不影响uboot下原有的下载并烧写版本的命令
B. eth_initialize(gd->bd); --- 建立网络接口
C. sprintf(buf, "tftpboot 0x80c00000 xxxxxxx"); rc = run_command (buf, 0); --- 通过执行tftpboot命令,从网络下载执行镜像文件,并下载到指定内存地址:0x80c00000
特别提出:这里的0x80c00000 是通过和正常从Flash中加载版本的打印输出对比后得到的正确地址;若不是此地址,则会在lzma解压缩之前,报如下异常:
must RESET board to recover
如何在uboot上实现从网络下载版本镜像并直接在内存中加载之?的更多相关文章
- angular 图片加载失败 情况处理? 如何在ionic中加载本地图片 ?
1.angular 图片加载失败 情况处理 在directive中定义组件,在ng-src错误时,调用err-src app.directive('errSrc',function(){ return ...
- 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作
点评:如何在HTML中加载Flash,为网页添加更多的色彩,普通的网页以无法满足用户的需求,接下来为大家介绍下2种在HTML中加载Flash的方法,感兴趣的各位可以适当参考下,希望对你有所帮助 第一种 ...
- android优化从网络中加载图片速度。。
从网络中加载图片主要要注意两个方面的问题: 1.内存管理:图片占的内存很大,假如图片数量多,很容易让系统抛出out of memory的异常. 同时我们也要注意不同android版本中内存管理的区别. ...
- 如何在Skyline中加载ArcGISServer发布的WMS和WMTS服务
如何在Skyline中加载ArcGISServer发布的WMS和WMTS服务? 我这里的测试环境是ArcGISServer10.1和TerraExplorer Pro7.0,主要过程截图如下,
- 如何在maven工程中加载oracle驱动
maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 时间:2015年09月22日 浏览:9361次 在maven ...
- 教你如何在Ubuntu上安装最新的Python版本
参考链接:https://cloud.tencent.com/developer/news/343104
- 如何在Ubuntu上在多个PHP版本之间切换 (for swoole)
摘要: 之前一直用Php7.0,今天想用7.2试下一些特性,安装完之后,切换回7.0却不能再使用7.0的swoole了,原来是切换方式出现了问题 一 从PHP 7.0 切换到 PHP 7.2 Apac ...
- 如何在CentOS上安装Tensorflow的gpu版本?
系统配置 系统版本: Centos7.6 语言: Python3.5(anaconda3 4.2) 框架: Tensorflow 安装依赖 sudo yum install openjdk-8-jdk ...
- .Net语言 APP开发平台——Smobiler学习日志:如何在webview中加载网页
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的“Smobiler Components” ...
随机推荐
- myEclipse的配置
- linux最常用命令整理
linux vim命令跳转到文档开头或末尾 gg:命令将光标移动到文档开头 G:命令将光标移动到文档末尾 <hr/> 网络 # ifconfig # 查看所有网络接口的属性 # iptab ...
- java集合Collection接口
collection集合 Map集合 Hashtable和HashMap的区别: Hashtable的方法是同步的,而HashMap的方法不是.HashMap可以将空值作为一个表的条目的key或val ...
- Tomcat的server.xml配置讲解(一)
一.Tomcat虚拟目录的配置 1.服务器配置 默认端口号为8080,如果要想修改端口号,则可以在Tomcat目录中的conf/server.xml文件,找到如下代码,将端口号改为:80:保存serv ...
- Android studio及eclipse中的junit单元測试
转载请标明出处:http://blog.csdn.net/nmyangmo/article/details/51179106 前一段时间有人问我单元測试的相关内容,我稍作总结做日志例如以下: 由于我接 ...
- android精确绘制文字位置的方法
android 中使用Canvas的drawText绘制文本的位置,是基于基线的. 例如以下图: 当中字母Q的小尾巴在横线以下了. 怎么样找准字母的中心位置呢? 先看以下的样例:(右边的数字,表示字体 ...
- onWindowFocusChanged重要作用(得到/失去焦点call) 、
onWindowFocusChanged重要作用 Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onW ...
- Javascript 判断网页横竖屏
本篇文章由:http://xinpure.com/javascript-to-determine-page-anyway-screen/ Html5 流行至今,自适应的网站已经多如牛毛,但是横竖屏的切 ...
- CSS3图片折角效果
本篇文章由:http://xinpure.com/css3-picture-angle-effect/ 图片折角效果主要是通过设置 border 属性实现的效果 效果预览 效果解析 假设我们将一个元素 ...
- 点击button触发onclick事件判空后依旧自动跳转
这是一个前端的问题. 其中判断字符串为空的脚本代码是这样的: var remark = $("#Remark").val(); //判空.注意:var reg = /空格/g; v ...