본문 바로가기

전체 글949

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.
C] 콘솔 프로그램 플리커 현상 개선하기 (더블 버퍼링 & 오프스크린 버퍼) 콘솔 화면을 주기적으로 갱신하는 프로그램을 개발 시 화면이 깜빡이는 플리커(flicker) 현상이 발생할 수 있다. 이번 글에서는 이런 플리커 현상을 개선하기 위한 전략을 알아보자.  먼저 대략 60fps로 7세그먼트 형식의 디지털시계를 출력하는 C언어 프로그램을 작성해보았다. 프로그램을 실행시키면 아래 이미지 처럼 화면이 깜빡이면서 출력되는 것을 볼 수 있다.    1. 플리커 현상의 원인은? 플리커 현상은 화면 갱신 과정에서 발생하는 중간 상태가 사용자에게 노출되면서 발생한다. 아래 코드를 보면 system("cls")를 사용해 화면을 완전히 지운 후, 초기화된 화면에 새로운 데이터를 출력하고 있다. 이 과정이 빠르게 반복되면서 빈 화면과 새 데이터를 그리는 중간 상태가 짧은 시간 동안 화면에 보여지.. 2025. 1. 5.
SCPI 사용해 DC Power supply 제어하기 이전에 SCPI에 대한 글을 썼었는데 이번에는 SCPI를 직접 사용하여 계측장비를 제어해보도록 한다. SCPI(Standard Commands for Programmable Instruments)란? 다양한 계측 장비를 프로그래밍하기 위한 표준화된 명령어 세트이다. SCPI 명령어는 주로 장비를 원격으로 제어할 때 사용되며 여러 제조사의 다양한 장비 간 호환성을 확보하도록 개발되었다. Standard라는 말이 무색하게도 명령어 셋은 장비별로 차이가 있기 때문에 매뉴얼을 찾아보면 된다.    내가 다룬 GW INSTEK 사의 GPD-4303S 제품은 후면 USB Type-B port를 통해서 PC와 연결하고 Com port를 아래와 같이 설정하면 시리얼 인터페이스로 제어할 수 있다.   명령어는 직관적인 .. 2025. 1. 3.
Ubuntu ] 18.04에서 20.04로 업그레이드 하기 우분투 18.04에서 20.04로 업그레이드하는 과정을 정리한다. 업그레이드 시 시스템파일과 패키지는 업데이트되고 사용자의 홈 디렉토리는 그대로 유지된다.   1.현재 시스템 확인$ lsb_release -a$ uname -r  2. 현재 시스템 업데이트 업그레이드 전 시스템을 최신 상태로 유지한다.$ sudo apt update && sudo apt upgrade -y 더이상 사용하지 않는 패키지는 삭제한다.$ sudo apt autoremove -y    3. 업그레이드 도구 설치 업그레이드 도구가 설치되어 있는지 확인한다.$ sudo apt install update-manager-core   4. PPA(추가저장소) 비활성화 업그레이드 과정에서 PPA(Personal Package Archive).. 2025. 1. 1.
VSCode에서 리눅스 커널 모듈 개발시 Intellisense Error 없애기 Workspace에서 .vscode/c_cpp_properties.json 추가 (Ctrl + Shift + P > Edit Configuration) 그리고 커널 모듈 코드 작성시 필요한 매크로와 헤더 경로를 추가해주면 된다. { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include", "/usr/local/include", "/usr/src/linux-headers-5.4.0-150-generic/include", .. 2024. 12. 29.
Linux와 Windows 듀얼 부팅시 시간이 어긋나는 문제 해결하기 문제 원인컴퓨터에는 RTC(Real-Time Clock)라는 칩이 메인보드에 내장되어 있는데, RTC는 배터리 전원을 사용해 컴퓨터가 꺼져 있어도 지속적으로 시간을 카운팅하는 기능을 한다. 그리고 컴퓨터가 다시 켜지면 운영체제는 RTC에 저장된 시간을 불러오고 이후에는 소프트웨어적으로 시스템 시간을 관리한다. 하지만 윈도우와 리눅스가 RTC에 시간을 저장하는 방식에 차이가 있는데 윈도우는 로컬 타임을 저장하고, 리눅스는 UTC를 저장한다. 때문에 윈도우와 리눅스를 번갈아 부팅할 경우 시간이 어긋나는 문제가 발생할 수 있다.   문제 해결 방법 문제 해결을 위한 2가지 방법을 생각해 볼 수 있겠다. 리눅스가 하드웨어 시계를 로컬 시간으로 처리하도록 하는방법윈도우가 하드웨어 시계를 UTC로 처리하도록 하는 .. 2024. 12. 27.