[嵌入式系统-76]:RT-Thread-快速上手:利用Keil MDK集成开发环境中,通过模拟器模拟ARM芯片,运行RT-Thread操作系统和应用程序示例,无需硬件开发板

目录

Keil 模拟器 for STM32F103 上手指南

1. 准备工作

2. 初识 RT-Thread:现成的RT-Thread的MDK5工程文件

(1)原始目录:

(2)工程目录

(3)编译

(4)模拟器运行

3. 系统启动代码

4. 用户入口代码

5. 跑马灯的例子:IO、msh线程

6. 其他例子

7. 常见问题

8. 第三方 RTOS 兼容层


Keil 模拟器 for STM32F103 上手指南

一般嵌入式操作系统因为它的特殊性,往往和硬件平台密切相关连,具体的嵌入式操作系统往往只能在特定的硬件上运行。

对于刚接触 RT-Thread 操作系统的读者并不容易马上就获得一个和 RT-Thread 操作系统相配套的硬件模块能不能没有嵌入式硬件的情况下,在个人电脑上模拟特定CPU开发板,运行裸机程序、RT-Thread操作系统程序和应用程序呢?随着计算机技术的发展,我们还真可以采用软件方式来模拟一个能够运行 RT-Thread 操作系统的硬件模块。 ARM 公司的 MDK-ARM 仿真模拟环境就提供了这样的能力!!!

MDK-ARM(MDK-ARM Microcontroller Development Kit)软件是一套完整的集成开发环境(IDE),它出自 ARM 公司,包括了针对 ARM 芯片(ARM7,ARM9,Cortex-M 系列,Cortex-R 系列等)的高效 C/C++ 编译器;针对各类 ARM 设备、评估板的工程向导工程管理还能够提供用于软件模拟运行硬件平台的模拟器;以及与市面上常见的如 ST-Link,JLink 等在线物理真实仿真器相连接以配合调试目标板的调试器

MDK-ARM 软件中的软件仿真模拟器,采用完全软件模拟方式解释执行 ARM 的机器指令,并实现外围的一些外设逻辑,从而构成一套完整的虚拟硬件环境,使得用户能够不借助真实的硬件平台就能够在电脑上执行相应的目标程序。

MDK-ARM 集成开发环境因为其能够支持完全的 STM32F103 软件仿真环境(MDK-ARM并不能支持所有ARM的仿真),也让我们有机会在不使用真实硬件环境的情况下直接在电脑上运行目标代码。这套软件仿真模拟器能够完整地虚拟出 ARM Cortex-M3 MDK-ARM并不能支持所有ARM的仿真)的各种运行模式、外设,如中断异常,时钟定时器,串口等,这几乎和真实的硬件环境完全一致。

实践也证明,本文使用到的这份 RT-Thread 入门例程,在编译成二进制代码后,不仅能够在模拟器上软件模拟运行,也能够不需要修改地在真实硬件平台上正常运行。

Keil、MDK和ARM三者的关系:

Keil、MDK和ARM三者的关系可以从以下几个方面来阐述:

  1. Keil
    • Keil是一家德国的软件公司,专门开发嵌入式系统开发工具。该公司开发的Keil C51是基于uVision IDE的,支持绝大部分8051内核的微控制器开发工具。
    • 后来,Keil公司被ARM公司收购,其开发工具也整合进了ARM的生态系统
  2. MDK (Microcontroller Development Kit)
    • MDK是ARM公司为微控制器开发提供的软件开发工具包。MDK也被称为MDK-ARM、RealView MDK、I-MDK、uVision4等,它们都是指同一套开发工具
    • MDK为基于Cortex-M、Cortex-R4、ARM7、ARM9等ARM处理器设备的软件开发提供了一个完整的开发环境,包括C/C++编译器、调试器、仿真器等
    • MDK有多个版本,如MDK-Lite、MDK-Basic、MDK-Standard、MDK-Professional等,每个版本提供了不同级别的功能和支持
    • Keil MDK(即MDK-ARM)实际上是Keil公司(已被ARM收购)开发的,因此它与ARM架构紧密相关。
  3. ARM
    • ARM是一家英国的芯片设计公司,专门设计低功耗、低成本的RISC(精简指令集计算机)微处理器架构。ARM架构广泛应用于各种嵌入式系统、移动设备、服务器等领域。
    • ARM不仅提供处理器架构的设计,还与其合作伙伴(如半导体公司)共同推广ARM架构的生态系统,包括开发工具、操作系统、中间件等。
    • Keil MDK作为ARM生态系统中的一部分,为ARM架构的微控制器开发提供了强大的支持。

