시리얼통신을 가지고 노는 프로그래머들에게 가상 시리얼포트는 없어서는 안될 존재는 아니지만, 있으면 엄청 편한 존재이다. 과거 Eltima 에서 나온 상용 프로그램을 크랙을 통해서 썼었는데, 구글링으로 조금 뒤지다 보니 쓸만한 무료 가상 시리얼포트 프로그램도 있다.


가상 포트를 만들어서 일대일, 일대다 등으로 여러 응용프로그램과 연결해서 사용할 수 있는 VSPE (Virtual Serial Port Emulator)
"32bit 플랫폼에서는 무료"라서 더 맘에 든다. ^^
http://www.eterlogic.com/Products.VSPE.html

그리고, 보통 윈도에서 시리얼포트로 오가는 데이터를 모니터링하기 위해서 하이퍼터미널이나 putty 같은 프로그램을 쓰기 마련인데, 이들 모두 ascii 만 볼 수 있다. Hex로 바이너리까지 볼 수 있는 프로그램들은 죄다 유료였다. 하지만, 역시 구글신께서는 쓸만한 Hex 터미널 프로그램을 알려주셨으니...


소스포지에 등록되어 있는 RealTerm 이라는 오픈소스 프로그램인데... 화면에 보다시피 기능이 참말로 많다. ㅋ

http://realterm.sourceforge.net/

우리모두 범법자 되지말고, 좋은 오픈소스 잘 찾아 쓰세!! ㅋㅋ
저작자 표시 비영리 동일 조건 변경 허락
신고

Windows CE 5.0 에뮬레이터로 시리얼통신하기

Study 2008.08.22 18:01 Posted by 몽백작

졸업작품때문에 Windows CE 5.0용 어플리케이션을 만들일이 생겨서 나름 용돈으로 책도 사보고 eMbedded Visual C++ 4.0, Windows CE 5.0 Standard SDK도 설치해보고, 여러가지 예제 프로그램도 짜보고 있다.

문제는 시리얼 통신이었다. 실제 타겟 보드가 있다면 별 문제 없겠지만, 타겟 보드 없이 에뮬레이터로 시리얼 통신하려니까 난감하기 짝이 없었다. 에뮬레이터의 도움말에는 분명히 개발용 컴퓨터의 실제 시리얼 포트와 매핑시킬 수 있다고는 되어 있는데 하는 방법이 제대로 안나와있었다.

결국 MSDN과 구글 그룹스 뒤진지 반나절 삽질 끝에... 겨우 알아냈다. (사실 꼼꼼하게 검색했으면 좀 더 빨리 알아냈을수도...ㅜ.ㅜ)

먼저 Standard SDK에 포함된 에뮬레이터는 eVC++ 4.0에서 바로 실행해볼 수 있지만 시리얼 통신 매핑이 안먹는다. 구글링한 결과 eVC++ 4.0의 [Tools]-[Configure Platform Manager]-[STANDARDSDK_500_Emulator]의 속성(Properties)에 들어가서 [Startup Server]의 콤보박스를 [Emulator Startup Server]로 해놓고,(아마 디폴트로 되어 있을듯) 그 옆에 [Configure]버튼을 클릭하면 나오는 Emulation Configuration Settings 창을 건드리면 된다고 한다. Communication 그룹 박스에 있는 Serial Port 2가 에뮬레이터의 COM1:과 매핑된다(Serial Port 1은 디버그 포트랑 매핑)고 하는데, 이거 잘 안된다. 왜 안되는지는 잘 모르겠다. 잘 되었으면 삽질할 필요도 없었겠다. ;;;

사용자 삽입 이미지

이런 방법으로 실제 포트와 매핑이 되지 않을 경우, 사용 가능한 다른 방법은 Command-Line Launch를 사용하는 것이다.

※ 출처
MSDN : Using the Emulator in Smart Device Projects
MSDN : Emulator Command-Line Launch Options

이 방법을 사용하기 위해서는 Standard SDK에 포함된 에뮬레이터를 사용하기 보단 따로 Windows CE 5.0 Emulator를 설치하는 편이 나을 것이다. 처음에는 번거롭고 도통 MS의 생각을 이해하기 힘들었는데 글을 쓰면서 생각해 보니 이 방법을 사용하는 것이 직접 플랫폼 빌더를 사용해 Win CE 5.0 이미지로 테스팅 하기 쉽겠다는 생각이 든다. 위의 출처 중 두번째 문서를 읽어보면 알수 있겠지만, 에뮬레이터는 결국 CE OS 이미지를 PC상에서 실행시켜 주는 프로그램이고 그 명령의 첫번째 옵션 /CEImage 를 사용하여 다양한 CE OS 이미지 상에서 테스트 해볼 수 있다는 것이 MS의 생각인 듯 싶다. (최근 VS 2005에서 Standard 에뮬레이터가 빠진 이유도 이런것이 아니었을까? ;;;)

