IT 64

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 8 - debugsfs 드라이버 코드

안녕하세요.   지금까지 디버깅방법을 알아봤습니다. 그런데 커널 소스를 수정하는 것에 낯설게 느껴지고 수정하다가 부팅이 안되면 어떡하지 약간의 불안감도 있을 것입니다. 그래서 저도 코드를 작성할 때 한번 더 확인하고, 기존의 작업했던 내용은 SD Card 내용을 전체 백업을 하였습니다.  사실 커널 코드를 잘못 입력하거나 실수하면 시스템이 오동작할 수 있습니다. 즉 부팅이 안될 수 있습니다. 그래서 책에서는 이것을 조금 방지하고자 debugfs 드라이버 코드를 알려줍니다.  1. debugfs 드라이버 원리  전역 변수처럼 변수를 셀에서 설정 값을 주었을 때만 코드가 작동하고, 재부팅하거나 설정값을 초기화하면 원래코드로 동작하는 간단한 원리입니다.   그러나 커널 코드다 보니, 드라이버 파일로 만들어 작..

IT/Linux Kernel 15:16:35

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 7 - ftrace 사용법 및 분석해 보기

안녕하세요. 이전 글에서 printk()와 dump_stack() 함수를 확인했습니다. 두 함수에는 사용할 때 자주 호출하는 함수에는 사용하기가 어렵다는 주의점이 있었습니다. 이런 부족한 점을 충족하기 위한 커널 디버깅 소프트웨어가 필요했습니다.   1. ftrace 란?  기존의 커널 디버깅 부족함을 해결해 줄 수 있는 요구사항(함수 호출 흐름을 소스코드 수정하지 않고 확인하고 싶다, 커널의 세부 실행 정보를 출력 원함, 수십 번 호출해도 성능에 부담 주지 않았으면 함, 커널 로그도 함께 보고자 함)을 충족하는 디버깅 기능의 소프트웨어입니다.  ftrace 특징으로  - 인터럽트, 스케줄링, 커널 타이머 등의 커널 동작 추적  - 코드 수정할 필요 없이 함수 필터 지정한 함수와 호출한 함수 콜 스택 출..

IT/Linux Kernel 2025.03.05

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 6 - printk와 dump_stack 함수

안녕하세요.  이번 시간은 printk()와 dump_stack()함수에 대해 학습하고 간단하게 디버깅 하는 방법을 알아 보겠습니다.  1. printk 함수  이미 C언어를 접해본 분이라면 printf 함수에 대해 잘 알고 있을 거라 생각됩니다. 함수 끝에 k가 붙은 것처럼 kernel에서 사용하기 위한 함수라는 것을 느낄 수 있을 것입니다.  이미 커널의 수많은 내부 함수에서도 printk 함수를 이용해서 에러 정보를 커널 로그에 출력하고 있습니다.   아래 내용은 책에서 소개한 porcess.c 파일의 일부 내용입니다. __show_regs 함수가 실행되면 레지스터 내용을 커널 로그에 출력하는 일부 코드입니다.   1) printk 형식  int printk(const char *fmt, ...);..

IT/Linux Kernel 2025.03.01

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 5 - 디버깅과 ftrace 예습

안녕하세요.  이번 장에서는 디버깅하는 방법 예습차원에서 중요성, ftrace 내용을 알려주고 있습니다.내용 잘 학습해 보아요. 1. 디버깅의 중요성 1) 임베디드 및 BSP 개발 도중 만나는 대표적인 문제  - 부팅 도중 커널 크래시 발생 - 인터럽트 핸들러를 설정했는데 인터럽트 핸들러가 호출되지 않음 - 시스템 응답 속도가 매우 느려짐 - 파일 복사가 안됨 - 다른 개발자가 작성한 커널 코드를 만날 가능성이 높음   (디바이스 드라이버는 커널함수로 구성되어 있으며 각 서브 시스템을 담당한 개발자가 작성한 코드이기 때문입니다.)  그렇기 때문에 정상적인 동작할 때 몇 가지 내용 파악이 필요   - 함수가 실행될 때 변경되는 자료구조 - 함수가 실행되는 빈도와 실행 시간 - 실행 중인 코드를 어떤 프로세..

