전체 글

전체 글

    open(), close()

    https://rorsi.tistory.com/61 디바이스 드라이버 디바이스 드라이버(Device Driver) 일반적으로 디바이스란 컴퓨터에 물려있는 여러 주변장치들을 뜻한다. 네트워크 어댑터, 오디오, 키보드, 마우스 등이 디바이스에 해당하고, 이러한 디바이스들 rorsi.tistory.com 위 포스트에 이어서 디바이스 드라이버를 만들었다면 이제 그 드라이버를 이용해 open(), close()를 구현해 보고자 한다. driver.c #include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME "driver" static dev_t device_dev; stati..

    ioctl()

    ioctl ioctl() 함수란 하드웨어의 제어와 상태 정보를 얻기 위해 제공되는 함수이다. read(), write()를 이용해서 데이터를 읽고 쓰는 등의 기능은 가능하지만 하드웨어를 제어하거나 상태 정보를 확인하려면 ioctl()를 이용해야 한다. long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); 첫 번째 인자는 open 한 디바이스 드라이버의 fd 값이다 두 번째 인자는 디바이스에게 전달할 명령이다. 이 명령에 따라서 디바이스를 컨트롤할 수 있다. 에러시 -1을 반환, 다른 시스템 호출과 같이 성공하면 0보다..

    디바이스 드라이버

    디바이스 드라이버(Device Driver) 일반적으로 디바이스란 컴퓨터에 물려있는 여러 주변장치들을 뜻한다. 네트워크 어댑터, 오디오, 키보드, 마우스 등이 디바이스에 해당하고, 이러한 디바이스들을 컨트롤하기 위한 디바이스 드라이버가 존재한다. 응용프로그램이 하드웨어를 직접 컨트롤하는 것이 아니라 디바이스 드라이버를 통해서 하드웨어를 조종한다. 수많은 하드웨어 장치를 컨트롤하기 위해서는 그 규격에 맞춰서 개발을 해야 하는데 이는 매우 어렵고 비효율적인 일이다. 리눅스 시스템은 VFS(Virtual File System)기능을 지원하는데, 리눅스는 디바이스를 /dev 디렉토리에 하나의 파일로써 취급한다. 디바이스 드라이버 또한 파일로 관리된다. /dev/ 아래에 존재하는 파일들이 바로 디바이스 드라이버 ..

    Jetpack BSP Download - emmc

    본 문에서 진행하고 있는JETPACK 버전은 4.6.1 입니다. DevKit 버전이 아닌 캐리어 보드 기준입니다. A. Download & Set Jetpack BSP 아래 사이트에서 SDK manager 프로그램을 다운 받습니다. - 로그인 필수!! https://developer.nvidia.com/nvidia-sdk-manager NVIDIA SDK Manager Everything You Need to Set Up Your Development Environment NVIDIA SDK Manager provides an end-to-end development environment setup solution for NVIDIA’s DRIVE, Jetson, Holoscan, Riverm..

    SerDes

    예전 비디오 카메라는 무게가 수백 파운드나 나가는 거대한 장치였고 수천 달러를 통해 살 수 있었습니다. 지금 카메라는 스마트폰에 들어가거나 자동차에 들어가거나 합니다. 이 처럼 현재 카메라는 작고 가격 또한 싸며 효율적이고 선명한 화질의 이미지를 생성해줍니다. 그렇기 때문에 다른 장치보다 자동차에서 더 많이 볼 수 있습니다. 이전 차량에 들어가는 백업 카메라는 미니 밴이나 SUV 같은 차량에서 많이 볼 수 있었습니다. 하지만 이제는 거의 모든 차량에서 하나 또는 두개 이상이 장착된 카메라를 볼 수 있습니다. 이는 ADAS(Advanced Driver Assistance System)이 보편화됨에 따라 카메라도 실제로 확산되기 시작했습니다. 자동차에는 후방 카메라, 전방 카메라, 측방 카메라, 블랙박스 카..

    인터럽트

    인터럽트란 사전적 의미로는 '끼어들다', '중단시키다' 정도의 의미를 가진 말로 CPU가 프로그램을 실행하는 도중에 예기치 않은 상황이 발생할 경우 현재 실행중인 작업을 중단하고 발생된 상황을 처리한 후 다시 실행중인 작업으로 복귀하는 것을 말한다. 인터럽트의 종류 인터럽트의 종류는 외부 인터럽트, 내부 인터럽트, 소프트웨어 인터럽트로 나뉠 수 있다. 외부 인터럽트 전원 이상 인터럽트(Power fail interrupt): 정전, 파워 이상 등 기계 착오 인터럽트(Machine check interrupt): CPU의 기능적인 오류 외부 인터럽트(External interrupt) 자원이 할당된 시간이 다 끝난 경우 키보드로 인터럽트 키를 누른 경우(대표적으로 Control + Alt + Delete)..

    시스템 버스

    시스템 버스란? 시스템 버스는 컴퓨터 전체와 장치 간에 데이터를 전송하고 공유하는 컴퓨터 아키텍처의 한 측면입니다. 컴퓨터 메인보드 내 프로세서, 메모리, 주변장치들을 서로 연결하여, 시스템이 원활하게 가동되도록, 데이터 전송 역할을 하는 공통의 통로입니다. 시스템 버스의 특정 디자인은 각 특정 컴퓨터 시스템의 스타일, 크기 및 요구 사항에 따라 변경됩니다. 컴퓨터의 시스템 버스를 사용자 정의하거나 시스템이 표준화된 설계를 사용하여 작동하도록 할 수 있습니다. 시스템 버스는 8비트, 16비트, 32비트 등이 될 수 있습니다. 32비트 버스는 한 번에 32비트의 정보를 전송할 수 있음을 의미합니다. 시스템 버스의 종류 시스템 버스를 구성하는 세 가지 유형의 버스가 있습니다. 각 유형의 버스는 정확한 데이터..

    CANdevStudio

    CANdevStudio는 CAN 네트워크를 구성하고 시뮬레이션 할 수 있는 오픈소스 크로스 플랫폼 CAN 시뮬레이션 소프트웨어다. CANdevStudio 를 사용하여 자동차의 점화 상태, 도어 상태 또는 후진 기어와 같은 CAN 신호를 시뮬레이션 할 수 있다. CAN 하드웨어 인터페이스(예: Microchip, Vector, PEAK-Systems)와 함께 작동하거나 심지어 Linux에서는 내장 에뮬레이션으로(vcan 및 cannelloni) 실제 CAN 하드웨어없이도 사용할 수 있다. SocketCAN 사용 SocketCAN은 Linux용 CAN 프로토콜(Controller Area Network)의 구현이다. 다른 네트워크 장치와 유사한 방식으로 다른 CAN 버스 장치와 커뮤니케이션 할 수 있는 인터..

    YUV

    YUV YUV는 Video Data 형식으로 사용하며 디지털 비디오 스트림 전송 포멧이다. 영상에서 어둡고 밝은지 정도를 나타내는 성분인 Y( 휘도: Luminance ), 색상 정보를 가지는 ​U,V 성분(색차:chrominance)으로 구성되어 있습니다. YUV는 색과 빛이 따로 구성이 되어 있는 형식이다. YUV 는 RGB 표현법에 비해 적은 비트수로 같은 그림을 표현할 수 있는데, 이게 가능한 이유는 사람 눈이 색상 차보다는 명암 차에 더 민감하기 때문이다. 이에 기반해서 많은 영상 정보들은 Y와 UV 를 나눈 것이고, 색상 정보를 별도로 부호화 하도록 하여 필요에 따라 압축 효율을 높일 수 있다. 이를 서브샘플링(subsampling) 이라고 한다. Y : 명암(밝음과 어두움)을 나타낸다. U(..

    RGB

    RGB : 일반적으로 사용하는 색상 구조로 이름 그대로 R(Red), G(Green), B(Blue) 색상의 조합으로 밝기는 없고 모두 색상으로 구성되어있다. RGB 형식은 각 RGB 채널 마다 각 Bit(8/16/24/32 Bit) 구성의 색상이 모두 존재한다. 8bit RGB : RGB24 라고도 부르며 2의 8승 구조로 각 채널 하나가 256의 색상을 가질 수 있다. 이 값을 모두 합하면 256X256X256 = 1,677,216 컬러가 된다. 여기서 8비트 RGB는 모든 색상 중에서 256개를 선택하여 사용한다. (모든 색상을 다 사용하지 못한다) 그렇기 때문에 팔레트가 존재한다. 8비트 색상은 256개의 팔레트 정보를 가지고 있고 1바이트의 점을 표현하는데 이때 1바이트에 해당하는 것을 인덱스 ..