:::: MENU ::::

오픈 소스 하드웨어를 위해 정부가 할 일?

오픈 소스 하드웨어

업무때문에 2010년도에 아두이노팀을 만나고 오픈소스 하드웨어에 관심을 갖게되어서 뉴욕에서 열린 오픈하드웨어 서밋에도 참석을 하고, 메이커페어도 참석을 했다. 이후에 아두이노 IDE가 다국어 버젼을 지원을 할때, 한국어 번역도 하고(덕분에 지금도 버젼이 바뀌면 메일이 온다…) OSHW definition 도 번역을 했다.  최근 아두이노의 영향때문에 크라우드 펀딩 사이트인 Kickstarter.com에도 아두이노로 검색을 하면 161여개의 프로젝트가 뜬다.

Kickstarter_Arduino

ICT D.I.Y

국내에도 오픈소스 하드웨어에 대한 관심아 졌는데 특히 정부에서도 이 분야에 관심을 가지고 있는듯 하다. 미래창조과학부의 보도 자료에 의하면 2017년까지 ICT R&D예산 총 8.5조를 투자하는데 이중 15대 미래서비스 중 하나로 들어가 있는 것이 ICT D.I.Y서비스 이다. 물론 IoT플랫폼도 오픈 소스 하드웨어와 관련이 있다. 그런데 몇가지 궁금한 점이 있다.

“한류(국산) 오픈 소스 하드웨어 플랫폼”?

기술적으로 국산 오픈 소스 하드웨어 플랫폼이 가능하려면 사용되는 모든 부품 특히 MCU를 만들어야 하는데, 호환성 없는 즉 전혀 생소한 개발 환경의 제품을 만들어 내지는 않을까 우려가 된다. 즉 한국형이라는 말로 정말 한국에서만 쓰이는… 또는 정부 과제를 위한 사업들로 전락하는 것은 아닌지 우려스럽다.

개인적인 바램은 이런 사업으로 중소기업 또는 개인이 이런 플랫폼으로 쉽게 자신의 아이디어를 구체화하고 검증하며 시제품을 만드는데 도움을 줘야한다.

특히 요즘은 하나의 제품을 만드는 것이 단순히 하드웨어를 만드는 것 뿐만 아니라 S/W, 스마트폰 앱, 인터넷 서비스 까지 신경을 써야하기 때문에 이런 부분의 전문가들이 서로 협업을 할 수 있는 공간과 미국의 TechShop처럼 Tool들의 사용법을 가르치고 사용할 수 있는 기반이 필요하다.

또한 해외의 유명 커뮤니티처럼 국내에서도 이런 커뮤니티를 육성하고 지원을 해줄 수 있는 제도도 필요하다. 국내의 카페형 커뮤니티는 너무 폐쇄적임…

너무 이상적인 이야기인가?


오픈소스 하드웨어 정의 – OSHW definition 1.0

예전에 오픈소스 하드웨어 정의(OSHW definition 1.0)를 위키에서 한글 번역을 했다. 이때도 권한이 없어서 변경 저장을 위해 관리자에게 메일을 보내서 수정을 한 기억이 있다. 수정을 끝내고 오픈소스 하드웨어 협회의 홈페이지에 게재를 요청하고 승락을 받았는데, 최근에 보니 업데이트가 되어있다.

 Translations: 中文FrançaisΕλληνικά,  Italiano,  日本語한글,  Latina,PortuguêsEspañolSvenska,   <= 번역된 순서대로인가? ^^

oshw

 


사설 IP 대역

이런 것도 찾아볼 때가 있으니, 정리~

  • A 클래스 : 10.0.0.0 ~ 10.255.255.255
  • B 클래스 : 172.16.0.0 ~ 172.31.255.255
  • C 클래스 : 192.168.0.0 ~ 192.168.255.255


Ethernet Auto negotiation – Duplex mismatch

이더넷 네트워크에서 auto negotiation은 PHY에서 담당하는 기능으로 전송선로상에서 상대방(peer)의 속도 및 half/ full duplex여부를 자동으로 결정하는 plug and play  같은 기능이다. 이 기능은 1997년에 Fast Ethernet IEEE802.3u 표준으로 들어갔고, 1999년에 Gigabit Ethenet 802.3ab 표준이 되었다.

