历史上的今天
返回首页

历史上的今天

今天是:2025年02月09日(星期日)

正在发生

2018年02月09日 | 利用NAND Flash实现对嵌入式系统的远程更新

2018-02-09 来源:21ic

引言


嵌入式系统在各个领域有着广泛的应用,嵌入式系统的维护与升级也变得日益重要。由于新技术的不断涌现和对系统功能、性能等要求的不断提高,开发者必须能够针对系统进行升级和维护,以延长系统的使用周期,改善系统性能,增强系统适应性。     


传统的嵌入式升级方式通常由维护人员到达设备现场进行重新烧写系统或者更换Flash存储部件,当设备数量庞大并且分布范围广泛时,这种升级维护方式的工作量将非常大,而且耗费的时间长、成本高。随着嵌入式技术的迅速发展,嵌入式系统的远程升级技术得到了快速发展。参考文献提出了一种基于GPRS的嵌入式系统软件的远程在线升级,通过GPRS网络实现对ARM嵌入式终端的系统软件进行在线升级。这种方法的不足在于无法实现系统本身的远程升级。参考文献实现了一种在Bootloader中实现嵌入式系统自动升级的方法,这种方法是将映像文件存储在CF卡中,系统重启时Bootloader将检测CF卡中的映像文件,读取映像文件并烧写到目标板的Flash中,实现升级。如果终端的数量较大且分布广泛,采用这种方法会增加很大的工作量。     


本文针对嵌入式Linux操作系统提出了一种新的更新机制,并且基于ARM9微处理器和NAND Flash存储器,对uboot和Linux内核进行修改,实现了对嵌入式Linux系统的远程自动更新。克服了传统方法工作量大的缺点,具有操作简单、更新速度快的特点。 


1 基本原理 

1.1 总体结构     


支持远程自动更新的嵌入式Linux系统机构,它可以分为嵌入式终端和远程管理系统两部分。系统的总体结构如图1所示,嵌入式终端采用基于ARM9架构的AT91RM9200微处理器,采用扩展的32MB SDRAM,由2片16位数据宽度的SDRAM芯片HY57V281620并连而成,采用64MB NANDFla sh存储芯片K9F1208,运行嵌入式Linux系统。远程管理系统选用PC机。嵌入式终端通过以太网连接到远程管理系统,管理人员可以通过telne t即可对各个嵌入式终端进行监控、管理和远程更新。

1.2 系统更新流程     

本设计对uboot和Linux内核进行改造,使其支持YAFFS2文件系统,对系统添加ftp、telnet等应用服务。系统更新流程如图2所示。系统正常运行时管理人员可以通过telnet远程登录到嵌入式终端进行监控和管理。当需要对系统进行更新时,通过远程管理系统的ftp客户端登录到嵌入式终端,将需要更新的内核映像和文件系统上传到NAND Flash。上传完毕后对原有的内核映像和文件系统进行备份并重启系统。系统重启后uboot将NAND Flash中更新后的内核映像和文件系统搬运到SDRAM中,然后跳转到SDRAM中启动Linux系统,挂载YAFFS2文件系统,启动各种应用服务。


2 关键技术

2.1 uboot支持YAFFS2文件系统

YAFFS2是专门针对嵌入式设备,特别是使用NAND Flash作为存储器的嵌入式设备而创建的一种文件系统。对uboot进行修改,使其支持YAFFS2文件系统,能够将系统内核和文件系统烧写到NAND Flash,同时也能够在NAND Flash中引导启动系统。NAND Flash的分布图如图3所示。系统烧写时,首先用JTAG丁具将uboot烧写到NAND Flash的最前面;然后在uboot上执行tftp命令将内核映像zImage和根文件系统ramdisk传送到SDRAM中;在uboot上执行ymount命令挂载yaffs2文件系统;在uboot上执行ywrm命令可以将zImage和ramdisk烧写到NAND Flash中,此时也可以通过yls命令看到已经烧写的zImage和ramdisk。系统运行时,uboot从NAND Flash中引导zImage和ramdisk,在uboot上执行ymount命令挂载YAFFS2文件系统;执行yrdm命令将zImage和ramdisk读到SDRAM相应的地址中;执行go命令开始引导内核,首先解压ramdisk.gz文件,然后跳转到zImage处执行,zImage自解压后调用start_ker_nel()启动内核。


