ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
129267 Топик полностью
SA (28.08.2008 15:39, просмотров: 133) ответил SA на Помогите разобраться с инициализацией AT91SAM7S64
Вот решил дописать: //************************************************ // Inform the linker about the CPU family used. // AT91SAM7S64 Memory mapping // No remap // ROMSTART // Start address 0x0000 0000 // Size 64 Kbo 0x0001 0000 // RAMSTART // Start address 0x0020 0000 // Size 16 Kbo 0x0000 4000 // Remap done // RAMSTART // Start address 0x0000 0000 // Size 16 Kbo 0x0000 4000 // ROMSTART // Start address 0x0010 0000 // Size 64 Kbo 0x0001 0000 //************************************************ -carm //************************************************************************* // Internal Ram segments mapped AFTER REMAP 16 K. //************************************************************************* // Use these addresses for the . -Z(CONST)INTRAMSTART_REMAP=00000000 -Z(CONST)INTRAMEND_REMAP=00003FFF //************************************************************************* // Read-only segments mapped to Flash 64 K. //************************************************************************* -DROMSTART=00000000 -DROMEND=0000FFFF //************************************************************************* // Read/write segments mapped to RAM. //************************************************************************* -DRAMSTART=00000000 -DRAMEND=00003FFF //************************************************ // Address range for reset and exception // vectors (INTVEC). // The vector area is 32 bytes, // an additional 32 bytes is allocated for the // constant table used by ldr PC in cstartup.s79. //************************************************ -Z(CODE)INTVEC=00-3F //************************************************ // Startup code and exception routines (ICODE). //************************************************ -Z(CODE)ICODE,DIFUNCT=ROMSTART-ROMEND -Z(CODE)SWITAB=ROMSTART-ROMEND //************************************************ // Code segments may be placed anywhere. //************************************************ -Z(CODE)CODE=ROMSTART-ROMEND //************************************************ // Various constants and initializers. //************************************************ -Z(CONST)INITTAB,DATA_ID,DATA_C=ROMSTART-ROMEND -Z(CONST)CHECKSUM=ROMSTART-ROMEND //************************************************ // Data segments. //************************************************ -Z(DATA)DATA_I,DATA_Z,DATA_N=RAMSTART-RAMEND //************************************************ // __ramfunc code copied to and executed from RAM. //************************************************ -Z(DATA)CODE_I=RAMSTART-RAMEND -Z(CONST)CODE_ID=ROMSTART-ROMEND // Initializer for -QCODE_I=CODE_ID //************************************************ // ICCARM produces code for __ramfunc functions in // CODE_I segments. The -Q XLINK command line // option redirects XLINK to emit the code in the // debug information associated with the CODE_I // segment, where the code will execute. //************************************************ //************************************************************************* // Stack and heap segments. //************************************************************************* -D_CSTACK_SIZE=(100*4) -D_IRQ_STACK_SIZE=(3*8*4) -Z(DATA)CSTACK+_CSTACK_SIZE=RAMSTART-RAMEND -Z(DATA)IRQ_STACK+_IRQ_STACK_SIZE=RAMSTART-RAMEND Это то что содержится в xcl файле. Никак не могу допереть зачем они делают вот так -DROMSTART=00000000 -DROMEND=0000FFFF //************************************************************************* // Read/write segments mapped to RAM. //************************************************************************* -DRAMSTART=00000000 -DRAMEND=00003FFF Накладывают 2 сегмента. Если прога мелкая то ей хватает места чтоб влезть в РАМу. А при ее росте получается то что писал выше. Куски кода влезают в РАМ и забивают его весь. Может подскажите как сделать чтоб этого не происходило, при этом чтоб прога работала