This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2.8035万:C2000 F28x FreeRTOS问题

Guru**** 2526880 points
Other Parts Discussed in Thread: CONTROLSUITE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/639329/tms320f28035-c2000-f28x-freertos-problem

部件号:TMS320F2.8035万
主题:controlSUITE中讨论的其他部件

您好,

我正在尝试对F2.8035万 MCU进行编程。 我以前在F2.8069万上工作。 我可以将FreeRTOS和F2.8069万结合起来,但是我也尝试了F2.8035万的相同方法,结果在内存分配方面出现了错误。

我正在将这些文件用于FreeRTOS,它有可探测的C28x文件: https://github.com/IvanZuy/freertos_c28x 

"../2.8035万_RAM_lnk.cmd",第119行:错误#1.0099万-D:程序将不适合可用内存。对齐/阻止区域".text"大小0x175b第0页的放置失败。

可用内存范围:
RAML0L1大小:0xc00未使用:0xc00最大孔:0xc00

显然,RAML0L1的内存范围不够,但我可以在某些情况下更改它们 吗?  

内存
{
第0页:/*
begin用于“boot to SARAM”bootloader模式*/

begin :Origin = 0x0万,length = 0x0.0002万
RAMM0 :原点= 0x0.005万,长度= 0x0003B0
RAML0L1:原点= 0x0.8万,长度= 0x000C00
重置 :原点= 0x3FFFC0,长度= 0x0.0002万
IQTABLES:原点= 0x3FE000,长度= 0x000B50 /*引导ROM中的IQ数学表*/
IQTABLES2:原点= 0x3FEB50,长度= 0x0.0008万C /*引导ROM中的IQ数学表*/
IQTABLES3:Origin = 0x3FEBDC,length = 0x0000AA	/*引导ROM中的IQ数学表*/

BootROM:origin = 0x3FF27C,length = 0x000D44


page 1:

boot_RSVD:origin = 0x0.0002万,length = 0x0.0004万E /* M0的一部分,引导ROM将使用此堆栈*/
RAMM1 :原点= 0x0.048万,长度= 0x0.038万 /*片上RAM块M1 */
RAML2 :原点= 0x008C00,长度= 0x0.04万
RAML3 : Origin = 0x0.9万,length = 0x0.1万
}


sections
{/*
Setup for "boot to SARAM" mode:
codegstart部分(可在DSP28_CodeStartBranch.asm中找到)
将执行重定向到用户代码的开头。 */
codesstart :>开始, 页面= 0
ramfuncts :> RAMM0 Page =0

#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>= 1500.9万
.ti.ramfunc :{}> RAMM0, Page =0
#endif
#endif

文本 :> RAML0L1,页面= 0
.cinit :> RAMM0, 页面= 0
。Pinit :> RAMM0, 页面= 0
。switch :> RAMM0, 页面= 0
。重置 :>重置, Page =0,type = DSECT /* not used,*/

.stack :> RAMM1, 页面= 1
.ebss :> RAML2, 页面= 1
。econst :> RAML2, 页面= 1
个.esysmem :> RAML2, 页面= 1. 

这里是FreeRTOS所需的外部函数。 这些函数在主源文件中声明,如下所示。

void vApplicationSetupTimerInterrupt (void)
{//
启动计时器,然后激活计时器中断以切换到第一个任务。
EALLOW;
PieVectorTable.TINT2 =&portTICK_ISR;
EDIS;


ConfigCpuTimer2,
configCPU_Clock_Hz / 100万, // CPU时钟(MHz)
100万 / configTICK_RATE_Hz);//我们的计时器周期
CpuTimer2Regs.tcr.all = 0x4000;//启用中断和启动计时器
IER |= M_INT14;
}


void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskBBuffer,StpleStackType_StackBuffer
=*Stpul_IdleStackBuffer =



非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Rasih,
    请参阅F2.8035万数据表或用于F2803x的TI controlSUITE示例,了解F2803x上提供哪些存储器。 F2806x和F2803x之间的可用RAM可能存在差异,您在MCU之间移植应用程序时需要考虑这些差异。

    如果RAM可用,则可以根据需要组合它们,并通过修改链接器命令文件将它们用于适合应用程序的程序或数据。

    希望这有所帮助。

    此致
    Santosh Athuru
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉回复太晚。 我们更改了链接器,现在我们可以使用FreeRTOS对F2.8035万进行编程。

    感谢您的帮助。