[ BBB - yocto (4) ] 크로스 컴파일

이미지
1) c컴파일러 c컴파일러는 다들 알다싶이 우리가 c언어로 작성한 파일을 어셈블리에서 바이너리로 변환해주는 역할을 하는 코드야 컴파일을 하면 c언어 -> 어셈블리 -> 바이너리 이런식으로 바뀌지.  리눅스에서는 여태까지 에디터가 해줬던 컴파일을 직접 해줘야 해. 간단하게 실습을 해보자 코드를 컴파일러를 사용해서 바이너리 파일로 변환해 줄거야 파워쉘에서 wsl키를 쳐서 wsl로 진입해줘 cd ~ mkdir source_code cd source_code code . vscode가 열릴탠데 여기서 code .을 치면 현제 디랙토리를 workplace로 설정해서 열게 돼. ctrl + shift + ~(물결선) 누르면 터미널이 열려 여기서 code main.c를 쳐주자 code main.c main.c라는 파일이름으로 열린걸 볼 수 있어 #include <stdio.h> int main () { printf( "hellow world \n " ); } 소스코드 적은뒤에 ctrl + s 눌러서 저장해주고,  다시 터미널로 돌아와서 gcc -o main main.c 자 이렇게 하면 gcc라는 컴파일러를 사용해서 main.c 코드를 사용해 main 이라는 파일을 뱉어내게 돼 gcc 명령어에 대해 설명을 좀 하면 사용법은 gcc -o [바이너리 파일 이름] [소스코드들] [링크 옵션] 이런식으로 사용해 gcc : c컴파일러 -o : 바이너리 파일의 이름을 지정하는 옵션 뒤에는 반드시 바이너리 이름이 따라나와야 함 main : 바이너리 이름 main.c : 소스코드 더 자세히 알고 싶으면 터미널에서 'man gcc'를 쳐보면 됨 chmod +x main main.c 실행 권한을 추가해보고 실행하면 hellow world!를 찍어줄거야. 자 여기까지가 컴파일하는 과정이고, 이제 비글본에서 바이너리 파일을 실행 해볼건데... 어떻게 하는지 알려면 크로스 컴파일의 개념에 대해서 알아야해 2) 크로스 ...

[ BBB - yocto (3) ] u-boot

이미지
u-boot는 하드웨어를 초기화 해주고, 부트로더, 커널 이미지, 디바이스 트리, 오버레이를 로드하여주는 역할을 함 u-boot에 진입하면 '=>' 이렇게 생긴 기호가 보임 부트로더에 진입하여 보자 진입하는 방법 이미 켜진 경우는 비글본 터미널에서 reboot 재부팅 명령어를 치면 재부팅 되면서 부트로더를 진입할 수 있게 됨 u-boot에서는 많은걸 할 수 있는데 ls 로 파일을 본다던가 gpio, i2c, spi 등 인터페이스 제어를 써본다던가 tftp, nfs 서버에서 파일을 다운 받는다던가, ping을 날려본다던가 할 수 있지 여기서는 부팅 인자, 부트 커맨드만 설명할게 1. 부팅 인자 bootargs는 u-boot가 커널에 전달하는 명령어야 저번 강좌에서는 bootargs를 setenv라는 명령어로 => setenv bootargs console=ttyS0,115200n8 rootwait rw root=/dev/mmcblk0p2 => saveenv 이렇게 설정했지? setenv : 우리가 적어줬던 console=ttyS0,115200n8 rootwait rw root=/dev/mmcblk0p2를 bootargs에 저장해주는 역할을 해. 즉 bootargs라는 환경변수(잔역변수라 생각해주면 됨)에 'console=ttyS0,115200n8 rootwait rw root=/dev/mmcblk0p2'라는 문자열을 저장해주는 거야 saveenv : u-boot.env에 환경변수를 저장해주는 명령어야 문자열 'console=ttyS0,115200n8 rootwait rw root=/dev/mmcblk0p2'에 대해서 살펴보면 console : 리눅스의 콘솔 메세지를 띄울 공간 rootwait : 파일시스템이 로드될 때 까지 대기 rw : read write 허용 root : 루트 파일시스템의 위치 이정도로만 이해하자. root=/dev/mmcblk0p2 인데 mmcblk 0 p 2 : 인식된 sd카드 ...

