大纲介绍
嵌入式技术介绍
嵌入式技术是指在特定的硬件设备中集成计算机系统及软件,来实现某种特定功能的技术。简单来说,就是在各种设备中嵌入微处理器和程序,来控制和监视设备工作的技术。
嵌入式技术的主要特点有:
- 专用性:嵌入式系统通常针对某一特定应用开发和优化,功能专一。
- 实时性:嵌入式系统通常需要保证硬件的实时响应,完成实时控制和数据采集等操作。
- 低成本:嵌入式系统硬件资源有限,需要低成本实现,通常没有操作系统。
- 可靠性:嵌入式系统工作环境恶劣,需要有较高的可靠性和稳定性,防止系统失效。
- 体积小:嵌入式系统规模较小,体积和功耗都需要尽可能小。
嵌入式技术广泛应用于各个行业,例如:
- 汽车电子:发动机控制、ABS防抱死、天窗控制等。
- 家电产品:空调控制、洗衣机控制、冰箱控制等。
- 通信设备:路由器、交换机、手机(当今集所有不太形象)、base station等。
- 安防监控:监控摄像头、生物识别等。
- 工业自动化:PLC控制器、机器人控制等。
- 医疗设备:心电监护仪、B超仪器、血糖仪等。
嵌入式微处理器
体系结构
冯诺依曼结构
传统计算机采用冯.诺依曼(Von Neumann)结构,也称普林斯顿结构,是一种将程序指令存储器和数据存储器合井在一起的存储器结构。
- 冯.诺依曼结构的计算机程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
- 采用单一的地址及数据总线,程序指令和数据的宽度相同。即同一时间只能获取一个。
- 处理器执行指令时,先从储存器中取出指令解码,再取操作数执行运算,即使单条指令也要耗费几个甚至几十个周期,在高速运算时,在传输通道上会出现瓶颈效应。
哈佛结构
哈佛结构是一种井行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址、独立访问。并行,当今主流。
- 与两个存储器相对应的是系统中的两套独立的地址总线和数据总线。
- 这种分离的程序总线和数据总线可允许在一个机器周期内同时获取指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,使数据的吞吐率提高了1倍。
总结对比如下:
【例题】
目前处理器市场中存在CPU、GPU和DSP多种类型处理器,分别用于不同场景,这些处理器具有不 同的体系结构,DSP采用( )。
A.冯.诺依曼结构 B.哈佛结构 C. FPGA结构 D.与GPU相同结构
答案:B
以下关于冯诺依曼计算机的叙述中,不正确的是( )(2022年上半年)
A.程序指令和数据都采用二进制表示
B.程序指令总是存储在主存中,而数据则存储在高速缓存中
C.程序的功能都由中央处理器(CPU)执行指令来实现
D.程序的执行工作由指令进行自动控制
答案:B
微处理器分类
【根据嵌入式微处理器的字长宽度划分】
可分为4位、8位、16位、32位和64位。一般把16位及以下的称为嵌入式微控制器(Microcontroller Unit,MCU), 32位及以上的称为嵌入式微处理器(Microprocessor Unit,MPU)。
科普知识:字长宽度是指微处理器一次能够处理的二进制数据的位数,字长宽度的增加通常意味着微处理器能够处理更大量的 数据和更复杂的指令,从而提高了计算机的性能和处理能力。例如,64 位微处理器相比 32 位微处理器可以处理更大的内存 地址范围,支持更高的内存容量,并且在执行某些任务时可能会更高效。
【按系统集成度划分】
- 微处理器内部仅包含单纯的中央处理器单元,称为一般用途型微处理器;
- 将CPU、ROM、RAM及I/O等部件集成到同一个芯片上,称为单芯片微控制器(Single ChipMicrocontroller)。
【根据用途划分】
- 微控制器MCU:资源限制较强,用于简单控制与接口应用,如单片机系列,如51单片机、AVR、PIC等。
- 微处理器MPU:性能较高,用于复杂控制与高级应用,如ARM Cortex系列、PowerPC等。
- 数字信号处理器(Digital Signal Processing,DSP):专门用于信号处理,性能强大,如语音/音频/图像处理,如TI TMS320系列。
- 片上系统(System on Chip,SoC):集成度高,将MCU/MPU核、内存、外设集成在一片芯片上,用于便携设备,如各种智能硬件的SoC芯片、 手机SoC生产过程就像是在上面建立一座城市,一般由厂商设计好图纸,然后交由代工厂进行生产,比如高通的Snapdragon SoC,华为的麒麟SoC,三星的Exynos SoC
其主要区别在于:
-
性能与功能:MCU<SoC<MPU<DSP
-
集成度:MCU最低,SoC最高,内含各种外设与接口。
-
成本:从高到低依次为DSP、MPU、SoC和MCU(与性能相反)。
-
适用场景:
- MCU用于简单控制与接口。
- MPU用于高性能控制与应用。
- DSP用于专业信号处理。
- SoC用于单一智能设备。
例如:
- PIC16F84:8位MCU,用于简单控制与接口。
- ARM Cortex-A53:32位MPU,用于高性能控制与应用。
- TI TMS320C6678:浮点DSP,用于专业图像/语音信号处理。
- ESP8266:SoC芯片,内含MCU、WiFi模块等,用于智能硬件。
多核处理器
多核指多个微处理器内核,是将两个或更多的微处理器封装在一起,集成在一个电路中。多核处理器是单枚芯片,能够直接插入单一的处理器插槽中。多核与多CPU相比,很好的降低了计算机系统的功耗和体积。在多核技术中,由操作系统软件进行调度,多进程,多线程并发都可以。(多核处理器不是指多个cpu,1个cpu里可封装多个核)
多核处理器工作协调实现方式:
- 对称多处理技术SMP:将2颗完全一样的处理器封装在一个芯片内,达到双倍或接近双倍的处理性能,节省运算资源。
- 非对称处理技术AMP:2个处理内核彼此不同,各自处理和执行特定的功能,在软件的协调下分担不同的计算任务。
- 粗粒度多处理技术BMP:介于SMP和AMP之间的一种多核架构,其工作协调方式也在两者之间
多核CPU的调度有全局队列调度和局部队列调度两种。
- 全局队列调度是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU空闲时,操作系统就从全局任务等待队列中选取就绪任务开始执行,CPU核心利用率高。
- 局部队列调度是操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,就从该核心的任务等待队列中选取适当的任务执行,优点是无需在多个CPU之间切换。
【例题】
嵌入式处理器是嵌入式系统的核心部件,一般可分为嵌入式微处理器(MPU)、微控制器(MCU)、数字信号处理器(DSP)和片上系统(SoC)。以下叙述中,错误的是( )。
A.MPU在安全性和可靠性等方面进行增强,适用于运算量大的智能系统
B.MCU典型代表是单片机,体积小从而使功耗和成本下降
C.DSP处理器对系统结构和指令进行了特殊设计,适合数字信号处理
D.SoC是一个有专用目标的集成电路,其中包括完整系统并有嵌入式软件的全部内容
答案:A
以下关于多核处理器的说法中,不正确的是( )。
A、采用多核处理器可以降低计算机系统的功耗和体积
B、SMP、BMP和AMP是多核处理器系统通常采用的三种结构,采用哪种结构与应用场景相关,而无须考虑硬件的组成差异
C、在多核处理器中,计算机可以同时执行多个进程,而操作系统中的多个线程也可以并行执行
D、多核处理器是将两个或更多的独立处理器封装在一起,集成在一个电路中
答案:B
嵌入式软件
嵌入式软件是指应用在嵌入式计算机系统当中的各种软件,除了具有通用软件的一般特性,还具有一些与嵌入式系统相关的特点,包括:规模较小、开发难度大、实时性和可靠性要求高、要求固化存储。
嵌入式软件分类:
- 系统软件(底层驱动和操作系统):控制和管理嵌入式系统资源,为嵌入式应用提供支持的各种软件,如设备驱动程序、嵌入式操作系统、嵌入式中间件等。
- 应用软件:嵌入式系统中的上层软件,定义了嵌入式设备的主要功能和用途,并负责与用户交互,一般面向特 定的应用领域,如飞行控制软件、手机软件、地图等。
- 支撑软件:辅助软件开发的工具软件,如系统分析设计工具、在线仿真工具、交叉编译器等。
系统软件中的BSP
板级支持包(Board Support Package,BSP)是属于底层驱动和操作系统的一部分,它是针对特定硬件平台的软件包,包含了与硬件相关的驱动程序、引导程序、硬件抽象层等,用于支持特定的硬件平台和操作系统。BSP主要负责底层硬件资源的管理和控制,提供给上层软件使用。
主要具有以下两个特点。
- 硬件相关性:BSP是基于特定的硬件平台(如CPU架构、外设组成等)开发的,它需要对该平台的每一个硬件模块(如CPU、 内存、外设)进行详细的配置与编程,以实现对整个系统的初始化与控制。所以,不同的硬件平台需要不同的BSP软件包支持。
- 操作系统相关性:BSP需要为上层的嵌入式操作系统提供统一的软件接口和硬件运行环境。所以,相同硬件平台的不同操作系统也需要不同的BSP软件包支持。
BSP主要包括两个方面的内容:
- 引导加载程序BootLoader
- 设备驱动程序
BSP中的BootLoader
Bootloader是嵌入式系统加电后运行的第一段软件代码,是在操作系统内核运行之前运行的一小段程序,通过这段程序, 可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境设置到一个合适的状态,以便为最终调用操作系统内核做好准备。一般包括以下功能:
- 片级初始化:主要完成微处理器的初始化,包括设置微处理器的核心寄存器和控制寄存器、微处理器的核心工作模式 及其局部总线模式等。片级初始化把微处理器从上电时的默认状态逐步设置成系统所要求的工作状态。这是一个纯硬件的初始化过程。
- 板级初始化:通过正确地设置各种寄存器的内容来完成微处理器以外的其他硬件设备的初始化。例如,初始化LED显示设备、初始化定时器、设置中断控制寄存器、初始化串口通信、初始化内存控制器、建立内存空间的地址映射等。 在此过程中,除了要设置各种硬件寄存器以外,还要设置某些软件的数据结构和参数。因此,这是一个同时包含有软件和硬件在内的初始化过程。
- 加载内核(系统级初始化):将操作系统和应用程序的映像从Flash存储器复制到系统的内存当中,然后跳转到系统内核的第一条指令处继续执行。
所以,BootLoader为操作系统的正常运行奠定硬件基础,总的来说BootLoader 的主要任务是初始化硬件设备、加载操作系统内核到内存中,并将控制权转移给内核,从而启动整个系统
BSP中的设备驱动程序
设备驱动程序,就是操作系统中的一部分,用于管理和控制系统的具体硬件设备,为上层应用软件提供统一的设备接口和访问机制。驱动程序需包含OS相关内容,需要根据OS的驱动模型编写,并通过OS提供的接口访问硬件资源。
对于不同的硬件设备来说,它们的功能是不一样的,所以它们的设备驱动程序也是不一样的。但是一般来说,大多数的设备 驱动程序都会具备以下的一些基本功能。
- 硬件开启:在开机上电或系统重启的时候,对硬件进行初始化。
- 硬件关闭:将硬件设置为关机状态。
- 硬件停用:暂停使用这个硬件。
- 硬件启用:重新启用这个硬件。
- 读操作:从硬件中读取数据。
- 写操作:往硬件中写入数据。
驱动程序需要基于特定OS和硬件平台完成开发,它是操作系统的一部分,用于管理系统的外设资源
嵌入式系统
嵌入式系统的组成:一般嵌入式系统由嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件组成。
嵌入式系统应具备以下特性:
- 专用性强。嵌入式系统面向特定应用需求,能够把通用CPU中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统的小型化。
- 技术融合。嵌入式系统将先进的计算机技术、通信技术、半导体技术和电子技术与各个行业的具体应用相结合,是一个 技术密集、资金密集、高度分散、不断创新的知识集成系统。
- 软硬一体软件为主。软件是嵌入式系统的主体,有IP核。嵌入式系统的硬件和软件都可以高效地设计,量体裁衣,去除 冗余,可以在同样的硅片面积上实现更高的性能。
- 比通用计算机资源少。由于嵌入式系统通常只完成少数几个任务。设计时考虑到其经济性,不能使用通用CPU,这就意 味着管理的资源少,成本低,结构更简单。
- 程序代码固化在非易失存储器中。为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单 片机本身中,而不是存在磁盘中。
- 需专门开发工具和环境。嵌入式系统本身不具备开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行 修改,必须有一套开发工具和环境才能进行开发。
- 体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强。
- 对安全性和可靠性的要求高。
嵌入式系统分类
根据不同用途可将嵌入式系统划分为嵌入式实时系统和嵌入式非实时系统两种,而实时系统又可分为强实时系统和弱实时系统。
如果从安全性要求看,嵌入式系统还可分为安全攸关系统和非安全攸关系统。
嵌入式系统分为硬件层、抽象层、操作系统层、中间件层和应用层等5层。
- 硬件层。硬件层主要是为嵌入式系统提供运行支撑的硬件环境,其核心是微处理器、存储器(ROM、SDRAM、Hash 等)、I/0接口(A/D、D/A、I/O等)和通用设备以及总线、电源、时钟等。
- 抽象层。在硬件层和软件层之间为抽象层,主要实现对硬件层的硬件进行抽象,为上层应用(操作系统〉提供虚拟的硬 件资源:板级支持包(BSP)是一种硬件驱动软件,它是面向硬件层的硬件芯片或电路进行驱动,为上层操作系统提供 对硬件进行管理的支持。
- 操作系统层。操作系统层主要由嵌入式操作系统、文件系统、图形用户接口、网络系统和通用组件等可配置模块组成。
- 中间件层。中间件层一般位于操作系统之上,管理计算机资源和网络通信,中间件层是连接两个独立应用的桥梁。
- 应用层。应用层是指嵌入式系统的具体应用,主要包括不同的应用软件。
嵌入式数据库系统EDBMS
Engineering Data Base Management System
有网络就会和外部进行同步,没有网络就会在内部进行存储,如果内部存储满了的话就会循环迭代进行覆盖。(监控器)
系统组成:
- 一个完整的EDBMS由若干子系统组成,包括主数据库、同步服务器、 嵌入式数据库和连接网络等几个子系统:
- 嵌入式移动数据库在实际应用中必须解决好数据的一致性(复制性)、高 效的事务处理和数据的安全性等关键问题。
使用环境的特点:
- 设备随时移动性。嵌入式数据库主要用在移动信息设备上,设备的位置经常随使用者一起移动。
- 网络频繁断接。移动设备或移动终端在使用的过程中,位置经常发生 变化,同时也受到使用方式、电源、无线通信和网络条件等因素的影 响。所以,一般并不持续保持网络连接,而是经常主动或被动地间歇 性断接和连接。
- 网络条件多样化。由于移动信息设备位置的经常变化,导致它们与数 据库服务器在不同的时间可能通过不同的网络系统连接,这些网络在 带宽、通信代价、网络延迟和QoS等方面可能有所差异。
- 通信能力不对称。由于受到移动设备资的源限制,移动设备与服务器之间的网络通信能力是非对称的。移动设备的发送能力都非常有限,使得数据库服务器到移动设备的下行通信带宽和移动设备到数据库服 务器之间的上行带宽相差很大。
嵌入式操作系统EOS
嵌入式操作系统EOS与通用操作系统相比,EOS主要有以下特点:
- 微型化。EOS的运行平台不是通用计算机,而是嵌入式系统。这类系统一般没有大容量的内存,几乎没有外存,因 此,EOS必须做得小巧,以占用尽量少的系统资源。
- 代码质量高。在大多数嵌入式应用中,存储空间依然是宝贵的资源,这就要求程序代码的质量要高,代码要尽量精 简。
- 专业化。嵌入式系统的硬件平台多种多样,处理器的更新速度快,每种处理器都是针对不同的应用领域而专门设计 的。因此,EOS要有很好适应性和移植性,还要支持多种开发平台。
- 实时性强。嵌入式系统广泛应用于过程控制、数据采集、通信、多媒体信息处理等要求实时响应的场合,因此,实 时性成为EOS的又一特点。
- 可裁减和可配置。应用的多样性要求EOS具有较强的适应能力,能够根据应用的特点和具体要求进行灵活配置和合 理裁减,以适应微型化和专业化的要求。
嵌入式实时操作系统
嵌入式实时系统是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机系统。在嵌入式实时系统中,要求系统在投入运行前即具有确定性和可预测性。
- 可预测性是指系统在运行之前,其功能、响应特性和执行结果是可预测的;
- 确定性是指系统在给定的初始状态和输入条件下,在确定的时间内给出确定的结果。
实时操作系统(Real-Time Operating System,RTOS)的特点
- 当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过 程或对处理系统做出快速响应,并控制所有实时任务协调一致运行。因而,提供及时响应和高可靠性是其主要特点。
- 实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。
实时操作系统的特征:
-
高精度计时系统
- 计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的 计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
-
多级中断机制
- 一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以 延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
-
实时调度机制
- 实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲的进行,因为 涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保 证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。
【例题】
以下关于RTOS(实时操作系统)的叙述中,不正确的是( )。
A.RTOS不能针对硬件变化进行结构与功能上的配置及裁剪
B.RTOS可以根据应用环境的要求对内核进行裁剪和重配
C.RTOS的首要任务是调度一切可利用的资源来完成实时控制任务
D.RTOS实质上就是一个计算机资源管理程序,需要及时响应实时事件和中断
答案:A
以下描述中, ()不是嵌入式操作系统的特点。
A.面向应用,可以进行裁剪和移植
B.用于特定领域,不需要支持多任务
C可靠性高,无需人工干预独立运行,并处理各类事件和故障
D.要求编码体积小,能够在嵌入式系统的有效存储空间内运行
答案:A B
嵌入式软件设计
一个典型的交叉平台开发环境,包含三个高度集成的部分:
- 运行在宿主机的强有力的交叉开发工具和实用程序。
- 运行在目标机上的高性能、可裁剪的实时操作系统。
- 连接宿主机和目标机的多种通信方式,例如,以太网、USB、串口等。
交叉编译:嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。 编译的最主要的工作就在将程序转化成运行该程序的CPU所能识别的机器代码,由于不同的体系结构有不同的指令系统。因 此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同CPU的对应可执行二进制 文件。
嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
交叉调试:嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过 程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。
在嵌入式软件开发中,调试时采用的是在宿主机和目标机之间进行的交叉调试,调试器仍然运行在宿主机的通用操作系统之 上,但被调试的进程却是运行在基于特定硬件平台的嵌入式操作系统中,调试器和被调试进程通过串口或者网络进行通信, 调试器可以控制、访问被调试进程,读取被调试进程的当前状态,并能够改变被调试进程的运行状态。
软件开发工具
嵌入式软件的开发可以分为几个阶段:编码、交叉编译、交叉调试。
-
编辑器:用于编写嵌入式源代码程序,从理论上来说,任何一个文本编辑器都可以用来编写源代码。各种集成开发环境 会提供功能强大的编辑器,如VS系列、eclipse、keil等。常见的独立编辑器:UE、Source Insight、vim等。
-
编译器gcc:编译阶段的工作是用交叉编译工具处理源代码,生成可执行的目标文件,在嵌入式系统中,由于宿主机和 目标机系统不一样,需要使用交叉编译,GNU C/C++(gcc)是目前常用的一种交叉编译器,支持非常多的宿主机/目标机 组合。
-
调试器gdb:在开发嵌入式软件时,交叉调试是必不可少的一步。嵌入式软件调试特点:调试器运行在宿主机上,被调 试程序运行在目标机上。
- 调试器通过某种通信方式与目标机建立联系,如串口、并口、网络、JTAG等。在目标机上一般有调试器的某种代 理,能配合调试器一起完成对目标机上运行程序的调试,可以是软件或支持调试的硬件。
- gdb是GNU开源组织发布的一个强大的程序调试工具。
【例题】
以下关于嵌入式系统开发的叙述,正确的是()。
A.宿主机与目标机之间只需要建立逻辑连接
B.宿主机与目标机之间只能采用串口通信方式
C.在宿主机上必须采用交叉编译器来生成目标机的可执行代码
D.调试器与被调试程序必须安装在同一台机器上
答案:C
【2020】实时操作系统主要用于有实时要求的过程控制等领域。因此,在实时操作系统中,对于来自外部的事件必须在()。
(A) 一个时间片内进行处理
(B) 一个周转时间内进行处理
(C) 一个机器周期内进行处理
(D) 被控对象允许的时间范围内进行处理
答案:D
【2020】以下关于操作系统微内核架构特征的说法,不正确的是()。
(A) 微内核的系统结构清晰,利于协作开发
(B) 微内核代码量少,系统具有良好的可移植性
(C) 微内核有良好的伸缩性、扩展性
(D) 微内核的功能代码可以互相调用,性能很高
答案:A D
【201 9】某嵌入式实时操作系统采用了某种调度算法,当某任务执行接近自己的截止期(deadline)时,调度算法将把该任务的优先级调整到系统最高优先级,让该任务获取CPU资源运行。请问此类调度算法是( )。
(A) 优先级调度算法:给不同任务分配优先级
(B) 抢占式优先级调度算法:高优先级自然抢占低优先级资源
(C) 最晚截止期调度算法:快截止自然是最晚
(D) 最早截止期调度算法
答案:C
【201 9】混成系统是嵌入式实时系统的一种重要的子类。以下关于混成系统的说法中,正确的是( )。
(A) 混成系统一般由离散分离组件并行组成,组件之间的行为由计算模型进行控制
(B) 混成系统一般由离散分离组件和连续组件并行或串行组成 ,组件之间的行为由计算模型进行控制
(C) 混成系统一般由连续组件串行组成,组件之间的行为由计算模型进行控制
(D) 混成系统一般由离散分离组件和连续组件并行或串行组成,组件之间的行为由同步/异步事件进行管理
答案:D B
【201 8】目前处理器市场中存在CPU和DSP两种类型处理器,分别用于不同场景,这两种处理器具有不同的体系结构,DSP采用( )。
(A) 冯•诺伊曼结构
(B) 哈佛结构
(C) FPGA结构
(D) 与GPU相同结构
答案:B
【201 8】嵌入式系统设计一般要考虑低功耗, 软件设计也要考虑低功耗设计,软件低功耗设计一般采用( )。
(A) 结构优化、编译优化和代码优化
(B) 软硬件协同设计、开发过程优化和环境设计优化
(C) 轻量级操作系统、算法优化和仿真实验
(D) 编译优化技术、软硬件协同设计和算法优化
答案:C D