:::: MENU ::::
Browsing posts in: Open Source Hardware

SDCC putchar 버그 수정

지난번 포스팅때 8051 무료 컴파일러인 SDCC를 소개했었고, 이를 이용해서 W7100 TCP loopback 코드까지 만들어 봤었다.
이미 그때도 printf가 잘 안되어서 이상하다고 했었는데, 이번에 telnet 코드를 포팅하면서 문제를 해결했다.
문제는 SDCC 컴파일러가 제대로 C 코드를 ASM으로 변환을 해주지 못하는게 원인… 역시 무료 컴파일러라서 그런가???

void putchar (char c) 
{
  SBUF = c;
  while(!TI);
  TI = 0;
}

위 putchar 함수가 어셈으로 변환된 코드를 보니 TI = 0 을 CLR TI 로 변환을 하지 않네요.
그래서 다음과 같이 inline assembler를 사용해서 수정을 하니 잘 동작을 합니다.

void putchar (char c) 
{
 SBUF = c;
 while(!TI);
__asm 
 clr TI
__endasm;
}

W7100A에 telnet server code를 SDCC로 포팅한 코드로 첨부.

cfile29.uf.181ED1344DE5F44423398E.zip



이젠 오픈소스 하드웨어가 대세

지난 5월 10~11일 구글 I/O 2011 행사에서 구글이 아두이노를 AOA(Android Open Accessory)로 지정한 것은 큰 뉴스거리중의 하나였다. 당연히 이를 통해 아두이노팀이 가장 큰 이득을 보게 될 것이고, 칩 업체로는 아두이노 보드에 MCU로 사용되는 AVR 덕분에 Atmel이 가장 큰 덕을 보게 될 것이다.

이제는 칩 벤더들도 이 오픈소스 하드웨어를 간과하지 않고 있다.

일례로 NXP의 경우 mbed, TI의 경우 Beagleboard를 지원하고 있다.

하지만 최근 마이크로칩이 아두이노 보드와 호환되는 즉 클론 보드를 공개했다.

이름은 chipKIT.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2095&param=en553910

어찌 보면 대형 칩 업체로서 자존심이 상할 법도 한데, 철저하게 아두이노의 사용자들을 자신들의 것으로 끌어오기 위한 전략이 엿보인다.

즉 Hardware, Software, 개발툴을 호환이 되게 만들고, PIC32 라는 32bit를 내세워서 8bit의 아두이노와 경쟁을 하고 있다.

마이크로칩에는 이미 8bit, 16bit 칩이 있음에도 불구하고 32bit 칩을 사용한 것은 전략적인 결정이며, 이름도 Uno32, Max32로 붙여서 아두이노 Uno보드와 Mega2560 보드를 연상하게 하며, 가격도 각각 $3, $15 싸게 내놓았다.

즉 한마디로 성능도 좋고, 가격도 싸다는 것..

얼마나 빨리 아두이노의 사용자들을 마이크로칩이 끌어올지 궁금하네요.

참고로 판매는 마이크로칩과 Digilent라는 회사에서 하고 있습니다.

http://www.digilentinc.com/Products/Catalog.cfm?NavPath=2,892&Cat=18

 

 



Spinneret Web Server 보드 사용기

Spinneret의 뜻은 (동물) (거미·누에 등의) 방적 돌기 ((실이 나오는 구멍))… 보드에 뒷면에 거미와 거미줄 그림이 있다….


이 보드는 Parallax(www.parallax.com)사의 Propeller칩과 Wiznet(www.wiznet.co.kr)의 W5100이 내장된 웹서버 보드이다.
웹서버 어플리케이션을 위해 mSD카드도 장착이 되어 있다.
Open Source Hardware 플랫폼을 지향하기 때문에 모든 자료들은 웹상에 오픈이 되어 있다.
하지만 Propellar칩은 코아가 8개가 들어간 병렬칩으로 좀 생소하기 때문에 익숙해 지기까지는 좀 시간이 걸릴 것 같다.
각 코아는 Cog라고 불린다. 아래 그림 참고..


