【我爱嵌入式】

@童鞋们

自动化嵌入式复习

总结了期末考试简答题的内容

第一章

  1. 嵌入式的定义
    以应用为中心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统及用户应用软件等部分组成。

  2. 嵌入式系统构成
    它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。

  3. 嵌入式的分类
    (1)按照系统体系结构划分:①普林斯顿体系结构(又称冯·诺依曼结构)(程序指令存储器和数据存储器合并在一起的存储器结构)②哈佛结构(程序指令和数据存储分开的存储器结构)
    (2)按照指令集结构划分:①CISC复杂指令集系统②RISC精简指令集结构系统
    (3)按照处理器种类划分:①嵌入式微控制器MCU、②嵌入式DSP处理器、③嵌入式微处理器MPU、④嵌入式片上系统SOC

  4. 嵌入式的特点:
    ①专业性强
    ②系统精简
    ③高可靠性
    ④高实时性
    ⑤操作系统内核小、软硬件可剪裁、可固化、实时可靠
    ⑥开发工具和开发环境具有专用性
    ⑦关注成本

  5. 开发方法及流程
    开发流程:编写——交叉编译、链接——定位和下载调试。

  6. 嵌入式系统产品开发一般包括哪几个阶段?每个阶段的主要工作有哪些?
    嵌入式系统设计一般步骤:1)需求分析 2)体系结构设计 3)硬件/软件设计 4)系统集成和系统测试。
    在这里插入图片描述
    ①需求分析: 分析用户的需求;确定硬件软件;检查需求分析的结果;确定项目的约束条件;概要设计
    ②体系结构设计:系统是硬实时系统还是软实时系统;操作系统是否需要嵌入;物理系统的成本、尺寸和耗电量是否是产品成功的关键因素;选择处理器和相关硬件;其他
    ③硬件/软件:
    硬件设计:Ⅰ设计硬件子系统:分成模块、设计框图。例如:CPU子系统、存储器子系统等;Ⅱ定义硬件接口:I/O端口;硬件寄存器、共享内存、硬件中断、存储器空间分配、处理器的运行速度。
    软件设计:Ⅰ设计软件子系统:软件总体设计、模块设计;Ⅱ定义软件接口:模块接口、函数接口。
    ④系统集成:把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进设计过程中的错误。
    ⑤系统测试:
    硬件测试:硬件电路的功能及指标的测试;可靠性测试;电磁兼容测试。
    软件测试:白盒测试:基于代码的测试,在目标硬件上进行,通过硬件仿真进行;黑盒测试:从使用的角度进行测试。

  7. CM3体系结构、编程机制
    (1)体系结构:
    内核是ARMv7-M体系结构;
    哈佛结构,采用读理的指令总线和数据总线,可同时进行取指和数据读写操作,提高处理器运行性能;
    内核支持低功耗模式;
    引入分组堆栈指针机制;
    支持非对齐数据访问;
    定义了统一的存储器映射;
    位绑定操作;
    32位硬件除法和单周期乘法;
    三级流水线和转移预测;
    内置嵌套向量中断控制器;
    拥有先进的故障处理机制;
    支持串行调试;
    极高性价比。

  8. 嵌入式系统软件通常包括哪些部分,简述各部分的功能。
    嵌入式软件系统包括:操作系统、应用软件、驱动层软件。功能如下:
    (1)操作系统:操作系统层包含嵌⼊式内核、嵌⼊式TCP/IP⽹络系统、嵌⼊式⽂件系统、嵌⼊式管理等部分。具有一般操作系统的核心功能,负责嵌入式系统的全部软硬件资源的分配、调度工作控制、协调并发活动。
    (2)应用软件
    由多个相对独立的应用任务组成,每个应用任务完成特定的工作,如I/O任务等。
    (3)驱动层软件
    包括硬件抽象层HAL和板级支持包BSP。为上层软件提供了设备的操作接口;将系统软件与底层硬件部分进行了隔离。

  9. 常用的嵌入式操作系统,软硬件系统的组成
    (1)常用的嵌入式操作系统:Linux操作系统,Android系统,VxWorks 、WindowsCE嵌入式操作系统,uc/OS-II实时操作系统等。(嵌入式Linux,VxWorks,QNX,Windows Embedded,UC/OS-II,Delta OS ,Android,IOS)
    (2)软硬件系统的组成:
    ①嵌入式硬件系统以嵌入式处理器为核心,配置必要的外围接口部件。主要包括:嵌入式处理器、存储器、I/O口和外设。
    ②嵌入式软件系统主要包括:驱动层软件、操作系统、应用软件。

  10. 嵌入式操作系统的功能有哪些?
    (1)操作系统是控制和管理计算机系统内各种硬件和软件资源,有效组织多道程序运行的软件系统,是用户和计算机之间的接口。
    (2)操作系统是计算机硬件的封装和功能扩展。
    (3)操作系统是计算机资源的管理者。

  11. 为什么要使用嵌入式实时操作系统
    ① 嵌入式实时操作系统提高了系统的可靠性;
    ② 不仅可以提高了开发效率,还可以缩短了开发周期;
    ③ 嵌入式实时操作系统充分发挥了32位CPU的多任务潜力。

  12. 从硬件上看,嵌入式系统有哪些部分组成?
    嵌入式处理器、 存储器、 I/O系统和外设。

  13. 使用嵌入式实时操作系统必要性说明。
    实时嵌入式系统是为执行特定功能而设计的,可以严格地按时序执行功能。其最大的特征就是程序的执行就有确定性。具体可分为二种形式:
    (1)具有强(硬)实时特点的嵌入式操作系统:在指定的时间内未能实现某个确定的任务,会导致系统的全面失败,则被称为硬(强)实时系统。硬实时系统,其系统响应时间在毫秒或微秒级(数控机床)。一个硬实时系统通常在硬件上需要添加专门用于时间和优先级管理的控制芯片,uc/os和VxWorks是典型的实时操作系统。
    (2)具有弱(软)实特点的嵌入式操作系统:在软实时系统中,虽然响应时间同样重要,但是超时却不会发生致命的错误。软实时系统则主要在软件方面通过编程实现现实的管理。比如Windows CE、uCLinux是一个多任务分时系统。一般软实时系统,其系统响应时间在毫秒或几秒的数量级上,其实时性的要求比强实时系统要差一些(电子菜谱的查询)。
    网上搜索的题库
    1、简述工程项目开发主要环节,其中软件设计环节的主要方法有哪些?
    答:体系结构设计、用户界面设计、数据库设计、模块设计、数据结构和算法设计。
    2、工程项目开发时,需要考虑哪些环节,各个环节分别完成哪些工作?
    答:工程开发时主要包含以下环节:
    市场调研:调研市场情况,分析市场趋势,市场需求;
    产品定义:市场开发人员根据市场调研情况,提出我们能够设计或提供什么产品来满足市场需求;
    需求:写出产品的需求说明书,定义出产品必须具备和可以具备的各项具体功能;
    总体设计:软件和硬件的总体结构图,包含哪些模块,模块之间的关系;
    详细设计:软件和硬件的详细设计,软件的算法、流程、硬件的连接逻辑;
    系统实现:软件代码编程、硬件电路板设计、装焊、调试;
    测试:模块功能测试、集成测试;
    验证和测试:进一步验证产品是否符合设计要求,是否满足用户需求;
    产品后期支持:版本控制、代码文档。

