转:http://blog.chinaunix.net/uid-22030783-id-3347599.html

此版本uboot在XC2440_uboot_V1.3版本上修改得来,是为我们的一个大客户做的量产工具和智能升级工具。

    以前给XC2440核心板烧程序用电脑的USB口,每次还要接上串口,按选项选择烧写功能,电脑上也要频繁操作选择下载的文件。小量的话还好说,就是要费点时间。量大就不能这么干了,有的客户一次要1千套,这么搞会搞死人的。
   同时还有个问题一直困扰我,用2440做的产品,如果要更新系统怎么办。而且东西已经卖到了国外,不可能是让客户把东西发过来让我们给更新吧,也不可能让用户自己接个串口输命令吧。必须想个让用户自己就能方便操作的办法,做个智能的升级工具。
   首先我想到了网络,因为设备上是带有网口的,但是这还需要做个上位机软件,很麻烦,不愿投入开发这个。因为用过uboot的U盘烧写系统镜像的功能,就想到用U盘更新系统比较方便,设备上有USB HOST接口,U盘也方便操作,往里面放入要更新的镜像即可。
    因为设备一开机就直接就系统,只有在接上串口后,在开机时输入个键值才能进uboot,因为设备上没有留出串口,即使有串口和usb device,我们也不可能让用户去学习操作这些对他们没用的东西。于是我就根据我们做手机开发时,在手机开机的同时按住一个按键,即可进入 bootloader的下载模式得到启发,也做一个这样的检测机制。这样开机时只要按住一个按键若干秒后即可进入下载模式,然后再用按一个按键就开始自动 执行我设置好了从U盘烧写镜像的程序。
 
操作方法:
一、烧写uboot镜像到Nandflash的bios分区,也可以烧写到Norflash中,在Norflash中烧写Nandflash
 
二、准备一个U盘或SD/TF卡读卡器,接在电脑上,先将准备烧写的u-boot.bin,zImage.bin,rootfs.bin三个文件复制到U盘根目录下
 
注意:文件名不能错,否则找不到文件。U盘中尽量不要装太多文件,否则影响查找文件的速度 
 
三、将U盘插在开发板的USB HOST接口上,按如下步骤操作(其中3~8是自动执行的)
 
1. 开机的同时按住KEY1,大概3秒后,看到LED1亮起即可松开按键,此时进入udisk download模式 
2. 按一下Key2键,隔1秒后观察LED2会快速闪烁两下,此时开始烧写uboot镜像 
3. 烧写完uboot后,LED2会长亮一秒后熄灭,此时已经烧写完uboot镜像 
4. 接着LED3会快速闪烁两下,此时开始烧写zImage镜像 
5. 烧写完zImage后,LED3会长亮一秒后熄灭,此时已经烧写完zImage镜像 
6. 接着LED4会快速闪烁两下,此时开始烧写rootfs镜像 
7. 烧写完rootfs后,LED4会长亮一秒后熄灭,同时LED1也熄灭,此时已经烧写完rootfs镜像 
8. 自动重启系统,启动linux系统
 
程序的大体思路是这样:
    开机程序跑到main.c中的main_loop函数,在判断bootdelay,读取连接按键的GPIO管脚状态,看否按键按下,如果没有按键按下,就照常往下跑,直接进系统。
    如果按键被按下,程序就停下来,用一个while等待另一个按键按下。当另一个按键按下了,开始执行后面的程序,就是用run_command依次执行 usb start,fatload,nand erase,nand write这些命令把boot,kernel,rootfs都烧写完成后reset uboot即可,中间还可以加入LED闪烁和蜂鸣器发声的动作表示烧写状态,利用GPIO的操作即可
 
    uboot镜像和使用说明已上传至xcembed论坛  http://www.xcembed.com
    如果有问题请和我联系:xcembed@gmail.com
 