일단 필요한 것은 개발툴 및 메뉴얼을 http://www.parallax.com/tabid/832/Default.aspx 에서 다운받아서 설치를 하는데, 컴파일러  Propeller/Spin Tool Software v1.2.7 (R2) 를 다운 받아서 설치를 하면 serial terminal 및 메뉴얼까지 설치가 된다.


Spinneret Web Server 보드 관련 자료는
http://www.parallax.com/Store/Microcontrollers/PropellerDevelopmentBoards/tabid/514/ProductID/710/List/0/Default.aspx?SortField=ProductName,ProductName  에서 다운로드하면 된다.

Spinneret Web Server Docs (.pdf)

cfile8.uf.134EAE4F4DAD6D0026BE33.pdf


Spinneret Schematic (.pdf)

cfile8.uf.1647D44F4DAD6D183786D9.pdf


WIZnet W5100 SPI Driver (OBEX) http://obex.parallax.com/objects/614/ 에서 다운로드


Prop Plug : FTDI의 USB to Serial 칩이 내장된 모듈 보드


전원을 J6의 2,3번에 5V를 입력하면 보드가 동작을 하고, 설치된 컴파일러에서 바이너리를 J2에 연결된 Prop plug를 통해 다운로드하면 된다.


동작하는 시리얼 터미널 프로그램.


ODROID

ODROID-A Only for developers
SAMSUNG Exynos4210 Dual-core ARM Cortex-A9
Mali-400 MP Core
1GB LP DDR2 RAM 800Mega data rate
10.1 inch 1366 x 768 TFT with capacitive multi-touch
Android 2.3 Gingerbread
Dual Camera
HSPA+ (Data speed up to 21 Mbps D/L, 5.7 Mbps U/L)
9-axis sensor
Full source code and schematics are included
The shipment will be in 4weeks after your order.
Price : US$749.00
Korean Price : 800,000원(부가세 별도)

관련정보 : http://www.hardkernel.com/renewal_2011/main.php


Open Source Hardware Logo

Open Source Software에서는 다음과 같은 로고를 사용을 합니다.

OSHW에서도 공식 로고를 만들기 위해 공모를 했습니다.
총 129개가 접수가 됐네요.
로고로 선정되기 위한 3가지 기준은
  -. PCB에 인쇄가 쉽고 보기 쉬워야 하고,
  -. 회로도에 인쇄가 쉽고 보기 쉬워야 하고,
  -. 개방성을 잘 나타내야하네요.


이건 Open Hardware Summit에서 제출한 로고이고…
나머지는 아래 링크에서 확인 가능 합니다.
http://www.openhardwaresummit.org/oshw-logo-v1-0/

129개의 응모작중에서 10개의 작품이 투표가 진행이 되고 있습니다.
어떤 로고가 좋은신 가요? http://www.openhardwaresummit.org/oshw-logo-selection/


아두이노 팀 (Arduino Team) 뒷조사

명함을 정리하다가 보니 작년 여름에 이태리에서 미팅한 Smart Projects의 사장이 오픈소스 하드웨어 플랫폼인 아두이노를 개발한 팀의 한명임을 뒤늦게 알았네요.
아두이노 홈페이지에서 다른 멤버들의 이름을 기점으로 뒷조사를 해 보니 재미있네요.
인터넷 세상에서 그 사람이 어디 출신인지 학력은 어떤지 블로그, 이메일, 플리커등의 주소 정보가 고스란히 알 수 있는 세상…


사진 출처: 플리커 <= 계정을 보니 David의 플리커 사이트네요.
암튼 위 아두이노 팀 사진에서 제가 만났던 분은 아랫줄 맨 왼쪽의 Gianluca라는 사람입니다.


1. Massimo Banzi: David와 함께 아두이노 보드를 처음 만든 사람. 현재 하이테크 디자인 회사를 운영. Getting Started with Arduino 책 집필

2. David Cuartielles : 스페인 출신, PIC 마이크로콘트롤러 엔지니어로 이태리에 객원연구원으로 왔다가 Massimo와 같이 아두이노 보드를 개발. S/W 작업 및 Linux 에서 테스팅, 홈페이지를 관리하고 있슴.