第二章

  1. 嵌入式处理器?
    嵌入式处理器的五种总线:
    ①I-code总线
    ②D-code总线
    ③系统总线
    ④外部专用外设总线
    ⑤内部专用外设总线
  2. ARM 处理器运行模式
    ARM处理器工作状态:内核包含两种指令系统,ARM和thumb指令集,分别对应一种处理器的状态。两种状态由程序状态字CPSR中T标志位确定,为0时处理器ARM状态,为1时处理器Thumb状态。
    ARM状态特点:处理器执行32位字对齐方式。ARM指令,长度32位,功能强大。
    Thumb状态:处理器执行16位半字对齐。Thumb指令,为ARM的子集。
    如果要加快程序的执行速度,采用ARM指令,如果要节省存储器资源,采用thumb指令编程。
  3. Cortex-M3(微控制器)的编程权限、工作模式
    (1)CM3的编程权限:特权级和用户级。特权执行可以访问所有资源,非特权执行时,对有些资源的访问受到限制或不允许访问。
    (2)CM3处理器支持两种工作模式:线程模式、处理模式。
    ①线程模式:在复位时、异常返回时处理器进入线程模式;在线程模式下,所有代码可由特权级和用户级访问
    ②处理模式:出现异常时处理器进入处理模式;在处理模式中,所有代码只能由特权级访问。
  4. ARM处理器对数据类型的支持
    ARM处理器支持以下6种数据类型:32位字、16位半字和8位字节。
    ①字节(Byte)数据:8位有符号、无符号;
    ②半字节(Halfword)数据:16位有符号、无符号;
    ③字(Word)数据:32位有符号、无符号。
  5. ARM 寄存器:常见寄存器的作用(常见的寄存器有哪些?分别介绍它们的作用)
    ①R0-R12 为通用寄存器,R0-R7是低组寄存器,R8-R12是高组寄存器;
    ②R13为堆栈寄存器,主堆栈指针MSP,进程堆栈指针(PSP);
    ③R14为链接寄存器(LR),用来调用子程序时存储返回地址,也用于异常返回;
    ④R15为程序计数器(PC),用来计数当前程序的偏移地址量;
    特殊功能寄存器包括:
    ⑤程序状态寄存器组(应用程序PSR、中断PSR、执行PSR);
    ⑥异常中断寄存器;
    ⑦控制寄存器(CONTROL),定义特权级别和选择当前使用的堆栈指针。
