본문 바로가기
반응형

Linux BSP47

[Linux Device Driver] 디바이스 드라이버 디바이스 드라이버는 특정 하드웨어나 장치의 입출력을 제어하기 위해 커널의 일부분으로 동작하는 컴퓨터 소프트웨어이다. 디바이스 드라이버를 통해 어플리케이션을 수행하고자 한다면 디바이스 드라이버와 어플리케이션의 호출관계를 이용해야한다. 디바이스 드라이버의 호출 구조는 윗 그림을 보면 알 수 잇는데 응용프로그램의 함수를 디바이스 드라이버의 file_operations이라고 하는 구조체에 함수 포인터로 링크해주는거임. 그래서 어플리케이션에서 특정 함수를 실행하면, 디바이스 드라이버를 거쳐 하드웨어 인터럽트를 발생시켜 어플리케이션이 원하는 동작을 수행하는거임. applitaion 단계에서는 *pathname, flags 2개가 들어가지만 커널의 시스템 콜 함수를 거쳐서 *inode, *filp 2개의 다른 값으로.. 2024. 2. 23.
[Raspberry Pi Device Driver] 디바이스 드라이버(app과 dev)를 통한 device 제어 call_dev.c #include #include #include #include #include #include #include #define CALL_DEV_NAME "calldev" #define CALL_DEV_MAJOR 230 static int call_open(struct inode *inode, struct file *filp) { int num = MINOR(inode->i_rdev); printk("call open -> minor : %d\n", num); num = MAJOR(inode->i_rdev); printk("call open -> major : %d\n", num); return 0; } static loff_t call_llseek(struct file *filp, l.. 2024. 2. 22.
[Device Driver] 변수의 데이터형과 바이트 순서와 volatile 변수 변수의 데이터형은 아래의 표와 같다. 기존의 long은 부호가 있는 4바이트 정수이므로s32로 바꿔버리겠다. 이전 글의 코드를 재사용하겠다 [Linux DeviceDriver] 디바이스 드라이버 코드 수정해서 커널에 포함시키기 디바이스 드라이버에 대한 간단한 이론 지식은 아랫글의 중후반부에 있음 [Linux DeviceDriver] Yocto Project 설정 초기화 및 디바이스 파일 만들어보기 [Linux File System] Yocto Project 2 이전 글 먼저 진행해 program-developers-story.tistory.com 23 static void gpioLedSet(s32); 52 static void gpioLedSet(s32 val) make 하면 잘 됨. 왜 이렇게 쓸까?.. 2024. 2. 22.
[RaspberryPi DeviceDriver] 디바이스 드라이버 매개변수 명령어로 입력 받는 함수 만들기 [Linux DeviceDriver] 디바이스 드라이버 코드 수정해서 커널에 포함시키기 디바이스 드라이버에 대한 간단한 이론 지식은 아랫글의 중후반부에 있음 [Linux DeviceDriver] Yocto Project 설정 초기화 및 디바이스 파일 만들어보기 [Linux File System] Yocto Project 2 이전 글 먼저 진행해 program-developers-story.tistory.com 이전 글에서 사용한 p106_ledkey 폴더 복사해서 진행합니다. ubuntu@ubuntu8:~/pi_bsp/drivers/p122_ledkey_modparam$ vi ledkey_modparam.c #include #include #include #include #include #include .. 2024. 2. 22.
Makefile은 왜 사용하며, 어떻게 사용하는가 linux에서 c를 컴파일하려면 gcc를 많이들 쓸것이다. gcc iot_server.c -o iot_server -lpthread gcc iot_client.c -o iot_client -lpthread 이런식으로 코드 수정하고 실행시켜볼려고 컴파일 할 때마다 라이브러리를 추가해주고 하는게 귀찮음. 그래서 컴파일 자동화해주는 Makefile을 사용하는거임. 1 #CC:=arm-linux-gcc 2 CC:=gcc 3 4 TARGET_SRV=iot_server 5 OBJECT_SRV=$(TARGET_SRV).o 6 7 TARGET_CLN=iot_client 8 OBJECT_CLN=$(TARGET_CLN).o 9 10 #LDFLAGS=-D_REENTRANT -pthread -lmysqlclient 11 LD.. 2024. 2. 22.
[RaspberryPi DeviceDriver] 디바이스 드라이버 코드 수정해서 커널에 포함시키기 디바이스 드라이버에 대한 간단한 이론 지식은 아랫글의 중후반부에 있음 [Linux DeviceDriver] Yocto Project 설정 초기화 및 디바이스 파일 만들어보기 [Linux File System] Yocto Project 2 이전 글 먼저 진행해야됩니다! [Linux File System] Yocto Project Linux에서 부팅되고, 로그인되고, 다양한 데몬 구동, 배쉬 할당 등을 위해 반드시 필요한 파일들을 Root File System program-developers-story.tistory.com ubuntu@ubuntu8:~/pi_bsp/drivers/p106$ vi hello.c /*모듈 소스 2.6(/base/test.c)*/ #include #include #include.. 2024. 2. 21.
[RaspberryPi DeviceDriver] Yocto Project 설정 초기화 및 디바이스 파일 만들어보기 [Linux File System] Yocto Project 2 이전 글 먼저 진행해야됩니다! [Linux File System] Yocto Project Linux에서 부팅되고, 로그인되고, 다양한 데몬 구동, 배쉬 할당 등을 위해 반드시 필요한 파일들을 Root File System이라고 함. 폴더 만드는 건 program-developers-story.tistory.com 일단 이전 글에서 했던 Yocto Project의 휴유증으로 라즈베리파이 sd카드가 정상이 아니므로 이전에 받아놨던 백업본으로 다시 sd카드에 write해주겠음. 어디에 백업했는지 기억이 안난다면? ubuntu@ubuntu8:~$ sudo updatedb [sudo] password for ubuntu: /usr/bin/find:.. 2024. 2. 21.
[Linux File System] Yocto Project 2 이전 글 먼저 진행해야됩니다! [Linux File System] Yocto Project Linux에서 부팅되고, 로그인되고, 다양한 데몬 구동, 배쉬 할당 등을 위해 반드시 필요한 파일들을 Root File System이라고 함. 폴더 만드는 건 생략. rootfs와 그 하위에 yocto 디렉터리 생성 필요한 패키 program-developers-story.tistory.com ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/yocto/poky$ source oe-init-build-env ubuntu08@ubuntu08-VirtualBox:~/pi_bsp/rootfs/yocto/poky/build/tmp/deploy/images/raspberrypi4$ ls 해보면.. 2024. 2. 20.
반응형