VPOS 의 멀티프로세서 버전이라고 할 수 있는 MPOS 의 대한 모든 것(?)을 정리했다.
앞서 멀티프로세서라고 했지만, 흔히 생각하는 여러 개의 CPU 들로 이루어져 있고 하나의 메모리를 공유해서 동작하는 구조는 아니다.
현재 연구실에서 개발한 MPOS 는 기존의 smdk2410 보드 2 대를 가지고 실험했다. 2 대 중에 하나는 마스터(master), 다른 하나는 슬레이브(slave) 로 동작한다.
각각의 보드는 시리얼포트로 연결되어 있고, 특정한 메세지 포맷을 사용해서 통신한다.
참고로 현재 MPOS 는 내가 수정하지 않은 예전의 VPOS 를 기반으로 하고 있기 때문에, 몇몇의 버그를 그대로 가지고 있을 수 있다.

준비 운동하기

먼저 MPOS 소스코드를 다운로드 받아서 컴파일해보자! stong 의 강원이형 홈 디렉토리(/home/siren/MPOS_smdk2410) 에서 다운로드 받을 수 있다.
개발서버로 가지고 와서 압축을 푼다

#tar xzf kanMPOS.tar.gz

컴파일 하기

MPOS 는 마스터와 슬레이브로 나눠서 동작하기 때문에 각각의 소스 코드가 다르다. 때문에 컴파일 시에 따로 컴파일하여 생성된 바이너리 이미지를 각각의 보드에 write 해야 한다.
현재는 Makefile 의 주석을 통해, 각각 마스터와 슬레이브 바이너리 이미지를 만들 수 있다. 아래와 같다.

.EXPORT_ALL_VARIABLES:
 
#DIRS = hal/bootloader lib kernel hal/CPU_HAL hal/IO_HAL hal/Variant_HAL hal/IO_HAL/drivers/mtd hal/Comm_API shell examples examples/fbv-demo libjpeg objs
 
DIRS =  hal/bootloader lib kernel hal/CPU_HAL hal/IO_HAL hal/Variant_HAL hal/IO_HAL/drivers/mtd hal/IO_HAL/drivers/video hal/Comm_API fs/fat/nand fs/fat/mml shell examples examples/DIVX objs
 
#DIRS =  hal/bootloader lib kernel hal/CPU_HAL hal/IO_HAL hal/Variant_HAL hal/Comm_API examples shell objs
 
TOPDIR  := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
 
TARGET = MASTER    // 마스터 커널을 만들고 싶다면, 주석을 푼다
#TARGET = SLAVE    // 슬레이브 커널을 만들고 싶다면, 주석을 푼다
 
CC = arm-linux-gcc
OC = arm-linux-objcopy
LD = arm-linux-ld

먼저 마스터 커널을 만들어보자!

#make
#cd images

VPOS.bin 이 생성되었을 것이다. 마스터 보드에 write 한다.

Makefile 을 수정하고, 컴파일 한다. 슬레이브의 경우에는 각각을 테스트 할 수 있도록 모듈별로 선택이 가능하다.

#make
#cd vpos_component
#./vpos_comfig

'select APP' 항목에서 슬레이브 커널에 함께 빌드할 오브젝트들을 선택한다. 그리고 나서 커널 스케줄링 방법을 선택한다.
'Replacement of component' 항목은 기존의 오브젝트들(마스터 커널과 같은 오브젝트)을 다른 오브젝트들로 바꾸고 싶을 때 'yes' 를 선택한다.
바꿀 오브젝트 파일은 'vpos_component/oth_component' 아래에 위치시킨다. 'yes' 를 선택하면, 바꿀 오브젝트 파일이름(rr_queue.o)을 적으면 된다.
모든 설정이 끝났으면, 슬레이브 커널 빌드가 끝난다. 커널 바이너리 파일은 'vpos_component/VPOS_binary' 아래에 있다.
파일 이름은 VPOS.bin 이다. 슬레이브 보드에 write 한다.

실행 하기

현재 각각의 보드와 호스트 PC 의 연결 상태는 아래와 같다.

2 대의 보드에 각각 전원을 넣고, 각각의 DNW 를 실행시킨다. 모든 명령은 쉘 명령어를 이용해서 마스터에서 실행을 하고, 이것을 슬레이브로 보내서 수행하게 한다.

추가되어야 할 것들

실험 환경(보드 수급)이 갖춰지면, 직접 수행해 볼 것.

  • computer/rtcclab/mpos_사용하기.txt
  • Last modified: 4 years ago
  • by likewind