아래 BeagleBone Black을 이용한 이미지 만들기 가이드 설명을 참고로 만들면 된다.

https://www.digikey.com/eewiki/display/linuxonarm/BeagleBone+Black

 

BeagleBone Black - Linux on ARM - eewiki

This is a page about TI's Cortex-A8 based; BeagleBone Black. Availability Boards: BeagleBone Black at Digi-Key BeagleBone Green at Digi-Key Embest BeagleBone Black at Digi-Key BeagleBone Black Wireless at Digi-Key BeagleBone Green Wireless at Digi-Key Powe

www.digikey.com

리눅스 이미지를 BeagleBone Black에 올리기 위해서는 3가지가 필요하다.

첫째로는 부트로더(U-Boot 사용), 둘째로는 리눅스 커널(linux org 배포판), 마지막으로는 루트 파일시스템(Ubuntu 사용)이다.

# ARM Cross Compiler: GCC 설치하기

하기와 같이 wget을 이용하여 gcc를 설치한다.

그 다음 압축 파일을 풀기 위해 아래 명령어를 실행한다.

ls 명령어를 사용하여, 위와 같이 압축 파일과 압축 파일을 해제한 폴더를 확인 할 수 있다.

그 다음 컴파일러 경로를 다음과 같이 설정 한다.

여기에서 주의 할 점은 `pwd`에서 ``는 키보드에서 홑따옴표가 아닌, 물결무늬(~)라는 것이다.

컴파일러 경로를 확인하기 위해 다음과 같이 입력을 한다.

${CC}gcc --version

입력 후 아래와 같이 메세지가 출력이되면 정상적으로 경로가 입력된 것을 확인할 수 있다.

1. 부트로더(U-Boot) 다운로드 및 컴파일(빌드)

부트로더란 운영체제가 시동되기 전 실행되는 최초의 시스템 프로그램으로, 하드웨어 초기화 및 검사등의 기초적인 작업으로 커널이 올바르게 실행되기 위한 작업을 하는 프로그램이다.

U-Boot는 요즘 임베디드 시스템에서 가장 많이 쓰이는 부트로더이다.

먼저 git을 깔아야 한다. 그래서 아래 창에서 설명된 것과 같이 "sudo apt install git"을 실행하여 git을 먼저 다운로드 받는다.

ㅣㄷㅁㄱ

그리고 Y를 눌러서 install이 완료되면 하기와 같은 화면이 뜰것이다.

그 다음 U-Boot Download가 필요하다.

~/ (루트 폴더에서)

git clone https://github.com/u-boot/u-boot

cd u-boot/

git checkout v2019.04 -b tmp

하기 붉은 색 명령어들을 순차적으로 실시

여기까지 잘 따라 왔다면, 하기와 같이 u-boot 폴더에 파일이 존재하는 것을 확인 할 수 있다.

그 다음 과정은 Patch를 설치하는 과정이다.

~/u-boot (u-boot 폴더에서)

wget -c https://github.com/eewiki/u-boot-patches/raw/master/v2019.04/0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch

wget -c https://github.com/eewiki/u-boot-patches/raw/master/v2019.04/0002-U-Boot-BeagleBone-Cape-Manager.patch

  

patch -p1 < 0001-am335x_evm-uEnv.txt-bootz-n-fixes.patch

patch -p1 < 0002-U-Boot-BeagleBone-Cape-Manager.patch

위의 명령어들을 아래와 같이 순차적으로 실행.

먼저 패치를 두번 받고....

패치를 설치한다.

그 다음 작업은 설정 및 컴파일(빌드)이다.

컴파일을 하기 이전에 하기 패키지들을 install 해주어야 한다.

sudo apt install build-essential

sudo apt install bison

sudo apt install flex

그다음, make 명령어를 입력한다..

~/u-boot (u-boot 폴더에서)

make ARCH=arm CROSS_COMPILE=${CC} distclean   #1. Clean하는 작업

make ARCH=arm CROSS_COMPILE=${CC} am335x_evm_defconfig #2. Configuration 작업

make ARCH=arm CROSS_COMPILE=${CC} #3. 컴파일 작업

위의 make 명령어를 #1 ~ #3 단계까지 순차적으로 다음과 같이 입력을 한다.

#1. Clean 하는 작업

#2. Configuration 작업

#3. 컴파일 작업

중략...

컴파일까지 모두 완료가 되었다면, u-boot 폴더에 MLO와 u-boot.img 가 생성된다.

각각을  first 부트로더 second 부트로더라고 하는데, 그 이유로는 초기화 안된 초기 하드웨어의 가용할 수 있는 rom용량이 작아서 first부트로더가 second 부트로더를 올릴수 있게 최소한의 하드웨어 초기화를 하고, 초기화가 된 ram에 second 부트로더를 올려 나머지 초기화를 진행하기 때문이다.

 

