*** empty log message ***

This commit is contained in:
Dave Murphy 2008-11-29 12:54:53 +00:00
parent f322273249
commit 6040d4173b
2 changed files with 31 additions and 11 deletions

View File

@ -7,9 +7,11 @@ MEMORY {
rom : ORIGIN = 0x08000000, LENGTH = 32M
ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k
dtcm : ORIGIN = 0x0b000000, LENGTH = 16K
itcm : ORIGIN = 0x01000000, LENGTH = 32K
vectors : ORIGIN = 0x00000000, LENGTH = 256
itcm : ORIGIN = 0x01000100, LENGTH = 32K - 256
}
__vectors_start = ORIGIN(vectors);
__itcm_start = ORIGIN(itcm);
__ewram_end = ORIGIN(ewram) + LENGTH(ewram);
__eheap_end = ORIGIN(ewram) + LENGTH(ewram);
@ -165,7 +167,17 @@ SECTIONS
__itcm_end = ABSOLUTE(.);
} >itcm = 0xff
.sbss __dtcm_end :
__vectors_lma = __itcm_lma + SIZEOF(.itcm);
.vectors __vectors_start : AT (__vectors_lma)
{
*(.vectors)
*vectors.*(.text)
. = ALIGN(4);
__vectors_end = ABSOLUTE(.);
} >vectors = 0xff
.sbss __dtcm_end (NOLOAD):
{
__sbss_start = ABSOLUTE(.);
__sbss_start__ = ABSOLUTE(.);
@ -173,9 +185,7 @@ SECTIONS
. = ALIGN(4); /* REQUIRED. LD is flaky without it. */
__sbss_end = ABSOLUTE(.);
} >dtcm
.bss __bss_vma (NOLOAD):
{
__bss_start = ABSOLUTE(.);
@ -193,8 +203,6 @@ SECTIONS
_end = __bss_end__ ;
__end__ = __bss_end__ ;
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }

View File

@ -97,7 +97,7 @@ _start:
mcr p15, 0, r0, c6, c1, 0
@-------------------------------------------------------------------------
@ Region 2 - iwram
@ Region 2 - shared iwram
@-------------------------------------------------------------------------
ldr r0,=( PAGE_32K | 0x037F8000 | 1)
mcr p15, 0, r0, c6, c2, 0
@ -119,6 +119,11 @@ _start:
@ Region 5 - ITCM
@-------------------------------------------------------------------------
ldr r0,=__itcm_start
@ align to 32k boundary
mov r0,r0,lsr #15
mov r0,r0,lsl #15
orr r0,r0,#(PAGE_32K | 1)
mcr p15, 0, r0, c6, c5, 0
@ -179,12 +184,19 @@ _start:
msr cpsr, r0
ldr sp, =__sp_usr @ Set user stack
ldr r1, =__itcm_lma @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA (ROM to RAM)
ldr r1, =__itcm_lma @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA
ldr r2, =__itcm_start
ldr r4, =__itcm_end
bl CopyMemCheck
ldr r1, =__dtcm_lma @ Copy data tightly coupled memory (dtcm section) from LMA to VMA (ROM to RAM)
ldr r1, =__vectors_lma @ Copy instruction tightly coupled memory (itcm section) from LMA to VMA
ldr r2, =__itcm_start @ alternate vectors based accessed via itcm mirror
mov r2,r2,lsr #15 @ rounded to 32k boundary
mov r2,r2,lsl #15
ldr r4, =__vectors_end
bl CopyMemCheck
ldr r1, =__dtcm_lma @ Copy data tightly coupled memory (dtcm section) from LMA to VMA
ldr r2, =__dtcm_start
ldr r4, =__dtcm_end
bl CopyMemCheck
@ -295,7 +307,7 @@ ClearMem:
@---------------------------------------------------------------------------------
mov r2, #3 @ Round down to nearest word boundary
add r1, r1, r2 @ Shouldn't be needed
bics r1, r1, r2 @ Clear 2 LSB (and set Z)
bics r1, r1, r2 @ Clear 2 LSB (and set Z)
bxeq lr @ Quit if copy size is 0
mov r2, #0
@ -325,7 +337,7 @@ CopyMem:
@---------------------------------------------------------------------------------
mov r0, #3 @ These commands are used in cases where
add r3, r3, r0 @ the length is not a multiple of 4,
bics r3, r3, r0 @ even though it should be.
bics r3, r3, r0 @ even though it should be.
bxeq lr @ Length is zero, so exit
CIDLoop:
ldmia r1!, {r0}