本文目录 1.下载SDK代码 2.确认IDE和Pack版本 3.首次编译 3.1 填写APP信息 3.2 设置目标IC 3.3 修改晶振 3.4 执行首次编译 4.移植FreeRTOS 4.1 下载FreeRTOS源码包 4.2 解压FreeRTOS代码包 4.3 复制FreeRTOS系统代码文件 4.4 复制FreeRTOS系统配置文件 4.5 修改 FreeRTOSConfig.h文件 4.6 再次执行编译 5.附件 已经移植好FreeRTOS的代码包
------------------------------------------------- 手动分割线 --------------------------------------------------
1.下载SDK代码 首先,下载OSDK-4.0的代码 下载下来后可以简单看下整个OSDK4.0的代码包结构 其中,osdk-core就是OSDK的API库,所有关键代码都在这里,同时DJI也提供了Linux平台和STM32平台的sample代码,位于sample文件夹下。
2.确认IDE和Pack版本
确认MDK-Keil版本和STM32Device Pack版本,注意:STM32F4 Pack版本需要使用2.13.0,使用最新的2.14.0会有其他报错。
3.首次编译打开DJI提供的STM32 sample,工程文件位于 Onboard-SDK-4.0\sample\platform\STM32\OnBoardSDK_STM32\Project\OnBoardSDK_STM32.uvprojx 3.1 填写APP信息 在Activate.cpp文件中填写我们的APP ID 和Key,如果不知道什么是APP Key和ID的可以参考之前的文章:
3.2 设置目标IC 先点开工程选项设置页,选择你的目标IC,这边我选用的STM32F407VGTx系列(对应我的STM32F407VGT6)
3.3 修改晶振 先设置想编译的sample: 再接着点选C/C++页面,填写我们希望编译的sample,这里其实就是一个预编译指令,比如“-DFLIGHT_CONTROL_SAMPLE。 接着设置晶振频率: 重新定义晶振频率,OSDK中使用的频率是25M,而我使用的板子是8M,因此我们需要做更改,由于OSDK4.0依然使用STD库,因此一种方式是修改stm32f4xx.h文件中的HSE_VALUE定义,或者直接使用预编译指令 -DHSE_VALUE=8000000,然后点击OK。 STD库修改时钟比较麻烦,处理修改晶振频率还得修改system_stm32f4xx.c文件中的 PLL_M,如下图所示,将25改成8,当然我们可以将这个数字改成HSE_VALUE,让它等于晶振本身也是可以的,这样以后只需要在预编译指令中修改晶振即可。
3.4 执行首次编译
最后单击编译按钮,进行编译,编译后会发现出现很多error信息 错误提示是找不到freeRTOS,官方文档也告诉我们想使用STM32平台是需要自己移植的。
4.移植FreeRTOS 4.1 下载FreeRTOS源码包 点这里下载会是最新的版本,官方使用的是V10.2.1,但我下载下来的时候已经是 V10.3.1,不过也没关系,影响不大。
4.2 解压FreeRTOS代码包 整个FreeRTOS V10.3.1 的代码文件夹内容如下图所示
其中FreeRTOS文件夹就是该系统真身,带Plus的文件夹存放的是其它的系统组件,比如CLI组件,这个视情况使用,带TCP的文件夹很明显就是提供TCP/IP协议栈的系统组件。
4.3 复制FreeRTOS系统代码文件 将FreeRTOSv10.3.1\FreeRTOS\Source整个文件夹的内容复制到Onboard-SDK-4.0\sample\platform\STM32\OnBoardSDK_STM32\OS\FreeRTOS目录下,如下图所示
4.4 复制FreeRTOS系统配置文件使用FreeRTOS的前提是需要一个FreeRTOSConfig.h的系统配置文件,用来设定系统参数和裁剪系统功能,实现系统平台的移植,在这里可以自己创建(显然这不是理智的选择),也可以直接复制FreeRTOS官方提供的demo文件。 在 FreeRTOSv10.3.1\FreeRTOS\Demo 中我们有注意到 CORTEX_M4F_STM32F407ZG-SK 的模板工程,与我们使用的STM32F407VGT6很相近,因此可以直接复制该工程下的FreeRTOSConfig.h文件到我们的工程目录下,即将FreeRTOSv10.3.1\FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK\FreeRTOSConfig.h 复制到Onboard-SDK-4.0\sample\platform\STM32\OnBoardSDK_STM32\OS\FreeRTOS\Source\include文件夹下 DJI OSDK-4.0 已经在工程中添加了相关文件和路径,可以发现之前有提示黄色感叹号(因为找不到文件),现在该感叹号已经消失。
4.5 修改 FreeRTOSConfig.h文件为了方便后续修改配置,建议在工程中添加该文件,如下图所示
打开FreeRTOSConfig.h 文件
将#ifdef __ICCARM__ 改为 #if defined (__ICCARM__) || defined (__CC_ARM)|| defined (__GNUC__)
将#defined configUSE_IDLE_HOOK 1改为#defined configUSE_IDLE_HOOK 2
将#define configTOTAL_HEAP_SIZE((size_t)(75*1024))改为#define configTOTAL_HEAP_SIZE ((size_t)(60*1024))
将#define configCHECK_FOR_STACK_OVERFLOW2改为#define configCHECK_FOR_STACK_OVERFLOW 0
将#define configUSE_MALLOC_FAILED_HOOK1改为#define configUSE_MALLOC_FAILED_HOOK 0
4.6 再次执行编译 可以发现0 error 0warming
5.附件
已经移植好FreeRTOS的代码包:
Onboard-SDK-4.0_FreeRTOS.zip
(11.67 MB, 下载次数: 903)
|