분류 전체보기934 LDD ] Device Tree (DT) 디바이스 트리 디바이스 트리(Device Tree, DT)란 하드웨어의 구조와 특성을 운영체제나 소프트웨어가 이해할 수 있도록 기술한 데이터 구조이다.이전에는 커널 소스에 하드웨어 정보를 하드코딩하는 방식이었다면 디바이스 트리 파일의 등장으로 인해 다양한 하드웨어를 단일 커널 이미지로 지원할 수 있게 되었다. 이로 인해 코드 중복이 줄어들고 유지보수성이 향상되는 이점이 있다. 디바이스 트리의 주요 목적은 다음과 같다.플랫폼 식별 : 커널이 실행 중인 플랫폼(보드)의 하드웨어 구조와 자원을 설명하여 플랫폼에 맞는 초기화 과정을 수행할 수 있도록 함디바이스 등록 : 디바이스 트리 데이터를 파싱하여 커널 내부 데이터 구조를 생성하고 디바이스 드라이버로 전달함 디바이스 트리의 계층적 작성 및 재사용.. 2025. 3. 27. 타코미터 센서 (Tachometer) 타코미터 센서 (Tachometer)타코미터는 회전체의 회전 속도를 측정하기 위해 사용되는 센서로, 회전체의 움직임(회전 운동)을 전기적 신호로 변환하는 역할을 한다. 타코센서가 생성하는 전기 신호는 회전 속도에 비례하며, 이를 통해 판독된 값은 일반적으로 RPM 또는 Hz로 표시한다. 다음은 타코미터 센서의 종류이다. 1. 광학 센서 (Optical Sensor) 광학 센서는 빛을 이용하여 회전 속도를 감지하는 비접촉식 센서이다. 일반적으로 발광 다이오드(LED) 또는 레이저를 광원(Light source)으로 사용하고 광 트랜지스터를 검출기(Light detector)로 사용한다.기본 동작 원리는 회전체와 샤프트를 통해 연결된 디스크(Disc)의 회전 운동을 빛의 통과 여부나 반사 신호로 변환.. 2025. 3. 24. Git ] 코드 변경이 없는 데 전체 파일이 수정된 것으로 표시되는 경우 Git을 통해 여러 개발자간 협업하는 경우 코드 수정사항이 없는데도 불구하고 전체 파일이 수정된 것으로 표시되는 경우가 있다. 이는 보통 운영체제별 개행 문자 차이로 인해 발생한다. 또한 Git에는 이 차이를 자동으로 처리해주는 core.autocrlf 설정이 존재하는 데 오히려 이 설정이 문제를 일으킬 수도 있다. 운영체제별 개행문자 차이Windows : CRLF(Carriage Return + Line Feed, \r\n, 0x0D 0x0A)Linux 및 macOS : LF(Line Feed, \n, 0x0D) core.autocrlf 설정Git에는 파일의 개행 문자를 자동으로 변환하여 저장소 내 일관되게 LF 개행 문자가 저장되도록 처리해주는 core.autocrlf 설정이 존재한다.false.. 2025. 3. 21. LDD ] PCIe 디바이스 드라이버 작성하기 - (4) with sysfs 이번 글 역시 PCIe 디바이스를 다루는 것보다 디바이스 드라이버 작성 방식에 대해 초점을 맞추도록 한다. 디바이스 드라이버 with sysfs 직전 글에서 사용한 코드를 약간 수정하여 sysfs 인터페이스를 구현하는 디바이스 드라이버를 작성해보도록 하자. sysfs란?sysfs는 커널 객체(Kernel Object, kobject) 및 해당 객체의 속성 정보(attribute)를 사용자 공간에 노출하는 파일 시스템을 말하며, /sys 디렉토리에 마운트된다. sysfs에서 커널 객체(kobject)는 디렉토리를 나타내고, 속성(attribute)는 디렉토리 내의 파일로 표현되어 해당 객체의 상태 정보 또는 설정값을 제공한다. 그리고 리눅스 커널의 디바이스(struct device)와 드라이버(str.. 2025. 3. 18. Ubuntu ] dpkg, dpkg-deb 유용한 명령어 dpkg란? APT가 고수준 패키지 관리(의존성 해결, 저장소 관리 등)를 담당한다면 dpkg는 직접 .deb 패키지를 설치/제거/확인할 수 있는 툴이다. 직접적으로 .deb파일을 다루어야 할 때는 dpkg 명령어를 사용하는게 더 유용하며, APT 명령도 내부적으로는 dpkg를 활용해 실제 설치/제거 작업을 수행한다. dpkg 유용한 명령어 사용법 .deb 파일 설치sudo dpkg -i package.deb 의존성을 포함해 .deb 파일 설치sudo apt install ./package.deb .deb 파일 설치 시뮬레이션 (실제로 설치하지 않으면서 설치 과정에서 무엇을 하는지 로그를 확인할 수 있다.)sudo dpkg -i --simulate package.deb 시스템에 설치된 패키지 .. 2025. 3. 15. LDD ] 커널 메모리 할당 함수 (kmalloc, kzalloc 등) kmalloc / kzallockmalloc과 kzalloc은 커널 공간에서 연속된 메모리를 동적으로 할당하는 함수로, 사용자 공간의 malloc, calloc과 유사하지만 커널 내부에서만 사용된다. 참고로 이 두 함수로 할당 가능한 최대 메모리 크기는 시스템의 page size에 의존하며, 일반적인 page size인 4KB보다 작은 크기의 객체를 할당할 때만 사용하는 것이 권장된다. 만약 4KB 이상의 메모리를 할당하려면 vmalloc 등 다른 메모리 할당 함수를 사용해야 한다. 한편 이 두 함수를 사용에 할당된 메모리는 사용이 끝나면 반드시 kfree를 통해 해제하여 메모리 누수를 방지해야 한다. kmalloc과 kzalloc의 차이는 다음과 같다.kmalloc : 할당된 메모리는 초기화되지 않는다.. 2025. 3. 12. Jetson ] Enable Auto login with Headless mode tty1 콘솔 서비스 디렉토리를 생성하고 autologin.conf 설정 파일을 생성해 다음과 같이 작성한다. sudo mkdir -p /etc/systemd/system/getty@tty1.service.d echo "[Service]ExecStart=ExecStart=-/sbin/agetty --autologin %I \$TERM" \| sudo tee /etc/systemd/system/getty@tty1.service.d/autologin.conf > /dev/null 부분에 본인 계정 이름을 입력하면 된다. 참고.Linux 시스템에서 GUI가 비활성화된 경우 tty1이 기본 콘솔이 되며, 디스플레이 장치에 텍스트를 직접 출력하는 framebuffer 콘솔로 동작 한다. 2025. 3. 9. Jetson ] GUI mode ↔ Headless mode setup Headless 모드로 전환# 1. gdm3 (GNOME Display Manager) 비활성화$ sudo systemctl disable gdm3# 2. default boot tartget을 multi-user mode로 설정$ sudo systemctl set-default multi-user.target# 3. gdm3 중지$ sudo systemctl stop gdm3# 4. Crtl + Alt + F3을 눌러 콘솔 세션으로 진입 GUI 모드로 복귀# 1. gdm3 (GNOME Display Manager) 활성화$ sudo systemctl enable gdm3# 2. default boot target을 graphical mode로 설정$ sudo systemctl set-defa.. 2025. 3. 6. LDD ] PCIe 디바이스 드라이버 작성하기 - (3) with Interrupt 이번 글에서는 PCIe 디바이스를 다루는 것보다 디바이스 드라이버 작성 방식에 대해 초점을 맞추도록 한다. 디바이스 드라이버 with 인터럽트 직전 글에서 사용한 코드를 약간 수정하여 디바이스 드라이버에서 인터럽트를 핸들링하는 방법을 알아보도록 하자.2024.11.29 - [임베디드 개발/리눅스 디바이스 드라이버] - LDD ] PCIe 디바이스 드라이버 작성하기 - (2) 하드웨어 장치는 특정 작업을 완료하거나 상태가 변경될 때 CPU에 인터럽트를 발생시켜 처리를 요청하는데 이를 IRQ(Interrupt Request)라고 한다. 그리고 디바이스 드라이버는 인터럽트가 발생했을 때 호출될 IRQ 핸들러를 등록하여 인터럽트를 처리할 수 있다. 이번 목표는 PSR 레지스터를 타이머를 사용해서 폴링으로 체.. 2025. 3. 3. LDD ] 커널 시간 관련 함수 사용법 1. HZ와 jiffies HZ초당 발생하는 타이머 인터럽트의 수를 나타내는 상수로, 플랫폼마다 다르지만 일반적으로 250으로 설정된다. jiffies커널에서 사용하는 시간 단위의 전역 변수로, 부팅 이후 매 타이머 인터럽트마다 1씩 증가하는 tick 카운터이다. 즉, jiffies는 초당 HZ의 수 만큼 증가하며, HZ가 250으로 설정된 경우 1 jiffy는 1 / HZ = 1 / 250 = 4ms이다. 현재 시스템의 HZ 값을 터미널에서 확인하는 법현재 실행 중인 커널의 컴파일 시 설정 정보는 /boot/config-$(uname -r) 이름으로 파일시스템에 노출되는데, 해당 파일에서 다음 명령을 통해 HZ 설정값을 확인할 수 있다. grep CONFIG_HZ /boot/config-$(unam.. 2025. 2. 27. CH341A 프로그래머 사용하기 본 글은 사용 후기로 글을 보고 따라하다 생긴 문제에 대해 책임지지 않습니다. 작업 진행 전 충분히 검토하기 바랍니다. CH341A 프로그래머 CH341A 프로그래머란? 인터넷에 검색해보면 주로 메인보드에 있는 BIOS 펌웨어가 저장된 ROM 칩이 고장났을 때 칩 교체 후 프로그래밍 용도로 많이 사용하는 것 같다. 하지만 그 외에도 USB 인터페이스를 통해 다양한 메모리 칩에 대한 읽기/쓰기 작업을 지원하는 장치이며, 이를 위한 무료 툴도 여러가지가 존재한다. 주요 지원 메모리 칩 25 시리즈 : SPI 기반 Flash 메모리, 일부 SPI EEPROM도 있음 (W25Q64JV, 25LC512, ...)24 시리즈 : I2C 기반 EEPROM (ex. 24C02, 24LC256, ...).. 2025. 2. 24. strtoul, strtol, strtof 구현 기존 C표준 라이브러리 함수와 차이가 있다면, 원래 strtoul, strtol 함수는 명시적으로 base 인자를 받는데 이를 받지 않고 자동으로 base를 감지하도록 하였다. 이는 원래 함수에서 base 인자가 0인 경우와 같은 동작을 한다.또한 원래 strtoul, strtol 함수는 2진수 접두사 "0b"를 처리하지 않는데 이를 처리하도록 하였다.그리고 원래 strtof 함수 과학적 지수 표기(e 또는 E)를 지원하나 간단한 구현 및 처리를 위해 이를 지원하지 않는 버전으로 했다. #include // 공백 문자 확인int my_isspace(char c) { return (c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '.. 2025. 2. 22. LibreOffice Writer] 코드 블럭 삽입하기 Code Highlighter 2라는 LibreOffice의 확장 프로그램을 사용할건데 최소 LibreOffice 7.1 버전 이상에서만 사용할 수 있어서 먼저 Libre Office를 업그레이드 해주었다. # 현재 기본 저장소를 통해 설치된 LibrOffice를 충돌 방지를 위해 제거$ sudo apt remove --purge libreoffice* -y$ sudo apt autoremove -y$ sudo apt autoclean -y# 공식 LibreOffice PPA(Personal Package Archive)를 추가하여 최신 버전 설치$ sudo add-apt-repository ppa:libreoffice/ppa$ sudo apt update$ sudo apt install libreof.. 2025. 2. 21. OrCAD Free Viewer로 .dsn 파일 PDF로 변환하기 OrCAD Free Viewer는 Cadence사의 홈페이지(아래 링크)에서 간단한 정보 제출 후 다운로드 가능하며, 기업에서도 무료로 사용할 수 있다. https://www.cadence.com/en_US/home/tools/pcb-design-and-analysis/orcad/orcad-free-viewer.html 1. .dsn 파일을 연다. 2. file > printer setup 에서 Microsoft Print to PDF를 선택한다. 3. 최상위 스키매틱 폴더를 선택한 상태에서 file > print 로 인쇄한다. 2025. 2. 18. VSCode에서 Makefile 작성시 주의점 (분리 기호가 빠졌음 오류) Makefile 작성시 명령어는 반드시 Tab(탭)으로 시작해야하나 VSCode에서 들여쓰기가 Space(공백)으로 설정되어 있다면 Missing separator(분리 기호가 빠졌음) 이라는 문법 오류가 발생할 수 있다. 그때는 VSCode 왼쪽 하단에 Spaces: 를 클릭한 뒤 명령 팔레트에서 Indent Using Tabs를 선택한다.이미 들여쓰기가 Spaces로 처리된 상태라면 그 아래의 Convert Indentation to Tabs를 선택한 뒤 파일을 저장해주면 들여쓰기가 Tabs으로 변환된다. 왼쪽 하단에 Tab Size라고 표기가 된 상태면 잘 적용된 것이다. 2025. 2. 12. Ubuntu ] ATP 명령어 기본 사용법 1. 패키지 설치 관련 패키지 업데이트sudo apt update 특정 패키지 설치sudo apt install 특정 버전의 패키지 설치sudo apt remove = 특정 패키지가 시스템에 설치되어있는지 확인dpkg -l | grep 또는sudo apt --installed | grep 2. 패키지 삭제 관련 특정 패키지 제거sudo apt remove 특정 버전의 패키지 제거sudo apt remove = 패키지 및 설정 파일까지 완전 제거sudo apt purge 더 이상 필요하지 않은 의존성 패키지 제거sudo apt autoremove 다운로드한지 오래된 불필요한 패키지 캐시 삭제sudo apt autoclean 모든 패키지 캐시 삭제sudo apt clean 3. .. 2025. 2. 9. Linux Kernel ] Container_of Container_ofContainer_of는 리눅스 커널에서 매우 유용하게 자주 쓰이는 매크로로 구조체 멤버의 포인터로부터 해당 멤버가 속한 구조체의 시작 주소를 얻는데 사용된다. Container_of 매크로의 정의는 다음과 같으며, 인자로 '구조체 멤버의 포인터', '전체 구조체의 타입', '구조체 멤버의 이름'을 받고 '전체 구조체의 시작 주소'를 반환한다. #define container_of(ptr, type, member) ({ \ void *__mptr = (void *)(ptr); \ static_assert(__same_type(*(ptr), ((type *)0)->member) || \ __same_type(*(ptr), void), \ "p.. 2025. 2. 6. Linux Kernel ] Error Handling 커널의 에러 코드 정의 리눅스 커널에서 사용되는 에러 코드들은 아래 파일들에 정의되어 있다.- include/uapi/asm-generic/errno-base.h- include/uapi/asm-generic/errno.h errno-base.h 파일은 기본 에러 코드들을 정의하며, error.h 파일은 errno-base.h 파일을 포함하며 추가적으로 아키텍처나 환경에 따라 확장된 에러 코드를 제공한다. errno-base.h/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operatio.. 2025. 2. 3. C ] X-Macro X-Macro란? 매크로 X()를 재정의하여 데이터를 다양한 형태로 확장하는 기법으로, 주로 리스트 데이터를 정의하고 이를 바탕으로 열거형 및 이에 맵핑되는 문자열 배열을 생성하는데 사용된다. 사용 예시 #include // 리스트 정의#define ERROR_LIST \ X(ERROR_NONE) \ X(ERROR_INVALID) \ X(ERROR_TIMEOUT) \ X(ERROR_OVERFLOW)// enum 정의enum {#define X(name) name, ERROR_LIST#undef X ERROR_COUNT};// 문자열 배열 생성const char *ErrorNames[] = {#define X(name) #name, ERR.. 2025. 1. 30. Device tree compiler 사용법 Device tree compiler는 Device tree 파일을 컴파일/디컴파일하기 위한 도구로 아키텍처에 종속되지 않는 독립적인 표준을 따른다. 설치 방법$ sudo apt update$ sudo apt install device-tree-compiler 기본 사용법 (dts ↔ dtb/dtbo) # dtc -I -O -o # dtb -> dts 디컴파일$ dtc -I dtb -O dts -o extracted.dts source.dtb# dts -> dtb 컴파일$ dtc -I dts -O dtb -o compiled.dtb source.dts 현재 시스템(proc/device-tree)의 장치 트리를 dts로 추출 dtc -I fs -O dts -o output.dts /pro.. 2025. 1. 27. MDIO ] Clause 22 vs Clause 45 MDIOMDIO(Management Data Input/Output)는 Ethenet PHY(Physical Layer Device)의 상태를 관리하기 위한 2-wire Serial 통신 프로토콜이다. Ethernet 장비에서 MAC(Media Access Controller)과 PHY 간 통신에 사용되며 PHY 관리는 레지스터에 대한 접근 및 수정 작업을 기반으로 이루어진다.MDIO는 IEEE 802.3 표준 Clause 22으로 최초 정의되었으며 초기 사양에서는 최대 32개의 PHY 장치에서 각각 32개의 레지스터에 접근할 수 있었다. 이후 10G 이더넷 장비의 등장으로 더 많은 고급 기능을 지원하기 위해 IEEE802.3ae 표준 Clause 45에서 MDIO의 추가 사양이 정의되었다. 대표적으로는.. 2025. 1. 25. phytool 사용법 phytool은 리눅스 환경에서 MDIO(Maintenance Data Input/Output) 인터페이스를 통해 PHY 레지스터를 읽고 쓸 수 있는 도구로, 이 도구를 사용하면 이더넷 PHY의 설정 값을 쉽게 확인하거나 변경할 수 있다. 설치 방법 $ git clone https://github.com/wkz/phytool.git$ cd phytool/$ make 아래와 같이 /usr/local/bin/ 경로에 실행파일의 심볼릭 링크를 만들어두면 전역에서 사용할 수 있다.# sudo ln -s /path/to/phytool/phytool /usr/local/bin/ 사용 방법phytool은 print, read, write 명령을 지원하며 Clause 22와 Clause 45 일부를 지원한다. 사용.. 2025. 1. 23. Linux ] SFTP로 파일 전송하기 SFTP는 SSH 기반으로 안전하게 파일을 전송할 수 있는 방법이다. 운영체제와 상관없이 사용할 수 있지만 여기서는 Linux PC에서 사용하는 방법을 소개한다. SFTP 명령어를 사용하여 상대 장치에 접속한다.$sftp username@192.168.55.1 Host PC에서 Remote PC로 파일 업로드 하기sftp>put /path/to/local/file /path/to/remote/destination Remote PC에서 Host PC로 파일 다운로드 하기sftp>get /path/to/remote/file /path/to/local/destination 참고로 디렉토리 전송은 지원하지 않는다. SFTP 세션 종료sftp>bye snap을 사용해 sftpclient를 설치하.. 2025. 1. 21. Jetson ] USB over Internet 다음은 USB를 통해 연결된 Jetson 장치에 인터넷을 공유하기 위해 Ubuntu Host PC에서 IP 포워딩과 NAT(Network Address Translation)를 설정하는 과정이다. 1. /etc/sysctl.conf 파일 편집기로 열기$sudo vim /etc/sysctl.conf 2. #net.ipv4_op_forware=1 주석 해제 후 저장net.ipv4_op_forware=1 3. /etc/sysctl.conf에 변경된 설정 바로 적용하기$sudo sysctl -p 4. NAT 설정하기#iptables -t nat -A POSTROUTING -s -j SNAT --to-source $iptables -t nat -A POSTROUTING -s 192.168.55.1 .. 2025. 1. 19. Ubuntu ] Kernel version 업그레이드 되지 않게 고정하기 현재 설치되어 있는 커널 버전 확인하기$ dpkg -l | grep linux-image또는$ dpkg -l | grep linux- 현재 사용 중인 커널 버전 확인하기$ uname -r 현재 실행중인 커널 버전에서 더이상 업그레이드 되지 않도록 고정하기 (apt upgrade 명령에서 제외)$ sudo apt-mark hold linux-generic linux-image-generic linux-headers-generic 정상적으로 고정 되어있는지 확인하기$ apt-mark showhold 업그레이드 수행$ sudo apt update && sudo apt upgrade 고정 해제 시$ sudo apt-mark unhold linux-generic linux-image-generic lin.. 2025. 1. 17. LDD ] PCIe 디바이스 드라이버 작성하기 - (2) Parallel Port에 대해서먼저 맨땅에 데이터시트를 읽으려니 이해가 힘들어서 Parallel port 프로토콜에 대해 대충 알아봤다. Parallel port란 물리적인 포트를 의미하기도 하지만, 이를 통해 이루어지는 통신 방식도 포함한다. 먼저 Parallel port는 보통 DB-25 커넥터를 사용하며 아래 핀 배열을 기반으로 한다. 핀 번호신호 이름설명방향1Strobe데이터 전송 시작 신호출력2-9Data0-Data78비트 데이터 라인출력(기본)/입력10Ack데이터 수신 확인 신호입력11Busy장치 사용 중 신호입력12Paper-Out용지 부족 신호입력13Select장치 선택 신호입력14Auto Feed자동 줄 바꿈 제어출력15Error장치 오류 신호입력16Initialize장치 초기화 제어출.. 2025. 1. 15. Ubuntu ] 부팅시 화면 멈춤 현상 해결 방법 (nomodeset) 부팅 중 시스템이 멈추는 현상은 보통 커널이 그래픽카드를 초기화하는 과정에 문제가 발생하여 생긴다고 한다. 다음의 방법으로 해결을 시도해보자 1. 부팅 시 GNU GRUB 메뉴에서 e(편집)키를 누른다. 2. " linux /boot/vmlinuz-***"로 시작하는 줄을 찾아 줄 끝에 한 칸 띄고 nomodeset을 입력한뒤 Ctrl+X 또는 F10을 저장한 뒤 빠져나온다. nomodeset은 부팅 중 커널이 KMS(Kernel Mode Setting)를 사용해 그래픽 드라이버를 초기화하지 않도록 방지하고, 대신 기본 드라이버(VESA 또는 fbdev)를 사용하여 최소한의 그래픽 환경을 제공해 화면이 표시되도록 한다. 위의 방법은 1회성 해결책이기에 이렇게 부팅한 이후 올바른 드라이버를 설치하.. 2025. 1. 13. Acer 노트북 Secure Boot disable 하기 부팅 시 F2 키를 연타해 BIOS에 진입한다. Boot 탭에서 Secure Boot가 [Enabled] 된 상태인데 위아래 방향 키를 눌러도 Secure Boot 행으로 이동이 되지 않는다. 그 땐 먼저 Security 탭에서 Set Supervisor Password를 선택해 설정해 준다 그리고 다시 Boot 탭으로 이동하면 Secure Boot가 [Disabled] 상태로 바꿀 수 있다. 2025. 1. 11. Windows ] BitLocker 비활성화 하기 일부 노트북에 Windows Pro 설치 시 BitLocker 기능을 켜지 않았어도 자동으로 활성화되는 경우가 있다. 바로 내 노트북이 그런 경우였다. Win + X > 디스크 관리에서 BitLcoker로 암호화되어 있는지 여부를 확인할 수 있다. BitLocker 복구키 찾기 Microsoft 계정을 사용하여 PC에 로그인하는 경우 BitLocker 복구 키가 자동으로 Microsoft의 클라우드에 백업된다고 한다.아래 웹사이트에서 PC 로그인에 사용하는 계정과 동일한 Microsoft 계정으로 로그인하여 확인할 수 있다.http://go.microsoft.com/fwlink/?LinkId=237614 만약 윈도우 로컬 계정을 사용하고 복구키 백업도 안해둔 상태에서 BitLocker 기능으로.. 2025. 1. 9. C ] TUI ARINC429 비행 데이터 송신 앱 (Text-based User Interface) 개발 배경 :콘솔 창에 그래픽 요소를 추가하여 사용자 친화적인 인터페이스를 구현한 형태를 TUI(Text-based UI) 또는 CUI(Console UI)라고 한다. TUI 사용자로부터 키보드 입력을 받아 프로그램을 제어하고 데이터를 시각적으로 구분하기 위해 박스나 테두리를 활용해 레이아웃을 구성하고 색상을 입혀 데이터를 강조한다.이런 TUI 앱을 한번 만들어봐야지 하고 생각했었는데 마침 적당한 사례를 발견해서 업무상 굳이 필요는 없었지만 개인 시간을 들여 한번 만들어 봤다. 어플리케이션 설명 :이 어플리케이션은 대기 자료 컴퓨터(Air Data Computer)를 시뮬레이션하기 위한 도구로 특정 비행 정보를 정해진 주기로 송신하도록 제어할 수 있다. 현재 송신하고 있는 데이터를 시각적으로 표시하며,.. 2025. 1. 7. 이전 1 2 3 4 ··· 32 다음