3. Gianluca Martino : 아두이노에서 Masimo와 같이 하드웨어 디자인을 맡고 있으며, Smart Projects의 사장. 아두이노의 모든 공식적인 하드웨어를 생산 및 공급하며, 전세계 distributor를 관리하고 있슴.

4. Tom Igoe: 2005년도에 팀에 합류. 아두이노의 문서 및 테스팅을 담당. 현재 뉴욕대 ITP(Interactive Telecommunications Program)교수로 재직중이며, Making Things Talk 책을 집필.

5. David Mellis: 현재 MIT의  대학원 생이며, 아두이노의 대부분의 S/W를 작업함. Massimo의 제자라고 함. 여기서 그의 모습을 볼수 있다. http://hlt.media.mit.edu/?cat=4 두번째 사진의 인물.


CooCox

Nuvoton의 Cortex M0 칩관련 포스팅 중에 잠시 CooCox를 언급한 적이 있습니다.

CooCox는 무료 ARM Cortex M3 and Cortex M0 Development Tools 이며, ARM  gcc를 사용을 합니다. 홈페이지를 확인해 보니 중국 대학에서 만들었네요. 
ARM Connected Community Member,  NXP Partner,  Nuvoton Tools Partner, Energy Micro 3rd Party 이기도 합니다.

실제로 IDE를 받아서 설치를 하고 간단한 코드를 만들어 동작을 시켜보니 잘 돌아가네요.
처음 프로젝트를 만들때 디바이스를 선택하고 Repository에서 필요한 라이브러리를 선택을 할 수 있도록 되어 있어서 사용하기가 쉽네요.다운로드를 개별적으로도 받을 수 도 있고 CooCox CoCenter라는 프로그램을 받아서 다운로드 및 설치가 가능합니다.


무료 8051 컴파일러 – SDCC

SDCC는 Small Device C Compiler의 약자입니다. GPL 라이센스를 따르는 free open source software입니다.
그리고 8051뿐만 아니라 motolora 60HC08 시리즈와 Microchip PIC16, PIC18시리즈도 지원을 하며, Linux, Windows, MAC OS를 지원하네요. 관련자료는 => http://sdcc.sourceforge.net/ 에서 찾을 수 있습니다.

http://sourceforge.net/projects/sdcc/files/ 에서 사용하는 OS 맞는 버젼을 다운받으시고 인스톨하시면 됩니다.
압축이 풀린 폴더에는 다음과 같은 내용의 파일들이 설치 됩니다.

In <installdir>/bin:
sdcc – The compiler.
sdcpp – The C preprocessor.
sdas8051 – The assembler for 8051 type processors.
sdasz80, sdasgb – The Z80 and GameBoy Z80 assemblers.
sdas6808 – The 6808 assembler.
sdld -The linker for 8051 type processors.
sdldz80, sdldgb – The Z80 and GameBoy Z80 linkers.
sdld6808 – The 6808 linker.
s51 – The ucSim 8051 simulator.
sz80 – The ucSim Z80 simulator.
shc08 – The ucSim 6808 simulator.
sdcdb – The source debugger.
sdcclib – A tool for creating sdcc libraries
asranlib – A tool for indexing sdcc ar libraries
packihx – A tool to pack (compress) Intel hex files.
makebin – A tool to convert Intel Hex file to a binary and GameBoy binary image file format.
In <installdir>/share/sdcc/include
the include files
In <installdir>/share/sdcc/non-free/include
the non-free include files
In <installdir>/share/sdcc/lib
the src and target subdirectories with the precompiled relocatables.
In <installdir>/share/sdcc/non-free/lib
the src and target subdirectories with the non-free precompiled relocatables.
In <installdir>/share/sdcc/doc
the documentation

인스톨과정에서 PATH 설정이 되며, 해당 소스가 있는 폴더에서 각 실행 파일을 실행시키면 되는데, 일반적으로 make 파일을 만들어서 사용합니다.

메뉴얼을 보니 Microsoft Visual C++ 6.0/NET (MSVC)에 연결을 해서 사용하는 방법도 있습니다.

cfile30.uf.1576FA424D50A67D272F09.pdf

직접 사용을 해보니 예전에는 에러가 많았는데 이제는 어느 정도 안정화 되가는 느낌이네요.