历史上的今天
返回首页

历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2020年08月25日 | 如何对嵌入式最小系统的软硬件架构进行改进?

2020-08-25 来源:elecfans

1.前言

随着嵌入式相关技术的迅速发展,嵌入式系统的功能越来越强大,应用接口更加丰富,根据实际应用的需要设计出特定的嵌入式最小系统和应用系统,是嵌入式系统设计的关键。目前在嵌入式系统开发的过程中,开发者往往把大量精力投入到嵌入式微处理器MPU(Micro Processing Unit)与众多外设的连接方式以及应用代码的开发之中,而忽视了对嵌入式系统最基本、最核心部分的研究。


当前在嵌入式领域中,ARM(Advanced RISC Machines)处理器被广泛应用于各种嵌入式设备中。由于ARM嵌入式体系结构类似并且具有通用的外围电路,同时ARM内核的嵌入式最小系统的设计原则及方法基本相同,这使得对嵌入式最小系统的研究在整个系统的开发中具有着至关重要的意义。本文以基于ARM的嵌入式最小系统为平台,从硬件和软件两方面对嵌入式最小系统的架构进行了研究,硬件方面主要介绍了ARM处理器与典型外部存储器的接口技术,软件方面重点就嵌入式最小系统的启动架构做了详细分析。


2. 嵌入式最小系统

嵌入式最小系统即是在尽可能减少上层应用的情况下,能够使系统运行的最小化模块配置。对于一个典型的嵌入式最小系统,以ARM处理器为例,其构成模块及其各部分功能如图1所示,其中ARM微处理器、FLASH和SDRAM模块是嵌入式最小系统的核心部分。

如何对嵌入式最小系统的软硬件架构进行改进?

时钟模块——通常经ARM内部锁相环进行相应的倍频,以提供系统各模块运行所需的时钟频率输入

Flash存储模块——存放启动代码、操作系统和用户应用程序代码

SDRAM模块——为系统运行提供动态存储空间,是系统代码运行的主要区域

JTAG模块——实现对程序代码的下载和调试

UART模块——实现对调试信息的终端显示

复位模块——实现对系统的复位


3. 外存储器接口技术

ARM处理器与外部存储器(Flash和SDRAM)的接口技术是嵌入式最小系统硬件设计的关键。根据需要选择合理的接口方式,可以有效的提升嵌入式系统的整体性能。


3.1常用外存储器简介

(1)Nor Flash与Nand Flash

Nor Flash也称为线性Flash,可靠性高、随机读取速度快,具有芯片内执行(XIP, eXecute In Place)的特点,这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。常用在擦除和编程操作较少而直接执行代码的场合。

Nand Flash则是高数据存储密度的理想解决方案,一般用于数据存储和文件存储,以块为单位进行擦除,具有擦除速度快的优点。

(2)同步动态存储器SDRAM

SDRAM(Synchronous Dynamic Random Access Memory)是在早期DRAM的基础上改进而来的,它是同步内存,并在接口信号中引入了CLK信号,所有数据、地址和控制信号都是和CLK上升沿对齐的。此外SDRAM还在内部引入了一个命令控制器,处理器访问SDRAM都是通过向命令控制器发送命令来实现的。


3.2 ARM处理器与Flash接口技术

3.2.1ARM处理器与Nor Flash接口技术

Nor Flash 带有SRAM接口,有足够的地址引脚,可以很容易的对存储器内部的存储单元进行直接寻址。在实际的系统中,可以根据需要选择ARM处理器与Nor Flash的连接方式。图2给出了嵌入式最小系统在包含两块Nor Flash的情况下,ARM处理器与Nor Flash两种不同的连接方式。


1)双Flash独立片选

该方式是把两个Nor Flash芯片各自作为一个独立的单元进行处理。根据不同的应用需要,可以在一块Flash中存放启动代码,而在另一块Flash中建立文件系统,存放应用代码。该方式操作方便,易于管理。

(2)双Flash统一片选

该方式是把两个Nor Flash芯片合为一个单元进行处理,ARM处理器将它们作为一个并行的处理单元来访问,本例是将两个8bit的Nor Flash芯片SST39VF1601用作一个16bit单元来进行处理。对于N(N》2)块Flash的连接方式可以此作为参考。


3.2.2ARM处理器与Nand Flash接口技术

