임베디드 시스템과 SPI와 같은 통신 프로토콜에서 Polling은 데이터를 읽을 준비가 되었는지 등 조건이 충족되었는지 확인하기 위해 하드웨어 레지스터나 플래그를 지속적으로 확인하는 작업을 포함한다. Polling은 간단한 접근 방식이지만, 특히 리소스가 제한적이거나 단일 코어 시스템에서는 한계가 있는 것이 사실이다.Polling과 Polling이 시스템 성능에 미치는 영향, 그리고 멀티코어 시스템이 이러한 한계를 완화하는 데 어떻게 도움이 되는지 알아보자. Polling in SPI and General CaseSPI 예제에서 Polling은 "data ready" 플래그 (예: SPI_SR_RXNE)가 설정될 때까지 status register를 반복적으로 읽음으로써 데이터가 완전히 수신되었는지 확..
I2C 는 통신 프로토콜이라는 점에서 SPI와 유사하지만 마이크로 컨트롤러 핀 및 주변 장치와의 연결 방식이 약간 다르다. I2C가 칩에 연결되는 방식과 일반적으로 GPIO 또는 MPIO 핀과 상호 작용한 방식은 아래와 같다. I2C Dedicated PinsMicrocontroller I2C Peripheral: 대부분의 마이크로 컨트롤러에는 I2C 통신에 특별히 최적화된 전용 핀이 있는 I2C peripheral module 이 있다. 이러한 모듈은 일반적으로 I2C 프로토콜에 하드웨어적으로 최적화되어 있으며 자동 타이밍 및 동기화 기능을 제공합니다.I2C PinsSDA (Serial Data Line): 장치 간에 데이터를 전달한다.SCL (Serial Clock Line): 통신을 동기화하기 위해..
마이크로 컨트롤러와 주변 장치 (peripheral devices) 간의 연결 및 통신을 위해 널리 사용되는 통신 프로토콜인 CAN (Controller Area Network), SPI (Serial Peripheral Interface) 와 I2C (Inter-Integrated Circuit) 에 대해 알아보자.CAN (Controller Area Network): CAN 은 자동차, 산업 및 의료용 애플리케이션에 여러 장치를 연겨랗기 위해 자주 사용되는 강력한 저속 통신 프로토콜이다. 특히 열악한 환경에서의 신뢰성으로 잘 알려져 있다.FeaturesMulti-Master Capability: bus가 여유가 있을 때 네트워크의 모든 디바이스가 메시지를 보낼 수 있다.Broadcast Communi..
이전 포스팅에 이어 SPI 에 좀 더 알아보자. SPI_receive (uint8_t received_data = 0xAB; ) 는 앞선 예제에서 데모용으로 사용된 placeholder 다. 실제 SPI_receive 구현에서 수신된 데이터는 고정된 값이 아니며 이러한 방식으로 하드코딩되지 않는다. 대신 SPI_receive 는 SPI 데이터 레지스터 또는 SPI 전송이 발생할 때 자동으로 채워지는 하드웨어 버퍼에서 읽는다. 실제 구현에서 일반적으로 작동하는 방식은 아래와 같다. SPI Registers or BUffers: SPI 마스터가 SPI_send 를 통해 데이터를 전송하면 클록 신호가 MOSI 라인을 통해 데이터를 전송하고 동시에 MISO 라인에서 들어오는 데이터를 전송한다. 슬레이브로부터 도..
Nvidia Jetson은 클라우드 기반 프로세싱에 의존하지 않고 네트워크 엣지에 있는 디바이스에 직접 인공지능 및 머신 러닝 모델을 배포하도록 설계된 엔비디아에서 개발한 Edge AI Computing Platform이다. Jetson 플랫폼은 컴팩트하고 전력 효율이 높아 로봇 공학, 자율 주행 차량, 드론, 스마트 카메라, IoT 디바이스 등 실시간 데이터 처리가 필요한 임베디드 시스템에 적합하다. Jetson은 임베디드 시스템에서 중요한데, 높은 컴퓨팅 성능과 효율성, 소형 폼 팩터를 결합해 개발자가 온디바이스 인텔리전스(on-device intelligence)가 가능한 스마트하고 반응성이 뛰어난 디바이스를 만드는 데 두각을 나타낸다. 이는 클라우드 인프라에 대한 의존도를 낮추고 로컬 처리를 유지..
다음은 간단한 GUI 애플리케이션, Signal and Slots을 이용한 이벤트 처리, 파일 I/O 처리를 다루는 Qt의 몇 가지 기본 에제다. 이 예제에서는 기본적인 GUI 요소 처리부터 파일 입출력 수행, 대화창 생성에 이르기까지 필수적인 Qt 기능을 다룬다. Qt의 우연셩과 방대한 문서는 여러 플랫폼에서 복잡한 애플리케이션 개발을 위한 훌륭한 프레임워크다. Simpel GUI Application with a Button and Label: 이 예제에서는 버튼과 레이블이 있는 GUI 애플리케이션을 만든다. 버튼을 클릭하면 레이블 텍스트가 변경된다. 이 예제에서는 버튼의 clicked signal를 버튼 클릭 시 레이블 텍스트를 변경하는 사용자 지정 slot인 onButtonClicked에 연결한다..
Qt는 강력한 크로스 플랫폼 소프트웨어 개발 프레임워크로, 주로 Windows, macOS, Linux, Android, iOS 등 다양한 우영 체제에서 실행할 수 있는 그래픽 사용자 인터페이스 (GUIs)와 애플리케이션을 만드는 데 사용된다. Qt는 자동차 인터페이스, 의료 기기, 데스크탑 및 임베디드 시스템용 소프트웨어와 같이 복잡하고도 고도로 상호 작용하며 성능에 민감한 애플리케이션이 필요한 분야에서 널리 사용된다. 다음은 핵심 기능에 대한 분석이다. Widgets and UI Elements: Qt는 버튼, 텍스트 상자, 슬라이더 등 사전 빌드된 UI 컴포넌트의 광범위한 컬렉션을 제공하므로 풍부한 데스크탑 애플리케이션을 쉽게 빌드할 수 있다.Cross-Platform: 운영 체제 차이에 따른 추상..
Multithread Programming의 사용 예를 살펴보자. 디스플레이 디바이스 드라이버는 운영 체제나 애플리케이션에서 디스프레이 하드웨어 (예: 모니터 또는 스크린)로 그래픽 데이터를 전송하는 방법을 관리한다. 이러한 드라이버는 프레임 렌더링, 사용자 입력 처리, 하드웨어 인터럽트 관리 등 여러 작업을 동시에 처리해야 한다.아래는 디스플레이 디바이스 드라이버에서 멀티스레딩이 일반적으료 사용되는 주요 영역이다. 이러한 모든 경우에 Multithread Programming은 디스플레이 렌더링, 사용자 입력 및 하드웨어 통신과 관련된 다양한 작업을 동시에 처리하여 성능과 응답성을 향상시키는 데 도움이 된다. 이러한 시스템에서는 여러 스레드가 프레임 버퍼와 같은 공유 리소스에 조정된 방식으로 액세스해 ..
Display나 Peripheral과 같은 디바이스 드라이버를 개발할 때는 Multithread Programming이 필요한 경우가 많다. 디바이스 드라이버의 경우 일반적으로 하드웨어 인터럽드 응답, I/O 요청 관리, 하드웨어와 소프트웨어 구성 요소 간의 월활한 통신 보장 등의 동시 작업을 처리하기 위해 다중 스레드가 사용된다. Multithread Programming 동시 작업 처리를 가능하게 하고, 성능을 개선하며, 운영 체제, 하드웨어 및 사용자 애플리케이션 간의 원활한 상호 작용을 보장함으로써 디바이스 드라이버 개발에서 중요한 역할을 한다. 디바이스 드라이버 개발에서 멀티스레딩이 어떻게 활용되는지는 아래와 같다. Hanlding Interrupt: 디바이스 드라이버는 종종 하드웨어 인터럽트에..
Multithread Programming은 단일 프로세스 내에 여러 개의 스레드를 생성해 동싱에 작업을 실행하는 기술이다. 스레드는 프로세스의 작은 단위로, 각각 고유한 메모리를 가진 개별 프로세스와 달리 동인한 메모리 공간과 리소스를 공유한다. Multithread Programming을 사용하면 프로그램이 여러 작업을 동시에 수행할 수 있으므로 특히 I/O 작업, 사용자 인터페이스 또는 병렬 계산을 처리하는 애플리케이션에서 효율성과 응답성이 향상된다.Multithreading에서는 race conditions, deadlocks와 같은 문제를 방지하기 위해 리소스와 동기화를 신중하게 관리해야 한다. Multithreading은 게임, 실시간 시스템, 웹 서버, GUI 애플리케이션 등의 분야에서 성능..
- Total
- Today
- Yesterday
- 소켓 프로그래밍
- 머신 러닝
- ml
- Android
- 리트코드
- 파이썬
- Hash Map
- 오블완
- 안드로이드
- tf-idf
- DICTIONARY
- The Economist
- 딕셔너리
- min heap
- machine learning
- 투 포인터
- vertex shader
- join
- Python
- The Economist Espresso
- leetcode
- Computer Graphics
- 티스토리챌린지
- socket programming
- defaultdict
- 이코노미스트
- java
- C++
- I2C
- 이코노미스트 에스프레소
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |