개발 기록/Coding&Debugging

구름 IDE에 임베디드 개발환경 설치하기 (도전! 임베디드 OS 만들기)

LiDARian 2021. 5. 9. 08:30
반응형

사지방 컴퓨터는 종료마다 초기화된다.

AWS는 돈이 아깝다.

하모니카 리눅스는 터미널이 막혀있다. 이럴거면 왜 리눅스를 쓰는지?

대체 군대에서 안정적이게 임베디드 리눅스 개발환경을 구성하려면 어떻게해야하는걸까 고민한결과

구름 IDE를 사용하기로 결정했다.

 

구름 IDE에서 무료로 제공하는 컨테이너의 운영체제가 Ubuntu 18.04(64bit)이다.

게다가 CLI를 지원해준다.

이를 이용해서 구름 IDE에 임베디드 개발환경을 설치해볼 수 있지 않을까하는 상상을 해보았고,

실제로 해냈다.

 

참고 도서 : 도전! 임베디드 OS 만들기
원문 : kldp.org/node/90203

과정은 대체로 도서 혹은 원문에 나와있으므로, 오류가 잘 생기는 곳 혹은 원문과의 개발환경 차이로 인해 추가적으로 입력해야하는 명령어 위주로 적도록 하겠다.

 

그리고 신간 나왔으니깐 그냥 신간사는 게 좋을 듯 하다...  이 책 너무 오래됐다..


arm linux gcc 3.3.2 버전은 구글링해서 찾아서 넣는다. 그리고 아래 명령어를 입력한다.

설치명령어는(tar xvjf 부분) 반드시 sudo를 붙여서 입력하자.

cp ./arm-linux-gcc-3.3.2.tar.bz2 /
cd /
sudo tar xvjf arm-linux-gcc.3.3.2.tar.bz2

그 후 PATH를 지정해주어야 하는데, 구름 IDE는 컨테이너에 .profile 명칭의 파일이 없다. 그래서 만들어줘야한다.

이 때 구름 IDE에서 자체 제공하는 텍스트 에디터로 복사붙여넣기를 해도되고, ~(루트디렉터리)로 이동해서 vim .profile 명령을 해서 만들어줘도 된다. vim 사용법은 이 링크로 (www.morenice.kr/25)

.profile에는 아래와 같이 적는다. 

PATH=/usr/local/arm/3.3.2/bin:/usr/local/arm/3.3.2/sbin:"{$PATH}"

.profile은 반드시 ~ 디렉토리에 있어야된다. 그래야 제대로 실행된다...!

.profile은 숨김파일이므로 잘 들어갔는 지 확인하려면 ls -a 로 봐야한다.

 

ls 명령어에서 -a는 숨김파일도 보여주는 기능이 있다.

 

그 후 터미널에 source ~/.profile 명령을 입력하고, 다시 구름 IDE 대시보드로 나와서 해당 컨테이너의 설정으로 들어간 다음, 컨테이너를 정지하고, 다시 키도록 하자. (이렇게 안하면 arm linux gcc 설치가 완료가 안되서, u-boot 설치가 안된다.)

저 오른쪽 위의 정지버튼을 꾸욱 눌러주자

 

다시 켜졌으면 arm-linux-gcc --version 명령어를 통해 잘 설치됐는지 확인하자.


QEMU는 그냥 아무 버전이나 써도 돌아간다.

apt-get update
apt-get install qemu

이제 u-boot 설치가 문제인데, 저자의 컴퓨터가 32bit 인지, 구름 IDE에서의 개발환경에서는 원문의 방식으론 설치가 안된다. 그래서 아래와 같이 한다.

 

우선 저자가 제공하는 gumstix_uboot 압축파일을 받아 아무곳이든 풀고, 푼 디렉터리로 들어가 아래와 같이 명령어를 친다.

make distclean
make gumstix_config
make all

dd if=/dev/zero of=flash.bin bs=4096 count=4096
dd if=u-boot.bin of=flash.bin bs=4096 conv=notrunc
qemu-system-arm -M connex -pflash flash.bin -nographic

정확한 이유는 모르겠으나 64bit 컴퓨터에서는 u-boot.bin을 그대로 사용 못하고 flash.bin으로 변환해서 flash.bin을 사용해야한다... 리눅스를 좀 더 공부하면 이유를 알 수 있을지도 모르겠다.


이후 hello world 예제등 QEMU를 사용하는 상황에서는 몇가지 명령어를 수정해서 flash.bin을 다음과 같이 이용하면 되겠다. 파일 경로등은 자신의 상황에 맞게 수정하자.

cp /workspace/Embedded_OS/developing/gumstix_uboot/flash.bin /workspace/Embedded_OS/developing/navilnux/navilnuximg

cd /workspace/Embedded_OS/developing/navilnux/navilnuximg
dd of=navilnuximg bs=1k conv=notrunc if=flash.bin
dd of=navilnuximg bs=1k conv=notrunc seek=180 if=navilnux.jffs2

/usr/bin/qemu-system-arm -M connex -pflash navilnuximg -nographic

즉, u-boot.bin 대신에 flash.bin이 들어간다고 생각하면 되는 것이다.

 

이렇게 하면 다음과 같이 잘 실행된다.

 

??? : 아 ㅋㅋ 이게 되네

 

반응형