Nand Flash接口信号比较少,地址,数据和命令总线复用。Nand Flash的接口本质上是一个I/O接口,系统对Nand Flash进行数据访问的时候,需要先向Nand Flash发出相关命令和参数,然后再进行相应的数据操作。ARM处理器与Nand Flash的连接主要有三种方式,如图3所示:

如何对嵌入式最小系统的软硬件架构进行改进?

运用GPIO管脚方式去控制Nand Flash的各个信号,在速度要求相对较低的时候,能够较充分的发挥NAND设备的性能。它在满足NAND设备时域需求方面将会有很大的便利,使得ARM 处理器可以很容易的去控制NAND设备。该方式需要处理器提供充足的GPIO。

(2)运用逻辑运算方式进行连接

在该方式下,处理器的读和写使能信号通过与片选信号CS进行逻辑运算后去驱动NAND设备对应的读和写信号。图3中b例为SamSung公司ARM7TDMI系列处理器S3C44B0与Nand Flash K9F2808U0C的连接方式。

(3)直接芯片使能

有些ARM处理器如S3C2410内部提供对NAND设备的相应控制寄存器,通过控制寄存器可以实现ARM处理器对NAND设备相应信号的驱动。该方式使得ARM处理器与NAND设备的连接变得简单规范,图3中c例给出了ARM处理器S3C2410与Nand Flash K9F2808U0C的连接方式。


3.3 ARM处理器与SDRAM接口技术

嵌入式最小系统的外部动态存储器模块一般采用SDRAM。现在的大多数ARM处理器内部都集成有SDRAM控制器,通过它可以很容易的访问SDRAM内部的每一个字节。在实际开发中可以根据需要选用一片或多片SDRAM。图4中给出了两种常用的接口方式。

如何对嵌入式最小系统的软硬件架构进行改进?

  (1)单片SDRAM

  图4 中a例为 ARM处理器S3C44B0与一个16bit的SDRAM K4S641632d的连接方式。在对尺寸有严格限制且对动态存储器容量要求不高的嵌入式系统中常采用此种连接方式。

  (2)双片16bit SDRAM结合使用

  在双片16bit SDRAM合成一个32bit SDRAM使用时,ARM处理器的地址线A2接SDRAM的地址线A0,其余地址依次递增,这是因为在SDRAM中字节是存储容量的惟一单位,而此时SDRAM为32bit位宽。

  SDRAM的BA地址线是其内部Bank的地址线,代表了SDRAM内存的最高位。在图4中b例的SDRAM总大小是64M(64M= ),需要A25-A0引脚来寻址,所以BA1-BA0连接到了A25-A24引脚上。还需注意的是SDRAM内存行地址和列地址是复用的,所以地址线的数目一般少于26条,具体连接需要参考ARM处理器和SDRAM的相关手册。

  值得注意的是,有些ARM处理器如SamSung公司的 ARM940T系列处理器S3C2510 ,其地址总线与其它标准ARM处理器不太一样,它的地址线分为内部地址线和外部地址线两种类型。根据所连接的存储器数据总线宽度,内部地址线进行相应的移位,对应到外部地址线A23-A0,从而对外提供固定的地址线A23-A0。其实质与典型的ARM处理器是一致的。


  4. 嵌入式系统启动架构

  启动架构是嵌入式系统的关键技术。掌握启动架构对于了解嵌入式系统的运行原理有着重要的意义。嵌入式系统在启动时,引导代码、操作系统的运行和应用程序的加载主要有两种架构,一种是直接从Nor Flash启动的架构,另一种是直接从Nand Flash启动的架构。


  需要注意的是,在嵌入式系统启动引导的过程中会有多种情况出现,如vxWorks的启动代码BootRom就有压缩和非压缩,驻留和非驻留方式之分,而操作系统本身也多以压缩映象方式存储,所以启动代码在执行和加载过程中需要根据不同的情况,作出相应的处理。


  4.1从Nor Flash启动

  Nor Flash具有芯片内执行(XIP,eXecute In Place)的特点,在嵌入式系统中常做为存放启动代码的首选。从Nor Flash启动的架构又可细分为只使用Nor Flash的启动架构和Nor Flash与Nand Flash配合使用的启动架构。图5 给出了这两种启动架构的原理框图。


  4.1.1单独使用Nor Flash

  在该架构中,引导代码、操作系统和应用代码共存于同一块Nor Flash中。系统上电后,引导代码首先在Nor Flash中执行,然后把操作系统和应用代码加载到速度更高的SDRAM中运行。另一种可行的架构是,在Nor Flash中执行引导代码和操作系统,而只将应用代码加载到SDRAM中执行。


  该架构充分利用了Nor Flash芯片内执行的特点,可有效提升系统性能。不足在于随着操作系统和应用代码容量的增加,需要更大容量昂贵的Nor Flash来支撑。


  4.1.2 Nor Flash和Nand Flash配合使用

  Nor Flash的单独使用对于代码量较大的应用程序会增加产品的成本投入,一种的改进的方式是采用Nor Flash 和Nand Flash配合使用的架构。在该架构中附加了一块Nand Flash,Nor Flash(2M或4M)中存放启动代码和操作系统(操作系统可以根据代码量的大小选择存放于Nor Flash或者Nand Flash),而Nand Flash中存放应用代码,根据存放的应用代码量的大小可以对Nand Flash容量做出相应的改变。


  系统上电后,引导代码直接在 Nor Flash中执行,把Nand Flash中的操作系统和应用代码加载到速度更高的SDRAM中执行。也可以在Nor Flash中执行引导代码和操作系统,而只将Nand Flash中的应用代码加载到SDRAM中执行。该架构是当前嵌入式系统中运用最广泛的启动架构之一。


  4.1.2从Nand Flash启动

  有些处理器如SamSung公司的ARM920T系列处理器S3C2410支持从Nand Flash启动的模式,它的工作原理是将NandFlash中存储的前4KB代码装入一个称为Steppingstone(BootSRAM)的地址中,然后开始执行该段引导代码,从而完成对操作系统和应用程序的加载。该方式需要处理器内部有NAND控制器,同时还要提供一定大小额外的SRAM空间,有一定的使用局限性,在实际开发中较少使用。


  5. 结束语

  本文作者创新点:根据ARM体系结构的相通性,以基于ARM的嵌入式最小系统为平台,从硬件和软件两方面对其架构进行了研究。硬件方面就ARM处理器与常用外部存储器的接口方式进行了阐述,软件方面给出了嵌入式最小系统典型的启动架构及其选择标准。

