查看: 8127|回复: 7

free RTOS如何移植到FM33LC0xx_FL中(IAR)

[复制链接]

1

主题

7

帖子

27

积分

初级工程师

Rank: 1

积分
27
发表于 2021-6-23 16:01:52 | 显示全部楼层 |阅读模式

移植时出现如图错误  无法解决  大师看看
Error[Li005]: no definition for "xTaskCreate" [referenced from G:\1\PMU_DeepSleep_GPIO唤醒\EWARM\Debug\Obj\main.o]

Error[Li005]: no definition for "vTaskStartScheduler" [referenced from G:\1\PMU_DeepSleep_GPIO唤醒\EWARM\Debug\Obj\main.o]

Error[Li005]: no definition for "vTaskDelay" [referenced from G:\1\PMU_DeepSleep_GPIO唤醒\EWARM\Debug\Obj\main.o]






#include "main.h"
#include "user_init.h"
#include "FreeRTOS.h"
#include "TaskSystem.h"
#include "task.h"
#include "semphr.h"
#include "queue.h"
#define TASK_LED_PRIORITY       (tskIDLE_PRIORITY + 1)
#define TASK_ADC_PRIORITY      (tskIDLE_PRIORITY + 1)
#define TASK_UART_PRIORITY      (tskIDLE_PRIORITY + 1)

uint8_t TestRxData[100];

QueueHandle_t  ADC_QueueHandle;   
QueueHandle_t dmaSemaphore;

void HardFault_Handler(void)
{
        printf("hardfault\n");
}

void LedTask(void *pvParameters)
{
    pvParameters = pvParameters;
    while (1)
    {
        vTaskDelay(1000);
    }
}

int main(void)
{
    /* Reset of all peripherals, Initializes the Flash inte**ce and the Systick. */
    /* SHOULD BE KEPT!!! */
    MF_Clock_Init();

    /* Configure the system clock */
    /* SHOULD BE KEPT!!! */
    MF_SystemClock_Config();

    /* Initialize all configured peripherals */
    /* SHOULD BE KEPT!!! */
    MF_Config_Init();

    UserInit();
    LptimInit();      
    GPIO_interrupt_init();
    xTaskCreate(LedTask, "Led", configMINIMAL_STACK_SIZE, NULL, TASK_LED_PRIORITY, NULL);      
    vTaskStartScheduler();

    while(1)
    {     

    }
}

void vApplicationIdleHook(void)
{
    // TODO: 空闲任务
}


回复

使用道具 举报

154

主题

846

帖子

4624

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4624
发表于 2021-6-25 08:48:58 | 显示全部楼层
不是应该,把FL例程,往freertos例程里 放么。看你的做法,反了吧。
回复

使用道具 举报

1

主题

7

帖子

27

积分

初级工程师

Rank: 1

积分
27
 楼主| 发表于 2021-6-28 10:08:58 | 显示全部楼层
顾博文 发表于 2021-6-25 08:48
不是应该,把FL例程,往freertos例程里 放么。看你的做法,反了吧。

我试试看  ,库不兼容,很不爽
回复

使用道具 举报

1

主题

7

帖子

27

积分

初级工程师

Rank: 1

积分
27
 楼主| 发表于 2021-6-29 10:18:58 | 显示全部楼层
顾博文 发表于 2021-6-25 08:48
不是应该,把FL例程,往freertos例程里 放么。看你的做法,反了吧。

还是不行  ,一运行到 vTaskDelay(1000)就死机跳到0xffffffffe,不知道是什么问题
回复

使用道具 举报

154

主题

846

帖子

4624

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4624
发表于 2021-6-29 16:41:01 | 显示全部楼层
rsdrsd 发表于 2021-6-29 10:18
还是不行  ,一运行到 vTaskDelay(1000)就死机跳到0xffffffffe,不知道是什么问题

留个邮箱,找到两个最新的fretos的例程。你用的keil还是iar
回复

使用道具 举报

0

主题

8

帖子

71

积分

中级工程师

Rank: 2

积分
71
发表于 2021-6-29 17:25:03 | 显示全部楼层
资料包里有keil;IAR的没有,按照keil的模板移植,还缺少文件,缺少函数。自己就弄了一个IAR的。关于为什么调用vTaskDelay(1000)死机问题。是因为唯一一个用户任务挂起,系统就进入空闲任务函数了;里面有一堆处理,还没有去分析,就直接用个while(1),让空闲任务空转,就好了。如果有需要,联系我邮箱:cyrilwong210@163.com。我发你一份。复旦的其他同内核的应该通用,修改上下文切换部分的汇编和C函数。就可以了。
有些版主控评太严重了。不是为了解决问题的论坛。退站了。
回复

使用道具 举报

0

主题

8

帖子

71

积分

中级工程师

Rank: 2

积分
71
发表于 2021-9-2 08:31:25 | 显示全部楼层
cyril 发表于 2021-6-29 17:25
资料包里有keil;IAR的没有,按照keil的模板移植,还缺少文件,缺少函数。自己就弄了一个IAR的。关于为什么 ...

上述回答中,抛出的一个问题,关于idle任务死机问题,最近有时间又看了下。我手上的资料版本是(2021-3-3 11-12-49 8972)。上回说到,官方的这个版本是keil的,感觉是个半成品;也没有IAR版本。我自己移值了IAR版本,进空闲任务就死机;原因是:这个demo是个半成品。Idle任务默认开启了tickless,也就是空闲休眠功能;这里关于休眠的相关处理,是仿照RTOS官方的ST例程写的,有很多问题。例如:关于中断的控制、休眠时间与系统心跳的同步、进入休眠的预处理等都有问题。按照tickless的设计思想,重新修改后。现在功能正常,也可以休眠。但是,引入了一个新问题,就是休眠后,系统中的延时函数会有误差,关闭tickless的时候,是很准的。我尝试简单补偿过,最多补偿一个系统脉冲,多了后就会调度出错;估计是要考虑计算溢出方面的问题。现在是500ms差10ms。先不管了,后面空了再找。
有些版主控评太严重了。不是为了解决问题的论坛。退站了。
回复

使用道具 举报

1

主题

11

帖子

1015

积分

资深专家

Rank: 7Rank: 7Rank: 7

积分
1015
发表于 2021-10-26 10:19:16 | 显示全部楼层
cyril 发表于 2021-9-2 08:31
上述回答中,抛出的一个问题,关于idle任务死机问题,最近有时间又看了下。我手上的资料版本是(2021-3-3 ...

别退站啊,多多发言才对啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表