본문 바로가기

전체 글682

728x90
반응형
CCS(Code Composer Studio)로 CC3200 개발환경 구성하기 본 글은 2016년 4월 14일 11시 46분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. CCS(Code Composer Studio) v6로 개발환경을 구성하는 과정이다. Windows7 64비트 환경에서 수행하였고 앞으로의 글에서도 Windows7 64비트 환경과 CCS v6를 가정하고 쓴다. 다른 OS에서는 이 글 처럼 안 될 수도 있다는 점을 밝힌다. 1. RedBearLab CC3200과 PC를 USB를 연결한다. 장치관리자에서 기타 장치로 드라이버가 안 잡혀있는 것을 확인할 수 있다. 2. mbedWinSerial_16466 드라이버를 설치한다. 다운로드 : https://developer.mbed.org/media/downloads/drivers/mbedWinSe.. 2020. 10. 28.
CC3200 와이파이 연결이 안 될때 본 글은 2016년 4월 18일 21시 51분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. RedBearLab의 CC3200이 와이파이 연결이 안 되는 이유는 코드 문제일 수도 있지만 코드 문제가 없다면 AP의 와이파이 채널을 바꿔보는 것도 한 방법이다. 나의 경우 정상적으로 와이파이에 잘 연결되다가 어느 날 부터 연결이 되지 않았는데 AP가 재시작하면서 채널을 변경해서 생긴 문제였다. 경험자에게는 너무나 당연한 이야기일 수도 있으나 이런 경우가 처음인 나에게는 굉장히 황당한 경우였다. 문제가 발생한 환경은 아래와 같다. AP : A5004NS v9.93.2 채널 12 1번~12번채널까지 수십개의 AP가 있는 매우 혼잡한 환경 CCS의 예제도 마찬가지이고 Energia에 있는 .. 2020. 10. 14.
CentOS 7에서 Tomcat 7 가상호스트 설정시 주의사항 본 글은 2016년 4월 18일 16시 14분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. 톰캣 서버를 구축하면서 가상호스트 설정이 안 되서 꽤나 애먹었다. 과거에 몇 개의 서버 구축한 경험도 있고 정상적으로 돌아가던 서버의 설정을 가능한 그대로 들고왔는데도 발생한 에러라서 좀 당황스러웠다. CentOS7에서 Tomcat7 가상호스트 설정시 문법적으로 아무런 문제가 없는데도 에러없이 가상호스트 설정이 안 된다면 속성의 배열 순서를 바꾸는 것을 권장한다. example.com 의미 없이 7시간을 날렸다. 문제가 발생한 환경은 아래와 같다. CentOS 7 tomcat 7.0.54 openJDK 1.8.0.77 x64 2020. 10. 14.
MQTT 서버(브로커) 프로그램 목록 및 정보 본 글은 2016년 3월 30일 17시 34분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다. HTTP에 Apache와 NginX, IIS, Tomcat이 있듯이 MQTT에도 Mosquitto와 HiveMQ, WebSphere MQ가 있다. Github에 있는 MQTT 프로젝트의 위키에 가면 MQTT 목록과 지원 되는 기능을 한 눈에 볼 수 있는 표가 있다. 아래가 그 표인데 표에 나타난 모든 기능을 지원하는 서버가 대다수 상용인 점을 고려하면 저비용에 개발하기에는 아직은 시기상조이지 않을까 생각이 든다. ※ 참고 : MQTT에는 브로커(Broker)라는 개념이 있는데 서버-클라이언트 모델의 서버에 해당한다. 현재 MQTT 관련 자료들을 살펴 보면 브로커의 개념을 브로커와 서버라는.. 2020. 10. 14.
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.