[t:/]$ 지식_

아무 ICE로 아무 ARM이나 쓰기

2009/12/12

1. 전제 1

    - ARM7 까지는 거의 모든 ICE 가 거의 모든 ARM 코어를 지원한다.
    - 거의 모든 ICE는 많은 NOR 플래시 칩을 지원한다.
    - 거의 모든 eval. board 들은 표준 JTAG 커넥터를 사용한다.

2. 전제 2

    - 거의 모든 ICE 프로그램들은 NOR 플래시 라이팅을 지원한다.

3. ICE 장비가 시스템을 지배하는 원리는 다음과 같다.

    - PC로 부터 ICE장비가 명령을 받는다.
    - ICE 장비는 명령을 버퍼링도 하고 이리치고 저리쳐서 JTAG 신호를 만들어서 TARGET으로 보낸다.
    - TARGET 의 ARM 칩은 ICE 기능에 의해서 JTAG으로 받은 데이터에 의거해 모든 핀을 설정한다.
    - 해당 핀이 설정됨에 따라서 번지지정과 데이터 전송을 할 수가 있게 된다.

4. ICE 프로그램이 NOR를 프로그래밍 하는 원리.

    - JTAG 을 이용하여 TARGET 칩의 정해진 상수값으로 레지스터들을 세팅한다.
    - 이 상수값 초기화에 따라서 TARGET은 SDRAM와 NOR를 사용할 수 있게 된다.
    - ICE는 NOR를 프로그래밍 하는 간단한 프로그램과 사용자 바이너리를 묶어서 SDRAM으로 쏜다.
      (사용자 바이너리를 다이렉트로 NOR에 쏠 수도 있다)
    - SDRAM 으로부터 프로그램이 가동되어 NOR에 사용자 바이너리가 써진다.

5. 아무 ICE 으로 아무 ARM 에 NOR를 프로그래밍 하는 원리.

    - 보통 ICE 프로그램에는 NOR 프로그래밍 기능이 있다.
    - NOR 칩과 ARM Core 그리고 CPU를 찾아서 설정한다.

6. 여기서 문제가 되는 것은 각 eval. board 마다 SDRAM, NOR 설정이 다르다는 것이다.

    - SMU를 새로 설정한다. (SMU 는 무슨 약자인지 모르겠다. System Management Unit ? )
    - 비슷한 eval. board 에서 modify 하여 사용한다.
    - 보통 모든 인터럽트, 워치독을 막고.
    - SDRAM의 bank, refresh, 속도와 NOR의 버스폭, 속도만 맞춰주면 된다.
    - 최종적으로 엔디안을 확인한다.

7. 결론.

    - 이렇게 되면 "아무 ICE의 NOR 프로그래밍 프로그램"은.
    - ICE 접속시 새로 설정한 SMU에 따라서 시스템 레지스터를 설정하고,
    - SDRAM과 NOR를 활성하 시킬 수 있게 되고.
    - 해당 시스템으로 사용자 바이너리를 전송할 수 있게 되어
    - NOR를 쓸 수가 있게 된다.

8. 부연.

    - 이와 같이 SFR (System Functional Register)의 주소, W/R 여부, 디폴트 값까지 정의해 놓으면.
    - ICE 디버거 프로그램에서 각 레지스터를 지배하는 것이 가능하다.








[t:/] is not "technology - root". dawnsea, rss