【TobudOS简介】
TobudOS是开放原子开源基金会孵化的,面向物联网领域开发的实时操作系统,具有低功耗,低资源占用,模块化,安全可靠等特点,可有效提升物联网终端产品开发效率,助力物联网终端设备及业务快速接入云上服务和应用。
【项目特点】:
(1).小体积
最小内核:RAM 0.6KB,ROM 1.8KB 典型 LoraWAN 及传感器应用:RAM 3.3KB,ROM 12KB
(2).低功耗
休眠最低功耗低至 2uA 支持外设功耗管理框架
(3).丰富的 IoT 组件
集成主流 IoT 协议栈 多种通信模组SAL层适配框架; 支持 OTA 升级 提供简单易用端云 API,加速用户业务接入腾讯云
(4).可靠的安全框架
多样化的安全分级方案 均衡安全需求&成本控制
(5).良好的可移植性
内核及IoT组件高度解耦,提供标准适配层 提供自动化移植工具,提升开发效率
(6).便捷的调试手段
提供云化的最后一屏调试功能 故障现场信息自动上传云平台,方便开发人员调试分析
1、从开源原子基金会下载源码到本地:https://atomgit.com/tobudos
2、项目我将采用前面的工程作为模板使用。
3、在项目中新建os文件夹,并把源码arch\arm\amr_v7m以及kernel以及osal复制os文件夹中。
4、新建一个TOS-CONFIG文件夹,用于存放TobudOS的配置文件。
5、打开keil工程,添加arch、kernel、config三个分组:
6、把工程源码arm-v7m\cortex-m7\gcc下面的port_s.S、port_c.c,以及\arm-v7m\common下面的tos_cpu.c、tos_fault.c加到arch分组下面:
7、把kernel\core目录下面所有的.c文件添加进kernel分组中。
8、在工程中新建一个tos_config.h,并把它加入到config分组中。
9、添加头文件目录到工程中分别为:
分别为:
- ..\..\OS\arm-v7m\common\include
- ..\..\OS\arm-v7m\cortex-m7\gcc
- ..\..\OS\kernel\core\include
- ..\..\OS\TOS-CONFIG
- #ifndef _TOS_CONFIG_H_
- #define _TOS_CONFIG_H_
- #include "gd32h7xx.h"
- #include <stdio.h>
- #define TOS_CFG_TASK_PRIO_MAX 10u
- #define TOS_CFG_ROUND_ROBIN_EN 1u
- #define TOS_CFG_OBJECT_VERIFY_EN 1u
- #define TOS_CFG_OBJ_DYNAMIC_CREATE_EN 1u
- #define TOS_CFG_EVENT_EN 1u
- #define TOS_CFG_MMBLK_EN 1u
- #define TOS_CFG_MMHEAP_EN 1u
- #define TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x8000
- #define TOS_CFG_MUTEX_EN 1u
- #define TOS_CFG_TIMER_EN 1u
- #define TOS_CFG_PWR_MGR_EN 0u
- #define TOS_CFG_TICKLESS_EN 0u
- #define TOS_CFG_SEM_EN 1u
- #define TOS_CFG_TASK_STACK_DRAUGHT_DEPTH_DETACT_EN 1u
- #define TOS_CFG_FAULT_BACKTRACE_EN 0u
- #define TOS_CFG_IDLE_TASK_STK_SIZE 512u
- #define TOS_CFG_CPU_TICK_PER_SECOND 1000u
- #define TOS_CFG_CPU_CLOCK (SystemCoreClock)
- #define TOS_CFG_TIMER_AS_PROC 1u
- #define TOS_CFG_MAIL_QUEUE_EN 1u
- #endif
1)、TOS_CFG_MMHEAP_DEFAULT_POOL_SIZE 0x8000
这个HEAP的大小,如果报内存不足,可以适当的调查大小。
2)、TOS_CFG_CPU_CLOCK (SystemCoreClock)
这个SystemCoreClock,为系统时钟频率。
12、然后我们需要注释掉gd32h7xxit.c中的PendSV_Handler中断函数,因为在TobudOS里面也做了定义,要不会报重复定义的错误。
13、在SysTick_Handler添加TobudOS的心跳包,内容如下:
- /*!
- \brief this function handles SysTick exception
- \param[in] none
- \param[out] none
- \retval none
- */
- void SysTick_Handler(void)
- {
- delay_decrement();
- if(tos_knl_is_running())
- {
- tos_knl_irq_enter();
- tos_tick_handler();
- tos_knl_irq_leave();
- }
- }
- void test_task(void *Parameter)
- {
- while(1)
- {
- TG_LED1;
- tos_task_delay(1000);
- }
- }
- void led_task_entry(void *Parameter)
- {
- while(1)
- {
- TG_LED2;
- tos_task_delay(500);
-
- }
-
- }
并在主任务中初始化这两个任务:
- tos_knl_init();
- err = tos_task_create(&task, "task1",test_task,NULL, 2, task_stack,1024,20);
- err = tos_task_create(&led_task, "task_led",led_task_entry,NULL, 2, task_stack_led,1024,20);
- tos_knl_start();
编译下载后,成功的运行,并看到两个任务”并行“的控制两个LED灯在不同周期里闪烁!
【总结】
GD32H759可以稳定的运行TobudOS,国产的芯片配国产的操作系统,支持本地化发展!
【工程源码】
全部回复 0
暂无评论,快来抢沙发吧