发 帖  
原厂入驻New

[经验] 基于Cortex-M架构建立embOS评估工程

2020-1-17 11:18:56  3730 Cortex-M
分享
4
embOS是SEGGER公司开发的一款RTOS,支持抢占调度和时间片轮询调度。embOS内存占用少,ROM最少只占用1.7KB。代码符合MISRA-C:2012,支持低功耗管理,支持市面上主流的编译器和处理器架构。
embOS对教育和非商业用途提供免费评估,以二进制库的方式提供,可以登录SEGGER官网根据所使用的编译器和处理器进行下载。

进入embOS下载页面之后,就可以根据自己的处理器核与编译器选择对应的移植包进行下载。
image1.png 解压下载的压缩文件,会得到embOS产品手册和针对特定处理器核编译器的说明文档,同时,Start目录提供了针对特定编译器的二进制库和Demo例程。对于库的选择和使用可以参考提供的说明文档。
image2.png 以Cortex-M和IAR编译器为例,从Start>Lib目录选择ARM v7-M(M3/M4/M7),CPU小端模式,带调试、堆栈检测和性能分析功能的库os7M_tl_dpl.a。命名中的dpl表示debug + profiling + Stack check built with low optimization level,具体的库命名规则可以查看emOS_CortexM_IAR文档。
image3.png (1).将.a库添加到工程中,同时添加Start>Inc 中Global.h、OS_Config.h、RTOS.h所在路径到头文件路径设置。
image4.png (2).从Start> BoardSupport选择芯片厂商和芯片型号的目录,将其下Setup目录中的.c文件也添加到工程。如果没有所使用的芯片的Demo例程,可以选择与芯片接近的型号。
image5.png (3).修改BSP.c和BSP_UART.c,根据自己的硬件来实现。对于Cortex-M来说,RTOSInit_xxx.c中的代码可以通用。xmtx.c、xmtx2.c、xtmx3.c是IAR运行时库在embOS实现的线程安全和线程局部存储功能的接口,如果不使用线程安全相关的话,这三个文件可以不添加。
(4).在OS_Config.h中,根据所使用的库设置宏定义。
image6.png (5).启动OS。在启动embOS调度之前,需要至少创建一个任务。在main函数中,首先调用OS_Init()函数初始化embOS,然后调用OS_InitHW()初始化必要硬件。调用任务创建API创建任务,在调用OS_Start()之后,调度器启动,任务开始调度。
image7.png (6).embOS提供了IAR内核调试插件,在IAR中设置启用。
image8.png (7).当程序暂停运行时,通过IAR菜单栏上的embOS打开各项观察窗口,查看任务的执行情况。
image9.png image10.png SEGGER提供的embOS库包括了针对特定处理器核编译器移植,用户可以很方便的集成到现有工程。embOS的API也很简洁明了,结合产品手册可以很快上手。更多的embOS应用可以访问SEGGER官网。
gfshao 2020-2-8 14:45:38
感谢分享,努力学习
1回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发经验
关闭

站长推荐 上一条 /5 下一条

快速回复 返回顶部 返回列表