MSTK2440 보드가 정상 동작하는가 확인하기 위해서 간단한 startup 프로그램과 c프로그램을 만들어 봤다.
start.s 파일을 보면 진짜 별거 없다. Watch dog과 인터럽트를 disable하고 바로 C프로그램의 Main함수로 jump했다. Reset 이외의 exception들은 전부 처리하지 않았다. 일단 스택과 SDRAM 동작 설정을 아무 것도 하지 않았기 때문에 C프로그램에서 변수와 로컬함수 사용은 불가능하다. ㅋㅋ 그저 LED만 껐다 켰다 해볼뿐. delay함수 구현도 안되었기 때문에 Jlink로 하나의 step씩 실행해야 LED 점멸 결과를 알 수 있다ㅋㅋ 아래의 start.s 소스를 보면 이후 start up 코드의 기본 뼈대가 될 것이다.

; start.s
 AREA    Init, CODE, READONLY
 ENTRY
 
 ;Exception Vector Table
 b ResetHandler
 b HandlerUndef ;handler for Undefined mode
 b HandlerSWI  ;handler for SWI interrupt
 b HandlerPabort ;handler for PAbort
 b HandlerDabort ;handler for DAbort
 b .    ;reserved
 b HandlerIRQ  ;handler for IRQ interrupt
 b HandlerFIQ  ;handler for FIQ interrupt


 IMPORT  Main    ; The main entry of mon program

;=======
; ENTRY
;=======
ResetHandler
 ldr r0,=0x53000000   ;watch dog disable
 ldr r1,=0x0
 str r1,[r0]

 ldr r0,=0x4A000008
 ldr r1,=0xffffffff  ;all interrupt disable
 str r1,[r0]

 ldr r0,=0x4A00001C
 ldr r1,=0x7fff  ;all sub interrupt disable
 str r1,[r0]

 b Main
 b .
 
HandlerUndef
HandlerSWI
HandlerPabort
HandlerDabort
HandlerIRQ
HandlerFIQ
 b .



// Main.c
#define rGPBCON (*(volatile unsigned int*)0x56000010)
#define rGPBDAT (*(volatile unsigned int*)0x56000014)

// start.s에서 스택설정이 안되었기 때문에 아직 동작안함
void delay(int d)
{
 int i=0;
 for(i=0;i<d;i++);
}

void Main()
{
 // GPB5,6,7,8 output으로 설정 -> s3c2440 데이터 시트 참조
 rGPBCON = (0+(0x01<<10)+(0x01<<12)+(0x01<<14)+(0x01<<16));
 rGPBDAT = ~((1<<5) + (1<<8)); // GPB5, GPB8 LED ON
 
 while(1)
 {
  rGPBDAT = 0xffffffff; // LED OFF
  //delay(1000);
  
  rGPBDAT = 0x0;    // LED ON
  //delay(1000);
 };
}



'ARM > MSTK-2440' 카테고리의 다른 글

MSTK-2440 보드 회로 분석  (0) 2009.08.21
MSTK-2440 보드 소개  (0) 2009.08.21
 이번회에서는 MSTK-2440 보드에서 동작하는 Startup code를 작성하기 위해서 알아야하는 기본적인 하드웨어 부분(가장 중요한 부분 이라고 생각한다)을 분석하도록한다. 분석 할 부분들은 s3c2440 CPU의 Operating Mode를 결정하는 부분과 NAND 메모리 설정, SDRAM 인터페이스 부분들이다. 나머지 부분들은 필요할 때마다 언급하도록 하겠다.

1. MSTK-2440 메모리 맵

 s3c2440는 총 27개의 어드레스 라인(ADDR26:0)과 8개의 뱅크를 가지고 있다. 각 뱅크당 128Mbytes 공간을 가진다(이는 어드레스 라인이 27개이기 때문이다. 2의 27승은 127MBytes). MSTK-2440 보드는 8개의 뱅크중 5개를 사용하고 있다. 각 뱅크를 선택하는 Chip select 선이 있는데 nGCS0 ~ 7까지 존재 한다. nGCS0은 Nor 플래시 메모리가 연결되어있고, nGCS1에는 CPLD, nGCS3에는 CS8900A(이더넷 칩), nGCS6,7에는 SDRAM이 연결 되어있다. 나머지 nGCS2,4,5들은 사용하지 않는다.