2. Linux Kernel

여기에서는 kernel, module, device tree binaries를 빌드하고 deploy 폴더에 카피하는 일을 할 것이다.

Mainline>

Linux커널 다운로드:

~/ (루트폴더에서)

git clone https://github.com/RobertCNelson/bb-kernel

cd bb-kernel/

하기와 같이 명령어를 실행한다.

그 다음으로 커널 체크 아웃을 하는데, am33x-rt-v4.19 버젼을 이용할 것이다.

~/bb-kernel/

git checkout origin/am33x-rt-v4.19 -b tmp

위의 체크아웃 과정까지 거치면 bb-kernel 폴더에는 하기와 같이 파일 및 폴더가 Download 되었음을 확인 할 수 있다.

커널을 컴파일 하기 전에 다음 패키지를 install 해야 한다.

sudo apt install lzop

sudo apt-get update

sudo apt-get install lzma pkg-config libmpc-dev u-boot-tools

그 다음 커널을 컴파일(build)한다.

커널 Build:

~/bb-kernel/

./build_kernel.sh

 

중략...

중략...

위의 메세지 중에 "Your display is too small to run Menuconfig!"라는 메세지가 있다.

따라서, 컴파일을 진행하는 터미널 창을 더욱 키운 다음(최대화 후) 다시 ./build_kernel.sh를 실행하면 이상없이 잘 컴파일이 된다.

그런데, Menuconfig라는 파란색 GUI 창이 뜨며 설정을 요구한다. 다른 글에서 보니 이 설정들은 build_kernel.sh에서 잘 설정을 해 줄거라고 한다. 나중에 확인이 필요해 보인다.

여튼 정상적으로 컴파일이 완료되고 하기와 같이 마무리가 된다.

참고로 컴파일 할때 걸린 시간은 대략 2시간 정도 걸린거 같다. 정확하진 않다.

컴파일이 완료되면, kernel이라는 폴더가 생성된 것을 확인할 수 있다.

 

3. 루트 파일시스템 설치

이제 SD 카드에 이미지를 넣기 전에 마지막 단계인 루트 파일시스템 설치이다.

파일 시스템은 여러 가지(데비안, 우분투, Anstrom... 등등)가 존재하는데, 여기서는 우분투를 사용하기로 한다.

Ubuntu 18.04 LTS

User / Password : ubuntu / temppwd

먼저 Ubuntu를 다운로드한다.

Download:

~/ (루트폴더에서)

wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-18.04.2-minimal-armhf-2019-02-16.tar.xz

그 다음 단계는 Verify 단계로 다운 받은 압축 파일에 문제가 없는지를 체크 한다.

Verify:

~/ (루트폴더에서)

sha256sum ubuntu-18.04.2-minimal-armhf-2019-02-16.tar.xz

299f278ff446f0e427cb1a6650d1fa5d42d6744fff627c804f0afc918129b6b6  ubuntu-18.04.2-minimal-armhf-2019-02-16.tar.xz

이제 마지막 단계로 압축 파일을 압축 해제 하는 일이다.

Extract:

~/ (루트폴더에서)

tar xf ubuntu-18.04.2-minimal-armhf-2019-02-16.tar.xz

압축을 해제 한 후, 다음과 같이 ls 명령어로 파일 폴더 내용을 보면, ubuntu-18.04.2-minimal-armhf-2019-02-16 폴더가 생성되어 있음을 확인 할 수 있다.

다음 편에서 계속.....

비글 본 블랙을 UART로 PC와 연결해 보겠다.

USB to UART(RS232C) 케이블은 인터넷에서 쇼핑을 하면 저렴한 가격에 구입할 수 있다.

난 아래 제품을 구입.

요 녀석의 Pin map은 다음과 같다.

라인이 4개가 나와 있는데, 빨간색(5V)/검정색(GND)/흰색(RXD)/초록색(TXD)가 되시겠다.

5V를 제외한 GND/RXD/TXD를 비글보드의 J1 커넥터에 연결을 하면 되는데, 비글보드의 J1 커넥터 핀맵은 다음과 같다.

따라서 다음과 같이 연결을 해주면 된다.

UART to RS232C 케이블 비글보드 J1 커넥터
검은색(GND) PIN1(GND)
초록색(Tx) PIN4(Rx)
흰색(Rx) PIN5(Tx)

참고로, UART to Serial 케이블의 Window Driver는 하기 웹사이트를 참고하면 Win10에서도 잘 동작한다는데...

왜 잘 안될까???

http://blog.naver.com/PostView.nhn?blogId=saeroman&logNo=221012102544

 

윈도우10에서 PL2303 USB to TTL 드라이버 오류 발생시 해결 팁

아두이노 미니 프로를 PC에 연결하기 위해 PL2303 USB to TTL 모듈을 사용하려했다. 윈도우7에서...

