|
之前在写帖子“UML学习笔记 状态机部分”时jorya_txj向我介绍了他的RAW OS,于是当时就决定搞定量子平台的初步应用并看一篇RTOS的文章后就开始研究jorya_txj的OS。
根据jorya_txj发的帖子,我给自己定了一个学习计划表,不求多,一天搞定一个点。计划9天学习完,当然,深入理解绝对不是9天可以完成的事。还需要仔细专研。
之前做东西没有涉及过任何的RTOS,所以,我使用的技术语言可能比较幼稚,大牛轻拍。
和其他所有东西的学习一样,在学自己罗列出来的9个点之前必须把实验平台给搭建起来。为了实现对比,我采取了STM32F1与F4同时实验的方法。
实验硬件: F4来自现在实习的公司产品用到的一块屏,F1来自于红牛开发板。
移植过程分为4步。
第一步:移植文件
在jorya_txj的官网上我下载了两个工程,分别是F4和F1的RAW OS DEMO,已经贴在附件上。楼主计划将RAW OS 移植到当前正在写的F4的工程上,F1就基于RAW OS DEMO调试
将F4 DEMO中的system目录下的user_extensio.c kernel文件夹,port文件夹全部添加到本身的工程。编译时可以过的。
请注意,将cpu.asm也要移植到工程,这里面有很多内核函数。user_extensio也要注意移植到。
第二步:对原工程适当更改:其实就是注意在SysTick_Handler中添加如下几句话而已。
- raw_enter_interrupt();
- task_0_tick_post();
- raw_finish_int();
复制代码
楼主移植时这里有一段插曲,QP实现时用到了PendSV_Handler RAW OS 也用到了 PendSV_Handler,为了先移植好RAW OS ,只有先把QP给砍掉了。
第三步:自己创建一个任务:
相关代码:
- #define TEST_TASK_STK_SIZE 512
- PORT_STACK test_task_stack1[TEST_TASK_STK_SIZE];
- RAW_TASK_OBJ test_task_obj;
- void test_task1(void * pParam)
- {
- 你想只干一次的事;
- while(1)
- {
- 你想一直干的事;
- }
- }
- raw_task_create(&test_task_obj, (RAW_U8 *)"task1", 0,
- 13, 0, test_task_stack1,
- TEST_TASK_STK_SIZE , test_task1, 1);
复制代码
第四步:测试任务:
这是楼主的测试过程,在F1 与 F4中都有测试,通过仿真界面可以看出来,每一次SLEEP过后都过了500MS。
至此,移植完成:)
去解决晚饭问题了,晚上开始自己的RAW OS 第一课:任务管理
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|