s3c2440은 Nor 플래시(Boot ROM) 부팅과 Nand 플래시 부팅을 지원한다. Nor플래시 부팅 모드일 경우 0x0000_0000번지에 Nor플래시가 연결되어 있기 때문에 별다른 어려움 없이 사용할 수 있다(Nor 플래시 인터페이스는 어드레싱 방식, 꼭 Nor 플래시가 아니더래도 Boot ROM 종류면 사용 가능하다). 하지만 NAND 플래시 메모리는 어드레스 접근 방식이 아니라 페이지 접근 방식이라 Nor 플래시 접근 하듯이 주소로 접근할 수 가 없다. 따라서 Nand 플래시 부팅 모드일 경우에는 내부적 4KB짜리 SRAM을 사용한다. NAND 플래시 앞쪽 영역에서 4KB만큼만 SRAM에 복사하여 Boot ROM처럼 사용한다. 요즘은 Win CE, Embedded Linux등 대용량 OS를 많이 사용하기 때문에 NAND 플래시 부팅은 필수적이다.


2. BANK0(nGCS0) BUS WIDTH / NAND CONFIG
OM[1:0] 부분을 보자. 자세히 보면 OM0은 3.3v 풀업 저항 처리 되어있다. JP1(스위치)의 on/off 값에 따라 OM0값이 변화된다. OM1 부분은 풀다운 저항 처리 되어 항상 0이다(4.7KUNLOAD되어 있는 부분은 보드 PCB에 저항이 실장되어있지 않은 부분이다). s3c2440 데이터 시트를 보자.
여기서 OM1은 항상 0으로 고정되어 있고 OM0 부분만 0, 1로 변화 된다. 이 말은 Booting ROM Data width가 OM1이 0, OM0이 0일 경우 Nand Flash Mode이고, OM1이 0, OM0이 1일 경우 16비트 Nor Flash Mode이다.

OM[1:0] = 00일 경우 NAND 플래시 메모리 부트 모드 이다. Nand 플래시 메모리 부트 모드를 사용하기 위해서는 하드웨어 적으로 핀 설정을 해줘야 한다. 위 회로의 NCON, EINT21, EINT22, EINT23 부분을 보자. EINT21는 GPIO13과 핀이 동일하다(EINT22 = GPIO14, EINT23 = GPIO15). NCON은 풀다운 처리가 되어 항상 0이다. EINT21은 풀업 처리로 항상 1이다. EINT22는 풀업처리로 항상 1이다. 마지막으로 EINT23은 풀다운 처리되어 항상 0이다. 다시 s3c2440 데이터 시트를 보자. 아래의 내용은 데이터 시트에서 발췌한 내용이다. bold 처리된 부분이 위 회로에서 적용된 내용이다.

NCON: NAND flash memory selection(Normal / Advance)
0: Normal NAND flash(256Words/512Bytes page size, 3/4 address cycle)
1: Advance NAND flash(1KWords/2KBytes page size, 4/5 address cycle)

GPG13(EINT21): NAND flash memory page capacitance selection
0: Page=256Words(NCON = 0) or Page=1KWords(NCON = 1)
1: Page=512Bytes(NCON = 0) or Page=2KBytes(NCON = 1)

GPG14(EINT22): NAND flash memory address cycle selection
0: 3 address cycle(NCON = 0) or 4 address cycle(NCON = 1)
1: 4 address cycle(NCON = 0) or 5 address cycle(NCON = 1)

GPG15(EINT23): NAND flash memory bus width selection
0: 8-bit bus width
1: 16-bit bus width


정리하자면, 현재 하드웨어적으로 설정된 내용은 Nand 플래시의 페이지당 사이즈가 512Bytes, 메모리 어드레스 사이클은 4 어드레스 사이클, Nand 플래시 메모리 버스 폭은 8비트이다.