[ BBB - yocto (1) ] 개발 환경 구성하기

이미지
참고로 yocto는 최소 사양이 있어 - 쿼드코어, 램 4gb 이상, 메모리 여유 공간 60gb이상 1) cpu 가상화 활성 - 각 pc의 제조사에 맞는 바이오스에 진입해서 cpu 가상화를 켜주자. 2. wsl2 설치 윈도우에서 돌릴 수 있는 가벼운 리눅스야. 파워쉘에서 아래 링크를 따라 설치해 주면 돼 우분투 24.04판은 yocto 지원을 아직 하지 않기 때문에 꼭 22.04 이하 버전을 깔아줘 내가 해봤는데 24.04는 빌드하다 실패하더라... 참고로 배포판은 Ubuntu-22.04를 사용했어.  꼭 CPU 가상화를 켜줘야 wsl을 돌릴수 있어! PS C:\Users\Administrator>  wsl --install Ubuntu-22.04 설치 이후에 재부팅 해주면 됨. https://learn.microsoft.com/ko-kr/windows/wsl/install WSL 설치 wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니다. learn.microsoft.com wsl을 다운 받았으면 텍스트 에디터를 깔거야 3. 텍스트 에디터 vscode를 사용할거야. 마이크로소프트 스토어 가면 받을 수 있어, vscode를 실행해서 익스텐션을 깔아서 개발환경을 구성할거야 익스텐션 이렇게 깔아주면 됨, wsl 까지 포함해서 ctrl + p 누르고 꺽쇠 ">"를 입력해줘 connect를 검색하면 wsl 연결이 나올거야. 이걸 실행하고 다시 익스텐션으로 돌아가서 wsl : ubuntu 어쩌고 눌러서 wsl 환경에도 깔아주면 됨. 이걸 모든 익스텐션에 대해 적용해줘 4. virtual box 설치 https://www.youtube.com/watch?v=20vqlY6sJ8I 5. 공유 폴더 설정 1. wsl...

[ BBB - yocto (2) ] yocto 빌드하고 배포하기

이미지
 1) yocto란 무엇인가? yocto project는 형상관리, 빌드 툴로 설명 가능함. 커스텀 리눅스를 빌드하고 이를 쉽게 유지보수, 배포할 수 있도록 도와주는 툴이라고 생각하면 됨 2) yocto의 구성요소 yocto project는 meta와 recipe로 파일을 관리함 meta는 레이어 파일 이름이야. recipe 파일을 갖고 있고, 빌드 할 때 설정등이 담겨있는 파일이고 recipe는 파일들을 설치할 수 있도록 도와주는 역할을 하는 코드를 모아놓은 파일이야 우선 말로만 보면 어려우니 직접 다운 받아서 확인해보자. 회색 라인 칠해진 부분은 WSL이야 앞으로 wsl 환경을 주로 사용할 거고 버추얼 박스는 마운트 용으로만 쓸거야 $ sudo apt-get install git tree $ mkdir yocto  $ cd yocto $ git clone git://git.yoctoproject.org/poky -b kirkstone  $  cd ./poky/meta-poky $  tree -L 1  meta 파일은 다음과 같이 구성돼 - classes : 레시피 파일에서 공통적으로 사용되는 함수와 변수들을 정의해둠 - conf : Yocto 빌드 시스템의 전반적인 변수를 담고 있는 파일이며 마치 bash의 환경 변수처럼 동작 - recipes-core : 핵심 패키지들이 포함된 디렉터리 yocto 프로젝트는 이 파일들을 가지고 사용자가 설정한 hw에 맞는 이미지 파일을 배포(파일을 생성)함 아래 과정을 거쳐서 파일시스템에 패키지가 설치가 되게 됨. 즉 전체 흐름을 요약해서 보면 아래와 같음 1. 클래스(.bbclass)에서 공통 사용 함수와 변수를 파악. 2. 설정(conf/) 파일에서 설정된 전역 변수를 읽어옴[빌드 전반에 거쳐 사용됨]. 3. 레시피(.bb, .bbappend)를 로드하여 패키지 빌드 정보를 가져옴. 4. 소스 코드 다운로드(do_fetch) 및 패치(do_patch) 적용. ...