综上所述,Keil、MDK和ARM三者的关系是:Keil是一家开发嵌入式系统开发工具的公司,后来被ARM收购;MDK是ARM公司为微控制器开发提供的软件开发工具包,由Keil(现已成为ARM的一部分)开发;ARM是一家设计微处理器架构的公司,与Keil MDK共同构成了ARM生态系统的开发工具部分。

uVision是Keil公司开发的一款集成开发环境(IDE),主要用于嵌入式系统的软件开发,特别是基于ARM架构的微控制器。uVision支持多种ARM微控制器,包括STM32系列,提供了代码编辑、编译、链接、调试和仿真等一系列开发工具。

在uVision中,开发人员可以方便地创建和编辑项目文件,配置编译器和链接器选项,以及进行源代码的调试和测试。uVision还提供了丰富的库函数和示例代码,可以加速开发过程并简化常见的编程任务。

对于STM32F103这样的ARM Cortex-M3微控制器,uVision提供了完整的支持,包括寄存器和内存视图、断点设置、单步执行、变量监视等功能,使开发人员能够深入理解和控制硬件行为。

总之,uVision是一款功能强大的嵌入式系统开发环境,对于STM32F103等ARM微控制器的开发非常有用。

下面我们将选择 MDK-ARM 集成开发环境的STM32F103(ARM Cortex-M3)模拟器作为目标硬件平台来观察 RT-Thread 操作系统是如何运行的。

STM32F103是单核的。它基于ARM Cortex-M3内核,这是一个高性能、低功耗的32位RISC(精简指令集计算机)处理器。尽管STM32F103是单核处理器,但它具有出色的计算能力和实时性能,足以满足大多数嵌入式系统的需求。此外,STM32F103还提供了丰富的外设接口和扩展功能,使其广泛应用于各种领域,如工业控制、汽车电子、智能家居等。

STM32F103的组成主要包括以下几个方面:

  1. 内核:STM32F103采用的是ARM Cortex-M3内核,这是一款高性能、低功耗的32位RISC(精简指令集计算机)处理器。它支持Thumb-2指令集,具有出色的计算能力和实时性能。
  2. 存储系统
    • 闪存存储器(FLASH):STM32F103包含片上闪存,用于存储程序和数据。根据容量不同,STM32F103系列芯片可分为小容量(16K和32K)、中容量(64K和128K)、大容量(256K、384K和512K)等几种类型。
    • SRAM(静态随机存取存储器):用于存储临时数据和变量。
  3. 总线矩阵:STM32F103具有一个复杂的总线矩阵,用于连接内核和各种外设。这包括I(指令)、S(系统)、D(数据)三条主要的信号线。
  4. 外设接口
    • GPIO(通用输入输出):用于与外部设备进行数字信号的输入输出。
    • ADC(模数转换器):将模拟信号转换为数字信号。
    • DAC(数模转换器):将数字信号转换为模拟信号。
    • USART/UART(通用同步/异步收发器):用于串行通信。
    • SPI(串行外设接口):一种高速、全双工的同步通信总线。
    • I2C(Inter-Integrated Circuit):一种串行通信总线,用于连接微控制器及其各种功能模块。
    • CAN(控制器局域网):一种用于实时应用的串行通讯协议总线。
    • USB(通用串行总线):用于连接外部设备,如键盘、鼠标、打印机等。
    • 其他外设:如定时器、实时时钟(RTC)、看门狗定时器等。
  5. 电源管理:STM32F103具有多种电源管理模式,如睡眠模式、停止模式和待机模式,以节省电能。
  6. 调试接口:STM32F103通常具有SWD(串行线调试)接口,用于与外部调试器连接,实现程序的下载、调试和测试。

这些组成部分共同构成了STM32F103微控制器的整体架构,使其能够执行各种复杂的任务并满足广泛的应用需求。

1. 准备工作

MDK 开发环境:需要安装 MDK-ARM 5.24 (正式版或评估版,5.14 版本及以上版本均可),这个版本也是当前比较新的版本,它能够提供相对比较完善的调试功能

安装方法可以参考 Keil MDK安装

使用 STM32F103 软件仿真 ,还需要下载安装 STM32F103 pack 文件,如果在 MDK 中下载较慢,也可以点击此处下载,下载后双击安装即可。

2. 初识 RT-Thread:现成的RT-Thread的MDK5工程文件

作为一个操作系统,RT-Thread 的代码规模怎么样呢?

在弄清楚这些之前,我们先要做的就是获得与本文相对应的 RT-Thread 的例子,这份例子可以从以下链接获得:

RT-Thread Simulator 例程

(1)原始目录:

这个例子是一个压缩包文件,将它解压,我们这里解压到 D:/。解压完成后的目录结构如下图所示:

rtthread_simulator_v0.1.0 代码目录

各个目录所包含的文件类型的描述如下表所示:

目录名描述
applicationsRT-Thread 应用程序
rt-threadRT-Thread OS的源文件。
- componentsRT-Thread 的各个组件目录。
- includeRT-Thread 内核的头文件。
- libcpu各类芯片的移植代码,此处包含了 STM32 的移植文件。
- srcRT-Thread 内核的源文件。
- toolsRT-Thread 命令构建工具的脚本文件。
driversRT-Thread 的驱动,不同平台的底层驱动具体实现。
LibrariesST 的 STM32 固件库文件。
kernel-sample-0.1.0RT-Thread 的内核例程。

在目录下,有一个 project.uvprojx 文件,它是本文内容所引述的例程中的一个 MDK5 工程文件,双击 “project.uvprojx” 图标,打开此工程文件:

(2)工程目录

打开第一个 RT-Thread 工程

在工程主窗口的左侧 Project 栏里可以看到该工程的文件列表,这些文件被分别存放到如下几个组内,分别是:

目录组描述
Applications对应的目录为 rtthread_simulator_v0.1.0/applications,它用于存放用户应用代码。
Drivers对应的目录为 rtthread_simulator_v0.1.0/drivers,它用于存放 RT-Thread 底层的驱动代码
STM32_HAL对应的目录为 rtthread_simulator_v0.1.0/Libraries/CMSIS/Device/ST/STM32F1xx,它用于存放 STM32 的固件库文件
kernel-sample对应的目录为 rtthread_simulator_v0.1.0/kernel-sample-0.1.0,它用于存放 RT-Thread 的内核例程
Kernel对应的目录为 rtthread_simulator_v0.1.0/rt-thread/src,它用于存放 RT-Thread 内核核心代码。
CORTEX-M3对应的目录为 rtthread_simulator_v0.1.0/rt-thread/libcpu,它用于存放 ARM Cortex-M3 移植代码。
DeviceDrivers对应的目录为 rtthread_simulator_v0.1.0/rt-thread/components/drivers,它用于存放 RT-Thread 驱动框架源码。
finsh对应的目录为 rtthread_simulator_v0.1.0/rt-thread/components/finsh,它用于存放 RT-Thread 命令行 finsh 命令行组件。

(3)编译

现在我们点击一下窗口上方工具栏中的按钮

img

,对该工程进行编译,如图所示:

编译工程

编译的结果显示在窗口下方的 “Build” 栏中,没什么意外的话,最后一行会显示“0 Error(s), * Warning(s).”,即无任何错误和警告。

注:由于新版本的编译器已经升级为6,当前的例子编译器版本是5,所以编译会报出很多错误,这里要去补下载compiler 5,这里有传送门 提取码: iRob

注:由于工程中包含的内核例程代码较多,若使用的是 MDK 试用版本,则会有 16KB 限制,此时可以只保留某个目标例程的代码(例如内核例程只保留一个 thread_sample.c 参与编译),将其他不用的例程先从工程中移除,然后编译。

(4)模拟器运行

在编译完 RT-Thread/STM32 后,我们可以通过 MDK-ARM 的模拟器来仿真运行 RT-Thread。

点击窗口右上方的按钮

img

或直接按 “Ctrl+F5” 进入仿真界面再按 F5 开始运行,然后点击该图工具栏中的按钮或者选择菜单栏中的 “View→Serial Windows→UART#1”,打开串口 1 窗口,可以看到串口的输出只显示了 RT-Thread 的 LOGO,这是因为用户代码是空的,其模拟运行的结果如图所示:

模拟运行 RT-Thread

提示:我们可以通过输入Tab键或者 help + 回车  输出当前系统所支持的所有命令,如下图所示。

(5)通过msh命令行查看

模拟运行 RT-Thread

RT-Thread的msh是RT-Thread的命令行组件FinSH的一部分

FinSH是RT-Thread提供的Shell,它提供了一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息

通过FinSH,用户可以使用串口、以太网或USB等通信方式与PC机进行交互。