3. SDRAM 인터페이스
 MSTK-2440보드에서는 128MB(32MB * 4) 램 용량을 가진다(K4S561632E-TL75(16M * 16)을 4개를 사용한다). s3c2440에는 SDRAM 콘트롤러가 존재한다. 이는  nGCS6, nGCS7와 어드래스 라인, 데이터 라인등에 의해서 제어된다. K4S561632E-TL75는 16비트 데이터 버스와 A0~A12까지 13개의 어드레스 라인을 가지고 있다. 13개의 어드레스 라인이면 2의 13승으로 총 8K * 16의 용량을 가질 수 있다. 하지만 조금 이상하다. K4S561632E 칩은 데이터 시트에서도 보듯이 16M * 16의 용량(32MB)을 가진다. 어떻게 된 것일까? 데이터 시트에서 K4S561632E의 블록 다이어그램을 살펴 보자.



 위 두개의 블록다이어그램을 살펴보면 Bank Select, Row Decoder, Column Decoder가 존재한다. 그리고 Address Register 블럭이 하나 존재한다. Address Register로 클럭에 동기화되어 주소(ADD)가 들어오면 거기서 Row Address, Column Address, Bank Select를 사용 하는 것 처럼 보인다. 메모리 용량이 커지면 커질수록 메모리 번지를 어드레싱하는 어드레스 라인이 늘어나게 된다. 여기서 128MB 용량을 가지는데 정상적으로 제어하기 위해서는 A0 ~ A26로 27개가 필요하다. SDRAM용량이 커지면 이 개수는 더 늘어날 수 밖에 없다. 이제야 Bank Select, Row Decoder, Column Decoder가 왜 존재하는지 감이 온다. 어드레스를 제어할 때 일반적인 방법은 1차원적인 방법으로 제어한다. 하지만 SDRAM은 3차원 적인 방법으로 어드레스를 제어한다. Column Address, Row Address, Bank Address를 이용하면 작은 수의 어드래스 핀으로 많은 용량을 제어할 수 있다. 실제로  한 어드레스 라인을 사용하여 Column Address, Row Address를 입력한다. 이것이 가능한 이유는 이 두 주소간에 시간 차이를 두어 A0 ~ A12핀에다가 주소를 입력한다.


 여기서는 16비트 모드를 사용하기 때문에 16M * 16 부분을 위의 표에서 살펴 봐야된다. Row Address는 A0 ~ A12가 사용되고 Column Address는 A0 ~ A8까지 사용된다. 2의 13승 * 2의 9승 = 8K * 512 = 4M이다. K4S561632E칩에 보면 Bank Address가 2개있다(BA0, BA1). 각 뱅크당 크기가 4M이고 16비트 데이터 버스 폭을 가지므로 4M * 16비트, 총 256M bits(32MB)의 용량이 된다. SDRAM에 대한 기본 설명을 여기까지 하고(SDRAM에 대한 제어 스퀀스나 복잡한 구조는 알 필요가 없다. SDRAM 콘트롤러가 다 알아서 해주기 때문에 프로그래머 입장에서는 램 인터페이스 방법과 s3c2440의 SDRAM  콘트롤러 제어 레지스터만 알면된다. 하지만 여유가 된다면 SDRAM에 대해서 자세한 공부도 필요할 것 같다) 아래의 회로를 보자.


 MSTK-2440 보드는 총 128MB(뱅크당 64MB)의 SDRAM용량을 가진다. K4S561632E 칩을 4개를 사용한다. 그러면 32MB SDRAM을 가지고 어떻게 각 뱅크당 64MB를 할당 할 수 있을까?(아마 컴퓨터 구조를 공부했던 독자라면 한번쯤 배웠을 내용이다) 위 회로를 보면 해답이 나와있다. 지금 K4S561632E 칩을 살펴보면 데이터 버스 폭이 16비트이다. s3c2440에서 사용하는 32비트 데이터 버스 폭(ARM 모드로 프로그램을 하기 때문에 32비트 데이터 버스 폭 사용, THUMB 모드일 경우에는 16비트만 사용)을 만들기 위해서는 K4S561632E 칩을 병렬로 연결해야 한다. 위 회로에 LDATA[15:0] 라인을 첫 번째 K4S561632E칩의 데이터 라인(DQ[15:0])에 연결하였다(U2 부분 참조). 그리고 LDATA[31:16] 라인을 두 번째 K4S561632E칩의 데이터 라인(DQ[15:0])에 연결하였다(U3 부분 참조). 이는 총 64MB 영역 중에 상위 32MB 램 영역은 U3부분이고, 하위 32MB 램 영역은 U2부분을 의미한다. 상위 램영역과 하위 램영역을 제어할 수있는 핀이 U2, U3에서 LSCLK0(U2의 SCLK), LnWBE0(U2의 LDQM과 연결), LnWBE1(U2의 UDQM과 연결)과 LSCLK1(U3의 SCLK), LnWBE2(U3의 LDQM과 연결), LnWBE3(U3의 UDQM과 연결)이다. 나머지 U2, U3의 어드래스 라인과 nGCS6등은 공통적으로 묶인다. 어드레스 라인을 보면 한가지 의문점이 생긴다. 왜 K4S561632E의 A0자리에 s3c2440의 LADDR0부터 연결을 하지않고 LADDR2부터 연결 했을까? 또 왜 K4S561632E의 BA0, BA1에 LADDR24, LADDR25를 연결했을 까? 이는 s3c2440 데이터 시트를 보면 알 수 있다. SDRAM은 s3c2440의 SDRAM콘트롤러에 의해서 제어된다고 했다. 이는 SDRAM의 용량에 따라서 s3c2440에 주소 라인에 인터페이스하는 방법이 달라지는데 s3c2440의 데이터시트를 참조 해야된다( s3c2440 CPU 설계자가 이렇게 설계한것이기 때문에 이런 것에 대해서 심각하게 생각할 필요가 없다).
