기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

아래 그림은 제 임베디드 리눅스의 /dev 폴더를 ls 한 결과입니다.

 

logo2.jpg

 

/dev 폴더를 보면 ttyS0는 serial port0를 말하는 것같아서 applicaation을 작성해서 사용해봤습니다.

그런데 빨간줄을 칠한 consol도 있고 mem도 있고 bus도 있고 여러기자

/dev 폴더에 제가 제어할 수 있는 디바이스 파일들이 많은데요... 이런 것들이 무엇을 의미하는 건가요?

ttyS0는 serial port를 의미하듯 각각의 디바이스 파일은 페리페러를 말할 텐데 무슨 설명서도 없으니 ㅠㅠ;

혹시 이런것들에 대한 설명이 있는 곳이 어딘가에 있지 않을가해서요 ^^; 고수님들의 조언 부탁드립니다.


쾌도난마

2012.02.11 03:09:01
*.226.208.211

저도 최근에 책 보면서 알게 된건데요 (리눅스 커널 내부구조-백승재,최종무)


/dev 밑에 있는 file 들은 kernel 의 device driver 의 진입점을 알려 주는 것입니다.

Major,Minor 번호를 가지고 system call 을 호출 하여

커널 내부에 Major,Minor 번호에 해당하는(배열) 의 함수 포인터를 수행 한다.


말이 어렵네요.. ㅎㅎ


예를 들어 보면


kerenl 에서 MY_UART.C 라는 device driver 에서 

캐릭터 디바이스를(major 번호 45 minor 번호 3) 등록합니다.

(이는 256개의 캐릭터 디바이스 배열에 45번쩨 인덱스를 사용하겠다는것)

각각 open,write,read 에 해당하는 함수는 따로 작성하였다고 생각하고......

이제 이 디바이스 드라이버를 User 영역에서 제어를 해야 할때

User 영역에서 major 45, minor 3 을 알 수 없으니 이것을 알려주는 곳이 /dev 입니다.

User 영역 프로그래머 입장에서는 major 45, minor 3을 알 필요는 없습니다.

그냥 /dev 밑에 file open 하게 되면 /dev/file 의 major , minor 번호를

가지고 system call 이 일어 나서 캐릭터 디바이스 배열중 45번째 인덱스의 함수 포인터를

수행 해라 라는 의미 이니깐요.


임베디드 리눅스 총체적으로 흐름을 살펴 보면


1. 새로운 sensor 하나가 회로도에 있음.

2. sensor 을 제어하는 device driver 작성(I2C,SPI,UART 등을 통한 기타 등등...)

3. user 영역과 interface 하는 device driver 작성

3.1. 캐릭터 디바이스로 등록함( ex. major 251, minor 1 )

4. mount 하는 fs system 의 /dev 디렉토리에 mknod c new_sensor 251 1 형식으로 등록함

(부팅시 스크립트 나, 혹은 fs system 에 고정시켜 사용 가능가능 하게 함)


5. user 영역 프로그램 작성. /dev/new_sensor 을 이용하여 open , read , write 함.


이정도로.... ㅎㅎㅎ ㅡ.ㅡ;;;;


이런식으로 활용 할 수 도 있고

번외로... /sys 밑에 있는 sysfs 을 이용한 user program 도 있습니다.

안드로이드가 sysfs 를 활용하여 사용하는 것을 보았습니다.



혜민아빠

2012.02.11 20:32:25
*.148.23.122

저도 드라이버를 작성하기 때문에 대략은 알지마, /dev 폴더에 들어가 있는 디방이스 파일들을 다 머하는 기능으로 사용되는지 저의 하드웨어 페리페럴의 어떤 드라이버와 연관이 있는지 모르니 ^^; 영 답답하네요..

/dev 폴더의 파일들을 사용하고 싶은데 아는 것만 사용하고 있으니...쩝..ㅠㅠ

hkim

2012.02.14 17:53:36
*.40.146.66

아래 링크에 각 디바이스별로 간략하게 설명되 있는거 같습니다.

http://lxr.linux.no/linux/Documentation/devices.txt

List of Articles
번호 제목 글쓴이 날짜 조회 수sort
5788 ORIGEN 4 Quad Package-A 구매 전 질의 사항 [3] monad 2013-04-18 1820
5787 yaffs2 fs를 gang으로 nand write 질문 [2] 최승훈 2011-08-13 1819
5786 mdev -s 로 장치파일이 생성이 되지 않는 상태인데요 [1] ice179 2014-02-13 1818
5785 exynos4210(V310)의 u-boot에서 GPY0CON의 주소를 모르겠네요. [4] 훌러덩 2012-03-10 1817
5784 BIOS 라이센스 관련 문의드립니다. [2] 구진호 2008-03-04 1816
» /dev 폴더에 대해서 문의가 있습니다. ^^; 여기에 있는 파일들을 도... file [3] 혜민아빠 2012-02-11 1816
5782 arndaleboard 보드 상에서 hello world 프로그램 작성 시 빌드 에... [3] realizeadream 2013-12-11 1816
5781 linux 가 keyboard 나 mouse 로 동작이 가능할까요? [3] 강경완 2013-11-09 1815
5780 Exynos5250의 비디오 재생 능력 [4] eou4 2013-11-12 1810
5779 [Angstrom Distribution Linux] [2] 밥줘잉 2012-02-17 1809
5778 화웨이 3G Modem을 Jellybean에 사용 해보신 분 계신가요?? [2] 천동이 2013-11-05 1809
5777 Android 시스템 부팅중에 멈추게 하려면 어떻게 해야 할까요? [3] pottery 2014-01-29 1809
5776 [ODROID] media 프로세스 중지.... [2] 이종범 2009-11-07 1808
5775 리눅스에서 Kernel Module 로드순서에 대한 질문입니다. [1] acedon 2012-07-11 1808
5774 u-boot 와 kernel , rootfs를 하나의 binary로 합치는 방법 김민욱 2013-12-13 1807
5773 안드로이드 기본 어플 [1] 누구누구 2011-10-11 1806
5772 EXYNOS에 올라가는 SecureOS는 어떤 것이 있나요? [2] 쭈암 2012-07-24 1804
5771 Android Framework 개발환경 및 몇가지 질문 드립니다. [7] Supsupi 2014-01-10 1804
5770 SD Card속도 문제 [5] 정창환 2006-05-10 1799
5769 VirtualBox 에 Ubuntu 설치 시 에러 관련....... [3] blue0sky 2012-08-16 1799

사용자 로그인