0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SoC系统中的软件结构设计

冬至子 来源:TrustZone 作者:Hkcoco 2023-09-25 15:14 次阅读

在一个SoC的系统结构设计中,除了硬件结构以外,软件结构的设计对整个SoC的性能有很大的影响。

尽管硬件的结构设计无论对哪个公司来说都是一种挑战,却不能忽略系统级上的挑战。

因为一个SoC产品不只包括硬件,而是软件和硬件的结合。在很多的SoC中,软件设计的复杂度和开发周期都要超过整个硬件的设计。软件设计在很大程度上决定了SoC中硬件电路的性能发挥。

1.数据流的路径

在很多嵌入式系统中,数据流在硬件和软件中的路径决定了系统的效率和性能。

数据流的路径通常是从数据位通过物理接口流入系统开始的, 并经硬件设备输入接口流入硬件设备输入控制器 。软件驱动程序将数据输入操作系统的数据结构,然后再送入应用存储器空间中。

应用程序间的通信直接通过 共享的全局存储器交换数据 ,或者 通过操作系统以消息的形式传送数据

在输出端,应用通常通过操作系统向设备驱动程序传送数据, 它将数据输入一个硬件输出控制器然后通过操作系统向设备驱动程序传送数据经硬件设备输出接口传出

2.软件环境

SoC芯片中的软件环境包括应用软件的运行环境和应用软件的开发环境。开发环境包括应用软件源代码、编译器、连接器、开发界面和硬件调试接口等。

其中,软件源代码位于开发环境的最上层,而调试接口则是环境中的底层。对于一个SoC来说,如果其中的处理器采用MIPS、ARMTensilica的处理器时, SoC上应用的开发者可以从提供商那里获得开发环境,而不用自己去开发

这也是很多的就是解决方案,给你从芯片到带着小系统的东西。

但即使标准的开发环境也从来都不是标准的。为了在新的系统中去实现包括更多新的功能,在每一个开发周期中,需要在开发环境中增加各种开发工具。

SoC中应用软件的运行环境主要由

  • 应用程序、
  • 操作系统核心、
  • 各种驱动、
  • 芯片本身构成。

图4-13所示为软件的运行环境及开发工具。(对于一些 不太需要任务管理、资源管理及进程管理的应用 ,SoC也往往不会采用操作系统。想起了当时面试的时候面试官问我玩过一下操作系统没,但当时都是玩的裸机。唯一一个也是基于协议栈的东西。)

在应用软件运行环境的最上层是应用程序。应用程序实现了系统的各种特定应用,如音频视频解码等。应用程序之间可以通过某种标准接口(如网络协议)进行通信。相同类型的应用可以在这种方式下获得好处。

在这种消息传递中能够实现可靠的接口,但会带来性能的问题 。应用程序之间的通信也可以通过操作系统核心以存储器共享的方式通信来提高速度。比如某一应用程序将一块数据放到缓存中,并把指针传递给另一个应用软件,但以这样的方式交换数据往往也会带来某些问题。

在应用程序的下一层是操作系统核心,负责任务的创建、任务的调度和存储器管理等。

在操作系统的下一层由

  • 各种I/O接口(如UARTUSB、IDE、WLAN、LCD等)驱动、
  • 硬件加速器驱动和
  • 其他实现如异常处理、
  • 中断服务程序、
  • 初始化、
  • 复位及Bootloader等的系统软件构成。

3.软硬件接口

在一个真实的SoC系统结构设计中还必须考虑到软硬件接口(Interface)。主要的软硬件接口有:

  • ①存储空间映射(Memory Map),包括所有设备的可配置寄存器的地址映射;
  • ②设备驱动;
  • ③初始化、复位、Bootloader程序;
  • ④中断服务程序及中断向量;
  • ⑤I/O引脚的复用等。

这些是在系统结构设计时必须定义好的,在硬件设计时必须按照定义做,这样才能保障系统软件正常工作。

1.存储空间映射

通常情况下,SoC中的各个片上模块及与之通信的片外设备,如Flash及Flash控制器的寄存器、RAM及存储器控制模块中的寄存器,以及各种外设等, 均采用统一地址空间进行编址访问,为每一个设备分配一定数量的地址空间的过程称为存储空间映射 。图4-14所示为一款IBM的SoC的存储空间映射的例子。

