일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- GPIO
- QEMU
- UART
- raspberrypi
- 아두이노
- avr-gcc
- C++
- Visual Studio
- Debug
- Raspberry
- Arduino
- 리눅스
- Linux
- Debugging
- AVR
- USART
- nucleo
- buildroot
- 디버깅
- Visual Studio Code
- STM32
- 라즈베리파이
- esp32
- atmel
- bare metal
- platformio
- BeagleBone
- AArch64
- vscode
- yocto
- Today
- Total
임베디드를 좋아하는 조금 특이한 개발자?
[Yocto Project] Linux kernel module 개발 본문
- 개발 환경
개발 보드 : Raspberrypi 4
WSL2 (Ubuntu 22.04 LTS)
Yocto Project : Scarthgap
0. 사전 작업 (리눅스 이미지 빌드)
https://littlebitodd-developer.tistory.com/27
[Yocto Project] RaspberryPI4를 위한 리눅스 이미지 빌드
1. 개발 환경WSL2 (Ubuntu 22.04 LTS)개발 보드 : Raspberrypi 4 2. 필요 패키지 설치sudo apt install build-essential chrpath cpio debianutils diffstat file gawk gcc git iputils-ping libacl1 liblz4-tool locales python3 python3-git python3-jinja2
littlebitodd-developer.tistory.com
1. 새로운 레이어 생성
반드시 build 폴더 안에서 명령어를 입력해주세요.!
만약 bitbake-layers 명령어가 없다면 "source oe-init-build-env (build folder)"를 했는지 확인해보세요.
# Poky 폴더에 meta-modules 레이어 생성
bitbake-layers create-layer ../meta-modules
# meta-modules 레이어 추가
bitbake-layers add-layer ../meta-modules
2. 예제 레시피를 새로 생성한 레이어에 추가
Yocto는 친절하게 기본적으로 제공하는 meta-skeleton 안에 예제 레시피를 작성해놨습니다. 우린 그걸 단순히 새로 생성한 레이어에 붙여넣어 사용하도록 하겠습니다.
cp ../meta-skeleton/recipes-kernel ../meta-modules/
위 사진에서 보이는 hello-mod가 우리가 사용할 레시피입니다.
3. 레시피 내 파일 확인
여기서 files 폴더 내 hello.c의 내용을 확인해보면 가장 기본적인 모듈 구조를 미리 작성해두었습니다.
4. 리눅스 이미지 빌드
local.conf 파일 내 "hello-mod" 레시피를 추가합니다.
IMAGE_INSTALL:append = " hello-mod"
이제 리눅스 이미지를 빌드합니다.
bitbake core-image-base
이제 빌드한 이미지를 SD카드에 설치하고 라즈베리파이를 부팅합니다.
5. 모듈 설치 및 삭제 실습
라즈베리파이에서 모듈을 설치 및 삭제를 하여 정상작동하는지 실행합니다.
# hello 모듈 설치
modprobe hello
# hello 모듈 삭제
rmmod hello
6. 참고 사항
6.1. 단순히 모듈만 빌드
모듈을 개발하면서 에러가 없는지 해당 모듈만 빌드하고 싶은 경우가 있을 것입니다. 하지만 매번 이미지를 빌드하면 시간이 오래 걸리기 때문에 해당 모듈만 빌드하고 싶을 것입니다. 그런 경우 hello-mod 만 빌드를 하면 됩니다.
bitbake hello-mod
단, 단순히 모듈만 빌드 한 것이므로 실제 이미지에 적용하기 위해서는 이미지를 빌드하여야 합니다.
6.2. 리눅스 부팅시 자동적으로 module 설치
해당 내용은 사용하고 있는 Init manager에 따라 적용 방법이 달라지기 때문에 따로 포스트로 작성하도록 하겠습니다.
'Embedded > Yocto Project' 카테고리의 다른 글
[Yocto Project] QT5 예제 실행하기 (0) | 2025.04.10 |
---|---|
[Yocto Project] networkmanager를 통해 wifi 연결 (0) | 2025.04.01 |
[Yocto Project] 라즈베리파이 WIFI 연결 (0) | 2025.03.31 |
[Yocto Project] initialization manager를 systemd으로 변경 (0) | 2025.03.31 |
[Yocto Project] RaspberryPI4를 UART로 사용 (0) | 2025.03.27 |