[an error occurred while processing this directive]
|
Осваиваю периферию VC5509.
Дошел до USB. С помощью CSL GUI сгенерировал "h" и "с" файлы
и присоединил их к уже изученой части программы.
Скомпилировал, не влезло
error: can't allocate .text, size 00005807 (page 0) in SARAM1
avail: 00005000
Влез в свой cmd файл я использовал из примера i2c1.cmd:
//---------i2c1.cmd---------
MEMORY
{
PAGE 0:MMR : origin = 0000000h, length = 00000c0h
SPRAM : origin = 00000c0h, length = 0000040h
VECS : origin = 0000100h, length = 0000100h
DARAM0 : origin = 0000200h, length = 0003E00h
DARAM1 : origin = 0004000h, length = 0004000h
DARAM2 : origin = 0008000h, length = 0004000h
DARAM3 : origin = 000c000h, length = 0004000hSARAM0 : origin = 0010000h, length = 0004000h
SARAM1 : origin = 0014000h, length = 0005000h
SARAM2 : origin = 0019000h, length = 0003000h
SARAM3 : origin = 001c000h, length = 0004000h
SARAM4 : origin = 0020000h, length = 0004000h
SARAM5 : origin = 0024000h, length = 0004000h
SARAM6 : origin = 0028000h, length = 0004000h
SARAM7 : origin = 002c000h, length = 0004000h
SARAM8 : origin = 0030000h, length = 0004000h
SARAM9 : origin = 0034000h, length = 0004000h
SARAM10 : origin = 0038000h, length = 0004000h
SARAM11 : origin = 003c000h, length = 0004000h
SARAM12 : origin = 0040000h, length = 0004000h
SARAM13 : origin = 0044000h, length = 0004000h
SARAM14 : origin = 0048000h, length = 0004000h
SARAM15 : origin = 004c000h, length = 0004000hCE0 : origin = 0050000h, length = 03b0000h
CE1 : origin = 0400000h, length = 0400000h
CE2 : origin = 0800000h, length = 0400000h
CE3 : origin = 0c00000h, length = 03f8000hPDROM : origin = 0ff8000h, length = 07f00h
/* VECS : origin = 0ffff00h, length = 00100h */ /* reset vector */
}
SECTIONS
{
.vectors : {} > VECS PAGE 0 /* interrupt vector table */
.cinit : {} > SARAM0 PAGE 0
.text : {} > SARAM1 PAGE 0
isrs : {} > SARAM2 PAGE 0.stack : {} > DARAM0 PAGE 0
.sysstack: {} > DARAM0 PAGE 0
.sysmem : {} > DARAM1 PAGE 0
.data : {} > DARAM1 PAGE 0
.bss : {} > DARAM1 PAGE 0
.const : {} > DARAM1 PAGE 0.cio : {} > DARAM1 PAGE 0
.csldata: {} > DARAM0 PAGE 0tskSeg : {} > SARAM3 PAGE 0
myisrSeg: {} > SARAM3 PAGE 0
}
То есть память описана и аподелена как в документации на процессор.
в CMD файле, который сгенерил CSL GUIЭ, деления нет:
DARAM: origin = 0x200, len = 0xfe00
SARAM: origin = 0x10000, len = 0x30000
VECT: origin = 0x100, len = 0x100
На сколько я понимаю, деление памяти позволяет эффективно работать DMA, HPI, USB.
Для того, чтобы компилятору хватило места я, очевидно, могу объединить несколько секций изменив параметр "length"
Но наверное правильнее выделить память для для буферов USB именно в DARAM.
Как это правильно сделать?
Какой документ почитать о правильной раздаче памяти?
Спасибо.
E-mail: info@telesys.ru