s3c2440 데이터 시트에서 SDRAM Memory Interface Examples부분을 살펴 보면 16비트 SDRAM 2개를 인터페이스 할경우의 예제를 보여준다(벤더에서 시키는 대로만 하면된다). nGCS7에 연결된 SDRAM 2개들도 동일하게 적용되는 내용이다(U6, U7 부분).


참고 할 만한 사이트 : http://kelp.or.kr/korweblog/stories.php?story=04/12/15/5293387&topic=30


4. NOR FLASH 인터페이스

ROM Memory Interface Examples



5. NAND FLASH 인터페이스




'ARM > MSTK-2440' 카테고리의 다른 글

MSTK2440 보드 테스트  (0) 2010.03.18
MSTK-2440 보드 소개  (0) 2009.08.21


보드 정보
네이버 카페 : http://cafe.naver.com/armpower.cafe
보드 제조사 : http://www.allstech.co.kr/sub2_2.php?PHPSESSID=fa6d14283353248d138f2596e3a4955c
보드 판매처 1 : http://www.edigitalworld.co.kr/index_item_view.html?pgCode=006351-000001
보드 판매처 2 : http://www.devicemart.co.kr/mart7/mall.php?cat=004019000&query=view&no=16825
교재 정보 : http://www.yes24.com/24/goods/1992901

 작년 말이였나 한참 보드 수집(?)에 열을 올리고 있을 때, 당근이 카페에서 중고로 싼가격에 좋은 물건이 올라왔다. 이미 "개발자를 위한 ARM 프로세서"라는 책을 가지고 있었다. 이책으로 공부를 할 때 보드를 가지고 있었다는 생각이 많이 들었는데 디바이스 마트에서 보드 가격을 보고 기절하는 줄 알았다. 뭔 2440 보드가 80만원씩이나.. 더구나 책까지 포함했을 경우에는 88만원에 파는 곳도 있었다. 결국 중고로 보드를 낼름 사버렸다. 여태껏 고이 모셔놓다가 공부할 일이 생겨서 꺼내 봤다. 테스트 프로그램을 램에 올리고 실행을 시켰는데 잘된다. ㅋ 당연히 잘되야지. 암튼 싼가격에 보드를 구입했는데 보드까지 이상이 없으니 기분이 좋다. 공부하는 김에 차근 차근 자료를 강좌 형식으로 정리할 생각이다. 언제 끝날지는 모르겠지만 첫번째 목표는 MSTK-2440 보드의 모든 내용(주변장치)을 펌웨어로 직접 제어하는 것 까지이다.

