art Number: TM4C1294NCPDT
Tool/software: Code Composer Studio
Hi,
I'm using the TM4C1294 microcontroller for my IoT application. I'm been facing some issues with ram usage and planned to go for a external ram for more ram available.
I've been reading the following example ti.com/tool/TIDM-TM4C129XSDRAM and it seems pretty straight-foward the hardware requirements, but I still have some question about the firmware development using the external RAM.
My question is more into the linker and how to treat my code using both external and internal RAM. On the example before, the author used the following line to make sure he was accessing the external RAM:
g_pui16EPISdram = (uint16_t *)0x60000000;
His linker was also the default, so I'm assuming when allocating variables on my code, such variables would never use the external RAM, right?
#define APP_BASE 0x00000000 #define RAM_BASE 0x20000000 /* System memory map */ MEMORY { /* Application stored in and executes from internal flash */ FLASH (RX) : origin = APP_BASE, length = 0x00100000 /* Application uses internal RAM for data */ SRAM (RWX) : origin = 0x20000000, length = 0x00040000 } /* Section allocation in memory */ SECTIONS { .intvecs: > APP_BASE .text : > FLASH .const : > FLASH .cinit : > FLASH .pinit : > FLASH .init_array : > FLASH .vtable : > RAM_BASE .data : > SRAM .bss : > SRAM .sysmem : > SRAM .stack : > SRAM } __STACK_TOP = __stack + 256;
So, my question is: is it possible to use the external and internal RAM as one linear memory bank? Can I program just as if I had using my internal RAM? What modifications to the example would be required to do such?
I intend to use this with TI-RTOS, does this change the answer or still the same?