기존의 7710 cut 2.1 에서 3.1 로 넘어오면서 발생한 문제점들에 대한 설명과 그 해결책에 대해서 정리했다.
들어가기 전에
7710 cut 2.1 의 경우, 기존의 7710 회로도(2005. 04)에서 몇 가지 수정할 것들이 몇 개 있었다. 이것은 7710 H/W 수정사항 을 참고하기 바란다.
나 역시 7710 cut 3.1 타겟보드에서 cut 2.1 에서의 수정 사항을 그대로 반영하였다. 하지만 몇가지 문제가 발생했다.
문제점
프로그램 실행시, 아래와 같이DLL 셋업 루틴에서 더이상 진행하지 못하고, 오류 메세지를 냈다.
MB391/STi7710 BOARD CONFIGURATION VERSION [ 20 . 5 ] CPU/DDR Frequency = 200 MHz Setup 2 * Samsung K4H561638F-TCCC DDR RAM MB391_ConfigureEmi finished DLL setup ... ... ...
하지만, 신기한 것은 7710 의 오른쪽 모서리나, 옆의 저항들을 살짝 손으로 건드려 주면, DLL 셋업을 넘어가는 것이었다. 하지만 초기화까지는 성공적이었지만, main() 함수까지는 넘어가지 못했다. 참고로 7710ref/testapp/testapp1 을 실행시켰다.
여기까지의 문제를 정리하자면 다음과 같다.
- 손을 건드려야만 DLL 셋업 루틴을 넘어가는 것
- main() 함수를 넘어가지 못하는 것
총 2 대의 타겟보드를 만들었지만, 현상은 2 대 모두 동일했다.
문제 해결
우선 나의 경험을 바탕으로 설명하기 위해 2 번 문제부터 언급하겠다. 실제로 2 → 1 순으로 문제를 해결했다.
main() 함수를 넘어가지 못하는 것
처음에는 나는 1 번과 2 번이 같은 원인으로 발생하는 것이라고 생각했다. 하지만, 달랐다. 원인은 DDR 메모리에 있었다. 2 대의 타겟보드 모두 DDR 메모리를 다시 납땜하자 main() 프로그램이 수행되었다. 하지만, 1 번 문제는 여전히 해결되지 않았다.
손을 건드려야만 DLL 셋업 루틴을 넘어가는 것
손을 건드려야만 초기화 루틴을 넘어가는 것이 확실했으므로, 나는 정확히 어느 지점인지 확인할 필요가 있었다. 그래서 침핀을 손가락에 테이프로 붙인 뒤에 프로그램을 실행시켜 가면서, 7710 주변을 건드려 보았다.
문제는 바로 'R346' 이었다. 이 곳을 침핀으로 건드려 보니, DLL 셋업이 잘 넘어갔다.
cut 2.1 에서는 NC 로 수정했으므로 cut 3.1 에서 역시 NC 로 처리했다. 한마디로 오픈(OPEN) 시켰다. 하지만, cut 3.1 에서는 풀 다운(PULL-DOWN)을 걸어주어야만 제대로 동작했다.
※ 참고로 ST 에서 제공한 CUT 2.1 기반의 Brick Board 회로도에서는 NC 처리 했었다. 그전에 7710 회로도(우리가 만든)에서는 풀 업(PULL-UP) 을 걸어주었었다.
결국 GND 로 점프를 날렸더니, 잘 동작하였다. cut 3.1 에 와서 새롭게 바뀐 점이라고 하겠다.
못다한 이야기
1 번 문제로 한참 고민할 때, 한 가지 이상한 점을 발견했다. 바로 손을 건드렸을 때, 나오는 메세지들 이었다.
---------------------------------------------------- MB391/STi7710 BOARD CONFIGURATION VERSION [ 20 . 5 ] CPU/DDR Frequency = 200 MHz Setup 2 * Samsung K4H561638F-TCCC DDR RAM MB391_ConfigureEmi finished DLL setup DLL3 Locked OK DLL Done Frequency Synthesizer Setup STi7710 DeviceId = 33 STi7710 Cut = 2 STi7710 Metal Fix = 1 MB391 EPLD Firmware Ver = 15 . 15 <<<<<------- 이 숫자들이 프로그램을 돌릴 때마다 제 각각 이었다. Setup Complete ----------------------------------------------------
위에서 표시한 부분이 cut 2.1 에서는 항상 일정했다. 하지만, cut 3.1 에서는 프로그램을 돌릴 때마다 달랐다. mb391.cfg 파일을 보니, 저 숫자들은 EMI BANK1 에 값들을 읽어서 나오는 값이었다. 바로 그렇다. 'R346' 은 'EMI_WAIT' 이다. 이 것이 오픈(OPEN) 포트 였기 때문에, 손을 댈 때 마다 제대로 된 값을 읽어올 수 없어서 그 때마다 값이 바뀌었던 것이었다.