推荐阅读

史海拾趣

AMOTECH(阿莫泰克)公司的发展小趣事

进入21世纪,AMOTECH继续深耕电子领域,特别是在压敏电阻技术上取得了重大突破。2003年,公司的压敏电阻产品被产业资源部评为世界一流产品,这一成就不仅提升了AMOTECH在全球电子行业中的地位,也为其后续发展奠定了坚实基础。同年,公司还成功在韩国安全商协会自动报价首次公开募股,为公司的进一步扩张提供了资金支持。

ARRA Inc公司的发展小趣事

1994年,AMOTECH在韩国创立,凭借创始人的远见卓识和技术团队的扎实能力,公司迅速在电子行业中崭露头角。经过两年的努力,1996年,AMOTECH被政府通讯部评为“光明前途企业”,这是对其技术实力和市场潜力的肯定。随后,公司不断加大研发投入,终于在2000年获得ISO9000认证,这标志着AMOTECH在产品质量管理上达到了国际标准。

Harris公司的发展小趣事

在过去的四十年中,Hammond将业务重心扩展到了美国和国际市场。通过在全球各地设立办事处和建立分销网络,Hammond成功地将其产品和服务推广到了世界各地。这一战略转型不仅极大地提升了Hammond的品牌影响力,还为其带来了更加广阔的市场空间和增长潜力。

Cambridge Electronic Industries Ltd公司的发展小趣事

CEI的发展历程中,技术创新一直是其核心竞争力。公司不断投入研发资源,探索新的电子技术和应用领域。在某一时期,CEI成功研发出了一款具有革命性的电子产品,该产品在性能、稳定性和成本方面均达到了行业领先水平。这一产品的推出,不仅为CEI带来了可观的经济效益,更重要的是,它为公司树立了技术创新和产品质量的标杆,进一步巩固了CEI在电子行业中的地位。

Chengdu Sino Microelectronics Technology Co Ltd公司的发展小趣事