아래는 보드 스팩이다. 자세한 하드웨어 분석은 다음 강좌에서 할 생각이다.


1. CPU
 Samsung S3C2440A-40 (ARM920T with MMU)
 CPU Operation Frequency : Up to 400MHz

2. Boot ROM
 AM29LV800 Nor Flash (1MByte)
 K9F1208 Nand Flash (64MByte)

3. SDRAM
 K4S561632E 4EA (128MByte)

4. LCD
 2.8" LTP280QV-E01 (240× 320 Size TFT LCD, Touch Screen)

5. Peripheral
 IDE & CF Interface : XC95144XL-TQ100 (각각 1 Port)
 Ethernet : CS8900A (10 Based-T 1 Port)
   SD/MMC : 1 Slot
   Audio : UDA1341TS (Audio Jack)
   Serial : RS-232 2 Port
   USB : Host & Device
   Speaker : 0.25W/20mm
   JTAG : 20 Pin Box Header
   Infrared Receiver : KSM603LM
   Key Pad : 4EA & 1 External Interrupt SW
   Connector : Data, Address, Camera, IrDA, External Interrupt, GPIO
   Internal Function : IIC-AT24C16 EEPROM, Timer, Watch-Dog, RTC, ADC(10bit 8:1 Mux CH & Pen Drag)



'ARM > MSTK-2440' 카테고리의 다른 글

MSTK2440 보드 테스트  (0) 2010.03.18
MSTK-2440 보드 회로 분석  (0) 2009.08.21

H-JTAG 이란 ?

H-JTAG은 ARM용 Free JTAG 디버그 툴 이다. Multi_ICE와 유사한 기능을 제공한다.

그리고 SDT 2.51, ADS 1.2, REALVIEW, IAR과 같은 유명한 디버거들을 많이 지원해준다.

시중에 싼 가격으로 판매하는 ARM7/ARM9 기반의 JTAG 위글러만 있으면 사용이 가능하다.

 

H-JTAG 홈페이지 : http://www.hjtag.com/

 

 

H-JTAG 세팅 방법

H-JTAG 현재 최신 버전 : 0.9.0 을 기준으로 설명

보드는 다인시스(주)사의 DEP2410 을 사용

JTAG은 위글러 호환으로 사용(Jtag Probe)

ADS  v1.2 사용

 

설치

  1. H-JTAG 홈페이지에서 H-JTAG V0.9.0 버전을 다운 받는다.
  2. 두개의 압축 파일이 있다. H-JTAG V0.9.0.part1.rar,  H-JTAG V0.9.0.part2.rar 을 압축을 푼다.
  3. H-JTAG V0.9.0.EXE 실행하여 H-JTAG을 설치한다.
  4. 컴퓨터를 재시작한다.

 

HJTAG Server에서 Target Board 인식

  1. Jtag 위글러를 DEP2410의 Jtag 포트에 연결하고 전원을 on 시킨다.
  2. 설치된 H-JTAG 프로그램(H-JTAG Server)을 실행시킨다.
  3. 이 때 H-Jtag에서 자동으로 Target Detect를 시작한다. 성공적으로 Target을 인식하면 아래의 화면 처럼 나온다.

hjtag_Server.png 

ARM920T, 0x0032409D(ARM core ID이기 때문에 CPU마다 다 틀리다)가 표시 되어야 정상이다. 만약에 H-JTAG 프로그램에서 Target을 인식하지 못한다면 Jtag 위글러와 보드와의 연결상태를 확인해야 한다. 그리고 다시 시도하자(Operations 메뉴 -> Target Detect 선택).

 

