분류 전체보기
-
[리눅스 커널] Interrupt - high level referenceLinux/kernel 2023. 8. 3. 02:27
글의 참고 - http://books.gigatux.nl/mirror/kerneldevelopment/0672327201/ch06lev1sec7.html - http://www.makelinux.net/ldd3/chp-10-sect-3.shtml - https://elixir.bootlin.com/linux/v4.10.5/source/kernel/irq/manage.c#L98 - https://www.kernel.org/doc/html/v4.16/core-api/genericirq.html 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - Overview " low-level IRQ handler 는 주로 칩 제조사에서 만든다. 그러나, ..
-
[리눅스 커널] platform driver probe를 호출하는 4가지 방법.Linux/kernel 2023. 8. 3. 02:27
글의 참고 - https://docs.kernel.org/driver-api/driver-model/platform.html - https://linux-kernel-labs.github.io/refs/heads/master/labs/device_model.html#overview 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - /driver/base/platform.c::platform_match() 함수에 probe()를 호출하는 4가지 조건이 있다. /** * platform_match - bind platform device to platform driver. * @dev: device. * @drv: driver. * * Pla..
-
[커널][디바이스트리] 디바이스 트리에서 8, 16, 64 비트값 선언하고 읽기.Linux/kernel 2023. 8. 3. 02:25
디바이스 트리에서 특정 노드에 정수형 프로퍼티를 선언할 경우, 아래와 같이 선언할 수 있다. gpclk0_gpio4: gpclk0_gpio4 { brcm,pins = ; brcm,function = ; }; gpclk1_gpio5: gpclk1_gpio5 { brcm,pins = ; brcm,function = ; }; gpclk1_gpio42: gpclk1_gpio42 { brcm,pins = ; brcm,function = ; }; `brcm,pins` , `brcm,function`, `brcm,pull` 기본적으로 모두 unsigned int 로 선언된 프로퍼티들이다. 위에 값들을 불러올 때, 값이 작다고 of_read_property_u8(), of_read_property_u16() 함수를 호..
-
[커널][디바이스트리] Label을 사용하는 이유와 참조시 주의점Linux/kernel 2023. 8. 3. 02:25
디바이스트리에 노드를 작성할 때, 아래와 같은 양식을 따른다. [ Label : ] Name@[ Addres ] : { ... } 대괄호로 묶인 Label과 Address는 옵션이다. 여기서 Label을 사용하는 이유와 참조시 주의점에 대해 알아보자. 1. Label을 선언하는 이유는 해당 노드를 참조하기 위해서는 반드시 Label을 선언한다. soc { rpi3b { compatible = "rpi3b"; }; }; // compile error 1 &rpi3b { phandle = ; }; rpi3b 노드는 레이블이 선언하지 않았기 때문에, 컴파일 에러를 낸다. 2. 특정 노드의 프로퍼티를 수정하기 위해 노드를 참조할 경우, 가장 최상위에 &{NODE_NAME} 식으로 선언해야 한다. soc { rp..
-
[개발 도구] Shell Prompt 언어 설정Linux/development tool 2023. 8. 3. 02:25
우분투를 한글로 설치를 했다. 키보드도 좋고 여러 가지 툴들이 한글로 되어있어서 상당히 편하다. 그런데 문제는 Shell에서 작업을 하다가 에러 및 경고 문구가 한글로 출력되니 이게 뭔 말인지 모르겠다는게 문제다... 요걸 다시 영어로 바꾸자. 먼저 자신의 언어가 어떻게 설정이 되어 있는지 확인해야 한다. echo $LANG - 한글일 경우 : ko_KR.UTF-8 - 영어일 경우 : en_US.UTF-8 `export LANG=en_US.UTF-8`을 통해 즉시 LANG를 바꿀 수 있다. 그러나 다음 부팅 시에 저 명령어를 또 쳐야한다... 영구적으로 유지하고 싶다면, 부팅 시 실행되는 .bashrc 맨끝에 해당 내역을 쓰면 된다. 맨 마지막 줄에 `export LANG=en_US.UTF-8` 확인할 ..
-
[리눅스] - !!${변수} 의미Linux 2023. 8. 3. 02:23
커널 코드를 보다 보면 `!!${변수}`로 된 코드를 간혹 볼 수 있다. 일단 결론부터 말하면 저건 Bool 타입으로 사용하겠다는 의미이다. long l1 = 132; long l2 = -1232; long l3 = 0; printf("l1: %d, l2: %d, l3:%d\n", !!l1, !!l2, !!l3); int i1 = 132; int i2 = -1232; int i3 = 0; printf("i1: %d, i2: %d, i3:%d\n", !!i1, !!i2, !!i3); short s1 = 8938; short s2 = -22132; short s3 = 0; printf("s1: %d, s2: %d, s3:%d\n", !!s1, !!s2, !!s3); char c1 = 89; char c2 =..
-
[LINUX][VIM] - Vim SessionLinux/development tool 2023. 8. 3. 02:22
글의 참고 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 : VIM에 익숙하지 않으면, 실수로 VIM을 Close하는 경우가 많다. VIM Buffer에 20개의 파일들이 있는데, 실수로 `q!` 관련 명령어를 쳐버리면 여태까지 Buffer에 쌓아 놓은 파일리스트가 모두 사라진다. 이럴 때 Vim Session을 사용하면 된다. Vim Session은 vim buffer를 계속 유지할 수 있게 해준다. 예를 들어, vim buffer에 다음의 내용들이 쌓여있다. :ls 1 "rasp_cross_compile.sh" line 1 4 "linux/.mailmap" line 19 5 # "linux/.tmp_System.map" line 9 6..
-
[개발 도구] 디렉토리 내비게이션 명령어Linux/development tool 2023. 8. 3. 02:21
글의 참고 글의 전제 - 밑줄로 작성된 글은 강조 표시를 의미한다. - 그림 출처는 항시 그림 아래에 표시했다. 글의 내용 - 디렉토리 내비게이션 명령어 : 여러 파일에 대한 관리는 좋은 Tool을 사용하면 되지만, 폴더의 경우는 여러 폴더를 이동해야 할 경우 그 놈의 cd ..cd ..cd .. 가 반복된다. 이럴 때, dirs, pushd, cd 를 있으면 이제 cd ..cd ..cd .. 의 지옥에서 벗어날 수 있다. 1" dirs - 현재 내가 저장한 경로들에 대한 스택을 보여준다. - `dirs -v`는 스택에 저장된 경로들에 인덱스를 붙여서 보여준다. 인덱스 0은 현재 경로를 의미한다. 실제로 내가 저장한 경로는 1부터 시작한다. 0 ~/workspace/SW/rpi-kernel/stable/..