请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号: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 =
非常感谢。