本实验是将uboot直接烧写在NAND Flash的chunk中,uboot在剩余的空间上挂载YAFFS2文件系统,并将zImage和ramdisk写入文件系统。当系统运行起来后,在相同的NAND Flash空间上挂载YAFFS2文件系统后,可以看到和编辑uboot写入的zImage和ramdisk。同样uboot在启动时也可以看到kernel写入NAND Flash的文件。这样就实现了在uhoot和kernel中都可以升级和更新系统。 


2.2 YAFFS2文件系统制作     Y


AFFS(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,它是一种类似于JFFS2的日志型文件系统。相对于JFFS2,YAFFS减少了一些功能,因此速度更快、占用内存更少,并且对NAND Flash具有很好的保护机制,能够延长NAND Flash的使用寿命。因此,YAFFS文件系统的出现,使得价格低廉的NAND Flash芯片具有高效性和健壮性。基于NANDFlash的YAFFS文件系统结构框图如图4所示。目前有YAFFS和YAFFS2 2个版本,2个版本的主要区别之一在于YAFFS2能够更好地支持大容量的NAND Flash芯片。

嵌入式Linux内核本身并不支持YAFFS2文件系统,实现Linux内核对YAFFS2文件系统的支持有2种方法:一种是直接把YAFFS2编译到内核,另外一种是将YAFFS2编译成单独的模块进行加载。为了方便调试,本文选用第二种方法。首先下载YAFFS2源码,这里要注意uboot中的YAFFS2应该和内核中的版本一致。然后将YAFFS2源码解压缩,进行相应的代码修改,编译生成yaffs2.ko模块。将此模块加到ramdisk中,系统启动后挂载yaffs2.ko模块,此时就可以对NAND Flash进行读写。 


结语     


本文针对嵌入式Linux操作系统,基于uboot和内核对YAFFS2文件系统的支持,利用NAND Flash实现对嵌入式系统的远程更新。本系统从NAND Flash中引导内核与文件系统,可以省去NOR Flash,降低成本。通过以太网对远程嵌入式终端进行自动更新,具有操作简单、更新速度快的特点。


推荐阅读

史海拾趣

Blue Giga公司的发展小趣事

收购后,Blue Giga在芬兰埃斯波的研发中心继续发挥其技术创新的优势,不断推出新产品和解决方案。同时,借助Silicon Labs的全球销售网络,Blue Giga的产品开始进入更多国家和地区的市场。公司的业务范围不断扩大,应用领域也更加广泛,涵盖了工业自动化、消费类电子产品、汽车等多个领域。

这五个故事描绘了Blue Giga从创立到发展的过程,展示了其在电子行业中的努力和成就。虽然每个故事都基于事实,但具体细节可能因缺乏详细资料而有所简化或推测。如需更深入的了解,建议查阅Blue Giga的官方资料或相关新闻报道。

德旭电子(DEXU)公司的发展小趣事

随着产品质量的不断提升和市场份额的逐步扩大,德旭电子开始注重品牌建设和市场拓展。公司积极参加各类行业展会和交流活动,展示自身实力和产品优势。同时,德旭电子还加大了广告宣传力度,通过线上线下相结合的方式提升品牌知名度和美誉度。

在市场拓展方面,德旭电子不仅深耕国内市场,还积极开拓国际市场。公司凭借优质的产品和专业的服务赢得了越来越多客户的信赖和支持。国际市场的拓展为德旭电子的持续发展注入了新的动力。

富之光(Fujicon)公司的发展小趣事

随着全球化进程的加速,富致科技也积极实施国际化战略。公司不仅在欧洲、北美等地设立了销售和服务网络,还通过参加国际展会、建立海外研发中心等方式,不断提升品牌影响力和市场竞争力。同时,富致科技还注重与全球顶尖企业和研究机构的合作,共同推动PPTC技术的创新与发展。

Axiomtek公司的发展小趣事

为了寻求更广阔的发展空间,富致科技积极参与各类产业交流活动。例如,在2023年7月,富致科技的董事长陈继圣和总厂长叶敬强前往中国大陆芜湖市进行考察交流,参观了奇瑞新能源汽车股份有限公司等企业,并与芜湖宏景电子、安瑞光电、致通汽车电子等产业链相关企业进行了深入交流。这些交流不仅让富致科技更加了解大陆市场的需求和潜力,也为双方未来的合作奠定了良好的基础。

Custom Electronics Inc公司的发展小趣事

在电子行业的早期阶段,CEI凭借其卓越的研发团队和创新能力,成功开发出一款具有革命性的新型电容器。这款电容器以其高效能、长寿命和稳定性强的特点,迅速在市场中获得认可。CEI借此机会,进一步扩大了生产规模,提高了产品质量,逐渐确立了其在电子行业中的领先地位。

Edcon Components Netherlands Cv公司的发展小趣事

Edcon Components Netherlands Cv自成立之初,就深知技术创新是企业生存和发展的关键。在电子行业飞速发展的背景下,公司投入大量资源进行研发,成功推出了一系列高性能、低成本的电子元器件。这些产品不仅满足了市场对高质量电子产品的需求,还为公司赢得了良好的口碑。随着技术的不断迭代更新,Edcon逐渐在电子元器件市场占据了重要地位。

问答坊 | AI 解惑

求助大家

请问大家型号为2407的DSP与一个四位共阴数码管(如GEM5461AE)的硬件电路应该怎么连? 中间是否需要接驱动芯片?…

查看全部问答>

求助 帮忙分析该电路图的原理

该电路图的目的是分析对输入信号进行分类,然后输出,对输出脉冲进行计数的功能。 此电路图只对信号分类。 可是我还不能很理解。 请求给予帮住。 [ 本帖最后由 阳光如烟 于 2008-8-25 17:34 编辑 ]…

查看全部问答>

想用cy7c68013a 读取1M SRAM 怎么实现?

各位:       想用cy7c68013a 读取1M SRAM 怎么实现?…

查看全部问答>

请蓝眼狐大人!进来给检查一下!

电子锁画好了PCB图  但不知道是否可行  请蓝眼狐大人给看看  有问题我好立刻改 没问题我就制板了!!!谢谢!!…

查看全部问答>

硬件微分电路

实用微分电路对于高频信号检测比较敏感,特别适合于检测脉冲信号;但对于低频信号微分作用效果就不那么理想。我想请问诸位高手,如何精确的实现对低频信号的微分????(需要检测低频信号频率大概是50HZ。)…

查看全部问答>

读取8253计数器的问题?

我打算通过扩展定时器的方法测出多路PWM信号的占空比,利用GATE门控位,当GATE低电平的时候读取外部定时器8253计数器的值。可是我怎么也读不出来值,当我使RD位有效时,读的计数器的值也总是不变是个固定值,大家看看我的程序有什么问题??怎么改 ...…

查看全部问答>

通过PFILE_OBJECT的DeviceObject如何修改盘符??十万火急!

如题: UNICODE_STRING usDosName; PFILE_OBJECT pFileObject = IrpSp->fileObject; 使用RtlVolumeDeviceToDosName(pFileObject->DeviceObject,&usDosName) 可以得到usDosName的盘符,如C: 问题是如何修改C:为 J:,实现文件的跨盘存储 ...…

查看全部问答>

g组 电阻桥测电流(简化版)

本帖最后由 paulhyde 于 2014-9-15 03:33 编辑 电阻桥测电流(简化版)    …

查看全部问答>

用CubeSuite+下载程序下载不进去???

使用78K0R的78f1213_44脚  图如下…

查看全部问答>