본 글은 SNMP 표준 중 RFC 2579 Textual Conventions for SMIv2 표준에 정의된 RowStatus 객체의 의미와 그 사용 방법을 정리한 글입니다. 테이블 유형의 MIB 오브젝트 MIB를 정의할 때, 테이블 유형의 오브젝트를 정의할 수 있습니다. 테이블 유형의 오브젝트는 공통된 형식의 정보 묶음이 하나 이상 존재할 경우에 사용됩니다. 예를 들면 다음과 같습니다. SNMP 관리 대상 장치에 장착된 하나 이상의 네트워크 인터페이스에 대한 정보를 관리하고자 하는 경우, 각 네트워크 인터페이스는 보통 공통된 상태정보(들)을 가집니다. 예: 연결상태, IP주소, 송신패킷 수, 수신패킷 수 등 이처럼 공통된 상태정보(들)을 하나의 정보 묶음으로 정의합니다. 각 네트워크 인터페이스에 대한..
본 글은 RFC 2579 Textual Conventions for SMIv2 표준에 기술된 RowStatus에 대해 정리한 글입니다. 용어 정의 열 요구사항 : 개념적 행 생성을 위한 "SET" 프로토콜 동작 수행 시, 값이 반드시 제공되어야 하는 열 객체들 해당 열 객체들 모두에 대한 값이 설정되지 않으면 개념적 행이 생성될 수 없다. 필요 열 : 개념적 행 생성을 위한 "SET" 프로토콜 동작 수행 시, 값이 반드시 제공되어야 하는 열 객체 해당 열 객체에 대한 값이 설정되지 않으면 개념적 행이 생성될 수 없다. MIB 모듈 : 원하는 특정 MIB 를 정의한 것 (즉, ASN.1 파일에 정의된 내용이라고 보면 된다) RowStatus 정의 개념 RowStatus textual convention은 ..
개요 ffmpeg은 오픈 소스 기반의 영상/음성 기록, 변환, 스트리밍 솔루션이며, 공식 웹사이트는 다음과 같습니다. https://www.ffmpeg.org/ 본 글에서는 ffmpeg을 ARM 기반 임베디드 리눅스 플랫폼용으로 빌드하는 방법에 대해 소개합니다. 빌드 환경은 Ubuntu 16.04 리눅스입니다. 크로스 컴파일러 설치 Ubuntu 16.04 리눅스 환경에서, ffmpeg을 빌드하기 위한 크로스 컴파일러를 설치합니다. 여기서는 "arm-linux-gnueabihf-gcc"를 사용합니다. $ sudo apt update $ sudo apt install gcc-arm-linux-gnueabihf ffmpeg 소스패키지 다운로드 https://www.ffmpeg.org/download.html에..
개요 JSMN(JSON parse library)는 JSON 구문 파싱 라이브러리이며, 공식 웹사이트는 아래와 같습니다. zserge.com/jsmn/ 본 글에서는 JSMN 라이브러리를 ARM 기반 임베디드 리눅스 플랫폼용으로 빌드하는 방법에 대해 소개합니다. 빌드 환경은 Ubuntu 16.04 리눅스입니다. 크로스 컴파일러 설치 Ubuntu 16.04 리눅스 환경에서, jsmn 라이브러리를 빌드하기 위한 크로스 컴파일러를 설치합니다. 여기서는 "arm-linux-gnueabihf-gcc"를 사용합니다. $ sudo apt update $ sudo apt install gcc-arm-linux-gnueabihf JSMN 소스 패키지 다운로드 github.com/zserge/jsmn에서 JSMN 라이브러리..
개요 pps-tools는 시스템의 Kernel PPS 기능을 사용할 수 있는 오픈소스 유틸리티(github.com/redlab-i/pps-tools)입니다. pps-tools 내에 포함된 timepps.h 파일을 이용하여 Kernel PPS 관련 시스템콜을 호출하는 어플리케이션을 개발할 수 있으며, pps-tools 빌드 시 생성되는 ppstest 유틸리티로는 시스템의 Kernel PPS 동작을 확인할 수 있습니다. 본 글에서는 pps-tools를 x64/x86 리눅스 시스템용으로 빌드하는 방법과 arm 리눅스 시스템용으로 빌드하는 방법을 설명합니다. 참고로 본 글에서 사용된 환경은 우분투 리눅스 18.04 버전입니다. pps-tools 다운로드 다음 명령을 통해 pps-tools를 다운로드합니다. (글..
임베디드 리눅스 플랫폼에 DHCP 서버 구축하기 - udhcp udhcp 임베디드 리눅스 플랫폼에서 구동시킬 수 있는 DHCP 서버로는 udhcp 가 있다. 본 글에서는 udhcp 를 이용하여 임베디드 리눅스 플랫폼 상에 DHCP 서버를 구축하는 방법을 설명한다. udhcp 는 DHCP 서버와 클라이언트 기능(udhcpd: 서버 데몬, udhcpc: 클라이언트 데몬)을 지원하며 공식 웹페이지는 다음과 같다. udhcp Server/Client Package udhcp Server/Client Package The udhcp package is no longer maintained/packaged as a standalone project. It has been fully integrated into bu..
본 글에서는 오픈소스인 OpenSSL을 임베디드 리눅스용으로 크로스 컴파일하는 방법을 설명한다. 본 글에 사용된 크로스 컴파일 환경은 다음과 같다. OpenSSL 1.1.1d 버전 호스트 PC : 우분투 리눅스 (14.04 이후 버전) 타겟 장치 : ARM 기반 하드웨어 플랫폼, PPC 기반 하드웨어 플랫폼 크로스 컴파일러 ARM : arm-linux-gnueabihf- PPC : powerpc-linux-gnu- 사전 필요 사항 호스트 PC에 각각의 크로스 컴파일러를 설치한다. $ sudo apt update -y && sudo apt upgrade -y $ sudo apt install build-essential gcc-arm-linux-gnueabihf libstdc++6-armhf-cross l..
본 글에서는 유블럭스사의 EVK-M8T 모듈을 Condor4V 플랫폼에 USB 인터페이스를 통해 연결하는 방법을 설명한다. 주) EVK-M8T 모듈은 USB 또는 RS-232를 통해 플랫폼과 연결될 수 있다. EVK 연결 타겟보드에 EVK을 USB 케이블로 연결한 후, lsusb 명령을 통해 디바이스가 연결된 것을 확인한다. 아래 화면에서 "U-Blox AG" 가 해당 디바이스를 나타낸다. TARGET$ lsusb Bus 001 Device 003: ID 1fc9:0102 NXP Semiconductors Bus 001 Device 005: ID 1546:01a8 U-Blox AG Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 ..
본 글에서는 dfu-util을 리눅스 환경에서 임베디드 리눅스용으로 크로스 컴파일하는 방법을 설명한다. 본 글에서 사용된 크로스 컴파일 환경은 다음과 같다. dfu-util v0.9-101 버전 호스트 PC : 우분투 리눅스 (14.04 이후 버전) 타겟 장치 : ARM 기반 하드웨어 플랫폼 크로스 컴파일러 : arm-linux-gnueabihf- 다른 플랫폼 및 크로스컴파일러를 사용할 경우, 상황에 맞게 변경 적용 가능하다. dfu-util 의 공식 홈페이지는 아래와 같다. dfu-util Homepage dfu-util - Device Firmware Upgrade Utilities Description dfu-util is a host side implementation of the DFU 1.0 ..
본 글에서는 GPS 모듈을 포함한 임베디드 장치의 시스템 시각을 UTC에 동기화하는 방법을 설명한다. 개요 개발환경 개발 환경은 다음과 같다. 개발 머신 우분투 리눅스 14.04 타겟 하드웨어 플랫폼 MCU: i.MX6Q (ARM) GPS모듈: ublox NEO M8U MCU-GPS모듈 인터페이스: UART(NMEA) and GPIO(PPS) 타겟 소프트웨어 플랫폼 OS: 임베디드 리눅스 (커널버전 4.9.11) 타겟: arm-linux-gnueabihf 크로스컴파일러: arm-linux-gnueabihf-gcc-4.8.4 GPS 모듈 인터페이스 NMEA: /dev/ttymxc3 PPS: /dev/pps2 필요 패키지 필요한 패키지는 다음과 같다. pps-tools : User-space tools fo..
장치에서 전송하거나 수신하는 네트워크 패킷을 수집하여 내용을 확인하려면 어떻게 해야 할까. 많은 사람들이 알고 있듯이 WireShark 라는 프로그램이 이러한 기능을 지원한다. 일반 컴퓨터에서는 WireShark 를 인터넷에서 다운로드하고 설치하여 사용할 수 있지만, 임베디드 환경에서는 어떻게 해야 할까. 사실 네트워크 패킷을 수집하는 기능은 pcap 이라는 라이브러리에서 지원한다. WireShark 역시 pcap 라이브러리를 기반으로 네트워크 패킷 수집 기능을 제공하고 있다. 본 글에서는 임베디드 리눅스 플랫폼 상에서 pcap 라이브러리(libpcap, 네트워크 패킷 수집 라이브러리)와 tcpdump 유틸리티(libpcap 을 이용하여 패킷을 수집하는 프로그램)를 이용하여 네트워크 패킷을 수집하는 기능..