IT/Linux Kernel 2025.02.26

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 4 - 전처리 코드 생성과 objdump 사용

안녕하세요.   라즈베리 파이 커널을 설치하고 나머지 뒷부분을 마무리하도록 하겠습니다.  리눅스 커널을 빌드하는 과정에서 전처리코드를 생성하는 방법이 나옵니다.커널에는 많은 양에 매크로가 소스분석에 걸림돌이 됩니다. 그래서 소스코드를 분석할 때 전처리 코드를 함께 보는 것을 추천하며 추출하는 방법 두 가지를 알려 줍니다.  1. 전처리 코드 생성 1) 전체 전처리 파일 추출  이전 글에서 처럼 root 권한을 얻어서 다음 내용을 진행합니다.  리눅스 커널 소스 디렉터리 안에 Makefile이 있습니다.  대략 420번 줄 KBUILD_CLAGS에 "-save-temps=obj \"를 추가해 주고 build 스크립트를 실행해 주면 전체 소스 파일에 전처리코드가 담긴 *.i, *.s 파일이 생성됩니다. 약 ..

IT/Linux Kernel 2025.02.20

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 3 - Raspberry Pi4 설정 및 리눅스 커널 빌드와 설치

안녕하세요.   이전 시간에 Kernel 4.19 버전을 설치하기 위해서 몇 가지 사항을 확인했습니다.  이번에는 책에 나온 몇 가지를 추가 설정과 커널 빌디와 설치까지 해보겠습니다. 작업은 SSH Terminal로 접속해서 진행했습니다.   1. 추가 설정 (1) 언어 설정 Chrome과 한글문제를 해결하기 위해서 설치와 설정 몇 가지를 합니다.$ sudo raspi-config "4. Localisation Option->I1 Change Locale"에서 en_GB.UTF-8, en_US.UTF-8, ko_kr.UTF8(선택되어 있음)을 스페이스 바를 눌러 선택하고 확인 누르면 설정이 완료됩니다.    Localisation 철자가 틀렸다고 생각하시는 분이 있지 않나요? Localization 아닌..

IT/Linux Kernel 2025.02.16

디버깅을 통해 배우는 리눅스 커널의 구조와 원리, 도서 공부하기 2 - Raspberry 4 설치(kernel 4.19)

안녕하세요.   설치하는 것까지 자세히 적으려고 한 것은 아닌데 최대한 책과 동일한 커널 버전의 라즈베리파이 버전으로 맞추려고 했습니다.  그러나 몇 가지 문제가 생겨 해결한 방법도 같이 공유하려고 합니다.   1. 라즈베리파이 OS (라즈비안) 설치  Raspberry Pi Imager로 설치하면 되는 되는 것 아니냐 할 수 있지만 Imager로 바로 설치할 경우 최신 버전의 라즈베리파이 OS이 설치되고 커널 버전도 높아 책과 차이가 발생할 것입니다. imager의 32bit Legacy 버전도 bullseye입니다. Raspberry Pi Imager 다운로드https://www.raspberrypi.com/software/    이것저것 해본 내용을 적어 봅니다.   운영체제 선택에서 우리가 받은 ..

IT/Linux Kernel 2025.02.14

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 학습 1 - 시작 준비

안녕하세요.  시간이 조금 지났지만, 디바이스 드라이버 개발에 깊이를 더 하려고 하니 리눅스 커널에 대해서 이해가 필요하다는 것을 알게 되었습니다. 그래서 책을 보며 학습하는 내용을 정리해 보기로 했습니다.   1. Linux Kernel 학습 위한 책 선정 이유  리눅스 커널을 학습할 수 있는 많은 책들이 있는데 그중에 추천받은 책으로 진행하기로 했습니다. "디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1" 책으로 1, 2권으로 나눠져 있습니다.  또 하나는 선택한 이유 중에 하나는 테스트하는 보드가 라즈베리파이라는 것입니다. 다른 책들도 가능하지만 실습환경 맞춰 따라 하기가 쉽지 않다는 것입니다. 현재 출간된 버전도 라즈베리 파이 3으로 작성되어 실습이 안 되는 부분이 있다고 하지만, Pi 4로 ..

IT/Linux Kernel 2025.02.12

FreePBX 설치 후 나타날 수 있는 증상들-1 (전화를 걸면 거절, Cannot Connect To Asterisk)

