부트로더 제작 10편. blob과 응용프로그램 실행기능 - 2009/02/10 23:15
금번 칼럼에서는 cirrus EP9302에 포팅된 완전한 blob 소스코드를 첨부한다.
따라서, 지난강좌에서 여기!!
이미 소개한 바 있는 내용이지만 다시한번 이전 버젼(v1.00)과의 차이점과 함께 blob 프로그램 이미지를 타겟보드에 내리는 방법에 대해서 알아보도록 하겠다.
앞으로의 강좌에서나 또한 여러분들이 해당 보드를 가지고 직접 프로그램 개발을 하기 위해서 꼭 사용되는 방법인 만큼
본 방법을 잘 숙지토록 하여야 겠다.
첨부파일: download.exe ; BLOB 이미지를 타겟보드에 내려주는 윈도우즈 전용 프로그램
blob-ahav9302-107.tar ; BLOB 소스코드( ver1.07 )
이전 버젼(v1.00)에 비해 추가된 가장 큰 특징은 다음과 같다.
ver1.07의 특징
(1)응용프로그램(kernel) 을 메모리(램)상에 다운로드 하고 실행해 볼 수 있는 기능
(2)위 응용프로그램을 FLASH의 커널위치상에 라이팅(writing)하고 실행 할수 있는 기능
여기서 응용프로그램 이라 함은 리눅스 커널 이미지에 대응되는 것으로서 blob 은 리눅스 커널만을 다운로딩하고 실행 하라는 법은 없다.
일반 펌웨어 이미지도 해당 위치에 같은 요령으로 다운로드하고 실행 가능 한것이다.
그러므로 응용프로그램이라는 용어는 blob 이 실행되는 보드상에 다운로드 되어 지고 자체로 실행가능한 바로 그것을 칭한다.
blob 프로그램 이미지 타겟보드에 내리기
[그림2] BLOB 이미지를 다운로드 하기 위해 사용되는 버튼
BLOB 프로그램을 타겟보드에 올리는 요령(순서)
(1)[그림2]의 예시와 같이 타겟보드와 시리얼 케이블로 연결한다. 그리고 보드에 전원을 인가한다.
(2)[그림3]의 예시와 같이 cirrus 에서 배포한 UART 를 이용한 시리얼 다운로드 프로그램인 'download' 프로그램을 실행시킨다.
(주1. 씨러스에서 배포한 download 프로그램은 각각 linux 용과 win 용으로 제공된다.)
(주2. 각각 보드레이트와 시리얼 포트가 정확한지 확인 필.)
(3)타겟보드의 BOOT 버튼을 지그시 누른 상태에서 POR 버튼을 누르면 곧 바로 다운로드가 시작된다.
[그림3] 다운로드 프로그램의 실행 화면
필자의 경우 USB2SERIAL 케이블을 사용한 관계로 SERIAL PORT3이 사용되었다.
성공적으로 다운로드가 완료된 경우 다음과 같은 메시지가 나타난다.
C:\Temp>download -b 115200 -p 3 blob.bin
Using Serial Port 3
Flash Manufacture ID:0089, Device ID:0018
Successfully programmed 'blob.bin'.
blob을 실행 시켜 보기
이제 타겟 보드에서 BLOB 이 정상적으로 동작하는지 확인 해 보는 일만 남았다. 이를 위하여는 PC 호스트 상에서 터미널 프로그램을 사용하여야 하는데 바이너리 파일을 전송할수 있는 기능을 가진 터미널 프로그램이면 어떤 것이든 무방하겠다.
리눅스용으로 Minicom 이나 윈도우즈에서는 하이퍼터미널 정도가 그 예가 될 수 있다.
필자의 경우는 [그림4] 처럼 윈도우 환경에서 테라텀을 사용하였다.
[그림4] blob이 실행된 타겟보드와 연결한 터미널 화면
타겟보드에 BLOB 프로그램을 내리고 케이블 연결후 터미널을 보면 대개 [그림4]와 같은 메시지를 확인할 수 있어야 한다.
만약에 그림과 같이 메시지가 보이질 않는다면 본 칼럼의 절차를 다시 확인후 그래도 안될 시에는 게시판이나 덧글로 문의 바란다.
터미널 창에 다음과 같이 입력하여 보자.
blob> help [ENTER]
이후 메시지들이 디스플레이 될것이다. 이후 강좌에서 BLOB 소스를 분석할 시에 이야기 하도록 하겠지만 여러분들이 보시고 계신 터미널(테라텀)상의 모든 메시지들은 타겟 보드에서 뿌려 주고 있는 것들이다. 더불어 여러분들이 키보드에서 입력한 모든 명령들은 마찬가지로 타겟보드에서 해석되고 실행되며 마지막으로 실행 결과를 터미널에 보여 주는데 이 모든 행위를 BLOB에서 관장한다.
주의사항!
부팅후 10초안에 키보드중 아무키나 누르기 바란다. 나중에 다시 설명하겠지만 현재 플래시 메모리에는 커널이미지나 응용프로그램이 없고 blob 이미지 만이 only 들어 있기 때문에 부팅 10초후에는 자동적으로 커널을 실행하게 된다. 따라서 플래시에는 아직 커널이 존재 하지 않는 관계로 그냥 놔두면 시스템은 폭주 하게 된다. 이후 커널이미지나 응용프로그램이 플래시에 내장되게 되면 이같은 주의 사항은 고려 하지 않아도 되겠다.
uuencode 설치하기
사용하는 리눅스 개발 환경에서 uuencode 명령을 다음과 같이 실행 해 본다.
이는 이후의 작업을 위해서 필수적이다.
#uuencode[ENTER]
uuencode: Command not found.
만약 위의 예시처럼 해당 명령이 존재 하지 않는 것으로 표시 된다면 이후 소개하는
방법대로 해당 기능을 설치를 해야 한다.
리눅스 패키지중 sharutils 내에 uuencode 툴이 들어 있다.
셸프롬프트에서 다음과 같이 입력한다.
# yum install sharutils
이후 부터는 설치 안내에 따라 진행하면 된다.
응용프로그램 이미지 만들기
본 배포본(blob-ahav9302-107.tar)에는 데모용 응용프로그램을 만들수 있도록 함께 코딩이 되어져 있다.
데모 프로그램 이미지를 만들기 위해서는 다음의 방법을 따른다.
첫째, include/config.h 파일 수정
아래처럼 적색부를 활성화 시킨다.
|
/* Version number of package */ /* FIRMWARE 컴파일 사용시 설정 */ #endif |
둘째, Makefile 파일 수정
blob 이미지 만들때는 (가)를 활성화 시키며,
응용프로그램 만들때는 (나)를 활성화 시킨다.
|
.EXPORT_ALL_VARIABLES: #TEXT_BASE = 0xC3C00000 ...........(가) # CROSS_COMPILE = arm-linux- |
이처럼 수정후 프롬프트 상에서 다음과 같이 실행하면
# make clobber [ENTER]
# make [ENTER]
최종적으로 'blob.uu' 파일이 만들어 졌을것이다.
해당 폴더내에 blob.bin 은 있으나 위와 같은 파일('blob.uu' )이 안만들어 졌을경우
이미 앞서 설명한 'uuencode 설치하기'가 정확히 안되었을 가능성이 높다.
응용프로그램 다운로드및 실행해 보기
터미날 상에서 다음과 같이 입력한후 테라텀의 파일-파일보내기[S] 메뉴를 선택하면
'[그림5] 응용프로그램의 다운로드' 처럼 화면이 나타난다. 이후 'blob.uu' 을 선택한다.
blob> download kernel [ENTER]
[그림5] 응용프로그램의 다운로드
잠시 후 다운로드가 완료되며 다음과 같은 방법으로 해당 프로그램을 실행 해 볼수 있다.
blob> boot kernel [ENTER] 혹은 boot [ENTER]
특별한 문제가 없다면 '[그림6] 응용프로그램의 실행화면' 처럼 Hello World라는 문장이 보일것이다.
[그림6] 응용프로그램의 실행화면
NEXT. . . 다음 시간에는 blob과 MMU에 대해 알아 봅니다.
posted by 가일(GUILE)
♡ 포스팅이 유익 하셨다면 E-mail로 가일의 임베디드 스쿨을 구독하세요-> 





download.ex_
blob_ahav9302_107.tar