도와주세요!!
글 수 15,339
2002.07.02 09:56:04 (*.186.48.184)
6944
이상한것은 아래와 같은 명령어가 있는지??
MSR CPSR_cx, r0
원래 MSR CPSR, r0 일케 되야 하는데..
만일 있다면 설정하는 값이 틀려서 그럴껍니다.
MSR 은 여러가지 모드(슈퍼유저,FIQ,IRQ,..etc) 을 설정하는데
그때마다 스택이 틀려지지요.. 기타 다른것도 변경되구요..
만일 모드가 변경된다면 스택을 다시 설정하셔야 합니다.
모드마다 한번씩만 설정되면 되여..
:
: assembly file 이랑 C(main을 포함) file 이랑 하나의 파일로 컴파일하고
: object dump해서 Flash에 올렸어요.. 그리고
: 어셈 루틴에서 Flash의 전체를 SDRAM 에 copy하고
:
: bl main
:
: 하면 그때 부터 SDRAM에서 실행되나요?
: 아니면 여전히 Flash에서 실행되나요?
LD 스크립트 화일에서 main 의 배치 주소를 적는 부분이 있습니다.
이주소를 램영역으로 했다면 램에서 실행되겠죠..
이지부트의 main 디렉토리에 main-ld-script 파일을 보시면
main 함수의 주소를 0xC0F00400 으로 정하고 있습니다.
[파일내요]
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_ram_entry)
SECTIONS
{
. = 0xC0F00400;
. = ALIGN(4);
.text : { *(.text) }
. = ALIGN(4);
.rodata : { *(.rodata) }
. = ALIGN(4);
.data : { *(.data) }
. = ALIGN(4);
.got : { *(.got) }
. = ALIGN(4);
.bss : { *(.bss) }
}