图4-14 基于IBM的PLB和OPB总线协议的SoC的存储空间映射实例

2.设备驱动

在SoC设计中,需要大量投资来开发设备驱动(I/O接口驱动、硬件加速器驱动),这是产品成功的关键。

设备驱动的作用是在操作系统内核与I/O硬件设备之间建立连接。

其目的是,对于软件设计者而言,这个接口屏蔽了各类设备的底层硬件细节,使软件设计者可以像处理普通文件一样对硬件设备进行打开、读写、关闭等操作。

设备驱动主要完成的工作包括:

  • 初始化(如设定传输率,定时器的周期等),
  • 中断服务处理(如对硬件中断的处理),
  • 输入/输出设备的接口服务(如启动和停止定时器、DMA传输等)。

操作系统提供商通常会提供常见设备的驱动包 。这些驱动程序可以作为参考设计,而实际上应用开发者还是需要做出大量修改。参考设计毕竟只是参考,最后的产品中很少完全使用参考设计。与桌面系统不同,嵌入式系统与接口和应用密切相关,一个操作系统获得成功很大程度上取决于各种最新驱动程序的可获程度。

3.初始化、复位、Bootloader程序

SoC设计中的初始化程序主要负责整个SoC各个关键组件的初始化工作。

初始化

这些初始化工作主要包括:

  • 初始化CPU内部的一些特殊寄存器、
  • 初始化Cache参数
  • 初始化存储器管理单元MMU(Memory Management Unit)、
  • 初始化其他SoC组件(如URAT、Timer等)、
  • 初始化设置中断向量表等,
  • 并开始执行应用程序或操作系统。

复位主要是在上电时完成处理器、SoC芯片及整个系统的复位工作。

它使得CPU的指令指针指到某一个特定的存储器地址,然后从这个地址取指并执行一系列的复位中断服务程序。

例如,一款IBM公司的PowerPC 405GP处理器在上电复位时,将从地址0XFFFFFFFC开始执行相关的程序,而这段程序可能是在通过PCI连接的存储器上。

复位

复位主要是在上电时完成处理器、SoC芯片及整个系统的复位工作。它使得CPU的指令指针指到某一个特定的存储器地址,然后从这个地址取指并执行一系列的复位中断服务程序。

例如,一款IBM公司的PowerPC 405GP处理器在上电复位时,将从地址0XFFFFFFFC开始执行相关的程序,而这段程序可能是在通过PCI连接的存储器上。

Bootloader

Bootloader是在操作系统运行之前执行的一小段程序。

通过这部分程序,设计者可以初始化硬件设备、建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。

Bootloader的主要运行任务就是将内核映象加载到RAM中,然后跳转到内核的入口点去运行,即开始启动操作系统。

Bootloader是基于特定硬件平台来实现的,因此,几乎不可能为所有的SoC建立一个通用的Bootloader。Bootloader不但依赖于处理器的体系结构,还依赖于SoC中各设备模块的配置。

因此一般交付的时候芯片厂商会将芯片和Bootlloader一起交付,同时一些安全的启动方案就在这个地方会出现。

4.中断服务程序及中断向量

当处理器正在处理内部数据时,外界发生了紧急情况,要求处理器暂停当前的工作转去处理这个紧急事件。

处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断,而对于紧急事件的处理程序称为中断服务程序。

各类中断服务程序的入口地址均存放在中断向量表中。

5.I/O引脚的复用

I/O引脚的数量将影响到芯片乃至系统板的面积。 通常为了减小面积会将两个或两个以上不在同一个时间使用的不同功能的I/O引脚进行复用。

例如,用在测试时的扫描链信号引脚与正常使用时的UART模块的引脚复用。

6.模型

为了能及时开发出目标系统所需要的软件,在SoC芯片能够获得之前,需要有一种SoC模型来开发和运行软件。

以前, SoC模型通常是基于FPGA 。随着电子系统级设计的发展,一种虚拟的仿真模型出现了。仿真模型的速度虽然相对实际芯片要慢一些,但可以更早地展开软件的开发,而且随着服务器等处理速度的提高,相对来说提高了仿真模型的速度。

这里也就是原型验证的意义所在。

随着SoC设计中越来越多地使用多核,软件开发环境需要为应用开发者提供新的编程模型。

