부트로더가 전에는 blob이었는데 이번에 u-boot로 바뀌었다.
그런데 배포하는 부트로더를 올리니까 내 경우에는 아예 화면이 출력되지 않았다.
시리얼 라인으로 아무런 신호가 없는 것이다.
수많은 삽질 결과 시리얼 초기화 코드에서 blob과 u-boot의 차이점을 발견했다.
패치를 첨부하니, 이 글을 읽고 무슨말인지 알만한 사람은 써먹을 수 있으리라 믿는다.
단! 아래 박스는 참고만 하고. 패치가 필요하면 첨부파일을 받아 사용하라.
--- ub/cpu/pxa/serial.c 2007-02-22 20:40:58.000000000 +0900
+++ u-boot-1.2.0-proX/cpu/pxa/serial.c 2007-12-01 16:02:48.000000000 +0900
@@ -63,11 +63,13 @@
FFIER = 0; /* Disable for now */
FFFCR = 0; /* No fifos enabled */
+ FFLCR = LCR_WLS0 | LCR_WLS1 | LCR_DLAB; /* enable access to the latch registers */
/* set baud rate */
- FFLCR = LCR_WLS0 | LCR_WLS1 | LCR_DLAB;
FFDLL = quot & 0xff;
FFDLH = quot >> 8;
- FFLCR = LCR_WLS0 | LCR_WLS1;
+ // reset fifos
+ FFFCR = FCR_RESETTF | FCR_RESETRF;
+ FFLCR = LCR_WLS0 | LCR_WLS1; /* disable to latch reg */
FFIER = IER_UUE; /* Enable FFUART */
+++ u-boot-1.2.0-proX/cpu/pxa/serial.c 2007-12-01 16:02:48.000000000 +0900
@@ -63,11 +63,13 @@
FFIER = 0; /* Disable for now */
FFFCR = 0; /* No fifos enabled */
+ FFLCR = LCR_WLS0 | LCR_WLS1 | LCR_DLAB; /* enable access to the latch registers */
/* set baud rate */
- FFLCR = LCR_WLS0 | LCR_WLS1 | LCR_DLAB;
FFDLL = quot & 0xff;
FFDLH = quot >> 8;
- FFLCR = LCR_WLS0 | LCR_WLS1;
+ // reset fifos
+ FFFCR = FCR_RESETTF | FCR_RESETRF;
+ FFLCR = LCR_WLS0 | LCR_WLS1; /* disable to latch reg */
FFIER = IER_UUE; /* Enable FFUART */