转: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. 在Xcode中使用自定义的代码片段提高效率

    拖动代码的时候按住option键,很难拖,注意方法:< 引用于:http://www.2cto.com/kf/201409/336245.html

  2. Django Model笔记

    常用数据类型 # https://docs.djangoproject.com/en/1.8/ref/models/fields/#field-types BooleanField:布尔类型true/ ...

  3. HUD-5379

    Mahjong tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. Java Socket编程基础篇

    原文地址:Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Sock ...

  5. C# 中从程序中下载Excel模板

    方法一: #region 下载模板 /// <summary> /// 下载模板 /// </summary> /// <param name="sender& ...

  6. python中使用pyqt做GUI小试牛刀

    import sys from PyQt4 import QtGui , QtCore class LIN(QtGui.QMainWindow): def _init_(self): QtGui.QM ...

  7. Linux 基础——处理文件与目录的命令

    继续第三天学习,每天下班后积累一点点,始终相信厚积薄发. 一.处理文件的命令 touch dest_file:在当前目录下创建指定的文件. cp source dest:将指定的猿文件复制到目标文件, ...

  8. MySQL 的数据存储引擎

    MySQL的存储引擎 InnoDB: MySQL5.5之后的默认存储引擎. 采用MVCC来支持高并发,并且实现了四个标准的隔离级别(默认可重复读). 支持事务,支持外键.支持行锁.非锁定读(默认读取操 ...

  9. WIN2003配置多个网站

    刚刚在IIS下配置两个个网站,让客户端都用域名的方式访问,发现用主机头方式可以实现. 1. 首先你得有两个傻逼网站源码. 2. 为这两个网站注册域名并绑定IP,在万网上就可以搞定.譬如 www.a.c ...

  10. 前端读者 | 如何判断Javascript对象是否存在

    本文来自@阮一峰 Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言 ...