在RT-Thread中,msh是一个重要的命令行界面,它允许用户通过输入命令来执行各种操作。msh的功能是自动开启的,可以在RT-Thread的设置中进行修改。通过msh,用户可以执行诸如清屏(clear)、打印内核版本(version)、列出系统信息(list)、查看线程信息(ps)、查看内存使用(free)、控制GPIO(pin)以及重启系统(reboot)等操作。

此外,RT-Thread还提供了宏接口MSH_CMD_EXPORT(name, desc)来导出自定义命令,这些导出的命令可以直接在msh中执行。通过这种方式,用户可以方便地添加自己的命令到msh命令列表中,从而扩展msh的功能。

总的来说,RT-Thread的msh是一个功能强大的命令行界面,它为用户提供了与RT-Thread系统进行交互的便利方式。

在RT-Thread中添加msh命令,可以通过使用宏接口MSH_CMD_EXPORT(name, desc)来实现。这个宏接口允许你将自定义的命令导出到msh模式中,使其可以在msh命令行下被调用。

以下是一个简单的示例,展示了如何添加一个名为hellort的自定义msh命令:

  1. 首先,定义一个函数来实现你的命令逻辑。例如,你可以定义一个函数void hellort(void),该函数在被调用时输出一条消息到控制台。

c复制代码

void hellort(void)
{
rt_kprintf("hello RT-Thread!\n");
}
  1. 然后,使用MSH_CMD_EXPORT宏接口将你的函数导出为msh命令。在这个宏中,第一个参数是你的函数名(也就是命令名),第二个参数是命令的描述。

 
 

c复制代码

MSH_CMD_EXPORT(hellort, "say hello to RT-Thread");
  1. 最后,编译你的RT-Thread项目并运行它。在msh命令行下,你现在应该能够输入hellort命令,并看到控制台输出“hello RT-Thread!”。

请注意,你的自定义命令函数应该遵循一定的规范,以便它们能够与msh命令行系统正确地交互。具体来说,你的函数应该能够接受命令行参数(尽管在上面的示例中我们没有使用任何参数),并且应该能够处理任何可能的错误或异常情况。此外,你的函数还应该确保它不会阻塞msh命令行系统,以便用户可以继续输入其他命令。

3. 系统启动代码

一般了解一份代码大多从启动部分开始,同样这里也采用这种方式,先寻找启动的源头。以 MDK-ARM 为例,MDK-ARM 的用户程序入口为 main() 函数,位于 main.c 文件中。系统启动后先从汇编代码 startup_stm32f103xe.s 开始运行,然后跳转到 C 代码,进行 RT-Thread 系统功能初始化,最后进入用户程序入口 main()。

下面我们来看看在 components.c 中定义的这段代码:

//components.c 中定义
/* re-define main function */
int $Sub$$main(void)
{
    rt_hw_interrupt_disable();
    rtthread_startup();
    return 0;
}复制错误复制成功

在这里 $Sub$$main 函数仅仅调用了 rtthread_startup() 函数。RT-Thread 支持多种平台和多种编译器,而 rtthread_startup() 函数是 RT-Thread 规定的统一入口点,所以 $Sub$$main 函数只需调用 rtthread_startup() 函数即可。例如采用 GNU GCC 编译器编译的 RT-Thread,就是直接从汇编启动代码部分跳转到 rtthread_startup() 函数中,并开始第一个 C 代码的执行的。在 components.c 的代码中找到 rtthread_startup() 函数,我们将可以看到 RT-Thread 的启动流程:

int rtthread_startup(void)
{
    rt_hw_interrupt_disable();

    /* board level initalization
     * NOTE: please initialize heap inside board initialization.
     */
    rt_hw_board_init();

    /* show RT-Thread version */
    rt_show_version();

    /* timer system initialization */
    rt_system_timer_init();

    /* scheduler system initialization */
    rt_system_scheduler_init();

#ifdef RT_USING_SIGNALS
    /* signal system initialization */
    rt_system_signal_init();
#endif

    /* create init_thread */
    rt_application_init();

    /* timer thread initialization */
    rt_system_timer_thread_init();

    /* idle thread initialization */
    rt_thread_idle_init();

    /* start scheduler */
    rt_system_scheduler_start();

    /* never reach here */
    return 0;
}复制错误复制成功

这部分启动代码,大致可以分为四个部分

  • 初始化与系统相关的硬件;

  • 初始化系统内核对象,例如定时器,调度器;

  • 初始化系统设备,这个主要是为 RT-Thread 的设备框架做的初始化;

  • 初始化各个应用线程,并启动调度器。

