리눅스 응용 프로그램 설계 중에 커널 레벨 설계와 유저 레벨 설계에 대해 혼란 스러워 질문 드립니다.
글쓴이: kbs1439 / 작성시간: 화, 2016/06/07 - 5:29오후
안녕하세요. 임베디드 리눅스를 접한지 3개월이 안된 직장인입니다.
현재 리눅스에서 HDMI로 영상 출력하는 응용 프로그램을 설계중인데요.
초급자다 보니 혼란스러운 부분이 있어 질문드립니다.
간단히 말씀드리면 FPGA에서 받아온 데이터를 후처리 후 HDMI로 출력하는 건데요.
현재 하나의 어플리케이션으로 유저 레벨 스레드 하나를 사용해서 설계는 완료된 상태입니다.
이를 위해 추가적인 GPIO 드라이버나 스위치 드라이버도 설계를 했는데요.
제가 궁금한 것은 이러한 동작들을 수행하는 프로그램을 커널 레벨에서 설계해야 하는지, 유저 레벨로 설계해야하는지 감이 안잡힙니다.
검색으로 두 방식의 장단점은 조금씩은 알겠지만, 필드에서는 실제로 어떠한 기준에 따라 커널 레벨과 유저 레벨 설계를 나누는지 알 수 있을까요?
또한 저는 드라이버를 개별로 코딩하여 insmod를 통해 사용하고 있는데요. 기존의 커널에 포함되 있던 키 입력 드라이버나 LED 드라이버를 다 빼고 제가 설계한 드라이버로 사용을 했거든요.
이 방법으로 설계 하는것과 커널 빌드 시에 포함하는 것과 어떤 장단이 있는지 알고 싶습니다.
입사해서 처음 임베디드 리눅스를 다루게 되어 모르는 것이 많아 이러한 질문을 드립니다.
답변해주시면 정말 감사하겠습니다.
Forums:
저도 잘 모르는데요 글쓰신 분 보다 아마 제가 더
저도 잘 모르는데요
글쓰신 분 보다 아마 제가 더 모를꺼에요
영상이면 대용량 데이터 처리가 필요하고
dma가 요구될꺼 같구요 dma면 물리 메모리 연속이 필요할꺼 같은데요
드라이버에서는 물리 메모리 연속할당 및 유저 어플리케이션 mmap 제공 및 fpga나 기타 하드웨어 제어 정도 하면 되지 않을까요?!
대용량 메모리 연속 할당 하려면 커널쪽에서 부팅할 때 예약하거나 등등의 방법이 필요하니 커널 컴파일 혹은 부트 파라메터 수정도 있을 것 같아요!
데이터 후처리 연산은 잘 모르지만 라이브러리가 있을꺼 같구요 유저 레벨 스레드에서 불러서 샤바샤바 할꺼 같아요!
아니면 dpdk처럼 uio로 만드는 것도 나쁘지 않을 것 같아요
제가 실력이 부족해서 그럴지도 모르는데요 커널 모듈이 뚱뚱하면 커널에 부담이 많이 되는거 같아요!
모듈이 혼자 안락사 하면 모르겠는데 꼭 모듈은 죽으면 커널 전체랑 동반자살을 해서 로그 보거나 뭔가 조치를 취하기 쉽지 않은 경우가 많은거 같아요
제 생각에는 커널 모듈에서는 데이터를 하드웨어에서 유저쪽 메모리까지 보내주면 대부분의 경우 끝일 것 같아요
물론 부가적으로 하드웨어 제어도 붙겠지만요
댓글 달기