도와주세요!!
글 수 15,339
2003.02.02 19:31:45 (*.38.182.2)
6664
질문을 다시 정리해서 합니다.
이지부트를 참고로 다시 했는데...
메모리 컨피그를 꼭 해야 하는지요.
SDRAM등의 설정을 하지 않으면 동작하지 않는지요????
여태까지는 그런거 안하고 그냥 쓴 기억이 있어서요...
그리고...
이미지를 만들때...
꼭 dd를 해야 하는지요...
이지부트의 메이크파일의 dd의 의미를 잘 모르겠네요..
dd if=start/start of=image/ezboot bs=1k conv=sync
dd if=init/init of=image/ezboot bs=1k seek=1
이게 뭐하는 놈인지요??
그리고 혹시 링크스크립트 쓰는 문법좀 갈켜주세요...
--------------------------
삽질맨... wrote..
: 이지보드를 사용해서 간단한 스타트업 루틴과 시리얼 IO루틴을 공부삼아 만 들
: 어 보고 있습니다. 플래슁은 ezflashw2k 로 하고 있고,
: 디버깅은 GPIO에 연결된 LED로 하고 있는데요,
: 잘 안되네요....
: ------------------------------------------------
: 우선 제대로 다운로드가 되는지가 매우 궁금합니다.
: 현재 arm-elf-objcopy로 바이너리 만들어서 이 바이너리를 바로 ezflash로 다
: 운로드 하고 있습니다.
: 이렇게 해도 우선 이지보드의 jtag flash write에 문제가 없는지요???
: ezflash로 쓰면 내부적으로 erase하고, write 해주는지요...
:
:
: 이지부트 메이크파일 보면, dd로 뭔가 하는데, dd로 뭘 더해야하는지요.
: 왜 dd를 사용하고 있는지도 잘 모르겠네요. 단순히 바이너리를 합칠라고 쓰 는
: 지, 혹은 추가로 더 해주어야 하는게 있어서 하는지요.
:
: 또, 링크스크립트가 제대로 써져있는지도 궁금한데요...
: 제가 링크 스크립트의 문법을 잘 몰라서요.
: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
: OUTPUT_ARCH(arm)
: SECTIONS
: {
: .start 0x00000000 : {
: vector.o(.text)
: }
:
: . = ALIGN(4);
: .text 0x00010000 : {
: *(.text)
: }
:
: . = ALIGN(4);
: .rdata 0x00020000 : {
: *(.rodata)
: }
:
: . = ALIGN(4);
: .data 0xc0000100 : {
: *(.data)
: }
:
: . = ALIGN(4);
: .bss 0xc0010000 : {
: *(.bss)
: }
:
: _end =.;
: }
: 이게 제가 쓴 링크 스크립트인데, 우선 ALIGN의 용도도 잘 모르겠고, 좀 자 신
: 이 없네요..이게 문법상 맞는지...
: map파일이나, objdump뜬거는 의도대로 나오는거 같은데...
:
: 암튼 동작이 안되니..이상합니다.
: 확인용으로 넣은 LED점멸하는게 의도대로 안나가서요....
:
: 어디가 이상한지 잘 못찾겠네요...
: 참고로 리셋핸들러 코드는요...
:
: #include "ez_m01.h"
:
: // general definitions
: .text
: .set _stack_base, 0xc1000000 // stack start : end of ram
: .set _stack_top, 0xc0ff0000 // stack end : 10k
: space
: .extern init
:
: // 1. interrupt vector install
: b reset
: b undefined_instruction
: b software_interrupt
: b prefetch_abort
: b data_abort
: b no_used
: b irq
: b fiq
:
: reset:
:
: // debuging info - LED1 ON
: // setting the GPIO 24, 17, 7~0 as a output
: ldr r0, =SA1110_REG_BASE_GPIO
: ldr r1, =SA1110_GPDR_V
: str r1, [r0, #SA1110_REG_OFFSET_GPDR] // LED
: GPIO ????? ????.
:
: //
: mov r1, #0xFF
: str r1, [r0, #SA1110_REG_OFFSET_GPCR] // LED
: CLEAR
:
: mov r1, #0xaa
: str r1, [r0, #SA1110_REG_OFFSET_GPSR] // LED
: ON :
:
:
: // 2. set up stack pointer
: // firstly, zero clear the stack area
: ldr r1,=_stack_base
: ldr r2,=_stack_top
: mov r0,#0
: cmp r1,r2
: beq 2f
: 1: str r0,[r1],#4
: cmp r1,r2
: bls 1b
: // secondly, set up stack pointer
: 2: ldr sp, =_stack_base
:
:
: // 3. Relocate [copy] data from ROM to RAM
:
: // 4. clear BSS
:
: // 5. CPU register setting/HW init/interrupt mask
:
: // Mask all interrupt
: ldr r0, =SA1110_REG_BASE_INTERRUPT
: mov r1, #0x00
: str r1, [r0, #SA1110_REG_OFFSET_ICMR]
:
: // CPU speed setting
: ldr r0, =SA1110_REG_BASE_POWER_MANAGER
: mov r1, #CPU_SPEED
: str r1, [r0, #SA1110_REG_OFFSET_PPCR]
:
:
: // icache
: mrc p15, 0, r1, c1, c0, 0 // チヲセ・キケチコ
ナヘクヲ
タミエツエル.
: orr r1, r1, #0x1000 // Icacheクヲ ネーシコネュ
: ステナイエル.
: mcr p15, 0, r1, c1, c0, 0 // エルステ
ス・ウヨエツエル
:
:
: // debuging info - LED1 ON
: // setting the GPIO 24, 17, 7~0 as a output
: ldr r0, =SA1110_REG_BASE_GPIO
: mov r1, #0xFF
: str r1, [r0, #SA1110_REG_OFFSET_GPCR] // LED
: CLEAR
: mov r1, #0x55
: str r1, [r0, #SA1110_REG_OFFSET_GPSR] // LED
: CLEAR
:
:
: // 6. Call Application function
: b init
:
: // interrupt handler
: undefined_instruction:
: nop
: software_interrupt:
: nop
: prefetch_abort:
: nop
: data_abort:
: nop
: no_used:
: nop
: irq:
: nop
: fiq:
: nop
:
:
: 현재 특히 bss나 , 초기화된 데이타도 안쓰니까 데이타초기화 부분은 안
이지부트를 참고로 다시 했는데...
메모리 컨피그를 꼭 해야 하는지요.
SDRAM등의 설정을 하지 않으면 동작하지 않는지요????
여태까지는 그런거 안하고 그냥 쓴 기억이 있어서요...
그리고...
이미지를 만들때...
꼭 dd를 해야 하는지요...
이지부트의 메이크파일의 dd의 의미를 잘 모르겠네요..
dd if=start/start of=image/ezboot bs=1k conv=sync
dd if=init/init of=image/ezboot bs=1k seek=1
이게 뭐하는 놈인지요??
그리고 혹시 링크스크립트 쓰는 문법좀 갈켜주세요...
--------------------------
삽질맨... wrote..
: 이지보드를 사용해서 간단한 스타트업 루틴과 시리얼 IO루틴을 공부삼아 만 들
: 어 보고 있습니다. 플래슁은 ezflashw2k 로 하고 있고,
: 디버깅은 GPIO에 연결된 LED로 하고 있는데요,
: 잘 안되네요....
: ------------------------------------------------
: 우선 제대로 다운로드가 되는지가 매우 궁금합니다.
: 현재 arm-elf-objcopy로 바이너리 만들어서 이 바이너리를 바로 ezflash로 다
: 운로드 하고 있습니다.
: 이렇게 해도 우선 이지보드의 jtag flash write에 문제가 없는지요???
: ezflash로 쓰면 내부적으로 erase하고, write 해주는지요...
:
:
: 이지부트 메이크파일 보면, dd로 뭔가 하는데, dd로 뭘 더해야하는지요.
: 왜 dd를 사용하고 있는지도 잘 모르겠네요. 단순히 바이너리를 합칠라고 쓰 는
: 지, 혹은 추가로 더 해주어야 하는게 있어서 하는지요.
:
: 또, 링크스크립트가 제대로 써져있는지도 궁금한데요...
: 제가 링크 스크립트의 문법을 잘 몰라서요.
: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
: OUTPUT_ARCH(arm)
: SECTIONS
: {
: .start 0x00000000 : {
: vector.o(.text)
: }
:
: . = ALIGN(4);
: .text 0x00010000 : {
: *(.text)
: }
:
: . = ALIGN(4);
: .rdata 0x00020000 : {
: *(.rodata)
: }
:
: . = ALIGN(4);
: .data 0xc0000100 : {
: *(.data)
: }
:
: . = ALIGN(4);
: .bss 0xc0010000 : {
: *(.bss)
: }
:
: _end =.;
: }
: 이게 제가 쓴 링크 스크립트인데, 우선 ALIGN의 용도도 잘 모르겠고, 좀 자 신
: 이 없네요..이게 문법상 맞는지...
: map파일이나, objdump뜬거는 의도대로 나오는거 같은데...
:
: 암튼 동작이 안되니..이상합니다.
: 확인용으로 넣은 LED점멸하는게 의도대로 안나가서요....
:
: 어디가 이상한지 잘 못찾겠네요...
: 참고로 리셋핸들러 코드는요...
:
: #include "ez_m01.h"
:
: // general definitions
: .text
: .set _stack_base, 0xc1000000 // stack start : end of ram
: .set _stack_top, 0xc0ff0000 // stack end : 10k
: space
: .extern init
:
: // 1. interrupt vector install
: b reset
: b undefined_instruction
: b software_interrupt
: b prefetch_abort
: b data_abort
: b no_used
: b irq
: b fiq
:
: reset:
:
: // debuging info - LED1 ON
: // setting the GPIO 24, 17, 7~0 as a output
: ldr r0, =SA1110_REG_BASE_GPIO
: ldr r1, =SA1110_GPDR_V
: str r1, [r0, #SA1110_REG_OFFSET_GPDR] // LED
: GPIO ????? ????.
:
: //
: mov r1, #0xFF
: str r1, [r0, #SA1110_REG_OFFSET_GPCR] // LED
: CLEAR
:
: mov r1, #0xaa
: str r1, [r0, #SA1110_REG_OFFSET_GPSR] // LED
: ON :
:
:
: // 2. set up stack pointer
: // firstly, zero clear the stack area
: ldr r1,=_stack_base
: ldr r2,=_stack_top
: mov r0,#0
: cmp r1,r2
: beq 2f
: 1: str r0,[r1],#4
: cmp r1,r2
: bls 1b
: // secondly, set up stack pointer
: 2: ldr sp, =_stack_base
:
:
: // 3. Relocate [copy] data from ROM to RAM
:
: // 4. clear BSS
:
: // 5. CPU register setting/HW init/interrupt mask
:
: // Mask all interrupt
: ldr r0, =SA1110_REG_BASE_INTERRUPT
: mov r1, #0x00
: str r1, [r0, #SA1110_REG_OFFSET_ICMR]
:
: // CPU speed setting
: ldr r0, =SA1110_REG_BASE_POWER_MANAGER
: mov r1, #CPU_SPEED
: str r1, [r0, #SA1110_REG_OFFSET_PPCR]
:
:
: // icache
: mrc p15, 0, r1, c1, c0, 0 // チヲセ・キケチコ
ナヘクヲ
タミエツエル.
: orr r1, r1, #0x1000 // Icacheクヲ ネーシコネュ
: ステナイエル.
: mcr p15, 0, r1, c1, c0, 0 // エルステ
ス・ウヨエツエル
:
:
: // debuging info - LED1 ON
: // setting the GPIO 24, 17, 7~0 as a output
: ldr r0, =SA1110_REG_BASE_GPIO
: mov r1, #0xFF
: str r1, [r0, #SA1110_REG_OFFSET_GPCR] // LED
: CLEAR
: mov r1, #0x55
: str r1, [r0, #SA1110_REG_OFFSET_GPSR] // LED
: CLEAR
:
:
: // 6. Call Application function
: b init
:
: // interrupt handler
: undefined_instruction:
: nop
: software_interrupt:
: nop
: prefetch_abort:
: nop
: data_abort:
: nop
: no_used:
: nop
: irq:
: nop
: fiq:
: nop
:
:
: 현재 특히 bss나 , 초기화된 데이타도 안쓰니까 데이타초기화 부분은 안