좌우 당간 에뮬레이터를 설치했으면 한번 실행해보자. 시작메뉴에 보면 새로 설치한 에뮬레이터가 있을 것이다.

사용자 삽입 이미지

살펴 보면 인터넷 익스플로어도 있고, MSN 메신저도 있는 걸로 봐서 Standard SDK의 에뮬레이터보다 뭔가 기능이 많아 보인다. 아마 에뮬레이터 이미지가 Win CE Core License가 아닌 Professional License 버전의 이미지인가 보다.

다시 시리얼 포트를 매핑하기위한 Command-Line Launch를 적용해보자. 이 에뮬레이터를 실행하기 위해 클릭한 Sample CE Device 바로가기의 속성을 들어가보자.

사용자 삽입 이미지

이 창의 대상 부분의 에디트 박스를 보면 명령어가 나와있다. 여기다 옵션을 추가해주면 된다.

"C:\Program Files\Windows CE 5.0 Emulator\Emulator_500.exe" nk.cem /serialport2 COM1

이렇게 하면 Win CE 에뮬레이터의 COM1: 포트가 실제 개발용 PC의 COM1과 매핑이 된다. 이제 이것을 어떻게 테스트 하면 좋을까? PC 뒤에 있는 에뮬레이터와 매핑된 COM1에 널모뎀 케이블로 다른 장치와 연결하면 상관없겠지만 PC가 하나뿐인 상태에서는 가상 시리얼 포트 프로그램을 쓰는 것이 좋을 것이다.

Virtual Serial Port Kit 이라는 프로그램이 있다. 유료지만 15일간은 무료로 사용해볼 수 있다.

이 프로그램으로 필자는 COM2-COM3 가상 포트를 만들었다. 그리고 /serialport2 COM2로 옵션을 바꿔서 에뮬레이터를 실행하고, PC에서는 하이퍼터미널 같은 시리얼 통신 프로그램을 사용하여 COM3로 연결하면 된다.

사용자 삽입 이미지

에뮬레이터에 프로그램을 집어넣는 것은 에뮬레이터의 메뉴에 있는 기능중 [Folder Sharing] 기능을 사용하면 된다. 이 기능을 사용하면 로컬 PC의 디렉토리를 선택할 수 있는데, 선택한 디렉토리는 에뮬레이터상에서 이동식 디스크로 인식된다. 이 기능은 에뮬레이터를 껐다 키면 사라지는데, Command-Line Launch의 옵션 중 /sharedfolder 를 사용하면 에뮬레이터 실행시마다 자동으로 지정된다.

사용자 삽입 이미지

로컬 PC의 디렉토리 중에서 eVC++ 4.0에서 "Win32 (WCE emulator) Debug" 로 빌드한 이미지가 있는 디렉토리를 선택한다. 그러면 시리얼 통신을 사용하는 어플리케이션이 매핑된 실제 포트를 통해 제대로 통신이 됨을 확인할 수 있을 것이다.
신고

Nano Q Plus 2.3.3 설치

NanoQplus 2008.08.13 11:08 Posted by 몽백작

나노 큐 플러스를 다시 설치할 일이 생겼다. 이참에 글로 한번 남겨보고자 한다.

나노 큐 플러스의 경우 개발 환경이 크게 둘로 나뉜다. 첫째는 리눅스 에뮬레이터인 cygwin을 이용한 방법과 두번째는 Eclipse 기반의 Esto 개발툴을 이용한 방법이다. Esto는 ETRI에서 텍스트 위주의 리눅스에서의 개발이 익숙치 않은 개발자들을 위해 나왔다고는 하지만, 개인적으로 수차례 시도했지만 제대로 성공한 적이 없다. 더군다나 내가 사용하는 mote의 MCU가 MSP430인데, AVR계열의 MCU를 사용하는 mote들만을 위해서 나온듯 싶다. 차라리 cygwin을 사용하는 편을 추천하는 편이다. 리눅스에서 개발 경험이 없다 하더라도 몇가지 명령어만 알면 금방 익숙해 질 수 있고, Source Insight라든지 UltraEdit, Beyond compare 등등 소스 작성에 유리한 툴들과 함께 사용하면 불편함 없이 너무 편하게 사용할 수 있다.

먼저 ETRI 융합소프트웨어 연구본부에서 Nano Q Plus와 Nano Q Plus Tool Package를 다운받아야 한다. 회원 가입후, 소스 자료실에서 다운받을 수 있다.

