完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本系列文章中使用的软件运行环境:硬件,QEMU(STM32)仿真; 软件,μCOS-III(V3.03.01)。
运行环境说明 为良好地说明RTOS的方方面面,必须上手亲自调试代码。为了减少CPU架构和指令集方面的理解负担,我们使用RISC指令集的CPU。基于ARM Cortex-M3处理器架构的STM32系列Soc在低功耗嵌入式领域有着比较广泛的应用。因此,我们选择这款Soc作为其硬件平台。考虑到实验的方便性和有些初学者手里还没有STM32的开发板等原因,我们使用QEMU软件仿真一个基于STM32 Soc的开发板STM32-P103。如大家有条件购买实际的开发板,建议大家购买实际的STM32开发板。 针对μCOS,我们选择μCOS-III 这个版本,从官网上看这个版本是最新的,添加了一些用户反馈的新功能,比如Round Robin Scheduling。 这个版本网上资料也最多,并且这个版本除了提供基本的RTOS kernel 之外,也同时提供了TCP/IP Stack、μCOS-FS、μCOS-GUI等等基础服务。真可谓是学习RTOS的绝好材料。 硬件环境 硬件使用QEMU仿真,目前官网上QEMU的仿真支持的开发板没有STM32,万能的工程师们怎么能允许这种情况发生呐!qemu_stm32 这个作者真是活雷锋啊,他还提供了测试这个仿真出来的STM32开发板的DEMO程序,从简单的串口打印“hello world” 到复杂的RTOS。可惜,他用的是FreeRTOS,我们要用μCOS-III。stm32_p103_demos。 qemu_stm32这个软件的编译、安装请参考Project的ReadMe文件,Try it , enjoy it!!! 关于QEMU软件的使用请参考官网网站QEMU。 QEMU(2.11)最新版本支持的ARM 板卡有: qemu-system-arm -M help Supported machines are: akita Sharp SL-C1000 (Akita) PDA (PXA270) ast2500-evb Aspeed AST2500 EVB (ARM1176) borzoi Sharp SL-C3100 (Borzoi) PDA (PXA270) canon-a1100 Canon PowerShot A1100 IS cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310) collie Sharp SL-5500 (Collie) PDA (SA-1110) connex Gumstix Connex (PXA255) cubieboard cubietech cubieboard emcraft-sf2 SmartFusion2 SOM kit from Emcraft (M2S010) highbank Calxeda Highbank (ECX-1000) imx25-pdk ARM i.MX25 PDK board (ARM926) integratorcp ARM Integrator/CP (ARM926EJ-S) kzm ARM KZM Emulation Baseboard (ARM1136) lm3s6965evb Stellaris LM3S6965EVB lm3s811evb Stellaris LM3S811EVB mainstone Mainstone II (PXA27x) midway Calxeda Midway (ECX-2000) mps2-an385 ARM MPS2 with AN385 FPGA image for Cortex-M3 mps2-an511 ARM MPS2 with AN511 DesignStart FPGA image for Cortex-M3 musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) n810 Nokia N810 tablet aka. RX-44 (OMAP2420) netduino2 Netduino 2 Machine none empty machine nuri Samsung NURI board (Exynos4210) palmetto-bmc OpenPOWER Palmetto BMC (ARM926EJ-S) raspi2 Raspberry Pi 2 realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S) realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore) realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8 realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9 romulus-bmc OpenPOWER Romulus BMC (ARM1176) sabrelite Freescale i.MX6 Quad SABRE Lite Board (Cortex A9) smdkc210 Samsung SMDKC210 board (Exynos4210) spitz Sharp SL-C3000 (Spitz) PDA (PXA270) sx1 Siemens SX1 (OMAP310) V2 sx1-v1 Siemens SX1 (OMAP310) V1 terrier Sharp SL-C3200 (Terrier) PDA (PXA270) tosa Sharp SL-6000 (Tosa) PDA (PXA255) verdex Gumstix Verdex (PXA270) versatileab ARM Versatile/AB (ARM926EJ-S) versatilepb ARM Versatile/PB (ARM926EJ-S) vexpress-a15 ARM Versatile Express for Cortex-A15 vexpress-a9 ARM Versatile Express for Cortex-A9 virt-2.10 QEMU 2.10 ARM Virtual Machine virt QEMU 2.11 ARM Virtual Machine (alias of virt-2.11) virt-2.11 QEMU 2.11 ARM Virtual Machine virt-2.6 QEMU 2.6 ARM Virtual Machine virt-2.7 QEMU 2.7 ARM Virtual Machine virt-2.8 QEMU 2.8 ARM Virtual Machine virt-2.9 QEMU 2.9 ARM Virtual Machine xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9 z2 Zipit Z2 (PXA27x) 通过查看qemu官方文档里 3.5 ARM System emulator相关章节得知,支持的STM32 Soc的板子有: lm3s6965evb Stellaris LM3S6965EVB lm3s811evb Stellaris LM3S811EVB 我们可以基于上述这两个Board做开发、验证。 qemu_stm32 这个Project里用的是QEMU2.1.3,作者添加了Olimex STM32 P103这个开发板的支持。 。/qemu-system-arm -M help Supported machines are: lm3s811evb Stellaris LM3S811EVB canon-a1100 Canon PowerShot A1100 IS vexpress-a15 ARM Versatile Express for Cortex-A15 vexpress-a9 ARM Versatile Express for Cortex-A9 xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9 connex Gumstix Connex (PXA255) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) lm3s6965evb Stellaris LM3S6965EVB versatileab ARM Versatile/AB (ARM926EJ-S) borzoi Borzoi PDA (PXA270) tosa Tosa PDA (PXA255) cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310) midway Calxeda Midway (ECX-2000) mainstone Mainstone II (PXA27x) n810 Nokia N810 tablet aka. RX-44 (OMAP2420) terrier Terrier PDA (PXA270) stm32-maple OPEN SOURCE HARDWARE MAPLE / ARDUINO LIKE DEVELOPMENT BOARD highbank Calxeda Highbank (ECX-1000) cubieboard cubietech cubieboard sx1-v1 Siemens SX1 (OMAP310) V1 sx1 Siemens SX1 (OMAP310) V2 realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore) kzm ARM KZM Emulation Baseboard (ARM1136) akita Akita PDA (PXA270) z2 Zipit Z2 (PXA27x) musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) stm32-p103 Olimex STM32 p103 Dev Board realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8 versatilepb ARM Versatile/PB (ARM926EJ-S) realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S) realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9 spitz Spitz PDA (PXA270) none empty machine virt ARM Virtual Machine collie Collie PDA (SA-1110) smdkc210 Samsung SMDKC210 board (Exynos4210) verdex Gumstix Verdex (PXA270) nuri Samsung NURI board (Exynos4210) integratorcp ARM Integrator/CP (ARM926EJ-S) 可以看到新添加了以下两个Cortex-M3的开发板: stm32-maple OPEN SOURCE HARDWARE MAPLE / ARDUINO LIKE DEVELOPMENT BOARD stm32-p103 Olimex STM32 p103 Dev Board 最近又查阅了些关于Cortex-m3使用GNU Toolchain开发的相关资料,发现了一个支持大部分Cortex-m3 处理器的改进版QEMU。支持绝大部分基于Cortex-m3的开发板。 qemu-system-gnuarmeclipse -M help Supported boards: Maple LeafLab Arduino-style STM32 microcontroller board (r5) NUCLEO-F103RB ST Nucleo Development Board for STM32 F1 series NUCLEO-F411RE ST Nucleo Development Board for STM32 F4 series NetduinoGo Netduino GoBus Development Board with STM32F4 NetduinoPlus2 Netduino Development Board with STM32F4 OLIMEXINO-STM32 Olimex Maple (Arduino-like) Development Board STM32-E407 Olimex Development Board for STM32F407ZGT6 STM32-H103 Olimex Header Board for STM32F103RBT6 STM32-P103 Olimex Prototype Board for STM32F103RBT6 STM32-P107 Olimex Prototype Board for STM32F107VCT6 STM32F0-Discovery ST Discovery kit for STM32F051 line STM32F4-Discovery ST Discovery kit for STM32F407/417 lines STM32F429I-Discovery ST Discovery kit for STM32F429/439 lines generic Generic Cortex-M board; use -mcu to define the device 这个针对Cortex-m3改进版的QEMU的详细介绍The GNU MCU Eclipse QEMU。 GNU MCU Eclipse QEMU的COMMAND的使用方法The GNU MCU Eclipse QEMU command line options. 结论: 开发板选择Olimex STM32 p103,硬件模拟器选择The GNU MCU Eclipse QEMU。 软件环境 软件使用 μCOS-III(V3.03.01),我们直接下载μCOS-III基于STM32开发板的版本。 下载地址: Download μCOS-III 官网上的开发环境一般是基于Keil 或者IAR的,这种集成开发环境适合工程开发,并不适合入门学习,因为好多东西都自动化了,不利于学习者学习掌握核心重点,因此我们使用GNU Tools(GCC、GDB)来做编译、调试。我们使用的GNU tools 上面已经介绍了。 开发环境 编译器使用gnu交叉编译器编译,编译器下载链接:GNU Arm Embedded Toolchain 开发嵌入式软件准备环境还是挺繁琐又没技术含量的事情,当我接触了Docker之后,一切都改变了,Docker可以帮你快速部署开发环境,又不破坏其他的开发环境。Docker提供了OS级别上的运行环境隔离。关于Dcoker的基本概念和基本使用方法参见Docker user manual。 因此,我计划发布两个Docker image: 如果你访问Docker慢的话,请选择使用国内aliyun Build environment docker image: docker pull registry.cn-hangzhou.aliyuncs.com/bahutou/stm32_compile_env Debug environment using qemu docker image: docker pull registry.cn-hangzhou.aliyuncs.com/bahutou/ucos_debug_env 关于这两个Docker image的具体使用方法具体见后面的使用qemu调试Cortex-M3 程序的demo。 生成Docker image的Dockerfile 托管在github上,如果你想自己定制Docker image,你可以修改Dockerfile,然后自己动手build。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1801 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1096 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
735 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1684 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
745浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 18:31 , Processed in 0.817523 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号