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.

[参考译文] RTOS/TM4C129XNCZAD:_memory_size 和堆大小

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/692252/rtos-tm4c129xnczad-_memory_size-and-heap-size

器件型号:TM4C129XNCZAD
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

你好。

我正在尝试放大 用于动态分配的_memory_size。  

我认为它使用的是我定义为32KB 的堆存储器、但 _memory_size 仍然是4KB、这对我来说绝对不够。

我缺少什么?

我的 CFG 文件(相关器件)

VAR Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
VAR 时钟= xdc.useModule('ti.sysbios.knl.Clock');
VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
VAR SysMin = xdc.useModule('xdc.runtime.SysMin');
VAR 系统= xdc.useModule('xdc.runtime.System');
VAR 错误= xdc.useModule('xdc.runtime.Error');
var ti_sysbios_hal_hwi = xdc.useModule('ti.sysbios.hal.Hwi');
VAR 内存= xdc.useModule('xdc.runtime.Memory');
VAR 时间戳= xdc.useModule('xdc.runtime.Timestamp');
VAR TimestampProvider = xdc.useModule('ti.sysbios.family.arm.lm4.TimestampProvider');
VAR SyncGeneric = xdc.useModule('xdc.runtime.knl.SyncGeneric');
VAR 邮箱= xdc.useModule('ti.sysbios.knl.Mailbox');
VAR HeapStd = xdc.useModule('xdc.runtime.HeapStd');
VAR GIO = xdc.useModule('ti.sysbios.io.GIO');
VAR 信标= xdc.useModule('ti.sysbios.knl.Semaphore');
VAR 任务= xdc.useModule('ti.sysbios.knl.Task');
BIOS.heapSize = 32767;
program.stack = 2048;

clock.timerId = 7;

var hwi0Params = new hwi.Params();
hwi0Params.instance.name ="adcHwi";
program.global.adcHwi = Hwi.create (30、"&ADC0SS0Handler"、hwi0Params);
var hwi1Params = new hwi.Params();
hwi1Params.instance.name ="SysTick ";
program.global.SysTick = Hwi.create (15、"&SysTickHandler"、hwi1Params);

/*Task.addHookSet({
// registerFxn:'&myRegisterFxn'、
// createFxn:'&myCreateFxn',
// deleteFxn:'&myDeleteFxn'、
switchFxn:'&mySwitchFxn'
});*/
/*========================= NDK 配置=================== *

/*var NDK = xdc.loadPackage ('ti.ndk.config');
VAR Global = xdc.useModule('ti.ndk.config.Global');
VAR IP = xdc.useModule('ti.ndk.config.Ip');
VAR UDP = xdc.useModule('ti.ndk.config.Udp');
VAR TCP = xdc.useModule('ti.ndk.config.Tcp');

global.ipv6 = false;
global.stackLibType = Global. min;
Global.networkOpenHook ="&netOpenHook";

//自动调用 fdOpen/CloseSession 以执行套接字任务*/
/*Global.autoOpenCloseFD = true;

global.pktNumFrameBufs=10;
global.memRawPageCount = 6;
global.ndkThreadStackSize = 2048;
global.lowTaskStackSize = 1024;
Global.normTaskStackSize = 1024;
global.highTaskStackSize = 1024;
tcp.transmitBufSize = 1024;
tcp.receiveBufSize = 1024;
/*========================= 文本配置=================== *
var text = xdc.useModule('xdc.runtime.Text');
/*
*这些字符串放置在.const 段中。 将此参数设置为
* false 将在.const 段中节省空间。 错误、断言和记录消息
*将打印原始 ID 和 args、而不是格式化的消息。
*
*选择一项:
*- true (默认值)
*此选项将测试字符串加载到.const 中以方便调试。
*-错
*此选项可减小.const 占用空间。
*
text.isLoaded = true;
//text.isLoaded = false;

/*========================= 类型配置=================== *
VAR 类型= xdc.useModule('xdc.runtime.Types');
/*
*此模块定义了在中使用的基本常量和类型
* xdc.runtime 软件包。
*

/*========================= TI-RTOS 中间件配置================= *
var mwConfig = xdc.useModule('ti.mw.Config');
/*
*包括 TI-RTOS 中间件库
*

/*========================= TI-RTOS 驱动程序的配置==== *
VAR driversConfig = xdc.useModule('ti.drivers.Config');
/*
*包含 TI-RTOS 驱动程序
*
*选择一项:
*- driversConfig.LibType_NonInstrumented (默认)
*使用针对封装和性能进行优化的 TI-RTOS 驱动程序库
*无断言或日志。
*- driversConfig.LibType_Instrumented
*使用 TI-RTOS 驱动程序库在启用断言和日志的情况下进行调试。
*
driversConfig.libType = driversConfig.LibType_NonInstrumented;
//driversConfig.libType = driversConfig.LibType_Instrumented;

/*========================= 应用程序特定实例========================= *
VAR FatFS = xdc.useModule('ti.mw.fatfs.FatFS');
System.maxAtexitHandlers = 2;
TimestampProvider.timerId = 3;
TimestampProvider.useClockTimer = true;
var semaphore7Params = new semaphore.Params ();
semaphore7Params.instance.name ="sdCardSem";
Semaphore7Params.mode = Semaphore.Mode_binary;
program.global.sdCardSem = Semaphore.create (空、Semaphore7Params);
Program.gen.debuggerFiles = false;

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

    我不熟悉符号_memory_size。 据我所知、它不是 SYS/BIOS 定义的内容、因此它与我们的堆无关。 您能否共享应用程序的映射文件? 这可能会提示该符号来自哪个源文件或库。

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

    添加到我之前的帖子中、您可以按如下方式增加堆大小(您已经在执行此操作):

    VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
    BIOS.heapSize = 32*1024;

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

    这两行已经存在。

     当使用编译器库中的 memory.c 时、_memory_size 映射到_SYSMEM_size

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