CM3寄存器CM3寄存器说明/作用
通用寄存器组低组寄存器R0-R7所有指令都能访问
通用寄存器组高组寄存器R8-R116位的Thumb指令不能访问,32位的Thumb-2指令可以访问
堆栈指针R13主堆栈指针(MSP)由操作系统内核、异常服务例程以及所有需要特权访问的程序代码使用
堆栈指针R13进程堆栈指针(PSP)用于不处在异常服务例程的规范应用代码程序
链接寄存器R14(LR)链接寄存器R14(LR)调用子程序时存储返回地址,也用于异常返回
程序计数器R15(PC)程序计数器R15(PC)程序计数器
特殊功能寄存器程序状态寄存器组应⽤程序PSR、中断PSR、执⾏PSR
特殊功能寄存器异常中断寄存器与异常中断相关
特殊功能寄存器控制寄存器定义特权级别和选择当前使⽤的堆栈指针
  1. (1)寻址方式(ARM处理器的寻址方式)
    立即寻址、寄存器寻址、寄存器间接寻址、寄存器移位寻址、基址变址寻址、多寄存器寻址、堆栈寻址、块复制寻址和相对寻址。9种

  2. (2)指令集
    指令是CPU的执行命令,是程序编写的语言、软件的载体。指令集是计算机硬件和软件的接口。
    ARM指令集分类:数据处理指令、数据传送指令、数据交换指令、移位指令、控制流指令。

  3. (3)CM3操作模式的转换
    ①芯片复位后,进入线程模式特权级。
    ②线程模式特权级与Handler模式特权级之间通过异常/中断的进出来切换。
    ③在特权级下的代码可以通过置位CONTROL[0]来进入非特权级。
    ④Handler模式永远都是特权级的。不管是任何原因产生了任何异常,处理器都将以特权级来运行其服务例程,异常返回后,系统将回到产生异常时所处的级别。
    ⑤Handler模式通过异常/中断进入,退出即返回线程模式。从Handler模式异常返回时,也可以通过置位CONTROL[0](非特权级的线程模式)或清零CONTROL[0](特权级的线程模式)来改变返回线程模式的级别。
    ⑥线程模式非特权级下的代码不能再试图修改CONTROL[0]来回到线程模式特权级。它必须通过一个异常进入到Handler模式,由那个异常Handler处理来修改,清零CONTROL[0]为线程模式特权级,才能在返回到线程模式后拿到特权级。
    老师的PPT
    (这张图片不是我做的,但是不知道怎么去掉CSDN的水印害,有没有人教教我)

  4. 存储单元概念
    具有存储数据和读写数据的功能的单元。

  5. 存储格式类型
    大端格式:字数据的高字节存储在低地址中,低字节存在高地址中;
    小端格式:字数据的高字节存储在高地址中,低字节存在低地址中。
    大端格式小端格式

  6. 存储器重映射的概念
    存储器本身不具有地址信息,它的地址是由芯片厂商或由用户分配的,给存储器分配地址的过程就叫做存储器映射,重映射就是给存储单元再分配1个地址。

  7. 位绑定操作
    把一个地址单元的32位变量中的每一位,通过一个简单的地址变换算法,映射到另一个地址空间(别名区)的一个字。对绑定区的位操作,就变成了别名区的字操作。
    对位绑定别名区的字,可以直接进行读写操作,比位绑定区对位的“读——修改——写”操作更快、更简单。

  8. 嵌入式处理器选型
    步骤:①深入研究具体的嵌入式系统应用需求,充分的应用需求分析后获取应用系统的性能指标;
    ②分析研究市场上各大厂商提供的各款嵌入式处理器的性能指标,如功耗、体积、成本、可靠性、速度、处理能力、电磁兼容性等。

  9. 嵌入式处理器的体系结构和命名规则
    (1)ARM处理器的体系结构:
    ①每条数据处理指令都对算术逻辑单元和移位器控制,以实现ALU和移位器的最大利用;
    ②地址自动增加和减少寻址模式,优化程序循环;
    ③多寄存器装载和存储指令实现最大数据吞吐量;
    ④所有指令的条件执行实现最快速的代码执行。
    (2)ARM处理器的命名规则:
    ARM {x} {y} {z} {T} {D} {M} {I} {E} {J} {F} {-S}
    x:系列
    y:存储器管理/保护单元
    z:cache
    T:Thumb 16位译码器
    D:JTAG调试器
    M:快速乘法器
    I:嵌入式跟踪宏单元
    E:增强指令集(基于TDMI)
    J:Jazelle
    F:向量浮点单元
    S:可综合版本
    (3)STM32命名规则:
    如STM32 F 103 C 8 T 6 A xx
    STM32:产品系列号。基于ARM的32位微控制器
    F:产品类型。F通用型、L超低功耗型
    103:产品子系列。100、101、102、105/107
    C:引脚数目。T36,C48,R64,V100,Z144
    8:闪存容量。4、6、8、B、C、D、E:16-512KB
    T:封装类型。H:BGA,T:LQFP,U:VFQFPN
    6:温度范围,6:-40~ 85°C。7:-40~105°C

