Kernel Module

If you are building a module that will exist in the kernel space, use a VxWorks downloadable kernel module project.
You can separately build the modules, run, and debug them on a target running VxWorks, loading, unloading, and reloading those modules as you work.
Once your development work is complete, you can statically link the modules into the kernel or store them on a file system, if one is present.
Kernel-mode development is the traditional VxWorks method of development.
All the tasks you spawn run in an unprotected environment, and all have full access to the hardware in the system.
A kernel module that is linked into the kernel starts automatically when the target is booted, as long as the operating system is configured for this purpose.


Real-Time Processes

If you are building an executable that runs in user mode, or outside the kernel space, use a VxWorks real time process project.
You can separately build, run, and debug the executable.
At run time, the executable file is downloaded to a separate process address space to run as an independent process.
VxWorks real-time processes provide the means for executing applications in user mode.
Each process has its own address space, which contains the executable program, the program’s data, stacks for each task, the heap, and resources associated with the management of the process itself (such as memory-allocation tracking).
Many processes may be present in memory at once, and each process may contain more than one task (sometimes known as a thread in other operating systems).


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License




새로 제작한 보드의 RS232 및 RS485 Controller를 테스트 하기 위해서 간단히 만들었습니다.

테스트 용으로 만들었기 때문에 데이터 송신 시 1바이트만 보낼 수 있도록 했습니다.

또한 10진수 / 16진수 / ASCII 형태로 데이터를 볼 수 있도록 했습니다.
(개발시엔 아무래도 16진수가 보기 편하기 때문에 ^^)


개발 환경은 Visual Studio 2008 / .NET Framework 3.5 입니다.

아래에 프로그램 실행 파일 및 소스코드를 올려놓았습니다. 다운로드 하셔서 쓰시면 됩니다.

(혹시 실행이 안되면 .NET Framework 3.5를 설치해 주세요.)



 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License



TinyOS 관련해서 참고할 만한 PDF 문서들을 정리했습니다.


1) TinyOS의 기본적인 이해를 돕는 문서

 







2) TinyOS 포팅에 관련된 문서






저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License



ICE2 또는 Probe를 이용한 VxWorks 디버깅 시 Makefile에 디버깅 옵션을 추가해 줘야 C레벨 단위(Symbol 함수 레벨 추적)의 디버깅이 가능합니다.

디버깅하고자 하는 프로젝트의 Makefile에 아래의 구문을 추가합니다.

ADDED_CFLAGS += -g -O

위 옵션이 없을 경우엔 어셈단위의 디버깅만 가능해서 실제 소스코드와 매칭해서 살펴보기 힘든 점이 발생합니다.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


본 설치 환경은 다음과 같습니다.

Host OS : Windows7 Ultimate K
가상머신 : VMware 7.1.3
Guest OS : Ubuntu 10.04

TinyOS 관련 정보는 TinyOS 위키 사이트를 참고하시면 됩니다.

http://docs.tinyos.net/tinywiki/index.php/Main_Page


1) 우분투에서 tinyos 설치를 위해서 소스를 추가합니다.

[ 시스템 -> 관리 -> 소프트웨어소스 -> 기타 소프트웨어 ] 에서 아래 주소를 추가합니다.

deb http://tinyos.stanford.edu/tinyos/dists/ubuntu hardy main



2) apt-get을 통해 tinyos를 설치한다.

# sudo apt-get install tinyos-2.1.1

의존성 검사를 통해 설치할 패키지들을 보여주며 설치할 것인가를 묻는데, 다 설치하는 것이 좋습니다.

tinyos는 현재 2.0.2 / 2.1.0 / 2.1.1을 배포하고 있다. 원하는 버전을 붙여서 다운로드 할 수 있음


3) 환경변수 설정

컴파일을 위해서 환경변수를 추가합니다. (TinyOS의 Makerules에서 사용하는 환경변수임)

홈디렉토리에 있는 .bashrc 또는 .bash_profile 에 아래 내용 추가

# cd ~
# vi .bashrc

 

<추가> CLASSPATH는 다음과 같이 수정
export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.

# source .bashrc (or source .bash_profile)


4) 컴파일

TinyOS의 가장 기본적인 예제인 Blink를 컴파일 해 보겠습니다. make 규칙은 telosb로 하여 진행합니다.

(본인이 사용하는 플랫폼에 따라서 해당 어플리케이션 디렉토리 내에서 make [플랫폼] 이름을 적어주면 됩니다.)