4. 用户入口代码

上面的启动代码基本上可以说都是和 RT-Thread 系统相关的,那么用户如何加入自己的应用程序的初始化代码呢?RT-Thread 将 main 函数作为了用户代码入口,只需要在 main 函数里添加自己的代码即可。

int main(void)
{
  /* user app entry */
  return 0;
}复制错误复制成功

提示:
为了在进入 main 程序之前,完成系统功能初始化,可以使用 $sub$$ 和 $super$$ 函数标识符在进入主程序之前调用另外一个例程,这样可以让用户不用去管 main() 之前的系统初始化操作。详见ARM® Compiler v5.06 for µVision® armlink User Guide

5. 跑马灯的例子:IO、msh线程

对于从事电子方面开发的技术工程师来说,跑马灯大概是最简单的例子,就类似于每种编程语言中程序员接触的第一个程序 Hello World 一样,所以这个例子就从跑马灯开始。让它轮流地对 LED 进行更新(亮或灭)。

我们 UART#1 中输入 msh 命令:led 然后回车就可以运行起来了,如图所示:

模拟运行跑马灯

跑马灯例子

/*
 * 程序清单:跑马灯例程
 *
 * 跑马灯大概是最简单的例子,就类似于每种编程语言中程序员接触的第一个程序
 * Hello World 一样,所以这个例子就从跑马灯开始。创建一个线程,让它定时地对
 * LED 进行更新(亮或灭)
 */

int led(void)
{
    rt_uint8_t count;

    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);

    for(count = 0 ; count < 10 ;count++)
    {
        rt_pin_write(LED_PIN, PIN_HIGH);
        rt_kprintf("led on, count : %d\r\n", count);
        rt_thread_mdelay(500);

        rt_pin_write(LED_PIN, PIN_LOW);
        rt_kprintf("led off\r\n");
        rt_thread_mdelay(500);
    }
    return 0;
}
MSH_CMD_EXPORT(led, RT-Thread first led sample);复制错误复制成功

6. 其他例子

其他更多的内核示例可以从 kernel-sample-0.1.0 目录下找到。

更多内核示例

7. 常见问题

  • 出现如下编译错误
rt-thread\src\kservice.c(823): error: #929: incorrect use of vaarg fieldwidth = aarg(args, int);
rt-thread\src\kservice.c(842): error: #929: incorrect use of vaarg precision = aarg(args, int);
………复制错误复制成功

原因:这类问题基本上都是因为安装了 ADS 导致,ADS 与 keil共存,va_start 所在的头文件指向了 ADS 的文件夹。

解决办法:

  • 删除 ADS 环境变量
  • 卸载 ADS 和 keil,重启电脑,重装keil

ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具,英文全称为ARM Developer Suite。它主要包括以下几个模块:

  1. SIMULATOR:用于模拟ARM核微控制器的运行环境,帮助开发者在没有实际硬件的情况下进行开发和调试。
  2. C编译器:支持C语言的编译,将C代码转换为ARM核微控制器可以执行的机器代码。
  3. 实时调试器:提供实时调试功能,可以在程序运行过程中设置断点、单步执行、观察变量值等,帮助开发者发现和解决问题。
  4. 应用函数库:提供了一些常用的函数库,供开发者在开发过程中调用。

ADS1.2使用了CodeWarrior IDE集成开发环境,并集成了ARM汇编器、ARM的C/C++编译器、Thumb的C/C++编译器和ARM连接器。它还包含了工程管理器、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类浏览器等功能,使得开发者可以更加方便地进行项目管理和代码开发。

ADS集成开发环境具有方便快捷的集成开发环境、强大的代码生成工具等特点,可以提高开发者的编程效率和代码质量。它广泛应用于ARM核微控制器的开发和调试过程中。

8. 第三方 RTOS 兼容层

为方便之前有其他 RTOS 使用经验的用户快速上手 RT-Thread,以及将基于其他 RTOS 的 API 编写的应用层代码快速移植到 RT-Thread 上,RT-Thread 社区编写了第三方 RTOS 兼容层。目前支持以下第三方 RTOS 的 API 无感移植:

