본문 바로가기

전체 글618

728x90
반응형
RTSC(Real Time Software Components)란? 본 글은 2016년 4월 11일 0시 11분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. RTSC(Real Time Software Components)는 임베디드 시스템의 컴포넌트 기반 개발을 위해 기초 툴과 로우 레벨 런타임 콘텐츠를 제공하며 모든 임베디드 플랫폼에서 C언어로 사용하는 목표로 한다. 임베디드 시스템에는 기존의 다른 컴포넌트 기술이 있지만 RTSC는 DSP들과 16비트 마이크로컨트롤러 같은 리소스 제약이 심한 환경에서 사용이 가능하다는 것에서 차별점이 있다. 현재 RTSC 프로젝트는 TI(Texas Instruments)가 제공하는 XDCtools로 개발이 가능하다. XDCtools는 무료로 다운로드 받을 수 있다. RTSC는 이클립스의 인큐베이션 프로젝에 있.. 2020. 10. 14.
RedBearLab CC3200의 개발환경 소개 본 글은 2016년 4월 14일 11시 38분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. RedBearLab CC3200의 개발환경은 크게 두 가지 분류가 있다. 하나는 Energia이고 다른 하나는 CCS(Code Composer Studio)이다. 이 두 개의 환경은 관련 개발의 지식과 숙련도, 개발특징 및 기간에 따라서 선택하는 것이 좋다. Energia는 Arduino와 비슷한 형태의 IDE로써 Arduino를 접해본 적이 있다면 어렵지 않게 금방 CC3200 개발이 가능하다. Energia의 라이브러리와 예제는 CCS보다 풍부한 편이고 쉽고 빠른 개발에 초점이 맞춰져 있어서 프로토타입이나 데모버전 개발에 쓰면 꽤나 괜찮다. 아무래도 Energia로 개발하는 것이 속도.. 2020. 10. 14.
MQTT로 개발하는 것이 무조건 좋은 것인가? 본 글은 2016년 3월 29일 17시 28분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 현재(2020년 10월 14일)의 MQTT시장과는 상황이 전혀 다릅니다. MQTT를 써야한다면 쓰면 됩니다. MQTT 프로토콜이 적합한 경우 환경과 시나리오, 준비된 기술에 따라서 적합한 프로토콜이 있다. MQTT의 경우 1999년 네트워크의 신뢰성이 낮고 연산과 처리속도, 메모리가 극히 제한적인 상황을 고려해서 설계가 되었기에 2016년 현재 이러한 특징을 살릴 수 있는 상황이 아니라면 MQTT가 큰 의미는 없을 수 있다. 예를 들어 사용할 수 있는 네트워크의 단위 시간당 처리량이 크고 패킷 이용로가 아주 저렴할 때 IoT 장비가 이 네트워크를 사용해서 한달동안 100MB의 패킷을 절약.. 2020. 10. 14.
안드로이드폰을 PC에 연결시 unknown device 문제 본 글은 2016년 3월 18일 13시 38분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 안드로이드폰을 PC에 연결하였는데 인식이 제대로 되지 않고 unknown device라고 뜰 때가 있다. 이 현상의 원인에는 여러가지가 있지만 나의 경우에는 선이 불량이었다. 원래 잘 되던 선이었는데 어느 날 부터 안 되는 것을 보아 단선된 것 같다. 옆에 있던 다른 분의 선으로 안드로이드폰을 연결하니 바로 인식되었다. 씁쓸하다. 이 문제로 날린 시간이 하루나 된다. 위의 현상이 발생한 환경을 적어둔다. 윈도우7 x64, i5-4440, DDR3 16GB, USB2.0/3.0 2020. 10. 14.
[네트워크] 무선통신환경에서 충돌 감지를 통해 매체접근제어를 하지 않는 이유 본 글은 2016년 3월 14일 8시 13분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 여러 노드가 하나의 공유매체를 통해 통신을 한다면 동시에 정보를 전송할 경우 정보의 깨짐 현상이 나타날 수 있다. 이러한 현상을 충돌(Collison)이라고 하는데 유선(송수신이 동시에 가능하다는 전제가 있다)에서는 CSMA/CD라는 기법으로 충돌을 감지해서 적절하게 공유매체 사용을 제어한다. 유선에서는 공유매체를 통해 전송할 때 전송한 데이터를 거의 동시에 수신할 수 있기 때문에 정상적으로 전송되면 전송하려고 했던 데이터와 수신한 데이터가 동일하다. 하지만 충돌이 나면 전송하려고 했던 데이터와 수신한 데이터가 다른 것을 즉시에 알 수 있고 이 차이를 통해 충돌 감지를 한다. 하지만 무선에.. 2020. 10. 14.
NS-3에서 UAN 프레임워크로 IPv4 수중 시뮬레이션을 하는 방법 본 글은 2016년 10월 11일 17시 31분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3에서 UAN 프레임워크로 IPv4 수중 시뮬레이션을 하는 것이 가능한 지 조사해보았다. UAN 프레임워크로 생성된 노드는 기본적으로 0-255의 한 바이트(unit8_t) 주소를 부여 받는다. 즉 기본적으론 IPv4를 지원하지 않는다. 이를 해결하기 위한 방법으로 두 가지가 있는데 하나는 적응계층(adaptation layer)을 두는 것과 다른 하나는 NS-3에 구현되어 있는 IPv4 관련 클래스를 수정해서 UAN 프레임워크의 주소를 관리하도록 만드는 것이다. 관련 링크 1 : https://groups.google.com/forum/#!msg/ns-3-users/ag2CoKE.. 2020. 10. 14.
NS-3 로그의 종류와 로그를 터미널에 출력하는 법 본 글은 2016년 10월 14일 12시 56분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3는 각종 정보를 저장하고 확인하기 위한 로그를 지원한다. 이런 로그 정보는 파일로 저장 될 수도 있고 터미널에서 실시간으로 확인할 수도 있다. 로그의 종류는 아래와 같다. 종류 의미 LOG_LEVEL_ERROR 오류가 발생 했음을 의미하는 로그 LOG_LEVEL_WARN 경고용 로그 LOG_LEVEL_DEBUG 디버깅용 로그 LOG_LEVEL_INFO 각종 정보를 알려주는 로그 LOG_LEVEL_FUNCTION 함수 추적(tracing)을 위한 로그. LOG_LEVEL_LOGIC 함수안에서 추적흐름제어(control flow tracing)을 위한 로그 LOG_LEVEL_ALL .. 2020. 10. 14.
[네트워크] OSI 7계층 - 물리 계층 소개 및 프로토콜 설명 본 글은 2016년 3월 14일 13시 5분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. OSI 7계층의 가장 하단에 있는 계층은 물리계층이다. 물리계층은 전송매체의 물리적 인터페이스에 관한 사양을 기술한다. 다시말해서 정보를 표현한 신호(Signal) 교환 문제를 다루는 계층이다. 물리계층의 프로토콜은 하드웨어적 명세와, 인코딩/디코딩, 시그널링, 토폴로지와 같은 물리적 네트워크 디자인을 고려하여 정의하며 대표적인 프로토콜로 RS-232, V.24가 있다. 물리 계층의 프로토콜에는 전송속도/신호의 레벨/인코딩/디코딩 등 전기적 신호 규격과 송수신 호스트 사이의 클럭 동기화 방법, 전송매체의 규격과 같은 내용이 담길 수 있다. 2020. 10. 14.
왜 TCP/IP에서는 OSI의 5,6,7계층이 하나의 계층에 들어가는가? 본 글은 2016년 2월 26일 9시 58분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. TCP/IP의 어플리케이션 계층은 OSI 7계층의 어플리케이션 계층과 표현(프레젠테이션)계층, 세션계층이 해당에 해당한다고 흔히 알고 있다. 그럼 왜 TCP/IP에서는 ISO(International standasdasdasda)가 심혈을 기울여 만든 OSI 7계층의 3개 계층을 1개의 계층으로 표현했을까? 라는 의문이 들 수 있다. 나도 의문이 들었던 사람 중 한 명으로서 이 의문의 해답을 얻으려 했지만 쉽게 얻지는 못 했다. 나는 지금까지 흔히들 알고 있는 내용인 "지나친 계층화는 각 계층 간의 커뮤니케이션이 불필요하게 많이 일어나게 만드는 문제가 있다. 이는 비용(메모리사용량증가, 수.. 2020. 10. 14.
[네트워크] OSI 7계층 - 어플리케이션 레이어와 어플리케이션은 어떻게 다른가? 본 글은 2016년 3월 9일 7시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 네트워크 관련 공부를 하면 'OSI 7계층의 어플리케이션 레이어와 어플리케이션은 같은가? 다른가?'라는 질문을 자주 들을 수 있다. 난 이 질문을 받았을 때 다르다고 생각했지만 확실한 용어 정의를 가지고 있지 않았기에 시원하게 답을 하지는 못 했다. 아래는 내가 생각하는 답이다. "다르다. OSI 7계층은 컴퓨터의 통신을 기능별로 7개의 계층으로 분류한 것이며 각 계층에는 계층의 존재 목적을 이룩하기 위하여 통신을 할 때 이용할 특정한 통신을 위한 규칙을 정하는데 이 특정한 규칙을 프로토콜이라고 한다. 즉, 어플리케이션 레이어는 어플리케이션(또는 사용자, 호스트)이 네트워크 통신할 수 있도록.. 2020. 10. 14.
MQTT(Message Queuing Telemetry Transport, 엠큐티티) 개요 본 글은 2016년 3월 29일 11시 58분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. MQTT(Message Queuing Telemetry Transport, 엠큐티티)는 Publish–Subscribe 기반의 경량 메시징 프로토콜이다. 응용계층의 프로토콜로로써 1999년에 IBM과 Eurotech에 의해 제한된 리소스(적은 배터리)를 가진 가진 센서가 사용하는 목적으로 개발하였다. 2013년부터 OASIS(Advaning open standards for the information society)가 표준화를 진행 중이다. 발행-구독 모델을 기초로 제작된 프로토콜이다. 기본포트는 1883이며 SSL용으로 8883을 쓴다. 신뢰성 있는 메시지 전송을 위해 세 종류의 Qo.. 2020. 10. 13.
[네트워크] 크로스레이어 프로토콜(Cross Layer Protocol)이란? 본 글은 2016년 11월 1일 11시 13분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 크로스레이어 프로토콜(Cross Layer Protocol)이란 한 계층의 프로토콜의 상태나 동작이 다른 계층(Layer)에 속한 프로토콜의 동작에 영향을 주는 것을 말한다. 예를 들어서 데이터링크(Data Link)계층에 속해 있는 프로토콜이 수집한 이웃 노드의 연결 품질(Link Quality)정보가 네트워크계층에 속한 프로토콜의 경로결정(Routing)에 영향을 주는 경우와 물리계층에 속한 프로토콜의 전력제어(Power Control)에 영향을 주는 경우 등이 있다. 전력제어와 관련된 크로스레이어 프로토콜의 한 예시를 설명 하자면 네트워크에 노드 A와 B와 C가 있고 서로 통신하는 .. 2020. 10. 13.
[네트워크] 듀티 사이클(Duty Cycle) 소개 본 글은 2017년 12월 16일 15시 50분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 통신 및 네트워크에서 흔히 말하는 듀티사이클(Duty Cycle)이란 주기적으로 장치가 켜지고 꺼지는 것을 말한다. 이는 주로 전력을 절약하기 위해 사용되며 흔히 통신 인터페이스의 전원을 껐다가 켜는 동작을 수행한다. 켜져 있을 때는 깨어있다(Wake up)하고 꺼져 있을 때는 자고 있다(Sleep)라고 말하는 것이 일반적이다. 위의 그림처럼 듀티 사이클을 나타낼 수 있으며 해석하면 t1에서 t2 시간 사이에는 장치는 켜져 있고 t2에서 t3에는 장치가 꺼져 있는 것을 알 수 있다. 2020. 10. 13.
아이폰에서의 와이파이 다이렉트 지원 여부 조사 본 글은 2017년 6월 23일 13시 35분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 아이폰이 와이파이 다이렉트(Wi-Fi Direct, Wi-Fi P2P)를 지원하는 지에 대해서 조사할 필요가 있어서 조사하게 되었다. 아이폰에서는 블루투스와 와이파이, 와이파이다이렉트, 이더넷 등의 인터페이스를 각기 독립적으로 사용하는게 아니라 여러 인터페이스를 하나처럼 사용할 수 있도록 MultipeerConnectivity라는 프레임워크를 제공하고 있다. 애플 개발자 문서: https://developer.apple.com/documentation/multipeerconnectivity 해당 프레임워크를 사용하면 아이폰에서 지원하는 인터페이스들을 활용하여 근처의 디바이스와 서비스를 찾.. 2020. 10. 13.
NS-3 UAN 모듈에 IPv6를 올리다가 생긴 PacketSocketHelper 중복 사용 문제 본 글은 2016년 12월 5일 20시 12분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. UAN(Underwater Acoustic Networks) 모듈에 IPv6를 올려서 예제를 만드는 도중에 발생한 오류이다. IPv6나 IPv4를 노드(Node)에 올리다가 생기는 문제는 주로 PacketSocketHelper의 중복 사용 문제이다. InternetStackHelper가 PacketSocketHelper를 이미 쓰고 있기 때문에 나타나는 현상이라서 소스를 잘 살펴서 PacketSocketHelper가 중복 사용되는 부분만 지워주면 된다. 에러 메시지는 다음과 같다. Object::AggregateObject(): Multiple aggregation of objects o.. 2020. 10. 13.
TCP/IP가 성공한 이유는 무엇일까? 본 글은 2017년 11월 25일 0시 15분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 현재 대부분 통신이 TCP/IP 환경기반이다. 하지만 네트워크 관련 공부를 하다보면 OSI 7 Layer가 꼭 나오는데 이는 OSI 7 Layer가 비록 산업적으로나 상업적으로 성공하지는 못 했지만 새로운 네트워크 계층이나 프로토콜을 생각할 때 참고자료로써의 가치가 있기 때문이다. 그럼 왜 TCP/IP가 아닌 OSI 7 Layer가 참고자료로써의 가치가 아직까지도 있는데에도 왜 TCP/IP가 성공했는 지에 대해서 의문이 생긴다. 조사한 결과 이는 TCP/IP가 OSI 7 Layer보다 빨리 출시되었고 이기종간 통신 프로토콜이 최대한 빨리 필요한 미국방성에서 TCP/IP를 공식적으로 사용했.. 2020. 10. 13.
IPv4(Internet Protocol Version 4) 개요와 패킷 구조 본 글은 2017년 5월 29일 8시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. IPv4(Internet Protocol Version 4)는 1981년 9월에 IETF RFC 791에 정의된 TCP/IP에서 활용하는 네트워크 주소체계이다. 현재 IPv6와 함께 가장 강력한 인터넷 주소체계로 인정 받는다. IPv4에서는 네트워크 주소를 총 32비트로 표현하기 때문에 약 43억개의 주소를 나타낼 수 있다. 2011년 2월 4일부터 모든 공인 IPv4 주소가 소진되어 IPv4의 공인 IP 할당이 중지되었다. 네트워크에서의 주소를 표현하기 때문에 IPv4는 TCP/IP의 네트워크 레이어에 해당하는 프로토콜이다. 이 프로토콜의 패킷을 데이터그램이라고 부른다. IPv4의 패킷 .. 2020. 10. 13.
저장소 변경으로 라즈베리파이의 업데이트 속도를 빠르게 해보자 요약 라즈베리파이 저장소 미러 사이트에 가서 저장소 목록 확인 /etc/apt/sources.list 파일의 저장소 목록을 수정 저장소를 변경하는 이유 난 하드웨어와 소프트웨어는 순정 상태로 쓰는 것을 좋아한다. 그래서 어지간하면 기본 세팅되어 있는 저장소를 그대로 쓰고 싶은데 라즈베리파이의 경우 기본 저장소가 너무 느려서 개발 환경 세팅을 하는데 시간이 너무 오래 걸린다. 그래서 난 라즈베리파이를 세팅할 때 저장소를 한국에 있는 라즈베리파이 저장소 미러로 변경한다. 저장소 정보 확인 sudo vi /etc/apt/sources.list 먼저 /etc/apt/ 에 위치한 sources.list 파일을 열어본다. 파일을 보면 위와 같이 저장소 목록이 설정되어 있는 것을 확인할 수 있다. 빠를 것 같은 미러.. 2020. 10. 13.
NS-3에 적합한 통합개발환경(IDE)은 무엇일까? 본 글은 2017년 6월 15일 22시 24분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. NS-3에 적합한 IDE를 검토한 이유 본격적으로 내가 네트워크 시뮬레이터를 사용해야하는 상황이 도래했다. 내가 소속되어 있는 연구실은 주로 NS-2와 NS-3를 네트워크 시뮬레이터로 사용하고 있으며 새롭게 네트워크 시뮬레이션을 익히는 자에게는 NS-3 사용을 권장하고 있다. 사실 나의 경우 작년에는 NS-3를 해도 gedit이나 Geany 같은 텍스트 에디터와 터미널 창으로 꾸역꾸역 버텨왔는데 이 경우 코드 추적, 자동완성 등의 기능을 사용하지 못 해서 생산성이 극단적으로 좋지 않았다. 안드로이드나 윈도우 개발을 주로하던 나에게는 이런 말도 안 되는 생산성으로 결과를 만들어 내니 꽤나 .. 2020. 10. 13.
라즈베리파이에서 BLE Advertising channel을 설정해보자 본 글은 2017년 6월 23일 22시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. Bluetooth Low Energy의 Advertising Channel 위의 사진과 같이 BLE(Bluetooth Low Energy)는 37번, 38번, 39번 채널에다가 Advertising을 할 수 있다. 하지만 기본설정으로는 3개의 채널을 번갈아가면서 Advertising하는 동작을 수행하기에 실험때문에 라즈베리파이의 블루투스의 Advertising 채널(channel)을 고정해야할 필요가 있어서 조사해보았다. 애플(Apple)의 BLE Advertising Channel ※ 참고: 현재 구글의 안드로이드나 애플의 iOS는 3개의 채널을 번갈아가면서 Advertising하는 동.. 2020. 10. 11.