5) 생성 이미지 확인

Blink 디렉토리 내 build 디렉토리 밑에 플랫폼 별로 생성된 이미지가 저장됩니다.

본 예제에서는 telosb란 디렉토리가 생성되고 그 안에 이미지가 생성 되었습니다.


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


처음 시작은 작년 9월.. 아직 모르는 것도 많고, 알아가야 하는 것도 많고..

향후 내 인생의 방향이 어떻게 될지는 이 일에 좌우되겠구나..

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


Wind River General Purpose Platform, VxWorks Edition Getting Started, 3.8 문서를 보면

VxWorks Downloadable Kernel Module 안에 애플리케이션 코드를 작성하는 부분이 나옵니다.

책자에 써있기로는 http://www.windriver.com/support 에서 찾으라고 되어있지만 찾을 수가 없군요..ㄷㄷ


그래서 블로그에 올립니다.

예제 파일은 총 3개 입니다.

tcpExample.h
tcpServer.c
tcpClient.c


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


아.. 그동안 이래저래 신경을 많이 썼었는데 드디어 끝났습니다. ㅠ_ㅠ

물론 camera-ready 전까지 좀 보완해야겠지만 어쨋든 짐 하나 던 느낌이군요.

이제 종합시험 준비와 졸업 논문에 박차를 가해야 할 듯..

나머지 일정도 화이팅~~

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


음..1주일 연기됐던 KCC 논문 작업이 완료되어서 막 업로드 끝냈습니다.

WBAN은 최근에 각광(?)받는 기술이라서 국내논문은 커녕 외국논문도 아직은 별로 없네요.

현재 졸업논문을 WBAN 아니면 대용량 스토리지 캐시쪽으로 쓸까 생각 중인데..

일단 논문을 좀 보는데 주력해야겠습니다.

(하지만 센서와 스토리지쪽은 젬병이라서 처음부터 공부..ㅠ_ㅠ)
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


WBAN 관련 해외 논문 정리

주로 MAC에서의 Energy Saving에 관한 논문들 위주로 검색

논문 검색은 http://www.ieeexplore.ieee.org/ 에서 하였음.



A Low-Complexity Medium Access Control Framework for Body Sensor Networks

A New Priority-guaranteed MAC Protocol for Emerging Body Area Networks

A Self-adjustable rate control in wireless body area networks

A Survey of Power Efficient Technologies for Wireless Body Area Networks

A survey on body Area Network

An Adaptive Energy Efficient MAC Protocol for the Medical Body Area Network

An Efficient Multi-channel Management Protocol for Wireless Body Area Networks

An Energy Efficient Implementation of On-Demand MAC Protocol in Medical Wireless Body Sensor Networks

Body Area Sensor Networks - Challenges and Opportunities

BodyMAC - Energy Efficient TDMA-based MAC Protocol for Wireless Body Area Networks

Enabling Technologies for Wireless Body Area Networks - A Survey and Outlook

Energy Efficient Medium Access Protocol for Wireless Medical Body Area Sensor Networks

Energy-Efficient Low Duty Cycle MAC Protocol for Wireless Body Area Networks

Energy-Efficient TDMA-based MAC Protocol for Wireless Body Area Networks

Highly Reliable Energy-Saving MAC for Wireless Body Sensor Networks in Healthcare Systems

OD-MAC, An On-demand MAC Protocol for Body Sensor Networks Based on IEEE 802.15.4

Packet Forwarding with Minimum Energy Consumption in Body Area Sensor Networks

Performance Evaluation of IEEE 802.15.4 for Wireless Body Area Network (WBAN)

PNP-MAC, Preemptive slot allocation and Non-Preemptive transmission for Providing QoS in Body Area Networks

Selective Multicast Protocol for Wireless Body Area Networks (W-BAN) for Power Conservation

Standardization of Body Area Networks

Towards an Energy Saving MAC for Wireless Body Sensor Networks

Trends and Standardization of Body Area Network (BAN) for Medical Healthcare 



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License



거의 1년을 이어온 슬럼프는 끝이 날 기미가 안보이는군요. (이 길이 내 길이 아닌가...)

.....

KCC 마감일이 4월 9일(금)까지군요.

잘 준비해야겠습니다.


저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License




필리핀 세부에서 열릴 ICEIC2010 논문 작업을 오늘부터 시작합니다.

