CH32V203C8T6使用例程中freertos无法正常运行

使用的板子是官方提供的CH32x203C-R1-1v0评估板,芯片是CH32V203C8T6,demo是CH32V20xEVT.ZIP中的freertos

按照CH32V20x评估板说明书.PDF中的说明,修改LD文件,以及对应的startup_ch32v20x_D6.S后,编译完成下载到板子后

打印一下信息:

SystemClk:144000000

FreeRTOS Kernel Version:V10.4.6


在进行以下第一个任务创建后,抛出了异常

? ? xTaskCreate((TaskFunction_t )task2_task,

? ? ? ? ? ? ? ? ? ? ? ? (const char*? ? )"task2",

? ? ? ? ? ? ? ? ? ? ? ? (uint16_t? ? ? ?)TASK2_STK_SIZE,

? ? ? ? ? ? ? ? ? ? ? ? (void*? ? ? ? ? )NULL,

? ? ? ? ? ? ? ? ? ? ? ? (UBaseType_t? ? )TASK2_TASK_PRIO,

? ? ? ? ? ? ? ? ? ? ? ? (TaskHandle_t*? )&Task2Task_Handler);


通过debug后,发现是在portDISABLE_INTERRUPTS(); 关闭中断时出现了异常,请问CH32V20xEVT.ZIP中CHV32V203C8xx系列freertos有验证可以跑起来吗?

1661572607088.png



1661573407089.png

您好,ld文件注意修改下FLASH和RAM的大小,分别为64K、20K。附件为我的测试例程,修改后运行应该是没问题的,你可以测试一下,后面若有问题,可通过邮箱和我讨论沟通(lzs@wch.cn)

icon_rar.gifCH32V203 FreeRTOS.zip

image.png


谢谢,昨晚我也找到原因了,是startup_ch32v20x_D8W.S的问题,我是按照CH32V20x评估板说明书.PDF中的信息将startup_ch32v20x_D8W.S替换为startup_ch32v20x_D6.S(这个是有问题的),LD中我是修改的Flash 64K,SRAM 20K的。实际无论是使用MounRiver Studio 直接创建FreeRTOS的工程,还是使用CH32V203xEVT.zip中的FreeRTOS工程,只需要修改对应芯片Flash与SRAM的大小就可以了,CH32V203C8T6 Startup应该使用startup_ch32v20x_D8W.S,而不是startup_ch32v20x_D6.S,下面的文档中描述是有问题的。

1661657451418.png


只有登录才能回复,可以选择微信账号登录