아무 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 디버거 프로그램에서 각 레지스터를 지배하는 것이 가능하다.