주제는 WBAN 관련해서 쓰게 될 것 같네요.

페이지 수가 2-4라서 크게 부담이 되진 않지만... 문제는 영작... -_-;;

일단 한글로 작성한 뒤에 번역하면서 써야할 것 같은데... 다음주 금요일까지 마감이라서 될런지 모르겠군요. ㅎㅎ

어쨋든 Start~


1. ICEIC 웹사이트 : http://iceic2010.ieek.or.kr

2. ICEIC Call for Papers :
3. ICEIC Template :
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License



그동안 아이폰에 신경쓰느라...거의 10일 정도를 아무 것도 안하고 아이폰 관련 사이트만 돌아다닌 것 같습니다.

이제 그동안 미뤄왔던 일을 시작해야 겠네요.

아..원래 예상은 저번주에 일을 끝맞췄어야 하는데... 생각보다 길어졌네요.

아마 이번주 내내 계속 작업해야 할듯..


덧> 영어 공부는 언제하지..ㅠ_ㅠ 토익 점수 900 좀 찍어보잣!
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License





멀티캐스팅을 이용하여 주변 노드를 탐색할 프로그램이 필요해서 자바를 이용하여 구현하였습니다.

IDE는 이클립스(Eclipse) v3.4인 가니메데를 사용했고, JDK 1.6 버전으로 컴파일 했습니다.

노드간 통신은 Multicast Socket을 사용하여 동작하도록 했습니다.

애플리케이션 내에 서버와 클라이언트 둘 다 동시에 동작하고록 만들었는데, 서버는 멀티캐스트 소켓을 통해서 메세지를 뿌리는 역할을 하고, 클라이언트는 메세지를 수신하여 현재 연결되어 있는 노드들의 이름과 IP 주소를 화면에 출력하도록 하였습니다.


자바를 잘 다루지 못해서 상당히 간단하게 만들었습니다. ㅠ_ㅠ

특히 AWT 컴포넌트 만으로 디자인하다 보니까 화면 구성하는데 너무 힘들었습니다.(UI 배치하는게 뭐 이리 어렵던지 ㄷㄷ)


혹시 참고하실 분은 소스를 첨부하니 아래에 있는 파일을 다운받으시면 됩니다.(프로젝트 폴더 채로 압축했습니다. 사실 소스파일은 달랑 1개 -_-;;)




cf> 멀티캐스트 관련 자료를 찾다보니 특정 IP대를 사용해야 하는데, 아래 내용을 참고하시면 됩니다.

멀태캐스트용 IP 주소는 224.0.0.0에서 239.255.255.255 사이의 주소를 사용한다. 유니캐스트 IP 주소와는 달리, 멀티캐스트 IP 주소는 네트워크와 호스트 주소의 구분이 없다. 하나의 주소 전체가 특정한 멀티캐스트 그룹을 표시하며, 단지, 동일한 그룹이냐 아니냐 만을 구분한다. 브로드캐스트나 멀티캐스트 주소는 목적지 주소이며, 출발지 주소는 항상 유니캐스트 주소를 사용한다. 유니캐스트 IP 주소와 마찬가지로 멀티캐스트 IP 주소도 IANA(Internet Assigned Numbers Authority)에서 할당하며, 다음과 같은 종류가 있다.

번호 이름 용도
224.0.0.0 – 224.0.0.255 Local Network Control Block 동일 네트워크 내부에서만 사용되며, 라우팅 프로토콜 등 네트워크 제어용
224.0.1.0 – 224.0.1.255 Internetwork Control Block 네트워크 외부로 전송되며, 각종 프로토콜 제어용
224.0.2.0 – 224.0.255.0 AD-HOC Block 위의 두 항목에 포함되지 않지만 실제 표준처럼 여겨지는 애플리케이션에 사용
224.1.0.0 – 224.1.255.255 ST Multicast Groups 인터넷 스트림 프로토콜(ST)에서 사용하는 주소
224.252.0.0 – 224.255.255.255 SDP/SAP Block SAP(Session Announcement Protocol)을 통해서 멀티캐스트 주소를 부여할 때 사용
255.0.0.0 – 231.255.255.255 RESERVED 예비주소
232.0.0.0 – 232.255.255.255 Source Specific Multicast Block SSM(Source Specific Muticast) 사용
233.0.0.0 – 233.255.255.255 GLOP Block 각 AS 번호 별로 부가되는 고유 주소
234.0.0.0 – 238.255.255.255 RESERVED 예비 주소
239.0.0.0 – 239.255.255.255 Administratively Scoped Block 사설 멀티캐스트 주소