以上第三方 RTOS 兼容层均提供本章所述的STM32F103 Keil 软件模拟工程,以供入门者可以不依托开发板评估兼容层。

  • 30
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Keil Arm-MDK是一种用于嵌入式系统开发开发工具。其具有使用方便、灵活性高、功能强大等特点,让开发者可以在开发过程更加高效的完成工作。 在使用Keil Arm-MDK进行嵌入式系统开发时,开发者可以通过多种方式获取参考资料,帮助自己更好的完成开发工作。以下是一些常见的Keil Arm-MDK开发参考资料: 1. 官方文档:Keil Arm-MDK官方网站上提供了大量的使用文档和指南,包括入门指南、用户手册、开发指南、技术文档等,可供开发者在线或离线查阅。 2. 示例代码:Keil Arm-MDK带有大量的示例代码,覆盖了多个应用领域和开发型号,开发者可以借鉴这些示例代码,快速掌握Keil Arm-MDK的使用方法和注意事项。 3. 手册和编程参考书籍:市面上有大量的Keil Arm-MDK编程参考书籍和手册,其包括了Keil Arm-MDK的基础知识、实用技巧、应用案例等,有助于开发者深入了解Keil Arm-MDK的使用方法和开发技巧。 4. 在线资源:开发者可以通过搜索引擎或嵌入式技术社区查询Keil Arm-MDK相关的博客、论坛、教程等在线资源,获取更多的开发经验和技巧。 总之,Keil Arm-MDK开发参考资料丰富,开发者可以通过多种方式获取帮助和指导,在开发过程更加高效的完成工作。 ### 回答2: Keil ARM-MDK是一款广泛使用的嵌入式系统开发工具,可用于开发各种基于ARM处理器的应用程序Keil ARM-MDK的参考资料是非常丰富的,以下是一些常用的参考资料: 1. Keil ARM-MDK官方网站:该网站提供了Keil ARM-MDK的下载、安装、使用等方面的详细介绍和说明,是了解ARM-MDK最基本的途径。 2. Keil ARM-MDK用户手册:该手册包括所有Keil ARM-MDK软件及功能的详细介绍和指导。用户手册可分为几个章节,涵盖了工程管理、源文件编辑、编译、调试、版本管理等方面的内容。 3. Keil ARM-MDK软件包:Keil公司提供多种软件包,该软件包可以作为Keil ARM-MDK的附加组件,提供一些额外的功能。例如,可以使用CMSIS嵌入式软件包、Keil RTX实时操作系统等。 4. ARM Cortex-M4技术资料:Keil ARM-MDK支持基于Cortex-M4的处理器,该处理器具有高度的性能和灵活性。ARM提供了大量关于Cortex-M4的技术资料,这些资料涵盖了处理器的架构、指令集、时钟、内存、外设等方面的内容。 5. Keil ARM-MDK示例代码:Keil公司为ARM-MDK提供了大量的示例代码。这些示例涵盖了各种应用场景,包括基本的GPIO控制、LCD显示、串口通信、CAN总线通信等等。这些示例代码可以帮助新手更快地上手Keil ARM-MDK开发。 总之,Keil ARM-MDK的参考资料是非常丰富的,但需要注意的是,学习前需要具备一定的单片机和C语言基础,同时需要ARM处理器的特点和应用有一定的了解。 ### 回答3: Keil ARM-MDK是一种用于开发ARM微处理器的集成开发环境。它支持多种ARM处理器系列,包括Cortex-M系列和Cortex-R系列。Keil ARM-MDK提供了一个强大的编译器、调试器和仿真器,能够帮助开发人员快速有效地开发出高质量的嵌入式软件。 在使用Keil ARM-MDK进行ARM微处理器开发时,参考资料是非常重要的。下面是一些可供参考的资料: 1. Keil ARM-MDK官方网站:官方网站提供了大量的文档、例程和资料,以帮助开发人员更好地使用Keil ARM-MDK进行ARM微处理器开发开发人员可以在官网的下载心下载Keil ARM-MDK以及其他相关工具。 2. Keil ARM-MDK编译器用户手册:这是Keil ARM-MDK编译器的详细说明,包括编译器使用、编译器选项、编译器错误处理等。 3. Keil ARM-MDK调试器用户手册:该手册提供了关于Keil ARM-MDK调试器的使用说明和调试技巧。 4. 《ARM Cortex-M系列嵌入式系统开发实战》:该书是一本关于使用Keil ARM-MDK开发Cortex-M系列嵌入式系统的实战指南,内容包括嵌入式系统架构、软件设计、硬件控制等方面。 5. KEIL软件开发管理单元教程:该手册提供了一个完整的Keil ARM-MDK开发项目配置和管理教程,包括软件开发流程、项目配置、固件升级等。 以上资料可以帮助开发人员更好地使用Keil ARM-MDK进行ARM微处理器开发,提高开发效率和开发质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值