시중에는 비교적 저렴한 ARM코어 기반의 평가보드들이 많이 나와있다.
그러나 무료로 ARM기반의 Embedded Board를 하나 구하게되었다.
엄밀히 말하자면 그냥 구해진건 아니고...
가정용 무선전화기를 분해해 보면 예전 모델들은 흑백 LCD에 8비트나 16비트기반의
MCU가 사용되는데 최근 무선전화기들은 컬러 LCD디스플레이가 대부분 장착되고
각종 멀티미디어 기능들이 들어가면서 ARM기반의 MCU가 많이 사용되어 지는듯 하다.
버려진 무선전화기를 뜯어 보니 컬러 LCD와 삼성 S3C3410 MCU가 탑재되어 있었다.
구글신께 문의해본 결과 친절하게도 ARM7TDMI기반의 MCU이고 관련 데이터 시트와
메뉴얼등을 보여주었다.
다행이 BGA가 아니라 리버스 엔지니어링이 제한적으로 가능해 보였다.
구해진 데이터시트와 메뉴얼 등을 참고해 JTAG핀과 RESET핀을 외부로 인출 하였다.
나는 개인적으로 전자파를 별로 좋아하지 않아 무선 모듈은 깨끗하게 제거해
쓰레기통에 버렸다.
길게 뻗은 전선은 리셋핀인데 아직 쓸만한 버튼을 못구해 그냥 저렇게 썼다.
S3C3410 데이터 시트를 아무리 뒤져봐도 JTAG에 대한 상세한 내용을 찾을 수가 없었다.
구글신께 다시 문의...
S3C3410은 저가 양산을 위해 JTAG의 EXTEST기능이 구현되지 않았으며
MCU외부 메모리 입출력을 위해서는 ARM7TDMI에 내장된 Embedded-ICE를 써야한다고
아주 친절하고도 상세하게 알려주었다. 젠장...
기존에 만들었던 USB-JTAG에 ARM7TDMI와 Embedded-ICE를 제어할 수 있는 기능을
아주 쉽고도 간단하게 만들어 넣었다. 정말 간단했다. 젠장...
EXTEST기능만 있었어도 간단한걸 더 간단하게 할 수 있었을텐데 말이다.
부착된 1MB NOR플래시에 저장된 펌웨어 바이너리를 읽어 봤다.
0번지에는 통상적인 ARM 인터럽트 벡터 처리부분이 보이고,
"Remote Program Start..."라는 간단한 부팅용 메시지와 제작자 정보가 보인다.
"8Blue-M Ucos Ver1.0" 텍스트가 보이는것으로 보아 UCOS커널을 포팅해서 썼나 보다...
뭐 어찌됐건 나에게 기존 펌웨어는 별로 중요한게 아니니 그냥 파일로 백업만 해놓고
NOR플래시 지우기/쓰기 테스트등을 해봤는데 잘 된다.
버튼에 부착된 LED 깜빡이는 테스트 정도만 해놓은 상태이다.
1MB NOR플래시와 2MB SDRAM이 부착되어 있는데, 음...
NOR플래시에는 부트로더와 Linux커널만 꽉차게 겨우 올라갈듯 하다.
커널 압축이 풀리면 2MB가 넘었나?.. 기억이 가물가물...
여튼... 며칠간의 삽질로 ARM코어 기반의 Embedded Board가 하나 생겼다.