第三章

  1. STM32处理器的时钟电路及各自功能
    ①HSI(High Speed Internal) :高速内部时钟; 由内部8MHZ的RC振荡器产生;直接作为系统时钟或2分频处理后作为PLL输入;时钟精度较差。
    ②HSE (High Speed External):高速外部时钟;可以由HSE外部晶体/陶瓷谐振器两种时钟源产生;高达25MHZ;外部晶振,能产生非常精确的主时钟。(外部信号源输入OSC_IN端口或用外部振荡器)。
    ③PLL 时钟:锁相环PLL实现了外部的输入信号与内部的震荡信号同步,实现了电子设备的正常工作。内部PLL可以用于倍频HSI的RC输出时钟或HSE晶体输出时钟。
    ④LSI(low speed external)低速内部时钟,内部40KHZ时钟,低功耗时钟源,可以在停机模式或待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。
    ⑤LSE(Low speed internal)低速外部时钟,外接32.768KHZ晶振,可以由LSE外部晶体/陶瓷谐振器两种时钟源产生;产生低速高精度的时钟源。
    ⑥SYSCLK系统时钟。在系统复位之后,HSI振荡器被选作系统时钟。当一个时钟源被直接或通过PLL间接用于系统时钟时,该时钟不能被停止。从一个时钟源到另外一个时钟源的切换,仅当目标时钟源准备好时才会发生。
    高速时钟供中央处理器等高速设备使用,低速时钟供外设等低速设备使用;时钟分开有助于实现低功耗。
  2. (1)时钟设置流程:
    ①打开HSE时钟
    ②根据系统时钟设定AHB时钟(RCC_HCLKConfig)
    ③由AHB时钟设定APB2时钟(RCC_HCLK2Config)
    ④由AHB时钟设定APB1时钟(RCC_HCLK1Config)
    ⑤设置系统时钟(选择HSE/HIS/PLL作为系统时钟)
    ⑥开启外设(RCC_AHBPeriphClockCmd)
    (2)所涉及的寄存器:
    ①时钟控制寄存器(RCC_CR)
    ②时钟配置寄存器(RCC_CFGR)
    ③时钟中断寄存器(RCC_CIR)
    ④APB2外设复位寄存器(RCC_APB2RSTR)
    ⑤APB1外设复位寄存器(RCC_APB1RSTR)
    ⑥AHB外设时钟使能寄存器(RCC_AHBENR)
    ⑦APB2外设时钟使能寄存器(RCC_APB2ENR)
    ⑧APB1外设时钟使能寄存器(RCC_APB1ENR)
    ⑨备份区域控制寄存器(RCC_BDCR)
    ⑩控制/状态寄存器(RCC_CSR)