比如,在每一个独立的处理器上运行标准的操作系统,这样可以为应用开发者提供相当的灵活性。但应用开发者要面临着协同这些处理器中的所有任务的问题。

而更加普遍的做法或许是,为开发者提供一个多处理器多线程的开发模型,每一个线程映射到不同的独立处理器上。

这种模型限制了对每个处理器的访问,却降低了在应用层可能发生的同步问题。

这些编程模型只是为处理器提供通用的开发环境,而实际的芯片是一个更大并包括复杂通信的系统,这样的系统需要在开发环境中被建模。

软件的复杂性正在不断地增长,并且软件通常能够更好地处理复杂性的问题。软件系统的功能和复杂性的进一步发展也使得SoC设计方法学的极限得以扩展。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15223

    浏览量

    171189
  • 存储器
    +关注

    关注

    38

    文章

    7148

    浏览量

    161986
  • 连接器
    +关注

    关注

    96

    文章

    12632

    浏览量

    133127
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3430

    浏览量

    128220
  • SoC系统
    +关注

    关注

    0

    文章

    50

    浏览量

    10575
收藏 人收藏

    评论

    相关推荐

    操作系统结构设计

    ,等级森严!这种系统学术味道较浓!实际完全按照这种结构进行设计的操作系统不多,也没有广泛的应用。可以这么说,现在的操作系统设计是在整体式系统
    发表于 09-13 10:10

    手机结构设计心得

    手机结构设计心得
    发表于 11-07 09:59

    招聘结构设计

    结构设计师发布日期2014-01-24工作地点广东-中山市学历要求不限工作经验不限招聘人数1待遇水平面议年龄要求性别要求不限有效期2014-02-04职位描述1、熟悉产品设计流程及结构设计,能合理
    发表于 01-24 13:43

    浅谈产品结构设计特点 

    `  产品结构设计是根据产品功能而进行的内部结构的设计,是机械设计的主要内容之一。产品结构设计内容有零件的分件、部件的固定方式、产品使用和功能的实现方式、产品使用材料和表面处理工艺等。要求产品
    发表于 02-25 17:24

    软件结构设计

    软件结构设计,,
    发表于 09-26 13:55

    嵌入式系统软件结构设计

    嵌入式系统软件结构设计
    发表于 09-26 13:57

    软件无线电结构设计的器件选择方法

    ASIC、FPGA和DSP的应用领域呈现相互覆盖的趋势,使设计人员必须在软件无线电结构设计重新考虑器件选择策略问题。本文从可编程性、集成度、开发周期、性能和功率五个方面论述了选择ASIC、FPGA
    发表于 07-26 06:09

    SOC系统结构设计

    嵌入式系统SOC的基本结构所谓嵌入式系统是计算机应用的一种方式。 在嵌入式系统中,计算机硬件和软件
    发表于 10-29 17:14 0次下载

    轴系结构设计实验

    实验六 轴系结构设计实验一、实验目的: 熟悉并掌握轴系结构设计中有关轴的结构设计、滚动轴承组合设计的基本方法。 二、实
    发表于 03-13 19:04 5.6w次阅读
    轴系<b class='flag-5'>结构设计</b>实验

    半替代护环的结构设计

    半替代护环的结构设计_张国喜
    发表于 01-07 16:52 0次下载

    面向可维护性的软件体系结构设计

    面向可维护性的软件体系结构设计_胡文生
    发表于 01-08 15:15 1次下载

    浅谈产品结构设计类别及产品结构设计的重要性

    产品设计中所涉及的产品结构设计,主要是产品的外部壳体结构设计。目前壳体材料主要是金属材料通过钣金冲压工艺成型和塑料通过注塑工艺成型。常见产品的结构设计主要有钣金结构的设计、塑料产品的
    的头像 发表于 05-26 14:21 1955次阅读

    DSP中MAC的微系统结构设计

    DSP中MAC的微系统结构设计(高频开关电源技术指标)-该文档为DSP中MAC的微系统结构设计总结文档,是一份不错的参考资料,感兴趣的可以下载看看,
    发表于 09-22 13:24 3次下载
    DSP中MAC的微<b class='flag-5'>系统</b><b class='flag-5'>结构设计</b>

    O型圈密封结构设计

    O型圈密封结构设计
    发表于 02-10 15:56 16次下载

    FPC的结构设计.zip

    FPC的结构设计
    发表于 03-01 15:37 0次下载