콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

spinlock, mutex 실습

모듈을 로딩하면 kernel thread부터 만들어야 한다. 같은 책 초반에 나왔는데, 다시 보니 기억할 수 없다. 스레드를 만든 후 함수와 데이터를 넘겨야 하는데, 데이터가 void 포인터다. struct로 캐스팅 하고 싶은데, 에러가 났다. kernel 코드를 보고 괄호를 몇 번 붙였다. 아! ㅅㅂ. 구글 찾아보기보다 시(간)성비가 더 좋다. pi@raspberrypi:~/linux $ grep -wn “kthread_create” -r ./drivers ./drivers/usb/usbip/usbip_common.h:285: = kthread_create(threadfn,…… spinlock, mutex 실습 계속 읽기

발행일 2021-07-24
카테고리 생활코딩 태그 linux, mutex, raspberry, spinlock, 임베디드 리눅스

timer 실습

kernel timer를 실습했다. callback 함수 argrument로 timer를 가지고 있는 구조체 데이터를 전달할 수 있다. work queue와 같은 방식이다. 커널 특정 버전부터 이런 식으로 변경되었는 듯 하다. 타이머가 만료되면 다시 등록하도록 했다. #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/irq.h> #include <linux/interrupt.h> #include <linux/gpio.h> //GPIO #include <linux/cdev.h> #include <linux/device.h> #include <linux/uaccess.h> #include <linux/fcntl.h> #include <linux/timer.h> #include…… timer 실습 계속 읽기

발행일 2021-07-21
카테고리 생활코딩 태그 linux, raspberry, timer, 임베디드 리눅스

workqueue 실습

리눅스가 work queue를 다양하게 사용한다. 나는 초짜라 DECLARE_WORK와 INIT_WORK를 구분할 수 없었다. DECLARE_WORK가 work struct를 전역 변수로 선언한다. 여러 work로 같은 데이터에 접근할 수 있다. workqueue funtion() 파라미터로 work struct를 넣는데, 여기로 work를 전달하면 된다. 코드가 넝마조각이 되고 있다. #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/irq.h> #include <linux/interrupt.h> #include <linux/gpio.h> //GPIO #include <linux/cdev.h> #include…… workqueue 실습 계속 읽기

발행일 2021-07-19
카테고리 생활코딩 태그 linux, raspberry, workqueue, 임베디드 리눅스

character device를 tasklet으로 테스트

tasklet을 배우고 실습하다 보니, 캐릭터 디바이스를 활용한 예제를 찾았다. 하다보니 강제로 character device를 등록, 열고, 닫고, 읽고, 쓰는 방법을 배웠다. 대충 이해한 다음 아래 동작을 구성했다. read: 앞쪽부터 읽음.write: 데이터가 있다면 뒤로 채워 넣음.인터럽트: gpio를 시물레이션하여 앞에서 한 글자씩 지움.버퍼 용량은 char 256개 사용. 전에 사용한 파일을 수정했고, 모듈을 만들기 위한 makefile을 그대로 사용했다. #include…… character device를 tasklet으로 테스트 계속 읽기

발행일 2021-07-14
카테고리 생활코딩 태그 linux, raspberry, tasklet, 임베디드 리눅스

linux driver, softIrq 실습

인터럽트 후반부를 처리하는 soft irq를 배웠다. 자 이제 사용해 보자. 불행히도 요즘은 일반화된 tasklet을 사용하고 low level인 soft irq를 사용하지 않는다고 한다. 그래도 아래 사이트에서 강제로?? 사용할 수 있는 방법을 찾았다. 실습하고 쓰지 말아야 한다. 드라이버를 로딩 후 언로딩하면 시스템이 죽어버린다. https://embetronicx.com/tutorials/linux/device-drivers/softirq-in-linux-kernel/ 요점은 kernel에서 export_symbol로 raise_softirq, open_softiq 등 3개 함수를 내보내 사용할 수 있게한다. interrrupt.h에…… linux driver, softIrq 실습 계속 읽기

발행일 2021-07-06
카테고리 생활코딩 태그 linux, raspberry, softirq, 임베디드 리눅스

글 페이지 매김

다음 글 페이지 1 … 페이지 73 … 페이지 157 이전 글
2025 9월
일 월 화 수 목 금 토
 123456
78910111213
14151617181920
21222324252627
282930  
8월    

최신 글

  • 공간벡터 Space Vector 2025-08-20
  • reference frame transform 2025-08-20
  • Unipolar, Bipolar 2025-07-08
  • DC 모터 모델링 2025-07-03
  • 모터 개론 2025-06-22

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 입력 내용 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.