안녕하세요.  이전 글 내용을 이어서 추가적으로 FreePBX 설치를 진행하다가 생기는 문제점이 있어 나중에 참고도 할 겸 공유드립니다. 현재 증상은 Asterisk와 FreePBX를 소스로 다운로드해서 설치를 진행했을 경우 발행하는 증상일 수 있습니다. 그래서 모든 상황에 적용될 수 없음을 말씀드립니다. 기타 사항에 대해서는 커뮤니티(https://community.freepbx.org/)의 도움을 받으시면 좋지 않을까 합니다.  1. 전화를 걸면 거절 증상   원인이라고 하기보다는 이런 증상이 발생했는데, 이런 이유에서 이렇게 해도 되었네라고 참고하시면 좋을 것 같습니다.   Asterisk 컴파일하고 FreePBX가 문제없이 설치했고, SIP 번호도 Extentions에 추가해서 문제가 없이 전화기..

TUF 노트북 GPU FAN 교체해 보기 (FX506LU)

안녕하세요.  가지고 있던 노트북의 그래픽 카드 팬이 소리가 조금 심하게 나는 것 같아서 먼지를 제거해 주었습니다. 그런데도 소리가 나서 AS를 진행할까 하다가 비용도 조금 든다고 해서 부품 구매해서 직접 수리해 보기로 했습니다.  중국제품에서 직접 구매하는 것은 신뢰가 낮지만, 다양한 제품을 소량으로 파는 것 때문에 이용할 수밖에 없는 현실입니다. 아무튼 알리를 통해서 FX506LU GPU FAN이라고 검색을 해서 구매했습니다. 만약 유사한 제품을 수리를 하고자 한다면, 노트북 기종 혹은 FAN 이름으로 검색을 해서 호환이 되는 것인지 먼저 확인하고 형태도 유사하게 생겼는지 한번 더 확인하고 구매하시기 바랍니다.   무료 배송으로 받으면 2주~3주가 걸릴 수 있어서 한 번에 잘 구매하는 것도 필요합니다..

IT 2024.12.20

FreePBX에 모듈(Module) 추가하는 방법 (Asterisk)

안녕하세요.  예전 글에서 Asterisk를 Raspberry Pi에 컴파일해서 테스트했습니다. 이번에는 일반 PC에 Asterisk를 설치했다는 전제하에 작동시켜보려고 합니다. 그러나 Asterisk를 운영하기 위해서는 많은 설정이 필요합니다.(간단하게도 가능하지만) 그래서 나온 것이 FreePBX라는 GUI OpenSource가 있어 설치를 진행했습니다.  그런데 OpenSource로 설치해 보면 메뉴들이  많이 나오지 않기 때문에 기능(모듈)을 어떻게 추가 설치하는지 처음에 잘 모르기 때문에, 확인한 내용 공유해보려고 합니다. 어렵지 않고 처음에 어떻게 하는 참고 하면 되는 내용입니다.  1. FreePBX 접속  FreePBX Distro ISO 버전을 PC에 VM Ware를 통해서 설치했거나, ..

TinkerBoard 2S에 Asterisk 설치(소스컴파일, 패키지) 및 테스트해 보기 (설치 실패)

안녕하세요.  지난번 테스트해 본 TinkerBoard 2S를 SIP 서버로 만들어 봐야겠다 생각해서 설치테스트를 해보았습니다. 그런데 제가 잘하지 못해서 그렇거라고 생각이 들지만, 이렇게 했을 때 설치가 되지 않았다는 것을 공유하고자 올려봅니다. (이렇게 하면 이런 에러들이 나오는구나 빠른 확인차 보시면 좋지 않을까 합니다.) 혹시 다른 방법으로 Asterisk 소스를 컴파일이 되었다면 공유 부탁드립니다.  참고로 다음 내용에서 Raspberry Pi에서 패키지로 설치하고 소스버전으로 작동하는 버전을 공유하도록 하겠습니다.1. 작업환경  - HW : TinkerBoard 2S - OS : Debian 10   2. Asterisk 소스 버전으로 설치해 보기 1) 필수 프로그램 설치   빌드에 필요한 프..

ESP32-Cam + OV2640 카메라 모듈 테스트 후기

