keil mdk uvision 开发工具简介
作者:互联网
1、KEIL
. 1) 既是公司名称 , 同时也是KEIL公司所有的开发工具。
. 2) 2005年被ARM收购。
2、uVision
. 1) KEIL公司开发的集成开发环境(IDE)。
. 2) 共有4个版本:uVision2、uVision3、uVision4、uVision5。
3、MDK
. 1) 英文全称:Microcontroller Development Kit。
. 2) MDK-ARM = KEIL MDK = RealView MDK = KEIL For ARM,统一用 MDK-ARM 称呼。
MDK-ARM 为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM专为微控制器应用而设计,不仅易学易用,而且功能强大,能够满足大多数苛刻的嵌入式应用。
MDK-ARM有四个可用版本,分别是MDK-Lite、MDK-Basic、MDK-Standard、MDK-Professional。所有版本均提供一个完善的C / C++开发环境,其中MDK-Professional还包含大量的中间库。
https://www2.keil.com/docs/default-source/default-document-library/mdk5-getting-started.pdf?sfvrsn=2[NC,L]
cmsis common mircrocontroller software interface standard
CMSIS 是一个用于在 Cortex-M 上运行的嵌入式应用程序的软件框架
基于微控制器。 它提供一致的软件接口和硬件
简化软件重用的抽象层
ARM 编译器版本 5 是参考 C/C++ 编译器,TÜV 认证的安全应用认证套件,以及长期支持和维护。
ARM 编译器版本 6 基于创新的 LLVM 技术和支持最新的 C 语言标准,包括 C++11 和 C++14。 它为 Cortex-M 目标提供最小尺寸和最高性能。
1. 安装软件包
2. 使用示例项目验证安装包
分别是编译,下载和调试。
启动 µVision 并使用菜单 Project - New µVision Project。 在你之后
已经选择了一个项目目录并指定了项目名称,选择一个
目标设备。
选择设备后,Manage Run-Time Environment 窗口
显示此设备的相关软件组件
描述列中的链接提供对文档的访问每个软件组件。
Click Resolve
这解决了所有依赖关系并启用了其他所需的软件组件
(这里是 ARM::CMSIS:Core 和 ::Device:Startup)
CMSIS-CORE:定义 Cortex-M 处理器内核的 API 和
外围设备,并包括一致的系统启动代码。该软件
组件 ::CMSIS:CORE 和 ::Device:Startup 是您所需要的全部
在使用异常的本机处理器上创建和运行应用程序,
中断和设备外设。
CMSIS-RTOS2:提供标准化的实时操作系统 API 和启用软件模板、中间件、库和其他组件可以跨受支持的 RTOS 系统工作。这里解释使用Keil RTX5 实现。
CMSIS-DSP:是一个用于数字信号处理 (DSP) 的库集合,具有超过 60 种适用于各种数据类型的函数:定点(小数 q7、q15、q31)和单精度浮点(32 位)。
CMSIS-Driver:是描述外围驱动接口的软件API用于中间件堆栈和用户应用程序。 CMSIS 驱动程序 API 是设计为通用且独立于特定的 RTOS,使其可在各种受支持的微控制器设备中重复使用。
软件的设计基本概念:
无限循环设计:涉及将程序作为无限循环运行。 从循环中调用程序函数(线程),而中断服务例程 (ISR) 执行时间关键的工作,包括一些数据处理。
--
在无限循环中运行嵌入式程序是简单嵌入式应用程序的适当解决方案。 通常由硬件中断触发的时间关键型功能在 ISR 中执行,该 ISR 还执行任何所需的数据处理。 主循环仅包含对时间要求不严格且在后台运行的基本操作。
RTOS 设计:涉及使用实时操作系统 (RTOS) 运行多个线程。 RTOS 提供线程间通信和时间管理功能。 抢先式 RTOS 降低了中断功能的复杂性,因为高优先级线程可以执行时间关键的数据处理。
--
RTOS 内核,如 Keil RTX5,基于并行执行线程(任务)的思想。与现实世界一样,您的应用程序必须完成多个不同的任务。基于 RTOS 的应用程序可在您的软件中重新创建此模型,并具有多种优势:
线程优先级和运行时调度由 RTOS 内核使用经过验证的代码库处理。
RTOS 为线程之间的通信提供了一个定义良好的接口。
抢先式多任务概念简化了应用程序的逐步增强,即使在更大的开发团队中也是如此。可以添加新功能而不会冒更关键线程的响应时间的风险。
无限循环软件概念经常轮询发生的中断。相比之下,RTOS 内核本身是中断驱动的,可以在很大程度上消除轮询。
这允许 CPU 更频繁地休眠或处理线程。
现代 RTOS 内核对中断系统是透明的,即对于具有硬实时要求的系统是强制性的。通信设施可用于 IRQ 到任务的通信,并允许对中断进行上半部/下半部处理。
使用 Keil RTX5
Keil RTX 5 将 CMSIS-RTOS API v2 实现为原生 RTOS
基于 Cortex-M 处理器的设备的接口。
一旦执行到 main(),推荐的顺序是初始化硬件并启动内核。 您的应用程序的 main() 应至少按给定顺序实现以下内容:
硬件的初始化和配置,包括外设、内存、引脚、时钟和中断系统。
使用相应的 CMSIS-CORE 函数更新 SystemCoreClock。
使用 osKernelInitialize 初始化 CMSIS-RTOS 内核。
可选地,创建一个新线程 app_main,它被用作使用 osThreadNew 的主线程。 或者,可以直接在 main 中创建线程。
使用 osKernelStart 启动 RTOS 调度程序。 osKernelStart 在成功执行的情况下不会返回。 osKernelStart 之后的任何应用程序代码都不会被执行,除非 osKernelStart 失败。
软件组件 ::CMSIS:RTOS2 (API):Keil RTX5 必须使用
组件 ::CMSIS:CORE 和 ::Device:Startup。 选择
这些组件提供以下中央 Keil RTX5 文件:
文件 cmsis_os2.h 是一个标准头文件,它连接到每个
CMSIS-RTOS API v2 兼容 RTOS。 每个实现都提供了相同的 cmsis_os2.h,它定义了 CMSIS-RTOS2 的接口。
使用 cmsis_os2.h 以及动态对象分配允许创建在不同 CMSIS-RTOS v2 实现上使用时不需要修改的源代码或库。
头文件中的所有定义都以 os 为前缀,以便为 CMSIS-RTOS 函数提供唯一的名称空间。 属于一个模块的所有定义和函数都被分组并有一个共同的前缀,例如,osThread 表示线程。
Keil RTX5 配置
文件 RTX_Config.h 包含 Keil RTX5 的配置参数。 复印件
此文件的一部分是使用 RTX 组件的每个项目的一部分。
抢占式线程切换Preemptive Thread Switching
每个任务都有不同的优先级,任务会一直运行直到被高优先级任务抢占或者遇到阻塞式的 API 函数
时间片调度器 a round robin timeout
每个任务都有相同的优先级,任务会运行固定的时间片个数直到遇到系统阻塞式的 API 函数
CMSIS-DSP
CMSIS-DSP 库是一套通用的数字信号处理 (DSP)职能。 该库有多种针对不同情况进行优化的变体ARM Cortex-M 处理器。
CMSIS-Driver
特定于设备的 CMSIS-Drivers 提供中间件之间的接口和微控制器外围设备。 这些驱动程序不限于 MDK中间件,可用于各种其他中间件堆栈以利用这些外围设备。
特定于设备的驱动程序通常是支持微控制器设备并符合 CMSIS-Driver 标准。
中间件组件通常具有连接到这些驱动程序的各种配置文件。 对于大多数设备,RTE_Device.h 文件将驱动程序配置为微控制器设备的实际引脚连接。
中间件/应用程序代码通过控制结构连接到驱动程序实例。 此控制结构的名称反映了设备的外围接口。 大多数通信外围设备的驱动程序是提供设备支持的软件包的一部分。
Compiler:I/O
软件组件 Compiler:I/O 允许您重新定位标准 C 运行时库的 I/O 函数。 应用程序代码经常使用标准 I/O 库函数,例如 printf()、scanf() 或 fgetc() 来执行输入/输出操作。
标准 ARM Compiler C 运行时库中这些函数的结构是:
在user中设置生成hex
fromelf.exe --vhx --8x1 --output=.\output\@L.hex !L
若要生成bin则: fromelf.exe --bin --output=@L.bin !L
标签:mdk,MDK,CMSIS,keil,RTOS,API,线程,ARM,uvision 来源: https://www.cnblogs.com/changryJB/p/16316032.html