第四章

  1. STM32最小系统的组成:电源电路、时钟晶振电路、复位电路、启动模式选择、程序下载电路。

第五章

  1. STM32固件库
    固件库是一个固件函数包,它由程序、数据结构和宏组成,包含微控制器所有外设的标准驱动函数(接口)。

第六章

  1. GPIO端口可以配置的四种输入模式:
    浮空输入,上拉输入,下拉输入,模拟输入。
    四种输出模式:
    通用开漏输出,通用推挽输出,开漏复用功能,推挽复用输出。
  2. 几个比较常用的配置:
    0x4表示模拟输入模式,0x3表示推挽输出模式,0x8表示上拉/下拉输入模式,0xB表示复用输出。复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
  3. STM32的每个I/O口都由7个寄存器控制:
    CRL和CRH、IDR和ODR、BSRR、BRR、LCKR
    端口配置寄存器CRL和CRH;
    数据寄存器IDR和ODR;(输出数据寄存器ODR,输入数据寄存器IDR;置位复位寄存器BSRR;复位寄存器BRR;锁存寄存器LCKR。
    最常用的有4个:CRL/CRH/IDR/ODR。
  4. GPIO配置
    (1)配置输入的时钟
    (2)声明GPIO结构
    (3)应用GPIO端口
  5. GPIO与中断配合的配置步骤
    (1)时钟配置
    (2)GPIO设置
    (3)EXTI配置
    (4)NVIC配置
    (5)中断子函数
    (6)编写主程序while()函数

第七章

  1. 中断与异常
    (1)中断与异常的概念
    中断: “意外突发事件”,该请求信号来自CM3内核的外面。
    异常:因内核CM3的活动而产生的,即在执行指令或访问存储器时而产生。
    (2)中断模块化划分
    如果把整个中断硬件结构按照模块化的思想来划分,可以将其简单地分为3部分,即中断通道、中断处理和中断响应。片内外设或外部设备是中断通道对应的中断源,它是中断的发起者。CM3内核属于中断响应。
    (3)中断嵌套
    中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行的过程。
    (4)STM32 Cortex-M3处理器内含的中断
    ARM cortex_m3 内核支持 240个外部中断(通道),256 个中断优先级(16 个内核+240 外部),STM32支持的中断共为83个,15个内核异常和68个外部中断通道。
  2. 中断优先级分组
    (1)概念

    中断优先级有两种:占先优先级(Preemption Priority)和副优先级(SubPriority)。
    ①高占先优先级的中断可以打断低占先优先级的中断服务,从而构成中断嵌套。
    ②副优先级不可以中断嵌套,但占先优先级相同但副优先级不同的多个中断同时申请服务时,STM32首先响应副优先级高的中断。但是副优先级高的是不可以打断副优先级低的。
    ③当相同占先优先级和相同副优先级的中断同时申请服务,STM32首先响应中断通道做对应的中断向量地址低的那个中断。(0最高15最低)
    (2)设置
    中断优先级分组共有5组,分别是NVIC_PriorityGroup_x(x=0,1,2,3,4),占先优先级有2i个(x=0 ~ 4),副优先级有2(4-i)个(x=0 ~ 4)。
    老师的PPT
    这也不是我做的图片……
  3. STM32外部中断一般配置过程:
    ①使能SYSCFG时钟
    ②初始化IO为输入
    ③设置IO口与中断线的映射关系
    ④初始化线上中断,设置触发条件等
    ⑤配置中断分组(NVIC),并使能中断
    ⑥编写中断服务函数
    ⑦清除中断标志位
    网上的PPT
    这也是网上找的图片噢……
  4. 举例说明STM32外部中断的过程
    分为中断源、中断控制和中断处理。
    ①片内外设或外部设备是中断通道对应的中断源,是中断的发起者。
    ②CM3核判断是否使能中断,其次根据中断号到中断向量表中查找中断服务函数:xxx_IRQHandler (void)的入口地址
    ③执行ISR。
    以EXTI0所接中断源为例。
    (1)EXTI0中断到达前,内核还在0x0000 9C18处执行程序。
    (2)当EXTI0中断到达时,内核暂停当前程序执行立即跳转到0x0000 0058处开始进行中断处理。内核在0x0000 0058处是不能能完成任务的,在这里它只能拿到一张“地图”,这张地图会告诉内核如何到达中断处理函数 EXTI0_IRQHandler()。
    (3)根据“地图”,内核又来到0x0000 9658处,在这里中断服务程序EXTI0_IRQHandler()得到执行。
    (4)EXTI0_IRQHandler()执行结束,内核返回到0x0000 9C18处恢复暂停程序的执行。

第八章

  1. 各种定时器
    ①高级控制定时器TIM1,TIM8
    ②通用定时器TIMX(TIM2-5)
    ③基本定时器(TIM6,TIM7)
    ④看门狗定时器
    ⑤实时时钟(RTC)
    ⑥系统滴答定时器
  2. 定时时间的计算
    (1)相关寄存器
    预分频器:TIMx_PSC 预分频系数:TIM_Prescaler
    自动重转载寄存器:TIMx_ARR 自动重转载系数:TIM_Period
    (2)数据结构
    我也不知道数据结构嘤嘤嘤……留作彩蛋吧
    (3)给定时时间,计算相关参数的设置
    设脉冲的频率为TIMxCLK(Hz),定时公式为:
    T=(TIM_Period+1)×(TIM_Prescaler+1)/ TIMxCLK
    (4)通用定时器配置步骤
    ①使能定时器时钟
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//使能TIM4时钟
    ②初始化定时器参数,包含自动重装值,分频系数,计数方式等
    void TIM_TimeBaseInit(TIM_TypeDef * TIMx, TIM_TimeBaseInitTypeDef * TIM_TimeBaseInitStruct);
    typedef struct
    {
    uint16_t TIM_Prescaler; //定时器预分频器;[1~65535]
    uint16_t TIM_CounterMode;//计数模式,3种
    uint32_t TIM_Period; //定时器周期
    uint16_t TIM_ClockDivison;//时钟分频;
    uint8_t TIM_RepetitionCounter;//重复计数器;
    } TIM_TimeBaseInitTypeDef;
    TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStruct);
    ③设置定时器中断类型,并使能
    void TIM_ITConfig(TIM_Type* TIMx, uint16_t TIM_IT, FunctionalState NewState);
    ④设置定时器中断优先级,使能定时器中断通道
    NVIC初始化库函数NVIC_Init();
    ⑤开启定时器
    void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewStae);
    ⑥编写定时器中断服务函数
    TIM4_IRQHander
    ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
    if(TIM_GetITStatus(TIM4,TIM_IT_Update))
    {…//执行TIM4更新中断 }

第十章

  1. 基本概念:互斥、前后台系统、代码临界区、可重入型函数
    (1)互斥: 为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥。
    (2)前后台系统: 嵌入式控制器应用程序一般是一个无限循环,可称为前后台系统。循环体中调用相应函数完成相应的操作,这部分可看做后台行为,也可以称为任务级。中断服务函数处理异步事件,这部分可看做前台行为,也可以称为中断级。
    (3)代码临界区: 一次只容许一个任务访问的资源称为临界资源。临界区就是每个任务访问临界资源的那段程序。因为这类代码往往用于设置硬件寄存器或初始化外设,实际上是表示硬件状态切换的代码,含有状态“边界”临时转换的含义,故译为临界区。
    注:运行这段程序不允许被打断。一旦这部分代码开始执行,不允许任何中断进入。但这一点并不是绝对的,如果中断不调用任何包含临界区的代码,也不访问任何临界区使用的共享资源,则这个中断可以执行。为确保临界区代码的执行,在进入临界区前要关中断,而临界区代码执行完成后要立即开中断。
    (4)可重入型函数: 可重入型函数是可以被一个以上的任务调用,而不担心数据的破坏。
  2. 嵌入式操作系统的分类、功能
    (1)嵌入式操作系统的分类:
    ①按系统的类型分类:商业化系统、专用系统和开放源代码系统三大类。
    ②按响应时间分类:实时操作系统(RTOS)和非实时操作系统两大类。RTOS可以分为硬实时和软实时。
    ③按软件体系结构分类:单体结构、分层结构和微内核结构三大类。
    (2)操作系统的功能:
    ①构成一个易于编程的虚拟机平台。EOS构成一个虚拟机平台,EOS把底层的硬件细节封装起来,为运行在它上面的软件(如中间件软件和各种应用软件)提供了一个抽象的编程接口。软件开发在这个编程接口之上进行,而不直接与机器硬件层打交道。EOS所 提供的编程接口实际上就是操作系统对外提供的系统调用函数。
    ②系统资源的管理者。EOS是一个系统资源的管理者,负责管理系统当中的各种软硬件资源,如处理器、内存、各种I/O设备 、文件和数据等,使得整个系统能够高效、可靠地运转。运行在嵌入式环境中的EOS其目标是为了完成某一项或有限项功能,而非通用型的操作系统,因此在性能和实时性方面有严格的限制,能耗、成本和可靠性通常是影响设计的重要因素,要求占用资源少,适合在有限存储空间运行,要求系统功能可以根据产品的设计要求进行剪裁、调整。
    (3)UCOS-II嵌入式操作系统的特点
    提供源代码;可移植性;可固化;可裁剪;可抢占;多任务;可确定性;任务栈;系统服务;终端管理;稳定性与可靠性。
    (4)影响嵌入式操作系统移植的因素(移植条件)
    ①处理器的C编译器能产生可重入代码;
    ②用C语言可以打开和关闭中断;
    ③处理器支持中断,并能产生定时中断;
    ④处理器支持对CPU相关寄存器进行堆栈操作的指令。
    (5)利用嵌入式操作系统开发应用流程
    ①初始化代码
    a. 标识整个代码的初始入口点
    b. 设置中断向量表
    c. 初始化存储系统
    d. 初始化各模式下的的数据栈
    e. 初始化一些关键的I/O接口
    f. 初始化异常中断需要使用的RAM变量
    g. 使能异常中断
    h. 切换处理器模式(可选)
    i. 切换处理器的状态(可选)
    ②主程序
    a. 初始化操作系统的数据结构,为操作系统的运行作准备
    b. 创建应用所需要的资源
    c. 创建系统的多任务
    d. 启动系统的多任务运行
    ③任务
    在嵌入式实时多任务系统开发中,用C语言代码表示的任务是一个无限的循环程序,任务不能有返回,不能有退出出口。
    ④子程序(函数)
    ⑤私用子程序

嵌入式C混合编程基础知识

  1. 该部分引用网上链接的,具体链接点击此处哟~
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嵌入式开发环境搭建可以使用eclipse作为IDE。以下是嵌入式eclipse的搭建步骤: 1. 下载eclipse:首先,你需要从eclipse官方网站下载适用于嵌入式开发的eclipse版本。根据你的操作系统选择合适的版本进行下载。 2. 安装eclipse:下载完成后,解压缩文件并将其安装到你的计算机上。根据操作系统的不同,安装步骤可能会有所不同。 3. 安装插件:为了进行嵌入式开发,你需要安装适用于嵌入式开发的插件。常用的插件有CDT(C/C++开发工具)和GNU ARM插件。你可以通过eclipse的插件管理器来安装这些插件。 4. 配置编译器:在eclipse中,你需要配置编译器以便进行编译和调试。根据你使用的嵌入式平台和编译器,配置方法可能会有所不同。通常,你需要指定编译器的路径和相关参数。 5. 创建项目:在eclipse中,你可以创建一个新的嵌入式项目。选择合适的项目模板,并根据你的需求进行配置。 6. 编写代码:在项目中,你可以编写嵌入式代码。使用eclipse的编辑器来编写代码,并利用插件提供的功能进行代码补全、调试等操作。 7. 编译和调试:使用eclipse的编译功能来编译你的代码。如果配置正确,你可以使用eclipse的调试功能来调试你的嵌入式应用程序。 8. 上传和运行:将编译后的代码上传到你的嵌入式设备上,并运行你的应用程序。 以上是嵌入式eclipse的搭建步骤。希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值