안녕하세요.  이번에는 저가형 CCTV을 만들어 볼 수 있게 다 생각되어 ESP32-Cam + OV2640 확인해 보았습니다.ESP32-CAM 제품이고 약 8,000원 대에 판매하고 있습니다.   사실 이것만 있어서는 안 되고 TTL To USB 그리고 승압 모듈, 배터리를 포함해야 가능합니다. 그러면 배터리 용량에 따라 다르겠지만, 5000원에서 10,000원 정도 추가하면 소형 무선 CCTV로 가능하지 않을까 생각됩니다.    1. ESP32-CAM 스펙 1) ESP32-CAM   - 크기 : 27×40.5×4.5(±0.2)mm  - SPI Flash : 32Mbit  - RAM : internal520KB + external 4M PSRAM  - 블루투스 : bluetooth4.2BR/EDR and..

IT 2024.11.15

YF-B10-S(유량센서) 확인해 보기

안녕하세요.  사이드 프로젝트로 유량파악해서 ModbusTCP로 전달이 필요하다는 요청을 받았습니다. 우선 유량을 확인할 수 있는 센서를 확인해 보겠습니다.  파이프 규격과 재질에 따라 가격과 기능 등 차이가 있을 수 있습니다. 설치하려는 현장에 맞는 것을 규격 등을 확인하시는 것이 중요합니다.  1. YF-B10-S  제품확인 - 앞뒤로 구멍을 보호하기 위해서 플라스틱 뚜껑으로 막아 놓았습니다.- STAINLESS STEEL 재질의 유량센서- 하네스 SM 3핀 Female 커넥터   2. 제품 정보  이 제품은 YF-B10-S 모델의 스테인리스 스틸 유량 센서입니다. 주요 사양은 다음과 같습니다   조금 풀어 보면 아래와 같습니다.   모델 번호: YF-B10-S  재질: 스테인리스 스틸  파이프 연결..

IT 2024.11.13

USB to RS485(MFA-02) 모듈을 이용해서 불꽃 감지기 IRT-020-K(IR-3 Digital)와 통신하기

안녕하세요.  이번에는 지난번 불꽃 감지기 RS485 통신 테스트하는 겸 RS485 to USB 모듈 테스트를 진행해 보았습니다.  별로 차이는 없지만, 불꽃 감지기 본체만 가지고 한다면 소화전과 같은 물리적으로 제어를 하겠지만, 통신이 가능하다면 소프트웨어적으로 제어 및 모니터링 가능한 장점이 있다고 생각합니다.  거두절미(去頭截尾)하고 바로 확인해 보도록 하겠습니다.  1. 제품 확인  - IRT-020-K 제품은 이전 글을 참조하시면 도움이 될 것이라 생각됩니다.   불꽃감지기 IRT-020-K(IR-3Digital 50m) 제품 확인안녕하세요.   화재 감지 테스트를 위해서 불꽃 감지기 제품을 확인하게 되었습니다. 열화상 카메라는 온도 중심으로 감지한다면 불꽃 감지기는 빛의 파장을 중심으로 감지한..

IT 2024.11.07

불꽃감지기 IRT-020-K(IR-3Digital 50m) 제품 확인

안녕하세요.   화재 감지 테스트를 위해서 불꽃 감지기 제품을 확인하게 되었습니다. 열화상 카메라는 온도 중심으로 감지한다면 불꽃 감지기는 빛의 파장을 중심으로 감지한다라고 생각하면 어떨까 합니다. 그러나 불꽃 감지기와 열화상 카메라는 동일한 적외선 에너지를 감지하기 때문에 완전히 다르다고는 할 수 없을 것 같습니다.   추가로 보면 불꽃 감지기는 복합식이라고 해서 UV 센서를 장착해서 차별화하기도 하고 열화상 카메라에는 AI를 추가해서 불꽃을 학습시켜 감지할 수 있게 하는 등 차별화를 하는 것으로 보입니다.  1. 불꽃 감지기 원리   불꽃 감지기란 불꽃에서 방사되는 불꽃의 변화가 일정량 이상이 되었을 때 화재신호를 발신하는 감지 장치이다. 빛의 파장은 가시광선을 중심으로 한 자외선 및 적외선으로 구분..

