Chinaunix首页 | 论坛 | 博客
  • 博客访问: 932559
  • 博文数量: 70
  • 博客积分: 1741
  • 博客等级: 上尉
  • 技术积分: 2476
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-05 14:46
个人简介

全志全系列芯片产品方案开发 A20/A33/A64/A40/A60/A83/A63/H3/H5/H6/H8

文章存档

2018年(1)

2012年(20)

2011年(49)

分类: LINUX

2012-09-13 22:37:55

    此版本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论坛  
     下载地址:
    如果有问题请和我联系:

阅读(7758) | 评论(1) | 转发(5) |
给主人留下些什么吧!~~

roamerlin2014-06-20 14:58:18

博主,最近我也在做U盘自启动,想问下你用run_command依次执行usb start,fatload,nand erase,nand write这些命令,是要在终端手动输入么