본문 바로가기

전체 글

(196)
[개념] USB 통신 1. Host가 Device의 가상 장치 정보(Class, Subclass)를 가져온다.ClassSubclass USB CDCCDC ACM시리얼 통신 장치CDC ECM이더넷 통신 장치USB MSC없음저장 장치※ CDC(Communication Device Class), MSC(Mass Storage Class)※ ACM(Abstract Control Model), ECM(Ethernet networking Control Model) 2. Host는 가져온 장치 정보를 기반으로 드라이버를 활성화한다.해당 드라이버가 로딩되면, OS는 이를 추상화된 장치 파일로 나타낸다.즉, 가상 포트가 생성되어 장치를 사용할 준비가 된다. 3. 사용자 프로그램은 이 가상 포트를 통해 데이터를 송수신한다.예를 들어, 가상 포..
공유 폴더 설정하고 사용하기 1. 공유 폴더 설정VirtualBox 관리자에서 설정버튼을 누르고 공유 폴더 탭을 선택한다. 그리고 머신 폴더를 더블 클릭하여 공유 편집에 들어가 아래 그림처럼 입력한다. 2. CD 이미지 삽입아래 그림처럼 장치 -> 게스트 확장 CD 이미지 삽입을 선택한다. 그러면 아래 그림처럼 media -> 사용자 이름 directory -> VBox_GAs_6.1.28 directory가 생성된다. 3. Bzip2 설치sudo apt updatesudo apt install -y bzip2 4. Guest Additions 설치sudo ./VBoxLinuxAdditions.run 5. 사용자 그룹 추가 6. 재부팅sudo reboot 7. 공유 폴더 생성 확인아래 그림처럼 media에 sf_0A라는 공유 폴더가..
Oracle VM VirtualBox에 Ubuntu 22.04 LTS 설치하기 여기서 Oracle VM VirtualBox의 버전은 7.1.10을 사용했습니다.https://powerdeng.tistory.com/196 VirtualBox-7.1.10 설치 후 ova파일 가져오기1. 아래 링크에서 VirtulalBox와 Extension Pack을 다운로드 한다.https://www.virtualbox.org/wiki/Downloads Downloads – Oracle VirtualBoxThis VirtualBox Extension Pack Personal Use and Educational License governs your access to and use of the Vpowerdeng.tistory.com 1. 아래의 Ubuntu 공식 웹사이트에서 Ubuntu 22.04.5..
UART 직렬 통신의 기본 개념과 데이터 전송 구조 직렬 통신에서 송신기는 데이터를 1비트씩 순차적으로 전송합니다. 수신기는 이 비트들을 1비트씩 받아들이고, 이를 프레임 단위로 해석합니다. 이는 UART 통신이 비동기 방식으로, 송신기와 수신기가 공통의 클럭 신호 없이 통신하기 때문에, 수신기에서 Start bit와 Stop bit를 통해 데이터의 시작과 끝을 확인하고 동기화해야 하기 때문입니다.  UART 통신에서의 프레임은 아래와 같은 구조를 가집니다.1. Start bit(1bit)데이터 전송의 시작을 알리는 신호로, UART 통신 프로토콜에 따라 항상 ‘0’으로 고정되어 있습니다. UART 통신에서 대기 상태일 때 기본 신호는 ‘1’로 유지되는데, 이 상태에서 Start bit로 ‘0’이 전송되면 수신기는 데이터 전송이 시작되었음을 인식하게 됩니..
UART 데이터 전송 과정 UART(Universal Asynchronous Receiver-Transmitter)는 데이터를 직렬로 전송하는 통신 프로토콜이며, UART 컨트롤러는 이 프로토콜을 처리하는 하드웨어 모듈입니다.1. 데이터 쓰기 - DAT 레지스터데이터를 UART 컨트롤러로 전송하기 위해서는 UART_WRITE 함수를 호출하여 전송할 데이터를 UART의 DAT 레지스터에 기록합니다. 예를 들어, UART_WRITE(84)와 같이 84라는 값을 DAT 레지스터에 기록할 수 있습니다. 2. 송신 FIFO로 데이터 이동DAT 레지스터에 값이 기록되면, 이 데이터는 자동으로 송신 FIFO로 이동합니다. 송신 FIFO는 여러 데이터 패킷을 일시적으로 저장하여 순차적으로 전송할 수 있도록 대기열을 형성하는 역할을 합니다. 3...
오픈 소스 분석 방법 1. 소스 개념 파악소스가 어떤 환경에서 돌아가는지, 어떤 형태로 구성되어 있는지, 어떤 용도인지 등을 파악한다.예를 들면 어떤 소스를 열어보니 아래와 같은 파일이 있었다고 가정해보자.예시1)abcdefg.jspowerdeng.jsIndex.js예시1의 소스는 node.js 런타임에 돌아가는 소스이다. 여기까지 파악하기 위해 node.js, 런타임, 컴파일 방법 등을 찾아보면서 개념을 정리해야 한다.예시2)powerdeng.cMakefile예시2의 소스는 리눅스에서 돌아가는 c파일이다. 마찬가지로 makefile 등을 찾아보면서 개념을 정리해야 한다. 2. 환경 구축파일 및 크로스 컴파일을 통해 소스가 돌아갈 수 있는 환경을 만들어야 한다. 3. 실제 기기에 PortingBreak point를 찍을 수 ..
Node.js Node.js란? Node.js는 JavaScript 언어로 만든 프로그램들을 실행할 수 있는 환경이다. 즉, Node.js는 JavaScript 런타임(=실행 환경)이다. ● JavaScript HTML에 종속되어 있는 언어로 HTML 조작과 변경을 위해 사용한다. ● HTML HyperText(웹 페이지에서 다른 페이지로 이동할 수 있도록 하는 것)기능을 가진 문서를 만드는 언어이다. ● 런타임 특정 언어로 만든 프로그램들을 실행할 수 있는 환경 Node.js는 어디에 사용되는가? Node.js는 서버를 만드는데 주로 사용된다. 특히 크기가 작은 데이터를 실시간으로 주고 받는데 적합해서 실시간 채팅이나 주식 차트 등에 많이 사용된다. 반면에 비디오나 대규모 데이터 처리 같이 CPU를 많이 사용하는 작..
String에 무한히 값을 넣어도 될까? String str; char value = 'a'; while(1) { str += value; } 위와 같은 코드는 이론적으로는 str 문자열에 문자를 계속 추가할 수 있다. 하지만 메모리 제한으로 인해 문제가 발생한다. while문이 계속 실행됨에 따라 str 문자열의 크기가 계속 증가하여 결국 시스템에서 사용 가능한 모든 메모리를 소비하게 된다. 시스템에 메모리가 부족해지면 프로그램이 충돌하거나 오류가 발생할 수 있다. 결론적으로 이 코드는 이론적으로 str 문자열에 무한한 수의 값을 넣으려고 하지만 실제로 프로그램에서 사용할 수 있는 메모리 양에 의해 제한된다.