HJTAG Server에서  Init Script 설정

 ARM용 프로그램을 ADS에서 컴파일을 하여 바로 Target 보드의 RAM영역에 다운로딩을 시켜 실행할 수가 있다(JTAG의 아주 편리한 기능). 이 때 HJTAG에서는 Jtag 위글러를 이용해서 SDRAM에 접근해야 한다. 처음 S3C2410 CPU에 전원이 인가되면 SDRAM을 제어하는 메모리 콘트롤러에 제대로 SDRAM을 접근할 수 있도록 설정(엑세스 타이밍, 데이터 버스 폭, 등등)을 해줘야한다(이런 일을 Startup code에서 해준다). 하지만 HJTAG이 ARM용 이미지를 RAM영역에 다운로딩을 할 땐 Startup code가 실행되기 이전이다. 때문에 HJTAG Sever 프로그램에서는 메모리 콘트롤러가 SDRAM에 접근할 때 필요한 설정을 할 수 있는 Init script를 지원한다(이런 것이 가능한 이유는 HJTAG에서 S3C2410 CPU의 레지스터(메모리 콘트롤러 레지스터)에 바로 접근할 수 있기 때문이다). 따라서 Init script를 반드시 설정해줘야 한다. 이것을 해주지 않는다면 S3C2410 CPU의 메모리 콘트롤러 설정 레지스터의 기본 값으로 작동하기 때문에 오작동할 수가 있다.

 

- Init Script 작성

Setmem+32-Bit+0x48000000+0x2045550
Setmem+32-Bit+0x48000004+0x700
Setmem+32-Bit+0x48000008+0x700
Setmem+32-Bit+0x4800000C+0x700
Setmem+32-Bit+0x48000010+0x700
Setmem+32-Bit+0x48000014+0x700
Setmem+32-Bit+0x48000018+0x700
Setmem+32-Bit+0x4800001C+0x18005
Setmem+32-Bit+0x48000020+0x700
Setmem+32-Bit+0x48000024+0x8D0459
Setmem+32-Bit+0x48000028+0x32
Setmem+32-Bit+0x4800002C+0x30
Setmem+32-Bit+0x48000030+0x30

 

이 내용을 "2410.his" 로 만든다(파일 이름은 어떤 것이던지 상관없다).

H-JTAG Server 프로그램에서 Script 메뉴 -> Init Script 선택 -> Load 버튼을 클릭 하여 "2410.his"파일을 선택한다.  Init script 내용이 load된 것을 확인했으면 OK 버튼을 누른다. Init Script를 Load 후 Script 메뉴 -> Auto Init를 반드시 체크 한다.

 

위의 Init Script 의 내용은 메모리 콘트롤러 레지스터 값을 초기화 해주는 것이다.

Setmem+32-Bit+0x48000000+0x2045550  : 0x48000000은 BWSCON 레지스터 주소, 0x2045550은 BWSCON의 데이터 값

S3C2410 데이터 시트를 참고하여 분석하기 바란다. 각자 보드에 맞게끔 수정해주면 된다. 하지만 저 값을 그대로 사용해도 별 문제 없다.

 

AXD설정

 AXD를 실행한다. Option 메뉴 -> Configure Target 선택 한다.

우측에 ADD 버튼을 클릭하여 H-JTAG이 설치되어있는 폴더(기본 설치 폴더 : C:\Program Files\H-JTAG\)로 이동한다. 여기에서 H-JTAG.dll 파일을 선택하고 열기 버튼을 클릭한다. 마지막으로 OK 버튼을 누르면 AXD에서의 설정이 끝났다.

AXD 프로그램의 하단에 RDI Log 부분에 아래와 같이 뜨면 AXD설정이 성공적으로 끝났다. 만약에 아래의 로그가 뜨지 않는다면 처음부터 다시 천천히 따라해 본다.

axd_rdilog.png 

 

이미지를 NOR 플래시에 굽기

