您尚未登录。

楼主 # 2021-11-09 09:57:44

Aysi
会员
注册时间: 2019-04-03
已发帖子: 15
积分: 34.5

FreeRTOS移植到F1C100S, 含GCC和keil版本

FreeRTOS移植到F1C100S, 含GCC和keil版本
内含测试例程, 测试通过

按个人修改只需几个地方:
//开定时器
static void prvSetupTimerInterrupt(void)
{
    Timer_Init(TIMER1, 1000000 / configTICK_RATE_HZ, 1);
    request_irq(IRQ_TIMER1, vPreemptiveTick, 0); //register int
    Timer_enable(TIMER1);
}

//修改中断入口函数
_software_interrupt:
    .word vPortYieldProcessor    /*for freerots, if no os, this is software_interrupt */
_irq:
    .word vFreeRTOS_ISR    /*for freertos, if no os, this is irq */

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

本人移植过程中发现了个问题:

当时参考例程的任务切换是汇编的:
        __asm volatile
        (
            "    bl xTaskIncrementTick    \t\n" \
            "    cmp r0, #0                \t\n" \
            "    beq SkipContextSwitch    \t\n" \
            "    bl vTaskSwitchContext    \t\n" \
            "SkipContextSwitch:            \t\n"
        );
编译通过, 但一运行就卡死

折腾一番后, 最后将上面的汇编译成C代码, 运行成功
(这里看两者意图是一样的, 不明白, 望有高人指点)
                if(xTaskIncrementTick()!=0)
        {
            vTaskSwitchContext();
        }

FreeRTOS-Kernel.zip

离线

楼主 #15 2021-12-06 12:30:13

Aysi
会员
注册时间: 2019-04-03
已发帖子: 15
积分: 34.5

Re: FreeRTOS移植到F1C100S, 含GCC和keil版本

很少上线, 不好意思,
有人说想要完整工程, 但我没单独实验工程, 我的工程功能多比较大, 且交叉性强, 单独做工程麻烦,
工程是在 https://whycan.com/p_11825.html USB工程上添加的
移植有什么问题发出来吧!

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn