맥 OS X에서 숨김파일 보기 설정
맥 OS X에서 숨김파일 보기 설정은 기본적으로 off이다. 숨김파일을 보려면 터미널에서 다음을 입력하고 Finder를 강제로 재시작하면 된다.
defaults write com.apple.Finder AppleShowAllFiles YES
만약 원래 상태로 돌리려면
defaults write com.apple.Finder AppleShowAllFiles NO
TCP, UDP 포트 넘버
TCP, UDP의 포트 넘버 0~1023번까지는 Well-Known Port로 불리우며 IANA에서 TCP 및 UDP 포트넘버의 일부이다. 일반적으로 포트 번호는 다음과 같이 세 가지로 나눌 수 있다.
- 0번 ~ 1023번: 잘 알려진 포트 (well-known port)
- 1024번 ~ 49151번: 등록된 포트 (registered port)
- 49152번 ~ 65535번: 동적 포트 (dynamic port)
더 자세한 정보: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#cite_note-IANA-1
따라서 응용프로그램에서 다른 포트와 충돌을 일으키지않고 사용을 하려면 49152 ~ 65535사이의 포트를 사용을 한다. 만약 Registered Port에 등록을 하려면 아래 주소에서 신청을 하면 되는데, IANA에서 심사후 등록여부를 결정한다고 한다. http://www.iana.org/cgi-bin/usr-port-number.pl
맥에서 워드실행시 부팅시간 줄이는 법
부트로더도 네트웍으로 업로드하자
예전에 만들어 놓은 모듈은 부트로더도 업데이트가 가능했었던 것을 최근에 발견했다. 중요한 것은 메모리 맵이다. 예전 코드를 자세히 보다가 나중에도 써먹기 위해서 정리…
CortexM0 보드와 CooCox
NXP LPC1114 보드
이전 블로그를 보니 2011년도 초에 NXP와 Nuvoton의 Cortex M0에 대해 쓴 블로그 포스팅이 있었는데 최근 당시에 CooCox로 부터 받은 보드와 최근에 Nuvoton에서 받은 보드를 테스트를 해봤다. 아래 그림에서 위에 있는 것은 NXP칩을 사용한 LPC1114보드이고, 아래 그림은 Nuvoton의 M0516NBL 을 사용한 보드이다.
최근 이런 개발 보드들의 특징은 디버거를 포함을 하고 있는데, 보드의 좌측 부분이 디버거 기능을 하며, CMSIS-DAP 기능을 한다.
하지만 몇 년 지난 보드를 다시 PC에 연결을 해보니 일단 연결 부터가 되지 않는다. 아마도 이 보드의 CooCoox의 ColinkEX가 업데이트가 됐는가 싶어서 이 보드의 ColinkEX f/w를 확인해 보니 예상한 대로 f/w가 업데이트 되어 있다. 관련 자료: http://www.coocox.org/CoLinkGuide/CoLinkDIY.htm
- JP1을 쇼트시키고 USB 전원을 연결하면 LPC1343 칩의 내부 메모리가 “”CRP2 ENABLD” or “CRP DISABLD”의 레이블을 가진 MSD로 잡힌다.
- 여기에 파일을 제거하고 위 링크에서 F/W를 다운로그해서 카피한다.
- JP1을 오픈하고 USB 전원을 다시 연결한다.
물론 PC에는 드라이버를 설치를 해야한다.
Nuvoton NuTiny-M051보드
이 보드의 왼쪽 부분의 디버거의 이름은 Nulink이며, 보드를 PC에 연결을 하니 USB-HID로 잡힌다. NXP 보드와 마찬가지로 디버거를 이용해 개발을 하고 양산시에는 보드를 잘라서 F/W를 구울수 있는 구조로 되어 있다. 사용해 보니 mbed에 있는 CMSIS-DAP와 다른 점은 호스트에 연결되는 USB로 시리얼까지 처리를 하지는 않아서 시리얼 출력을 보려면 보드에서 선을 따로 뽑아야 한다. 하지만 NXP 보드는 보드에 RS232C 드라이버 칩과 소켓이 있어서 바로 연결을 할 수 있다.
CooCox 개발 환경
CooCox 역시 당시 블로그 포스팅에도 소개를 했었는데 최근 다시 설치를 해서 확인을 해보니 다양한 Cortex 칩들을 지원을 하고 있고, 커뮤니티도 제법 커져있다. 하지만 당시와 달라진 점은 ARM GCC 를 따로 설치를 해주고 경로를 설정을 해줘야 한다.
위 사이트에서 gcc를 다운로드 받고 설치를 한후, Project >> Select Toolchain Path를 지정을 한다.
Blink 테스트
입베디드 보드에서의 Hello World와 같은 LED 깜박이기 예제를 돌려보자. 프로젝트를 만드는 것은 쉽다.
- Project >> New Project : 프로젝트 이름을 정한다.
- 칩 또는 보드를 선택을 하는데, 만약 이 툴에서 제공하는 보드리스트에 사용하는 보드가 있다면 보드를 선택을 하고, 없다면 칩을 선택한다.
- 사용할 컴포넌트를 선택한다. 만약 GPIO를 선택을 하면 CMSIS Core와 CMSIS Boot는 자동으로 로드 된다. (스텝 3)
- 좌측 창의 Component 부분의 GPIO에 2개의 예제가 있다고 표시가 된다. 이것을 선택을 하고 Blink예제를 add하면 프로젝트의 main 함수에서 blink 함수를 호출을 한다.
- Blink.c 파일을 보면 Port2의 GPIO9 를 on/off 하는데, 내가 가지고 있는 보드의 설정과 동일하다. 즉 코드를 수정할 필요가 없다.
- Project >> Build (단축키 F7)를 한후, Flash >> Program Download를 선택한다. (보드의 JP2는 쇼트)
- 보드의 JP2를 오픈하고 리셋 버튼을 누르면 다운로드 한 코드가 동작을 한다.
이상으로 코드 한줄 코딩하지 않고 개발 환경 설정하고 칩에 F/W까지 다운로드해서 동작을 확인했다. 사용을 해보니 참 편한데 한가지 아쉬운 점은 CooCox가 Windows만 지원을 한다는 것. LPCXpresso의 경우는 3가지 OS (Win, MAC, Linux)를 다 지원하는데….
Nightly build
Nightly build란?
오픈소스프로젝트의 소스를 다운로드하다보니 정식으로 릴리즈된 버젼이 있고, 그 밑에 Nightly build라는 것이 있다. 위키피디아에 찾아보니 다음과 같이 나온다.
소프트웨어 개발 단계에 따라 분류를 나눌 수 있다. 소프트웨어 배포자에 따라 이 소프트웨어 분류는 바뀔 수 있지만 일반적인 룰은 다음과 같다.
- 알파 버전: 개발 주기에서 알파 버전의 경우 내부 테스트용으로 공개하는 경우가 많다. 거의 모든 주요 기능을 포함하고 있지만 많은 버그가 존재하고 실제 사용자가 도입해서 사용하기에는 무리가 있는 버전을 말한다. 베타 버전 이전의 단계이다.
- 베타 버전: 베타 버전의 경우 알파에서 나온 문제점들을 수정한 단계이고 외부로 공개 테스트를 시작할 수 있을 정도의 완성도를 가진 소프트웨어를 말한다. 이후로는 새로운 기능보다는 나온 문제점들을 수정하고 UI를 최적화 하는 작업을 진행한다.
- RC (Release Candidate): RC는 Microsoft에서 사용하는 소프트웨어 개발 단계로 정식판이 배포되지 직전의 단계로 볼 수 있다. 일반적으로 베타와 정식 배포판의 중간단계에 해당한다.
- Nightly build: 매일 발생하는 소프트웨어에 대한 수정사항을 포함하고 있는 소프트웨어 배포버전이다. 소프트웨어는 테스트가 되어 있지 않을 수 있기 때문에 매우 불안정한 상태이다.
출처: 위키피디아(소프트웨어)
영문 위키피디아에 보면 왜 nightly build라는 말을썼는지 이해가 더 쉬울듯…
A nightly build is a neutral build that takes place automatically. These typically take place when no one is likely to be working in the office so that there are no changes to the source code during the build. The results of the build are inspected by the arriving programmers, who generally place a priority on ensuring the recent changes to the source code have not broken the build process or functionality of the software.
MQTT
- MQTT: MQ Telemetry Transport protocol의 약자. M2M에서 사용.
- IBM에서 개발했다. 프로토톨 스펙
- http://mqtt.org/faq 에서는 다음과 같이 정의
MQTT stands for MQ Telemetry Transport. It
is a publish/subscribe, extremely simple and lightweight messaging protocol,
designed for constrained devices and low-bandwidth, high-latency or unreliable
networks. The design principles are to minimise network bandwidth and device
resource requirements whilst also attempting to ensure reliability and some
degree of assurance of delivery. These principles also turn out to make the
protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of
Things” world of connected devices, and for mobile applications where bandwidth
and battery power are at a premium.
- 오픈 소스 MQTT 메시지 브로커인 모스키토: http://mosquitto.org/
- 아두이노 MQTT 클라이언트: http://www.ibm.com/developerworks/webservices/library/ws-mqtt/index.html
바코드
- 바코드 관련 정보: from 위키 http://en.wikipedia.org/wiki/Barcode
- 바코드 종류: from 국내업체
- 정보를 인코딩하는 여러 방법이 있는데, 이중하나는 코드 39이고, 바코드에 Checkdigit를 맨 끝에 붙인다.
- 코드 39: http://en.wikipedia.org/wiki/Code_39
- 체크디지트(Check digit)를 자동으로 계산해 주는 사이트: 국내, 해외
- 체크디지트를 계산하는 법: http://www.polylabel.com/barcodes/check/aboutcd.php