디바이스 트리 작성법 (4편) 디바이스 트리 작성법 (1편) 보러가기 https://injunech.tistory.com/317 디바이스 트리 작성법 (2편) 보러가기 https://injunech.tistory.com/318 디바이스 트리 작성법 (3편) 보러가기 https://injunech.tistory.com/319 디바이스 트리 작성법 (4편) 보러가기 https://injunech.tistory.com/320 7 고급 주제들 7.1 복잡한 샘플 장치 지금까지 디바이스 트리를 이해하기 위한 기본적인 정의만 다루었습니다. 이제 좀 더 디바이스 트리를 완벽하게 사용하기 이해서 좀 더 복잡한 하드웨어를 샘플에 추가 할 필요가 있습니다. 이런 복잡한 하드웨어로 PCI 호스트 브릿지를 추가해 보겠습니다...
디바이스 트리 작성법 (2편) 디바이스 트리 작성법 (1편) 보러가기 https://injunech.tistory.com/317 디바이스 트리 작성법 (2편) 보러가기 https://injunech.tistory.com/318 디바이스 트리 작성법 (3편) 보러가기 https://injunech.tistory.com/319 디바이스 트리 작성법 (4편) 보러가기 https://injunech.tistory.com/320 3. 주소지정 방법 디바이스의 주소를 디바이스 트리에 표현하기 위해서 정해진 속성에는 다음 세가지가 있습니다. #address-cells #size-cells reg 이 속성은 서로 연관 관계를 가지고 있습니다. "#address-cells" 속성과 "#size-cells" 속성은 reg..
Table of Content 1. Intro 2. 쉬운 API 3. 어려운 API 4. 어려운 API 와 쉬운 API? 5. CPU 소모성 API 6. CPU 소모가 없는 API 7. msleep() 8. msleep_interruptible() 9. ssleep() 10. schedule_timeout_interrupt() 11. schedule_timeout_uninterrupt() 12. schedule_timeout() 13. ndelay(), udelay(), mdelay() 1. Intro 커널에서 시간 지연 함수는 여러가지가 있습니다. 굳이 분류를 하자면 쉬운 API, 어려운 API, CPU 소모성 API, CPU 소모가 없는 API 정도로 나눌 수 있습니다. 2. 쉬운 API 쉬운 API..
디바이스는 하드웨어를 말한다. 드라이버는 하드웨어를 다루는 소프트웨어를 말한다.예를 들어보자.UART 칩이 16개 달려있다고 했을 때 이를 제어하는 드라이버는 하나이다.하지만 UART 칩이 16개 이니 디바이스는 16개 이다. 이제 리눅스 커널로 확장해 보자arm 코아의 커널을 다루게 되면 항상 수정하거나 참고하는 파일이 있다.EM-S5PV210 기준으로arch/arm/mach-s5pv210/mach-ezs5pv210.c 파일이다. 이곳에서 보면 struct platform_device 구조체를 흔히 볼수 있다.이 구조체의 몇몇 멤버를 보자name 문자열 이름id 정수형 아이디resource 리소스 구조체 포인터 (리소스 구조체는 하드웨의 주소나 인터럽트 정보가 나열된다.) num_resources 리소..
쉘 스크립트를 만들때, 가장 첫 라인에 #!/bin/bash 를 왜 써야 하는지에 대하여 알아 보도록 하겠습니다. 쉘 스크립트의 가장 첫 라인에 !/bain/bash 를 쓰게 됨으로 해서, 내가 사용 하려는 명령어 해석기가 bash 쉘 임을 미리 알려주는 것입니다. 일반적으로 스크립트에서 #는 주석기호이지만, 첫라인의 #!/bin/bash 에서의 #은 주석기호가 아닙니다. 스크립트의 가장 첫라인에 있는 #! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 합니다. #! 은 두 바이트의 "매직넘버"("magic number")로서, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자입니다. #! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어..