IT 2024.11.01

eMMC 타입 micro SD Card 테스트 ( 32GB eMMC Module for Rock Pi )

안녕하세요.  micro SD Card를 사용하다 보면 데이터가 잘 깨진다, 느리다고 이야기를 많이 합니다. 그래서 emmc 붙은 micro sd card로 하면 안정성도 좋고 속도도 좀 더 빠르지 않을까 해서 확인해 보았습니다.  1. 테스트 환경  - Raspberry Pi 4B,  emmc 32G module, emmc 32G module micro SD adapter,  sandisk 32GB micro sdcard V30, sandisk 64GB micro sdcard XC,   - balenaEtcher, Ubuntu 21.10 (약 2GB), hdparm   2. emmc 제품 확인   RockPi 제품으로 emmc가 나온 것인데 micro SD 아답터를 제공해서 사용할 수 있습니다. 이것과..

IT 2024.10.30

SC-9547-9 (A-Si 박막형 태양전지 실내 발전가능) 테스트

안녕하세요.  실내용으로 사용할 수 있다고 해서 소형 태양전지를 테스트해 보았습니다. 집에서도 아두이노 하나 붙여놓고 IoT처럼 작동할 수 있는 무언가가 가능할까 생각하면서 말이죠. 결국 무한동력처럼 ^^  결론을 말씀드리면 태양전지를 엄청 많이 붙이면 실내에서도 가능하다 ;;; 아니면 초저전력 MCU가 있으면 가능할 것으로 보입니다. 그러나 매번 켜져 있으면서 동작하기에는 박막형 태양전지도 부족해 보입니다. 아래 내용을 참고하시면 좋을 듯합니다.   1. A-Si 박막 태양전지에 관해서  1)  A-Si 박막 태양전지란?   Amorphous Silicon Thin Film Solar Cell, -薄膜太陽電池 [반도체]   비정질 실리콘을 유리기판 사이에 주입해 만드는 박막형 태양전지. 가장 일반적인 ..

IT 2024.10.26

비접촉 온도 센서 Digital Thermopile Sensor (TB-I2C-S70) I2C 연결, 프로그래밍, 작동 테스트

안녕하세요    온도 센서(Thermopile)의 값을 읽어 오는 방식에는 아날로그 값을 받아서 디지털로 변환하여 사용하는 표기해 주는 방식과 온도 센서에 소형 칩이 있어 변환작업 필요 없이 간단하게 MCU에서 통신으로 값을 받아 볼 수 있는 방법이 있습니다.    그중에서 테스트해 본 제품은 소형 칩이 내장된 제품으로 I2C 통신을 통해서 값을 읽어오는 것을 테스트했습니다.    우선 I2C 통신을 이용하려고 하면 Pull-up, Pull-down이라는 것을 간단하게 이해하고 있으면 도움이 됩니다. 그래서 간단하게 알아보겠습니다.  1. Pull-up, Pull-down 이해 1.1 개념 이해   디지털 회로는 원칙적으로 H나 L의 전압 인가가 되어야 합니다. High와 Low의 중간 전압이 되면 내부..

IT 2024.10.24

LED 택트스위치 6X6 (색상선택) 사용 후기

안녕하세요.  그냥 전원 버튼을 푸시버튼에 노브를 달까 하다가 하다가 조금 다른 것은 없을까 하다가 찾아보게 되었습니다. 일반 택트스위치에 LED와 전원 아이콘이 새겨져 있는 노브가 달려 있는 제품이 있었습니다. 조금 귀엽게 생겨서 테스트해 보았습니다.   1. 제품 도면   - 기본적인 제품 사이즈와 구성내용을 찾을 수 있었습니다.  - 만능 기판에 쏙 들어가지는 않고 살짝 걸쳐지는 형태입니다.    2. 핀 확인    핀 번호를 구분할 수 있는 것은 없고 좌우를 구분해서 LED 핀과 세로 방향으로 같이 있는 핀으로 1, 2 핀, 3, 4핀으로 생각하면 됩니다.  장착된 작은 LED는 직접 테스트해 봐야 알겠지만, 조금 긴 다리가 VCC(+) 방향이었습니다.   3. 작동시켜 보기   택트 스위치라 별..

IT 2024.10.22