第一讲、移植准备
交流群:1092151263
1.1 threadx源码包
1.2 资料包
第二讲、开始移植
上一章,已经完成了基础模板搭建了。下面开始进行移植。
2.1 资源准备
- 1、在项目中创建threadx文件夹,用于存放threadx源码
- 2、拷贝github下载的源码中的common整个文件夹,以及prots文件里面的cortex_m4整个文件夹。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ydeSeDX3-1631849354344)(7B71E7342D6245D1BB9278882B29F1F8)]
2.1.1 mdk
- 1、在mdk中创建文件目录:
- 1.1、threadx/src:装入common/src/内的全部.c文件
- 1.2、threadx/ports:装入ports/ac5/src内的所有.s文件
- 1.3、threadx/ports:装入ports/ac5/tx_initialize_low_level.s (该文件在example_build里面,因为该文件,我们需要做修改,所以我们拷贝一份出来,即使后面修改出问题,再重新考本一份就OK了)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gvcfGkbu-1631849354347)(13E91A5AB77A49F5AF3FF612433DFC8D)]
- 2、添加头文件路径
- 2.1、\threadx\common\inc
- 2.2、\threadx\cortex_m4\ac5\inc
2.2 修改ports
该部分的修改,需要具有:
暂时比较复杂,可以直接拷贝别人做好的ac5文件夹,有空再补上这部分的移植吧。
我将完善的代码放在了群文件中。
第三讲、编写测试代码
3.1 main.c
#include "tx_api.h"
#define THREAD1_PRIO 3
#define THREAD1_STACK_SIZE 1024
static TX_THREAD thread1;
uint8_t thread1_stack[THREAD1_STACK_SIZE];
#define THREAD2_PRIO 2
#define THREAD2_STACK_SIZE 1024
static TX_THREAD thread2;
uint8_t thread2_stack[THREAD2_STACK_SIZE];
void my_thread1_entry(ULONG thread_input)
{
while (1)
{
LED_TOGGLE();
printf("threadx 1 application running...\r\n");
tx_thread_sleep(2000);
}
}
void my_thread2_entry(ULONG thread_input)
{
while (1)
{
printf("threadx 2 application running...\r\n");
tx_thread_sleep(1000);
}
}
void tx_application_define(void *first_unused_memory)
{
tx_thread_create(&thread1, "thread 1", my_thread1_entry, 0, &thread1_stack[0], THREAD1_STACK_SIZE, THREAD1_PRIO, THREAD1_PRIO, TX_NO_TIME_SLICE, TX_AUTO_START);
tx_thread_create(&thread2, "thread 2", my_thread2_entry, 0, &thread2_stack[0], THREAD2_STACK_SIZE, THREAD2_PRIO, THREAD2_PRIO, TX_NO_TIME_SLICE, TX_AUTO_START);
}
HAL_UART_Receive_IT(&huart1, &arxbuffer, 1);
printf("threadX RTOS on BearPi IoT Board\r\n");
tx_kernel_enter();
然后就会看见不同时的打印两个任务。
效果如下:
第四讲、总结
至此,移植完毕。
2021年9月17日11:22:34:
- 1、ports接口部分的移植没有讲,以后有空回来补上
|