사용자 삽입 이미지

Nano Q Plus Tool Package는 Nano Q Plus를 사용하기 위한 cygwin과 컴파일러인 WinAVR 또는 MSP430-gcc, PonyProg 같은 퓨징 프로그램, USB-to-RS232(FTDI) Driver 등이 포함되어 있는 패키지이다.

Tool Package를 루트(C:\)에 압축을 푼다. 필자의 경우 C:\nano_qplus_tool_package-071008 에 압축을 풀었다.

사용자 삽입 이미지

이제 Cygwin을 설치하자. 툴 패키지의 Cygwin 디렉토리에 있는 setup.exe를 실행시킨다.

사용자 삽입 이미지

다음과 같은 화면이 나타난다.

사용자 삽입 이미지
 다음을 클릭한다.

사용자 삽입 이미지

3번째 Install from Local Directory를 선택한다. 툴 패키지 내에 이미 나노 큐 플러스를 사용하기 위한 패키지가 모두 포함되어 있으므로 Instal from Internet을 선택해서 설치할 패키지를 고민할 필요가 없다.

사용자 삽입 이미지

Cygwin 에뮬레이터에서 사용할 루트 디렉토리는 디폴트로 하여 다음을 클릭한다.

사용자 삽입 이미지

Cygwin 패키지가 있는 경로를 선택한다. Install From Local Directory를 선택했으므로 로컬 디렉토리에서 Cygwin 패키지를 선택해야 하는데, 툴 패키지에 포함되어 있으므로, 그대로 다음을 클릭하면 된다.

사용자 삽입 이미지

패키지를 선택할 수 있는 화면인데, 나노 큐 플러스에 필요한 패키지가 디폴트로 설정되어 있으므로 다음을 클릭하면 된다.

사용자 삽입 이미지

설치가 진행된다.

사용자 삽입 이미지

설치가 종료되면 바탕화면에 아이콘을 만들것인지, 시작메뉴에 아이콘을 만들것인지 선택하게 된다. 각자 취향대로 선택하시고 마침을 클릭하면 Cygwin 설치가 종료된다.

이제 컴파일러를 설치해보자. 나노 큐플러스는 수가지의 상용화된 mote들을 지원하는데, 모두 MICAz 기반의 AVR의 Atmega128L 아니면 Telos 기반의 TI의 MSP430f1611이다. 필자는 국내 업체인 아이앤테크라는 곳에서 나온 Kmote를 사용하는데, Telos 기반의 Tmote-Sky와 compatible 하므로, MSP430-gcc를 설치한다. MICAz 계열을 사용하는 분들은 WinAVR과 PonyProg를 설치하면 된다.

사용자 삽입 이미지

툴 패키지의 Compiler에 보면 2가지 컴파일러가 있는데, 필자는 mspgcc를 설치한다.

사용자 삽입 이미지

mspgcc의 경우, 설치에 특별한 것이 없으므로 Next만 클릭해주면 된다.
mspgcc를 Cygwin에서 사용하기 위해서는 cygwin의 버전을 맞춰줘야 한다고 한다. 이를 위해 C:\cygwin\bin\cygwin1.dll 파일을 mspgcc가 설치된 C:\mspgcc\bin 에 덮어 써야 한다.

사용자 삽입 이미지

사용자 삽입 이미지

또 한가지 고려 사항은 환경 변수 설정이다. 바탕화면의 내컴퓨터에 오른쪽 버튼을 클릭하여 속성을 클릭한 후, 고급 탭의 환경 변수를 클릭한다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

시스템 변수의 Path 를 더블클릭하여 c:\mspgcc\bin이 있는지 살펴보자. 없으면 위와 같이 가장 뒤에 세미콜론을 붙이고 추가한다. 이는 어떤 경로에서든 mspgcc를 실행하기 위함이다.

이제 Cygwin을 실행하여 나노 큐 플러스의 개발 환경을 설정해 보자. 바탕화면의 Cygwin을 더블클릭하여 cygwin을 실행한다.
사용자 삽입 이미지

사용자 삽입 이미지

실행해 보면 딱딱한 콘솔만 나온다. 리눅스를 접해보지 않은 개발자들을 위해서 몇가지 간단한 리눅스 명령어를 DOS 명령어와 비교해 소개하자면 다음과 같다.