在XC2440上实现使用U盘自动更新系统的uboot的更多相关文章

  1. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  2. 在linux上搭建SVN服务器并自动更新至WEB目录

    1.仓库放在 /var/svn/ 目录下,并且仓库名为 project 2.创建用户组user,该组下添加两个成员user1.user2,密码直接用用户名,两用户可以checkout代码和提交代码 3 ...

  3. NetworkComms 文件上传下载和客户端自动升级(非开源)

    演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...

  4. 转载:性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项

    这段时间AX查询变得非常慢,每天都有很多锁. 最后发现是数据库统计信息需要更新. ----------------------------------------------------------- ...

  5. 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项

    原文:性能优化--统计信息--SQLServer自动更新和自动创建统计信息选项 原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server-a ...

  6. win10系统如何关掉系统自动更新

    越来越多的电脑使用者都在使用Windows10系统,尽管系统是一代代更新的,但难免有槽点,Windows10系统也不例外,最大的槽点就是“自动更新”的功能.当然,“自动更新”的功能也是相当有用处的.  ...

  7. Archlinux 的U盘自动装载(三)udevil

    U盘的自动装载方法,目前我已经使用过以下几种方法: udev 规则 基于 udev 规则的 Shell script udisks 以及 udisks2 结果,总是存在这样那样的小问题.例如,文件名乱 ...

  8. 33.Linux-实现U盘自动挂载(详解)

    1.当我们每次插入u盘后,都会自动创键U盘的设备节点/dev/sda%d 这是因为里面调用了device_create()实现的, busybox的mdev机制就会根据主次设备号等信息,在/dev下创 ...

  9. 48.Linux-普通U盘以及多分区U盘自动挂载

    在上章学习33.Linux-实现U盘自动挂载(详解)后,只是讲解了普通U盘挂载,并没有涉及到多分区U盘,接下来本章来继续学习 1.多分区U盘和普通U盘区别 1)U盘插上只会创建一个/dev/sda文件 ...

随机推荐

  1. Canvas开发库封装

    一.Canvas第三方类库 1.常见的第三方类库 konva.js <style> body{ margin:0; } </style> </head> <b ...

  2. python 数据类型 变量 注释

    基本数据类型: 数字 number :整数 int . 浮点数 float.复数 complex.布尔值 bool 列表 list  :  使用 方括号  []  表示,例如: [1,2,'abc'] ...

  3. pdf2htmlEX安装和配置

    1.下载 安装的依赖: sudo yum install cmake gcc gnu-getopt java-1.8.0-openjdk libpng-devel fontforge-devel ca ...

  4. agc016D - XOR Replace(图论 智商)

    题意 题目链接 给出两个长度为\(n\)的数组\(a, b\) 每次可以将\(a\)中的某个数替换为所有数\(xor\)之和. 若\(a\)数组可以转换为\(b\)数组,输出最少操作次数 否则输出\( ...

  5. LeetCode解题报告—— 4Sum & Remove Nth Node From End of List & Generate Parentheses

    1. 4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + ...

  6. ssm框架问题和Java

    http://blog.csdn.net/zzjjiandan/article/details/20853233 BeanFactory的作用是什么? BeanFactory是配置.创建.管理bean ...

  7. 访问Github慢的解决办法

    http://blog.csdn.net/sunsteam/article/details/63253933 http://tool.chinaz.com/dns 151.101.196.249  g ...

  8. Java学习笔记(七)——获取类中方法的信息,java的LinkedList

    [前面的话] 在实际项目中学习知识总是最快和最有效的,既能够较好的掌握知识,又能够做出点东西,还是简单的知识总结,最近一直在总结笔记,写的东西还是比较水,希望慢慢可以写出一些干货. 学习过程中的小知识 ...

  9. AC日记——明明的烦恼 bzoj 1005

    1005 思路: prufer编码+组合数: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1005 #de ...

  10. node-java模块

    node-java模块 node-java使得开发人员,可以调用java优秀的jar包资源.有些方法逻辑,可能node不容易实现,但是java就可以很方便去做.这个时候,就可以使用node-java这 ...