主题 : 新手求教,如何用USB来自动更新 NAND/NOR Flash Image? 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 103604
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
贡献值: 0 点
综合积分: 44 分
注册时间: 2014-04-30
最后登录: 2014-05-28
楼主  发表于: 2014-05-11 01:46

 新手求教,如何用USB来自动更新 NAND/NOR Flash Image?

就是类似我们安装Windows OS那样,放上DVD,机器起动后会先从DVD,并且开始读盘,否则就从硬盘起动。 我希望如果软件有更新,可以先存入USB。在插上USB盘之后,重起动,板子先看是否有USB,如果有boot loader在USB盘,就自动读出到SDRAM, 然后自动烧入NOR/NAND,这样下次起动后就有新版本OS。这样很方便用户不要上网就能更新。 这需要做些什么? 在哪里改?


*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2014-05-11 21:45
注意三星的6410/210/4412系列的CPU并不支持从USB外部存储器加载bootloader, 但可以支持从外部SD卡存储器启动。因此,要是实现你说的功能,一般来说需要下面几个东西:
1). 支持SD卡启动的bootloader,并且烧写到SD卡的正确位置用来让开发板从SD卡启动模式时加载
2.) Linux内核镜像,可以被1)里的bootloader加载并启动;
3) 一个自定义的initramfs镜像,可以被2)中的内核镜像加载从而启动开发板到一个安装完整Linux的环境,类似于Windows安装DVD;
4) 要更新的完整镜像,包括bootloader,内核,根文件系统镜像,可以被3)中的安装环境加载并下载到NAND Flash的正确位置;

这样可以实现系统从SD卡启动并且自动安装保存在SD卡上的镜像到NAND Flash中。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 103604
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
贡献值: 0 点
综合积分: 44 分
注册时间: 2014-04-30
最后登录: 2014-05-28
2楼  发表于: 2014-05-13 02:31
谢谢! 不过这好像对新手有点难。是不是在Linux OS起来之后再从USB里读,然后写入NAND某个地址更容易些? 这样对用户来说也挺方便的。不过有现成的 USB/SD  接口能很方便的被C应用程序调用来从USB或SD卡读取文件么? 有没有NAND 的 driver  能把任意文件写入NAND的任何地址么?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2014-05-13 16:50

是不是在Linux OS起来之后再从USB里读,然后写入NAND某个地址更容易些?

上面说的方法就是在Linux OS起来之后再把镜像写入NAND Flash里,由3)里面的initramfs实现。


不过有现成的 USB/SD  接口能很方便的被C应用程序调用来从USB或SD卡读取文件么?

通常情况下,镜像是以文件的形式是通过文件系统保存在SD卡上的,可以由C应用程序通过标准的Linux文件系统的系统调用(system call)来操作。当然更简单的是可以利用Shell脚本


有没有NAND 的 driver  能把任意文件写入NAND的任何地址么?

通过Linux内核里的MTD驱动就可以。参考www.linux-mtd.infradead.org/faq/nand.html
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 103604
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
贡献值: 0 点
综合积分: 44 分
注册时间: 2014-04-30
最后登录: 2014-05-28
4楼  发表于: 2014-05-24 13:47

 回 3楼(kasim) 的帖子

Kasim,
谢谢,不过是不是也可以写个应用程序把Flash当成EEPROM 那样去读写? 只要知道各个Image存在什么地方就可以了吧? 这样还方便远程update. 这方法可行么?

*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2014-05-25 08:24

 回 4楼(chentom60) 的帖子

我不太确定你说的方法,不过MTD里的mtdchar驱动的确可以把NAND flash模拟成像EEPROM那样的设备。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."