ls : 디렉토리의 파일 목록 출력. dir
cd <경로>: 디렉토리 변경. cd <경로>
md : 디렉토리 생성. mkdir
pwd : 현재 디렉토리 경로 출력. cd
rm <대상파일> : 파일 삭제. del <대상파일>
rmdir <경로> : 디렉토리 삭제. rd <경로>
cp <원본> <대상> : 파일 복사. copy <원본> <대상>
mv <원본> <대상> : 파일 이동. move <원본> <대상>
mv <대상> <변경할 파일명> : 파일명 변경. ren <대상> <변경할 파일명>
cat <대상> : 파일 내용 출력. type <대상>

이정도만 알아둬도 가슴치며 답답한 상황은 나오지 않을 것이다.
이제 본격적으로 환경 설정에 들어가 보자.

사용자 삽입 이미지

콘솔에서 위와 같이 cd /cygdrive/c/nano_qplus_tool_package-071008 이라고 치면 툴 패키지의 경로로 이동한다. cygwin은 리눅스 에뮬레이터이기 때문에 처음 설치시에 루트 디렉토리를 설정해둔 사실을 기억해보자. cygwin에서는 루트 (/)가 c:\cygwin에 해당한다. 즉, cd / 명령어는 루트로 디렉토리를 이동하라는 명령이고, 루트에 있는 cygdrive는 Windows의 드라이브(a, c, d ....)를 폴더로 인식하도록 해주는 역할을 한다. 정리해보면, cd /cygdrive/c/nano_qplus_tool_package-071008 이라는 명령어는 c:\nano_qplus_tool_package-071008 로 디렉토리를 변경하라는 뜻이다. ls를 쳐보면 디렉토리에 있는 파일들이 출력된다.

이제 sh 1_qplusn.sh 를 쳐보자. 이는 cygwin에서 나노 큐 플러스에 맞도록 경로 등을 설정하는 부분이다. 아래에 맞춰 입력하자.

사용자 삽입 이미지

주의할 점은 두번째 질문은 나노 큐 플러스가 설치될 곳(c:\cygwin\nos-2.3.3)을 cygwin식 경로로 입력해줘야 한다는 것이다. 또 한가지는 마지막에 nos-2.3.0을 입력한 경로로 복사하겠느냐는 것인데, 2.3.0 버전을 기준으로 되어 있으므로 이 부분은 n을 선택하고 직접 복사해주면 된다.

처음에 다운받았던 나노 큐플러스 2.3.3 버전을 c:\cygwin\nos-2.3.3에 복사하자.
사용자 삽입 이미지
복사는 예전처럼 탐색기에서 직접 하면 된다.

다시 cygwin으로 돌아와서 sh 2_env.sh 를 입력하자.
사용자 삽입 이미지
이는 딱딱한 콘솔화면을 그나마 조금 보기 쉽게 만들어 주기 위함이다. 모두 y 를 입력하고 cygwin을 종료하고, 다시 시작하자.

사용자 삽입 이미지

많이 밝아졌다. ㅋ

이제 nos 라고 입력해보자. 그러면 자동으로 나노 큐플러스가 설치된 디렉토리로 이동할 것이다.

사용자 삽입 이미지

설치가 최종적으로 잘 되었는지 확인하기 위해 sh Check.sh 를 입력하면 다음과 같이 출력될 것이다.
사용자 삽입 이미지

여기서 신경써서 봐줄 부분은 바로 컴파일러 부분이다. WinAVR이나 mspgcc를 설치했다면 해당 컴파일러의 경로가 출력되어야 한다. 만약 설치를 했는데 나타나지 않는다면 환경변수 쪽을 의심해봐야할 필요가 있다.

모든 설치가 완료되었다.
이제 제대로 컴파일 및 다운로드가 되는지 확인해보자.

사용자 삽입 이미지

nos 위치에서 cd test-apps/platform-test/tmote-sky/led/ 를 입력하여 LED 깜빡이기 테스트 프로그램으로 이동해 컴파일 및 다운로드해보자.

먼저 수행할 명령어는 make menuconfig 이다.
사용자 삽입 이미지
만약 위와 같은 에러메시지가 나타난다면 당황해 하지 말자. (살짝 나도 당황했다는...;;;) 밑에서 세번째 줄을 보면 화면이 너무 작다고 징징대는 것을 알 수 있다. 창 사이즈를 좀 늘리고 (80*19 이상) 실행해보면 다음과 같은 menuconfig 프로그램이 나타난다.

사용자 삽입 이미지

이는 나노 큐 플러스를 해당 플랫폼에 맞게 설정하는 부분이다. 첫번째는 플랫폼, 두번째는 UART 통신 속도, 세번째는 사용할 기능들, 네번째는 사용할 커널 기능들, 다섯번째는 네트워크 관련 기능들을 설정할 수 있다.

