【笔记】ARM M3-M4权威指南第二章《嵌入式软件开发介绍》

本文详细介绍了ARM微控制器的构成、开发所需组件、开发流程,涉及C编译器、开发板、调试工具、软件开发步骤、中断驱动、多任务系统和CMSIS软件接口的标准化等内容,为嵌入式开发人员提供了全面的指导。
摘要由CSDN通过智能技术生成

2.1 ARM微控制器是由哪些构成的
在这里插入图片描述
2.2 开始时需要准备什么
2.2.1 开发组件,C 编译器组件产品如下
在这里插入图片描述
2.2.2 开发板
2.2.3 调试适配板(Keil – ULINK;IAR-- I-Jet;STM Value Line Discover;JTAG/SW仿真器/在线仿真器(ICE);开源板 – ARM的CMSIC-DAP和Coocox的CoLink)
2.2.4 软件设备驱动
2.2.5 示例(Sample Code)
2.2.6 文档和其他资源
2.2.7 其他设备

2.3 软件开发流程
1、IDE开发环境
创建工程 >> 添加文件到工程 >> 设置工程选项 >> 编译和连接 >> flash编程 >> 执行程序和调试

在这里插入图片描述
2.4 编译应用程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.5 软件流程
2.5.1 轮询架构—当任务复杂且多时反应缓慢效率低
在这里插入图片描述
2.5.2-1 中断驱动
在这里插入图片描述

2.5.2-2 轮询+中断驱动方式(常见的软件运行架构)
在这里插入图片描述
2.5.3 多任务系统
RTOS:任务调度、信号量和消息传递、内存管理、工作模式划分等等
在这里插入图片描述
2.6 C程序中的数据类型
提示:①整数在6位或16位微控制器上一般是16位,而在ARM架构上则总是32位。
②这些数据类型在使用前需包含C99标准头文件" stdint.h "
在这里插入图片描述
2.7 输入、输出和外设访问
1、初始化流程:①初始化时钟 >> ②初始化GPIO >> ③初始化外设 >> ④中断配置
可在②之后初始化SRAM,也可将③和④放到一起,最后再统一使能中断

2、对外设寄存器的初始化,可通过指针访问,可将外设模块用一个数据结构体定义,这样初始化实例代码量可大大减少。

3、“_IO”、“_I”、“_O”等宏在CMSIS 标准头文件中定义

2.8 微控制接口
USB\UART\IO\LCD的等等都可作为debug接口

2.9 Cortex微控制器软件接口-CMSIS
2.9.1 CMSIS 简介
宗旨:CMSIS 由ARM开发,微控制器和软件供应商可以使用一致的软件结构来开发Cortex微控制器的软件。
目标:①提高软件重用性 ②提高软件兼容性 ③易于学习④独立于工具链 ⑤开发性

CMSIS(Cortex Microcontroller Software Interface Standard)是由ARM推出的一套软件接口标准,旨在提供一致的软件接口和开发工具链支持,简化嵌入式系统的开发过程。以下是CMSIS的主要内容:

核心(Core):CMSIS Core提供了与ARM Cortex-M处理器内核相关的通用功能和接口。它包括了处理器寄存器定义、中断控制器、系统控制寄存器、异常处理等。

DSP库(DSP Library):CMSIS DSP库是一套优化的数字信号处理函数库,提供了常见的信号处理算法,如滤波、FFT、矩阵运算等。这些函数经过优化,可以在ARM Cortex-M处理器上高效地执行。

RTOS API(Real-Time Operating System Application Programming Interface):CMSIS RTOS API定义了一组通用的API,用于在嵌入式系统中实现实时操作系统(RTOS)。它提供了任务管理、信号量、消息队列、定时器等功能,方便开发者使用和移植RTOS。

驱动程序接口(Driver Interface):CMSIS Driver Interface定义了一组通用的驱动程序接口,用于访问外设和硬件资源。它提供了统一的API,使得不同厂商的外设驱动程序可以在不同的MCU上进行移植和重用。

软件组件(Software Components):CMSIS还提供了一些软件组件,如Flash算法、启动文件、调试接口等,用于辅助嵌入式系统的开发和调试。

SVD:CMSIS 系统视图描述,基于XML语言格式,用于描述微控制产品外设集。调试工具供应商根据微控制器供应商提供的CMSIS SVD文件,很快的就能构建外设视图。

除了以上主要内容,CMSIS还包括了一些其他的辅助工具和文档,如CMSIS-Pack、CMSIS-DAP、CMSIS-SVD等,用于支持软件包管理、调试和硬件描述等方面的需求。

2.9.2 CMSIS 所做的标准化
①处理器外设的标准化定义(NVIC\SysTick\MPU\SCB)
②访问处理器特性的标准化函数(API)
③操作特殊指令的标准化函数(例如等待中断 _WFI,用于进入休眠模式)
④系统异常处理的标准化命名
⑤系统初始化的标准函数 (SystemInit(),在startup.s中调用,初始化时钟电路和电源管理寄存器,非强制标准化)
⑥描述时钟频率的标准化变量(变量名称SystemCoreClock,可了解当前设定的SysTick运行频率)

2.9.3 CMSIS-Core 的组织结构
一般来说可以将CMSIS定位一下几层:
内核外设访问层。名称定义、地址定义以及访问内核寄存器和内核外设的辅助函数,这是处理器相关的,由ARM提供。
设备外设访问层。名称定义、外设寄存器的地址定义以及包括中断分配、异常向量定义等的系统设计,这是设备相关的(注意:同一家供应商的多个设备可能会使用同一组文件)由设备供应商定义。
外设访问函数。访问外设的驱动代码,这是供应商相关的,而且是可选的。由设备供应商提供。
在这里插入图片描述
2.9.4 如何使用CMSIS-Core
CMSIS一般由微控制器厂商添加到设备驱动软件包中,我们在使用微控制器调试时其已包含在内。
一般来说需做到以下两点:
①将源文件添加到工程中
②设定头文件搜索路径,并将头文件添加到搜索路径中
在这里插入图片描述

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值