3 裸机移植FreeRTOS 源码

三 裸机移植FreeRTOS 源码

1、在裸机工程目录下建一个文件夹FreeRTOS,

	(1)在新建的目录下建 src 和 port 文件夹
	(2)把Source下的".c"文件复制到src。
	(3)"MemMang"和将要使用的编译器文件复制到 port。此处使用MDK就复制"RVDS"(4)直接复制"include文件夹"到FreeRTOS文件夹内。

在这里插入图片描述

2、在编译器(MDK)里新建分组

	(1)在开发环境里面新建 FreeRTOS/src 和 FreeRTOS/port 两个分组。
​	在 FreeRTOS/src 里面添加 文件夹 src 里面的内容。
​	在 port 里面添加 :[1]MemMang 里面的内容,常用的是"heap_4.c"。
​		[2]RVDS 里面ARM_CMx(x为根据内核表示034或者7)的内容。

在这里插入图片描述

3、在裸机工程目录下建一个文件夹 user

​ (1)在 user 目录里存放自己的代码,把 "FreeRTOSConfig.h"文件复制进去,或者自己新建一个。
​ (2)在 在开发环境里面新建 user 分组,把自己的代码和 FreeRTOSConfig.h 添加进去。

在这里插入图片描述

4、添加路径

在这里插入图片描述

5、修改 FreeRTOSConfig.h 文件内容
主要修改两个方面:

	添加宏定义__NVIC_PRIO_BITS, CortexM 系列产品优先级仅使用 4 位。
	修改优先级相关的几个宏定义:
		//使能抢占式调度器
		#define configUSE_PREEMPTION 	1
		//系统主频 
		#define configCPU_CLOCK_HZ 		(SystemCoreClock )
		//系统时钟节拍 1KHz,即 1ms。
		#define configTICK_RATE_HZ 		( ( TickType_t ) 1000 )
		//定义可供用户使用的最大优先级数,如果这个定义的是 5,那么用户可以使用的优先级号是 0,1,2,3,4,不包含 5,对于这一点,要特别的注意。
		#define configMAX_PRIORITIES 	( 5 )
		//定义堆大小, FreeRTOS 内核, 用户动态内存申请
		#define configTOTAL_HEAP_SIZE 	( ( size_t ) ( 17 * 1024 ) )
工程里面不能有 SysTick, PendSV 和 SVC 三个系统中断的使用,因为 FreeRTOS 系统已经实现了这三个中断。
	修改后在这个文件的末尾加上 Systick, PendSV 和 SVC 中断函数的宏定义, 目的是将 FreeRTOS 移
植文件 port.c 文件里面的中断服务程序映射到 CMSIS 定义的标准名称, 这样就不需要用户去修改工
程启动代码中这几个中断的名字了, 很方便就实现了两个函数的统一:

#define 	vPortSVCHandler 	SVC_Handler
#define 	xPortPendSVHandler 	PendSV_Handler
#define 	xPortSysTickHandler SysTick_Handler

6、至此,最小的 FreeRTOS 内核移植完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值