강좌 & 팁
최근 CPU들은 쿼드 코어에 개발 지원이 간편해진 것이 많습니다.
그중에 주목받고 있는 CPU가 freescale 사의 iMX6 인데요...
초간단 보드로 sabrelite 라는 보드가 있습니다.
커널은 그냥... 최신 바닐라 커널을 받아서 해도 부팅은 잘됩니다.
자 이 CPU의 개발 환경과 구동 방식에 대한 걸 얘기하려고 합니다.
( 기본은 sabrelite 라는 보드를 기준으로 합니다.)
iMX6는 SPI-NoR Flash 를 이용해서 부팅을 합니다.
매우 쉬운 인터페이스이지만 부트로더와 커널을 작업할때는 좀 불편합니다.
왜냐하면 쓰기가 매우 느리거든요.
하지만 다행히도 부팅 옵션을 바꾸면 SD로도 부팅이 가능합니다.
그러면 SD카드에 부트로더를 넣으면 빠를것 같습니다.
그런데 막상 해보면 그거 갈아끼우기가 매우 불편합니다.
리눅스 머신이 있어야 하고 빼서 갈아끼고... 부팅하고 테스트하기........
엔지니어들은 불편한걸 싫어하는.... 다른 말로 하면 게으르죠...
기본 부팅은 그냥 내부 SPI-Nor Flash로 그냥 두겠습니다.
단... 부팅할때 부트로더를 메모리로 올리는 것은 SD에서 읽어서 메모리로 올리는 거죠.
뭐가 다르냐 하면... 일단 SPI-Nor 에 느리게 쓰는 작업이 없어졌습니다.
그래도 SD에 부트로더를 넣어야 하는 것은 동일합니다.
아직도 귀차니즘은 해소되지가 않았습니다.
그래서 USB 연결을 사용합니다.
부팅 모드를 USB로 바꾸면 USB디바이스가 보이고 파일을 로딩시킬수 있습니다.
실제로 해보니... 다른 부팅 모드에 실패하면 USB 부팅 모드로 바뀌더군요..
USB 로더를 이용해서 메모리에 내가 수정한 부트로더를 올립니다.
퓨징없이 바로 부트로더 실행이 가능합니다.
이렇게 SD에 쓰는 동작없이 부트로더 개발이 가능하군요.
생산시에는 SPI-NOR 에 SD에서 부트로더를 읽어들이는 것만 넣어놓으면,
바로 부팅이 가능하겠습니다.
물론 microSD를 이용해서 부팅하는 것도 가능합니다.
이 보드를 사용할때 개발 환경은 아래와 같이 잡으면 매우 편합니다.
1. 부트로더 개발은 USB 로더를 이용해서 개발한다.
2. 부팅 옵션은 두가지( SPI-NOR, (micro)SD) 중에서 선택이 가능하다.
3. 커널은 부트로더에서 tftpboot 를 이용해서 메모리에 적재시킨후 퓨징없는 부팅으로 개발하자.
뭐... 알고 보면 무지 쉬운 내용인데 구구절절 써가면서 한 것같네요.
참고 사이트로는
http://www.eewiki.net/display/linuxonarm/i.MX6x+SABRE+Lite
https://wiki.linaro.org/Boards/MX6QSabreLite
두군데가 아주 잘 정리되어 있습니다.
이 부트로더를 새로 올린 이유는 지난주까지 사용하려 했던 device tree를 지원하는 부트로더를 올리기 위해서였습니다.
다음주에는 이 부트로더를 이용해서 커널을 올리는 작업을 해보겠습니다.
저 혹시 그 보드 구매처 연락처 알수 없을까요?