위의 표에서처럼, 224.0.0.0에서 224.0.0.255 사이의 멀티캐스트 주소 256개는 라우팅 프로토콜이나 네트워크 제어용으로 사용되며, 라우터가 이 범위에 포함되는 패킷을 수신하면 TTL 값과는 상관없이 다른 라우터로 전송할 수 없다. 이 범위에 포함되는 주요 IP 멀태캐스트 주소와 용도는 다음 표와 같다.

번호 용도
224.0.0.0 할당하지 않음
224.0.0.1 현재 네트워크내의 모든 멀티캐스트 시스템
224.0.0.2 현재 네트워크내의 모든 멀티캐스트 라우터
224.0.0.3 할당하지 않음
224.0.0.4 DVMRP 라우터
224.0.0.5 모든 OSPF 라우터
224.0.0.6 OSPF DR(Designated Router)
224.0.0.9 RIP2 라우터
224.0.0.10 EIGRP 라우터
224.0.0.12 DHCP 서버 / 릴레이 에이전트(Relay Agent)
224.0.0.13 모든 PIM 라우터
224.0.0.18 VRRP(Virtual Router Redundancy Protocol)
224.0.0.22 IGMP(Internet Group Management Protocol)
224.0.0.102 HSRP2 (Hot Standby Router Protocol 2)


233.0.0.0부터 233.255.255.255까지를 사용하는 GLOP 주소란 각 AS 별로 다음의 형태로 256개씩 할당된 멀티캐스트 주소이다.

233 AS 번호 앞부분 AS 번호 뒷부분 0-255

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License





요새 계속 영어만 공부하고 있으니까 왠지 머리가 조금 녹슨 것 같기도 하고, 또 명색이 컴퓨터학과인데 꽤 오랫동안 프로그래밍을 안하고 산 것 같아서 예전에 좀 보다가 손 놓았던 C# 책을 구매하였습니다.

(사실 제 전공 및 논문을 위해서는 다른 공부를 해야겠지만...취미...라고 해두죠 ㄷ)

.NET Framework 3.5로 오면서 여려가지 많이 바뀐 것 같더군요. (저는 2.0이던 시절까지만 봐서 ㄷㄷ)

어쨋든 저번 주 목요일날 주문했더니 토요일 오후에 집 앞 편의점으로 배달이 되어서 찾아 왔습니다.
(interpark와 11st에서 편의점 배달 서비스를 해줍니다.)


앞부분은 그냥 알고 있던 내용이라서 주룩....훑어가다가 중간에 실습 문제가 있길래 짜봤습니다.
(내용도 쉽고, 또 나름 재미있게 구성된 문제였습니다. 초보자한테 알맞는 듯)

책에서 해당 실습문제 전까지 배운 사항만 가지고도 구현할 수 있다고 얘기를 해서, 정말 앞부분에 나온 내용까지만 반영해서 구현했습니다. (생성자 함수랑 private 등을 배제하고 짜서 코드가 난잡할 겁니다. 전 정말 책에 충실했을 뿐이에요 -_-)

시간이 없는 관계로 뭐 테스트도 제대로 하진 못했고 그냥 대충 돌아가는 것만 확인했습니다.

책을 보니 실습 문제의 경우엔 코드를 공개하지 않는다고 하길래 혹시 C#을 처음 보시는 분(잘하시는 분들은 보시면 안되요. 보고 콧방귀를 뀌실꺼임 ㅎㅎ)이거나, 실습이 좀 어려워서 구현이 제대로 안되시는 분들은 보고 참고하시면 될 것 같네요.


cf> 프로그램 실행하다보니까 개들이 너무 빨리 뛰어서 System.Threading.Thread.Sleep() 함수를 써서 애들 페이스 조절을 조금 시켰습니다. ㅋ

cf2> 실습 문제에 필요한 이미지를 받으실려면 http://www.headfirstlabs.com/books/hfcsharp/ 로 가시면 되요. (그 외 책에서 나온 예제 코드 등도 있습니다. 실습문제에 대한 코드만 없네요)


아래 그림은 구현한 프로그램을 실행했을 때의 모습입니다.


이 아래는 실습 문제를 구현한 Visual Studio 2008 Projects 파일이 있습니다.

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License