转: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. tiny-rtems-src

    https://github.com/RTEMS/rtems-libbsd https://github.com/freebsd/freebsd/tree/642b174daddbd0efd9bb5f ...

  2. js-xlsx操作excel表格

    1导入与导出功能实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  3. 前言-关于学习OC还是学习Swift的个人理解

    一直在考虑一个问题!到底是学swift好呢还是学OC好. 然后得到了解答: 1.如果你只是对苹果系统软件开发有兴趣,把开发作为一种业务爱好,那么选swift就没错,swift也是大势所趋. 2.如果你 ...

  4. leetcode 之Rotate List(18)

    这题我的第一想法是用头插法,但实际上并不好做,因为每次都需要遍历最后一个.更简单的做法是将其连成环,找到相应的位置重新设头结点和尾结点.这过 有很多细节需要注意,比如K有可能是大于链表长度的,如何重新 ...

  5. redis使用教程

    一.redis 的安装 官方就是个坑:只说make一下即可用,确实可以用,我以为装好了,结果好多问题: 安装步骤:make =>  make test  => make install 1 ...

  6. linux命令(18):chmod命令

    1. 命令格式: chmod [-cfvR] [--help] [--version] mode file 2. 命令功能: 用于改变文件或目录的访问权限,用它控制文件或目录的访问权限. 3. 命令参 ...

  7. vue 数组和对象不能直接赋值情况和解决方法

    Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项时,例如:vm.items[indexOfItem] = newValue 当你修改数组的长度时,例如:vm.items.length = ...

  8. 友盟移动开发平台.NET版本SDK

    由于项目需要给安卓.ios提供提送消息服务.找到了umeng这个平台,官方竟然没有提供.net版本的SDK,同时项目需要就拿出来和大家分享一下需要的同学们可以做个参考,建议官方提供.net版本. 这里 ...

  9. 转:json注入

    现在大部分web采用ajax通信,数据表现为json格式,因此可以尝试进行json注入. json注入:根据实际情况进行注入.有的时候,可能是为了方便,有人会手动拼接下JSON,但是这种随手代码,却可 ...

  10. ECNU 2018 10月月赛 E 盖房子 (bitset + 倍增)

    题目链接  ECNU Monthly 2018.10 Problem E 从开场写到结束…… 显然要把三角形分成上下两部分. 把每一部分分成三部分,以上部分为例. 上面和右边,以及左下角的正方形. 也 ...