随着国内市场的逐渐饱和,成都华微科技开始将目光投向国际市场。公司凭借过硬的产品质量和完善的服务体系,逐渐在国际市场上崭露头角。通过与国外客户的深入合作,华微科技不仅提升了自身的国际影响力,也为中国集成电路设计行业在国际市场上赢得了更多的话语权。

BEI Sensors公司的发展小趣事

近年来,全球经济形势复杂多变,Beckhoff也面临着诸多挑战。然而,公司始终坚持创新驱动的发展战略,不断研发新产品、新技术,以应对市场的不断变化。同时,公司也积极调整业务结构,优化供应链管理,降低运营成本,以应对经济下行的压力。在这样的背景下,Beckhoff依然保持着稳健的发展态势,为电子行业的持续进步做出了重要贡献。

这五个故事从不同角度展示了Beckhoff Automation GmbH公司在电子行业中的发展历程和成就。从创始与早期发展,到基于PC控制技术的创新,再到全球业务拓展和中国市场的发展,以及应对经济挑战与持续创新,Beckhoff始终保持着对技术创新的追求和对市场变化的敏锐洞察。这些故事不仅展现了公司的实力和成就,也体现了其在电子行业中的重要地位和影响。

问答坊 | AI 解惑

几个概念:SD、SDHC、SDXC、SDIO、MMC

SD是早先的版本的,据说是由MMC演变而来的。最大支持2GB大小容量 SDHC是大容量SD卡,也就是SD High Capacity,支持最大32GB大小容量 SDXC(SD eXtended Capacity)是去年09年才发布的新标准,支持最大2TB的大小容量 SDIO看了一段网上的英文原文 ...…

查看全部问答>

CC2500应用技巧注意事项

SPI 接口时序注意事项:     CC2500通过4线SPI兼容接口(SI,SO,SCLK和CSn)配置。这个接口同时用作写和读缓存数据。SPI接口上所有的地址和数据转换被最先在重要的位上处理。    SPI接口上所有的处理都同一个包 ...…

查看全部问答>

请教,关于如何让mosfet 工作在放大区

我使用一p-channel mosfet(最大电流16A). Vs=Vcc, d极经负载10欧姆到地,无其他元件。Vg 从Vcc 到0变化,整个过程中,mosfet似乎只有off(0v),on(Vcc) 两种状态,没有看到有线性放大区。 请问,是不是我的电路本身设计有问题,或是参数不对。 ...…

查看全部问答>

StellarisWare软件库说明

从别处看到的,转过来给有需要的朋友。…

查看全部问答>

机房监控系统

深圳市佳创达科技有限公司长沙分公司是国内同行业中的“机房维护大师”,致力于机房动力设备及 环境 ,图像集中监控管理系统,和各类空调机监控产品的开发,生产,销售为一体的科技型企业.主营机房动 力环境集中监控系统. 公司拥有了一支高素质 ...…

查看全部问答>

TI zigbee CC2530 一般应用是定频还是跳频?

TI zigbee CC2530 一般应用是定频还是跳频?…

查看全部问答>

MSP430169中断跑飞问题

这个程序运行时,在不按下按键的时候也会进入中断。不知道什么原因!求帮助! #include #include \"delay.h\" #include \"data.h\" #include \"cry12864.h\" #include \"d1302.h\"   #define keyin (P1IN & 0x0f)   in ...…

查看全部问答>

C语言二维字符数组使用的误区

误区:在C语言的教学中,发现很多学员老出现这个问题,在定义字符二维数组上,这样定义char buf[][50]={0};后面使用buf[0],buf[1]....总觉得有无穷无尽可以使用。 调试无果:一开始,学员用的没有问题,等项目代码多了,系统变大了,就出现些莫名 ...…

查看全部问答>

求助关于ZIGBEE信道评估的一个问题。

问题是这样的:在看SimpliciTI中看到,一个函数功能介绍有提到检测空闲信道,但是实际上却没看到,他信道空闲检测的语句。球解释。 具体函数是这样的: // Send frame with CCA. return FAILED if not successful if(halRfTransmit() != SUCCESS ...…

查看全部问答>

看看这个wifi智能小车

热爱机器人,渴望实现童年机器人梦想......我们是富有智慧和理想的年轻创客我们不是卖产品,不是赚吆喝,但是我们希望机器人成为大众的专利 淘宝店铺:小R极客智能科技 …

查看全部问答>