H-JTAG을 설치하면 H-Flasher라는 프로그램도 같이 설치된다. 이는 SJF2410 프로그램과 동일하게 이미지를 플래시에 구울수 있는 프로그램이다. NOR 플래시에 이미지를 굽기 위해서는, ADS에서 이미지를 생성할 때 RO Base를 반드시 0x0으로 바꾸어야 한다(NOR 플래시의 시작위치가 0x0이기 때문). AXD를 이용하여 디버그 할 경우엔 0x30000000(SDRAM 시작 주소)으로 RO Base를 사용하는것이 편하다.

 

H-Flasher 프로그램에서 NOR 플래시에 접근할 때도 설정이 필요하다(위부분의 Init Script가 필요한 이유와 동일).  아래의 내용은 NOR 플래시 메모리 선택, 메모리 시작 번지, 메모리 콘트롤러 초기화 스크립트 등이다.

아래의 내용을 "2410.hfc"(파일 명을 자유롭게 지정이 가능하다) 로 만든다.

 

FLASH SECTION:
AMD
AM29LV160DB
MEMORY SECTION:
16-BIT X 1-CHIP
0x0
0x30000000
XTAL SECTION:
NULL
TCK SECTION:
-1
-1
SCRIPT SECTION:
Setmem+32-Bit+0x48000000+0x2045550
Setmem+32-Bit+0x48000004+0x700
Setmem+32-Bit+0x48000008+0x700
Setmem+32-Bit+0x4800000C+0x700
Setmem+32-Bit+0x48000010+0x700
Setmem+32-Bit+0x48000014+0x700
Setmem+32-Bit+0x48000018+0x700
Setmem+32-Bit+0x4800001C+0x18005
Setmem+32-Bit+0x48000020+0x700
Setmem+32-Bit+0x48000024+0x8D0459
Setmem+32-Bit+0x48000028+0x32
Setmem+32-Bit+0x4800002C+0x30
Setmem+32-Bit+0x48000030+0x30
PGMOPTION SECTION:
ENABLE_RESET

만약 해당 보드의 NOR플래시 메모리가 DEP2410의 NOR플래시 메모리(AM29LV160DB)와 틀리다면 H-Flasher에서 지원해주는 NOR플래시 메모리의 이름과 데이터 버스 폭을 설정하면된다.

 

H-JTAG Server를 띄운 상태에서 H-Flasher 프로그램을 실행 시킨다. Load 메뉴를 선택하여 좀 전에 저장한 "2410.hfc"를 선택한다. 설정파일이 load되면 Flash Selection, Configuration, Init Script, Pgm Options이 모두 설정되어 있는 것을 확인할 수 있다.

그런 후, Programe Wizard에서 Programming을 선택한다. Check 버튼을 클릭해 본다. 정상적으로 설정이 끝났다면 아래의 화면 처럼 나온다.

 hflasher_config.png

Flash에 Target 보드(DEP2410)의 NOR 플래시 메모리 이름과 ID가 출력된다.

만약 위의 화면처럼 NOR 플래시 메모리의 이름과 ID가 출력되지 않는다면, 위의 과정 중 빠진게 없는지 확인하고, OM0, OM1이 NOR플래시 부팅인지, nGCS0이 NOR 플래시의 CS와 연결되어있는지 확인한다(DEP2410일 경우 J4,J5 점퍼가 OM1, OM0을 선택할 수있고, J6 점퍼로 nGCS0, nGCS1을 선택할 수 가 있다).

 

 Type을 Plain Binary Format을 선택하고, Src File에서 ... 버튼을 클릭하여 바이너리 이미지(*.bin)을 선택한다. Dsr Addr에는 0x0을 입력한다. 마지막으로 Program 버튼을 클릭하면 0x0번지에 바이너리 이미지가 구워진다.

 


작성자 : 조경래

문서 버전 : 090215

작성일 : 2009년 2월 15일 (최초 작성)

 

이 문서는 출처만 밝히시면 자유롭게 배포가 가능하며, 수정도 가능합니다.

 

 

 

이 글은 스프링노트에서 작성되었습니다.

+ Recent posts