blog.naver.com

이제 비글보드의 전원을 넣어주기 위해 Micro USB 단자를 PC의 USB와 연결한 후, 비글보드가 동작 할때 Terminal 창에서 다음과 같은 Log 파일을 확인 할 수 있다.

 

비글 보드에 OS를 올리기 위해서는 데스크탑에서 컴파일을 해서 이미지를 만들어야 한다.

하지만 데스크탑에서 컴파일한 이미지는 그대로 비글 보드에 올리더라도 Target이 다르기 때문에 정상적으로 동작할 수가 없다.

비글 보드의 CPU는 ARM 계열이므로, ARM 계열에 맞는 크로스 컴파일러를 데스크탑에서 사용해서 컴파일 후, 그 이미지를 비글 보드에 올려야 한다.

그러기 위해서는 크로스 컴파일러를 데스크탑 Ubuntu에 설치를 해야 한다.

sudo apt-get install gcc-arm-linux-gnueabi

위의 터미널 창에서 Y를 눌러서 계속 진행을 하면 된다.

다음과 같이 크로스 컴파일러 설치는 모두 완료가 되었다.

미니콤(Minicom)은 리눅스에서 사용하는 시리얼 통신 프로그램으로, BeagleBonBlack과 PC간의 통신을 위해 필요한 프로그램이다.

설치 방법은 Ubuntu에서 다음과 같은 명령어를 실행하면 된다.

sudo apt-get install minicom

 

헉... 그런데 "E: Unagle to locate packge minicom"이라는 Error가 발생했다.

이 Error가 발생하는 이유는 한참 인터넷 서치를 한 후에 알게되었는데, 현재 최신 버젼이 아닌 이전 버젼을 사용하는 경우, 더 이상 지원을 하지 않기 때문에 발생하는 문제라고 한다.

자신이 사용하는 Ubuntu 버젼이 지원 가능한 버젼인지 확인 하려면 다음 링크를 활용!!!

https://wiki.ubuntu.com/Releases#End_of_Life_.28EOL.29

여튼, 현재 지원하지 않는 버젼을 사용할때, 그에 대한 해법은 다음과 같다.

/etc/apt/sources.list 파일을 수정하면 된다 !!!

Terminal 창에서

cd /etc/apt/

를 입력 후 vi 에디터로 sources.list 파일을 수정 한다. 하지만 sources.list 파일이 read-only이기 때문에 sudo를 함께 사용한다.

sudo vi sources.list

 그 다음, sources.list 파일에서 하기에 언급된 서버를 old 서버로 바꾸어 주면 된다.

deb http://us.archive.ubuntu.com

deb-src http://us.archive.ubuntu.com

vi 의 치환 기능을 사용하여 archive/security/extras에 대한 부분을 모두 바꾸어 준다.

위의 터미널 창에서 "sudo vi sources.list"를 입력하면 대기 모드 상태이므로 하기 입력해줄 각행에서 '클론(:)'을 잊지말고 반드시 입력해야 한다.

:%s/us.archive.ubuntu.com/old-releases.ubuntu.com/g

그리고 Enter

:%s/security.ubuntu.com/old-releases.ubuntu.com/g

그리고 Enter

:%s/extras.ubuntu.com/old-releases.ubuntu.com/g

그리고 Enter

모든 입력이 완료된 후 ':x'를 입력 후 Enter를 치고 저장 후 vi 에디터를 종료 하면 된다.

그리고 나서 sudo apt-get update를 한 뒤 sudo apt-get install 명령어를 사용해서 패키지를 설치하면 된다.

여튼... sudo apt-get install minicom을 터미널 창에서 입력 후 패키지 설치 완료를 하면 된다.

우여곡절 끝에 설치된 minicom의 모습.

미니콤을 설치한 이후 시리얼 통신에 대한 설정(통신속도/래피티 비트...등등)을 할 필요가 있을 것이다.

미니콤 설정과 관련된 명령어는 다음과 같다.

sudo minicom -s

 

Ubuntu의 old version을 다운 받기 위해서는 다음 링크로 접속을 한다.

http://old-releases.ubuntu.com/releases/

 

Index of /releases

 

old-releases.ubuntu.com

이곳에서 철지난(?) Ubuntu 버젼들을 만나게 될것이다.

http://www.kernel.org 사이트를 방문하여 리눅스 OS Full source를 받을 수 있다.

가령 Linux3.0.1 버젼의 소스 코드를 다운 받으려면

http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.1.tar.gz 의 링크를 이용하면 된다.

NDK에 관한 보다 상세한 자료는 안드로이드 개발자 사이트 (http://developer.android.com/sdk/ndk/index.html) 참고.

다양한 API, 문서파일 그리고 샘플 어플리케이션이 포함되어 있음.

+ Recent posts