Fast Ethernet 일 경우 1)양쪽이 auto일 경우 2) auto – 10/100 고정일 경우 3) 10/100고정 – 10/100 고정일 경우가 발생한다. 양쪽이 auto negotiation일 경우는 속도가 높고 duplex쪽으로 잡힌다. 즉 다음과 같은 우선 순위에 의해 속도 및 duplex가 결정이 된다.

  1. 1000BASE-T full duplex
  2. 1000BASE-T half duplex
  3. 100BASE-T2 full duplex
  4. 100BASE-TX full duplex
  5. 100BASE-T2 half duplex
  6. 100BASE-T4
  7. 100BASE-TX half duplex
  8. 10BASE-T full duplex
  9. 10BASE-T half duplex

하지만 한쪽만 auto이고 다른 한 쪽이 10/100으로 고정을 할 경우 속도는 10/100잘 설정이 되는데 duplex에 문제가 발생할 수 있다. 여러 경우의 수 중에서 duplex에 문제가 생기는 경우는 한쪽이 Full Duplex인 경우이다.

즉 한쪽이 auto-negotiation으로 설정이 되어 있고, 다른 쪽이 full duplex일 경우 full duplex로 잡힐것 같지만 그렇지 않다. 이 경우는 하위 호환성을 해 무조건 half-duplex로 잡힌다는 사실…

관련 자료

http://e2epi.internet2.edu/case-studies/SC02/DuplexMismatch.html

http://en.wikipedia.org/wiki/Autonegotiation

http://en.wikipedia.org/wiki/Duplex_mismatch

[wpdm_file id=9] 


W5500 드라이버 포팅: Parallax Propeller칩

Parrallax는 미국의 펩리스 반도체 회사이다. 이 회사의 칩은 Propeller인데 이 칩은 특이하게도 내부에 8개의 프로세어 코아가 있어서 병렬처리가 가능하다. 이 8개의 코아를 COG라고 부르는데, 아래 블럭다이아그램 처럼 내부에 각각 프로세서, RAM, 레지스터, 카운터 등이 있고 이 COG가 외부에 나와 있는 I/O를 공유한다. 그리고 각각의 COG를 제어하는 HUB가 있어서 각각의 COG각 언제 I/O를 access할지를 결정한다.

parallax_propeller

Propeller칩을 프로그래밍하게 위해서는 어셈블러, SPIN이라는 언어로 프로그래밍이 가능하며, 최근에는 C 컴파일러가 지원이어서 C로도 프로그래밍이 가능하지만 코드사이즈나 성능이슈로 대부분의 코드는 어셈블러나 SPIN으로 만들어져 있다.

데이터 시트 및 메뉴얼은 다음 링크에서 다운로드…

[wpdm_file id=7]  [wpdm_file id=8]

W5500칩의 드라이버를 포팅하기 위해 사용한 보드는 Propeller Activity Board인데, 이 보드에 있는 브레드보드에 WIZ550io를 꼽고 와이어링을 통해 Propeller칩과 연결을 했다. 연결되는 방식은 SPI 신호, 리셋 신호 및 전원 신호만 결하면 되므로 간단하다.

Propeller_WIZ550io

포팅한 코드는 Mike G라는 사람이 W5200으로 만든 코드를 포팅을 했는데, 이 코드는 SPI 인터페이스가 어셈블러로 되어있어서 이것을 일단 SPIN 랭귀지로 수정했다. W5500에서는 SPI 포맷 및 메모리 맵이 바뀌어서 W5500을 read, write하는 함수들 역시 수정을 했다.  수정된 코드가 제대로 동작하는지 확인을 하기위해 TCPMultiSocketServer 프로그램(간단한 웹서버 프로그램) 코드와 같이 컴파일을 해서 돌리니 잘 동작한다.

관련된 모든 코드는 github에 오픈: https://github.com/jbkim/Parallax_W5500


C 매크로: Paste Token, String-izing Tokens

Pasting Tokens

Each argument passed to a macro is a token, and sometimes it might be expedient to paste arguments together to form a new token. This could come in handy if you have a complicated structure and you’d like to debug your program by printing out different fields. Instead of writing out the whole structure each time, you might use a macro to pass in the field of the structure to print.

