alexgl (17.11.2006 14:43, просмотров: 1995)
tms320C54XX, use CODE_SECTION Hi!
При разработке для TMS320C5410A в симуляторе (пока)
идет борьба за экономию памяти особенно в секции .text
(те) за програмную память (ONCHIP)
...
#pragma CODE_SECTION (AFnc,".xcode");
void AFnc (...)
{
...
}
(#pragma CODE_SECTION (BFnc,".bcode");
void BFnc(...)
{
}
в другом файле (главном)...
#include "my.h"
//#include <csl.h> // в будующем будет нужно
//#include <dsplib.h> [// в будующем будет нужно
#define SGLEN 1000
#define XLEN 200
...............
...............
short sgData[SGLEN];
short *pD, NextIndex=0;
//////////////////////////////////////////////////////////
void main ()
{
...
pD=sgData[0];
BFnc (...); // < BreakPoint
while(1)
{
NextIndex += XLEN;
if(NextIndex > SGLEN) NextIndex=0;
pD = &sgData[NextIndwx]; // < BreakPoint
AFnc(...);
...
}
}
............
............
модель памяти FAR
стека выделяю 2048
хеап - 2048 ...
среда разработки:Code Composer Studio Free 2.20.00
командный файл такой:
///////////////////////////////////////////////////////
MEMORY
{
PAGE 0: IPROG: origin = 0x80, len = 0x7F00
VECT: origin = 0x7f80, len = 0x80
PAGE 1: USERREGS: origin = 0x60, len = 0x1c
BIOSREGS: origin = 0x7c, len = 0x4
DRAM origin = 0x80, len = 0x1F7F
IDATA: origin = 0x2000, len = 0xAFFF
XCODE origin = 0xD000, len = 0x1000
XDATA: origin = 0xE000, len = 0x1FFF
}
SECTIONS
{
.vectors: {} > VECT PAGE 0
.sysregs: {} > BIOSREGS PAGE 1
.trcinit: {} > IPROG PAGE 0
.gblinit: {} > IPROG PAGE 0
.text: {} > IPROG PAGE 0
.cinit: {} > IPROG PAGE 0
.pinit: {} > IPROG PAGE 0
.sysinit: {} > IPROG PAGE 0
.bss: {} > IDATA PAGE 1
/* .far: {} > IDATA PAGE 1 */
.const: {} > IDATA PAGE 1
/* .switch: {} > IDATA PAGE 1 */
.sysmem: {} > IDATA PAGE 1
.cio: {} > IDATA PAGE 1
.sysheap: {} > IDATA PAGE 1
.stack: {} > IDATA PAGE 1
.csldata {} > IDATA PAGE 1
.xcode {} > XCODE PAGE 1
.bcode {} > XCODE PAGE 1
.BigMem {} > XDATA PAGE 1
}
При запуске на выполнение выполняется код до 2-й точки останова
и улетает затем на первую (Как бы сброс проходит). Когда
смотришь в Mixed mode то в функциях AFnc и BFnc вместо кода
нули (add ...) пробывал на небольшом проэкте (просто 2-3 функции)
вроде нет проблем. Если закоmmентировать #pragma CODE_SECTION ...
тоже вроде работает, но памяти уже в притык а надо еще чего много
писать. Посоветуйте где, что поправить или это уже не лечится ???
Было замечательно получить и другие рекомендации по
уменьшению объема памяти и увеличению скорости
Спасибо.