부트로더 제작 2편. blob의 특징과 EP9302 보드 - 2009/02/10 23:08

부트로더라 함은 '일반적으로 운영체제나 혹은 2차 프로그램을 램(RAM) 이나 플래시(ROM)와 같은 메모리 디바이스에 상주시킨후 이를 실행해 줄 수 있는 소프트웨어라고' 필자는 이를 정의하겠다.


현재 임베디드 리눅스에서 사용되는 대표적인 부트로더는 u-boot 임에 아마 이의를 제기하는 이는 거의 없을것으로 본다.


본 강좌에서 다루는 blob 은 이 u-boot의 전신('아버지') 정도로 생각하면 되겠다.


blob 과 u-boot

다시 이야기 하거니와 본 강좌에서 blob 이 채택된 이유는 우리가 분석해야 할 코드의 크기도 상대적으로 매우 작고(TINY), 기능도 심플하다. 아주 기본적인 부트로더의 기능만을 담고 있기 때문에 썩 훌륭하진 않지만 부트로더의 동작원리를 이해하기 위해 소스분석을 할때 들이는 시간이나 그 노력면으로 볼때 보다 쓸모 있게 된다.


또한 부트로더라는 것도 어찌 보면 펌웨어 코딩 방식에 의해 작성되는 바. EP9302 프로세서상에서 펌웨어를 작성하는 기법도 더불어 익힐 수 있으니 이 또한 기쁜 소식 아닌가?.  참고 사진 [그림1], [그림2], [그림3]


[그림1] BLOB 과 u-boot의 소스파일의 크기 비교


[그림2] blob의 디렉토리 구조


[그림3] uboot 의 디렉토리 구조



BLOB은?

LART 라는 곳에서는 다음의 제원을 갖는 메인보드상에 부트로더를 얻는 작업을 진행 하였는바.

곧 이것이 BLOB(Boot Loader OBject) 이다.


Here are the LART mainboard specs in short:

  • 220 MHz Digital SA-1100 StrongARM CPU
  • 32 Mbyte EDO RAM
  • 4 MB Intel Fast boot block Flash memory
  • Power usage < 1 W
  • Performance > 200 MIPS


또한 BLOB의 주요 특징을 다음과 같이 소개 하고 있다. 자세한 내용은 해당 사이트(http://www.lartmaker.nl)를 참조하길 바란다.

  • initialise the hardware (CPU speed, memory, interrupts, RS232)
  • boot a linux kernel and provide it with a ramdisk
  • download a kernel or a ramdisk to the LART
  • write a freshly downloaded kernel or ramdisk to flash memory
  • determine the memory layout (and tell the kernel about the results)
  • give a command line to the kernel

요약하면, 임베디드 리눅스에서 사용되는 BLOB 은 커널이미지(zImage), 램디스크(ramdisk) 등을 호스트(PC)로부터 UART/Ethernet  인터페이스를 통해 다운로드 받게 해주고 이를 내부메모리(SDRAM, FLASH) 상에서 실행해 주는 것을 그 주요 기능으로 한다.


NEXT. . . 다음 시간에는 blob을 타겟보드에 직접 내려보고 실행을 해보는 시간을 갖습니다.

posted by 가일(GUILE)


♡ 포스팅이 유익 하셨다면 E-mail로 가일의 임베디드 스쿨을 구독하세요->

Trackback Address :: http://www.hongikcom.com/trackback/71 관련글 쓰기
Name
Password
Homepage
Secret
< PREV |  1  |  ...  63  |  64  |  65  |  66  |  67  |  68  |  69  |  70  |  71  |  ...  131  |  NEXT >