모두 맞게 설정한 후 좌우 화살표를 이용하여 Exit에 커서를 옮기고 엔터를 치면 모두 저장된다.

여기서 설정한 부분들은 kconf.h 파일에 자동으로 입력된다. 따라서 kconf.h는 직접 수정할 필요 없이 make menuconfig 프로그램으로 수정하면 된다.

이제 본격적인 빌드를 위해 콘솔에서 make를 쳐보자.

사용자 삽입 이미지

뭔가 후다다닥 엄청난 양이 지나가고 나서 'led.rom' has been created 가 출력되었다면 성공한 것이다. 이제 모트를 꽂아보자.
만약 FTDI를 사용한 적이 없다면 새 하드웨어 마법사가 나타날 것이다.

목록 또는 특정 위치에서 설치를 선택한후, 다음과 같이 툴 패키지에 포함된 USB to Serial Driver 경로를 입력하자.

C:\nano_qplus_tool_package-071008\Platform Driver\USBtoSerial

사용자 삽입 이미지

사용자 삽입 이미지

이렇게 한번 더 마법사가 나타나는데 똑같은 경로로 설치하면 된다. 드라이버 설치가 완료되었으면 다시 콘솔로 가보자.

make motelist를 입력하여 연결된 mote의 시리얼 포트 번호를 알아내자.
사용자 삽입 이미지

COM3라고 출력됨을 알 수 있다.

굽기 위해서는 make burn port=com3 이런식으로 입력하면 된다.
사용자 삽입 이미지

다운로드가 완료되었다. 이 순간 모트를 바라보면 led를 번갈아 깜빡이고 있을 것이다.
신고

'NanoQplus' 카테고리의 다른 글

Nano MAC 3가지 수신 방법  (0) 2008.08.16
Nano MAC 초기화 - mac_init()  (0) 2008.08.15
Nano Q Plus 2.3.3 설치  (0) 2008.08.13
아날로그-디지털 변환 - ADC12  (0) 2008.07.29
자원 동시 접근 제어 - Semaphore  (0) 2008.07.28
thread 사용의 시작  (0) 2008.07.27

항상 새로운 것만 좋은 것이 아니다.

Study 2008.07.18 09:13 Posted by 몽백작

C++ Builder로 ComPort Library와 TActiveMovie를 같이 사용하여 프로그램을 짤 일이 있어서 2개의 컴포넌트를 설치했다.
설치가 끝나고 2개 컴포넌트를 폼위에 동시에 올려놓고 컴파일을 했더니 에러가 난다.

[Linker Error] Unable to open file 'CPORTSETUP.DFM'
[Linker Error] Unable to open file 'CPORTIMG.RES'
[Linker Error] Unable to open file 'CPORTTRMSET.DFM'

문제는 Build with runtime packages가 체크가 안 되있었던 것.
그래서 냉큼 체크를 하고 컴파일해봤더니 Access Violation이다. ;;;;

사용자 삽입 이미지


결국 TActiveMovie는 런타임 패키지와 함께 빌드하면 안되는 거였고, CPort는 런타임 패키지와 빌드를 해야만 하는 참 답답한 상황이 나왔던 것!!

여기저기 해결책을 찾아 돌아다녀봤지만 만족할만한 답변을 얻을 수 없었다.
다른 시리얼포트 컴포넌트를 사용해야 하나, Win32 API로 통신을 해야하나......

마지막 쥐푸라기라도 잡는 심정으로 CPort 3.1 -> CPort 2.64로 다운그레이드하여 설치해봤다.
몇시간동안 해결안되던 문제가 해결되는 것이 아닌가. ;;;;

비록 어제 밤 코딩을 한줄도 못했지만 컴파일에는 성공...
또 한번 여실히 느낀다.
새 버전이 항상 좋은 것은 아니라는 것!!

신고

'Study' 카테고리의 다른 글

WiFi, WLAN 솔루션(Broadcom, Atheros. 2008.08.01 기준)  (0) 2008.08.01
캐릭터LCD DDRAM Address  (0) 2008.07.31
항상 새로운 것만 좋은 것이 아니다.  (0) 2008.07.18
ADC12 - ②  (0) 2008.07.17
ADC12 - ①  (0) 2008.07.16
MSP430x1xx Family User's Guide  (0) 2008.07.16


단기간내 만족할만한 수준의 Win32 어플리케이션을 만들기 위한 C++ Builder의 가장 큰 약점(?)이 바로 시리얼통신 기능이 아닌가 합니다. 정말 왜 기본 포함이 되지 않는 것인지 이해가 안가는 부분!!ㅋ

볼랜드포럼에서 퍼왔습니다.
신고



 

티스토리 툴바