본문 바로가기
반응형

분류 전체보기177

[RaspberryPi Kernel] Ubuntu에서 Raspberry Pi Kernel system call 함수 구현 시작 전에 배경지식부터 함양 시스템 콜 함수란 user mode process와 kernel간의 interface-> kernel의 자료구조 및 HW에 대한 접근 불가 user mode process가 kernel이 가지고 있는 시스템의 상태 정보를 열람하거나 HW에 접근하여 HW를 통제하기 위해서는 kernel과의 communication channel이 필요함. *POSIX API (Application Programming Interface) 유닉스 운영체제에 기반을 두고 있는 일련의 표준 운영체제 인터페이스. application이 시스템에 각 서비스를 요청할 때에 어떠한 함수를 사용해야 하는지 지정한 것. 표준을 두어 각각 다른 시스템에 응용 프로그램을 porting하는 것이 용이하게 하기 위한.. 2024. 2. 15.
[RaspberryPi Kernel] Ubuntu 환경에서 커널 부팅 이미지 바꿔버리기~ 저는 모니터로 7인치 LCD를 쓰고 있으니 800x480보다 큰 사이즈의 이미지를 준비해주겠습니다. 각자 큰 사이즈의 이미지를 준비하십쇼 어차피 나중에 gimp라고 하는 이미지 편집기로 편집할거니까 상관 읍어요~ samba로 넣어주든 우분투에서 넣든 다 괜춘~ 결론적으로 우분투에 이미지가 준비되어 있으면 됨. samba로 들어간 이미지 파일을 ~pi_bsp/kernel/로 copy해주시고 sudo apt install gimp 안되면 sudo snap install gimp gimp gimp 열고나서 이미지 드래그해서 넣어주고 열고 회전하고 크기 조절해주면 됨. LCD에 이미지의 LOW_LEVEL 데이터 값을 줘서 이미지를 출력하는거임. 세로 이미지 이신분들은 이미지 좌클릭 -> 이미지 image -> .. 2024. 2. 15.
[Linux] Kernel, Process, Memory..? 우수한 CPU에서 하나의 프로세스만 쓰기엔 자원이 남는다. 그래서 멀티 프로세싱을 하기 위해서 시간을 분할해서 여러 프로세스를 빠른 속도로 나눠서 처리해줌. 스케쥴러(Scheduler) 한 순간에 오직 하나의 프로세스 만이 CPU를 점유 가능 -> 스케쥴러는 여러 프로세스가 CPU를 공유하여 사용 가능하도록 해준다. 선점형(preemptive)과 비선점형(nonpreemptive) 1. 비선점형 -> 프로세스가 자발 적으로 CPU 사용권 반납했을 때만 스케쥴링 2. 선점형(RTOS) -> 프로세스 별 사용 시간을 지켜보면서 정기적으로 스케쥴링 *문맥 교환(Context Switch) CPU의 사용권을 다른 프로세스에게 양도 -> 현재의 Context 정보를 저장하고 새 프로세스의 Context 정보를 적.. 2024. 2. 15.
[RaspberryPi4 Kernel] Ubuntu에서 BCM2711 커널 빌드해서 올리기 현재 사용하는 커널의 버전을 확인하고, 직접 커널을 빌드해서 올려보자 우선 현재 사용중인 커널의 버전 확인 pi@pi08:~$ uname Linux pi@pi08:~$ uname -a Linux pi08 6.1.0-rpi7-rpi-v7l #1 SMP Raspbian 1:6.1.63-1+rpt1 (2023-11-24) armv7l GNU/Linux 운영체제 호스트명 커널버전 순으로 나옴. 고로 커널버전은 6.1.0 이 커널 버전 소스를 찾아보자..! 시스템 콜 함수를 만들어서 배포하는건 비표준이라서 노우.. 그저 이해해보기 위해 시스템 콜 함수를 해보는거임. ubuntu로 가서 새로운 폴더 만들고 들어가주면서~ ubuntu@ubuntu8:~/pi_bsp$ mkdir kernel ubuntu@ubuntu8:.. 2024. 2. 15.
[Ubuntu-RaspberryPi] C언어로 U-Boot gpio제어를 통한 led 동작 및 버튼 제어 구현 목표는 led 0xff 명령어를 치면 이름 이니셜을 띄워주면서 led 작동시키고 button을 누르면 8개의 버튼 중 해당 버튼에 맞게 O X를 출력해주고 해당 버튼에 맞는 led만 on시켜주기 + 8번 버튼 누르면 프로그램 종료시키기 #include #include #include #define BCM2711_GPIO_GPFSEL0 0xFE200000 #define BCM2711_GPIO_GPFSEL1 0xFE200004 #define BCM2711_GPIO_GPFSEL2 0xFE200008 #define BCM2711_GPIO_GPSET0 0xFE20001C #define BCM2711_GPIO_GPCLR0 0xFE200028 #define BCM2711_GPIO_GPLEV0 0xFE200034.. 2024. 2. 14.
[Linux BSP] U-Boot 초기화 과정 Arm920 processor에서 돌아갈 때 기준으로 U-Boot의 초기화 과정을 살펴보겠음. 1. arch/arm/lib/vectors.S _start 2. 리셋 핸들러로 분기arch/arm/cpu/armv7/start.S reset SRAM에서 메모리로 다 복제가 되었다면, Program Count를 변경하고 아랫 단계 수행 2024. 2. 13.
[Ubuntu-RaspberryPi] C언어로 U-Boot gpio제어를 통한 led 동작시키는 명령어 추가 Raspberry Pi UBoot 환경 명령어 추가 또한 명령어를 치면 실제로 동작되도록 만들고 싶음. ubuntu@ubuntu8:~/pi_bsp/u-boot$ vi arch/arm/cpu/armv7/start.S 여기 127번 라인의 kcci_lcd_test i누르고 #해서 주석처리하고 저장 ubuntu@ubuntu8:~/pi_bsp/u-boot/common$ vi cmd_kcci_led.c #include #include #include #define BCM2711_GPIO_GPFSEL0 0xFE200000 #define BCM2711_GPIO_GPFSEL1 0xFE200004 #define BCM2711_GPIO_GPFSEL2 0xFE200008 #define BCM2711_GPIO_GPSET0 0.. 2024. 2. 13.
[Linux BSP] Ubuntu에서 RaspberryPi U-Boot 어셈블리 코드 추가 [Linux BSP] Ubuntu에서 RaspberryPi U-Boot 코드 환경 분석 3dw 3칸 삭제하겠다 . 아까전에 했던 명령어 다시 실행하겠다. ubuntu@ubuntu8:~/pi_bsp/u-boot$ vi build.sh make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all ubuntu@ubuntu8:~/pi_bsp/u-boot$ chmod u+x build.sh ubuntu@ubuntu8:~/pi_bsp/u-b program-developers-story.tistory.com 이 글 마지막 부분 업그레이드 해볼게요~ 윗 파일 받아서 ubuntu에 넣기 위해 samba 폴더에 넣어주고 코드 분석해보면 396 ENTRY(kcci_led_test) 397 .. 2024. 2. 13.
반응형