To paste tokens in a macro, use ## between the two things to paste together.

For instance

#define BUILD_FIELD(field) my_struct.inner_struct.union_a.##field

Now, when used with a particular field name, it will expand to something like

my_struct.inner_struct.union_a.field1

The tokens are literally pasted together.

String-izing Tokens

Another potentially useful macro option is to turn a token into a string containing the literal text of the token. This might be useful for printing out the token. The syntax is simple–simply prefix the token with a pound sign (#).

#define PRINT_TOKEN(token) printf(#token " is %d", token)

For instance, PRINT_TOKEN(foo) would expand to

printf("<foo>" " is %d" <foo>)

(Note that in C, string literals next to each other are concatenated, so something like “token” ” is ” ” this ” will effectively become “token is this”. This can be useful for formatting printf statements.)

For instance, you might use it to print the value of an expression as well as the expression itself (for debugging purposes).

PRINT_TOKEN(x + y);

출처: http://www.cprogramming.com/tutorial/cpreprocessor.html 


크롬 Mac 단축키

마우스 사용을 최소화하자.

  • ⌘-Option 키와 오른쪽 화살표 키 : 다음 탭으로 전환
  • ⌘-Option 키와 왼쪽 화살표 키: 이전 탭으로 전환
  • ⌘-[ 키 : 해당 탭의 인터넷 사용 기록에 저장된 이전 페이지로 이동
  • ⌘-] 키:  해당 탭의 인터넷 사용 기록에 저장된 다음 페이지로 이동

대부분은 아는 내용이고 탭 간에 이동하는 것이 필요했는데… 역시 찾으니 있다.

출처: https://support.google.com/chrome/answer/165450?hl=ko&ref_topic=25799



ARM Techcon 2013, ARM Technology Symposia 2013

지난 10월 29일부터 3일간 미국 캘리포니아 산타클라라 컨벤션 센터에서 열린 “ARM Techcon 2013” 행사에 참석해서 관련 글을 블로터넷에 기고를 했다. 보낸 원고에서 몇가지 영어 표현들이 한글로 바뀌고 제목들이 추가로 달렸는데, 에디터의 손을 거치니 좀 나아지는 것 같다. 한국에서는 IoT(Internet of Things)가 사물인터넷으로 번역되는 것이 좀 이상하지만…

기고문:  “사물인터넷” 눈독 들이는 ARM

최근  ARM CEO인 Simon Segars의 키노트가 유투브에 올라와 있다.

당시 3일 일정의 모든 세션을 들을 수 있는 티켓을 구매(약 1500불)해서 들었는데, ARM에서는 한국에서도  비슷한 행사를 개최했다.

ARM_Symposia _2013

그런데 이 행사는 ARM Techcon보다는 축소된 내용으로 개괄적인 내용만 다뤄졌고, 한국의 파트너들의 발표를 제외하면 당시 행사에서 발표한 슬라이드를 그대로 사용해서 발표를 했다. 지난번에 미국에서 만난 ARM사의 Diya씨가 이번에 한국에서도 발표를 했는데, 발표가 끝나고 물어보니 한국, 대만, 중국, 일본, 유럽, 인도를 거쳐서 미국에서 고객 미팅도 하고 내년에나 집(영국)에 간다고 한다. -_-;;

Diya씨는 Cortex-M시리즈에 대한 일반적인 내용을 발표를 했다.

IMG_0005_2

이번 발표도 미국서와 마찬가지로 주제는 IoT이다. mbed에 대한 소개가 좀 미흡했지만 국내에서도 이 플랫폼을 가지고 IoT를 촉진시키기 위한 커뮤니티의 확산에 노력을 하지 않을까 생각이 된다.

전시된 제품 중 흥미로운 것은 Sphero Ball에 사용된 칩이 STMicro의 STM32F0인것과, Nike_Fuel Band에  STM32L151QCH 칩이 사용이 된 것이 흥미로웠다.

IMG_0010_2

IMG_0011_2

관련 사진: http://www.flickr.com/photos/jbkim/sets/72157637889539275/

 


Pages:1...29303132333435...56