5/28/2016

STM32F103x and IR Code

1. STM32F103x 기본설명 

우선 아래와 같이 STM32F103x 전체 구조도를 이해하고, 그 다음에 Clock부터 보는 것이 순서인 것 같다.

  • STM32F103x 의 전체구조
MCU or MPU로써 왠만한 기능들은 거의 다 있지만, 다만 Flash 와 SRAM이 아쉬울 뿐이다.



  • STM32F103x 의 Clock Tree 의 기본구성 
  1. PLLMUL(Multiplier): PLL의 설정으로 실질적인 PLL 설정 
  2. AMBA의 AHB : MCU의 사용되어지는 Main Bus로 Cortex와 연결된 부분.
  3. AMBA의 APB1 Peripheral를 위한 BUS1
  4. AMBA의 APB2 Peripheral를 위한 BUS2
  5. USB Clock 
  6. RTC Clock 


상위에서 설명했듯이, FHCLK과 FPCLK1,2 은 ARM의 Bus에 적용되는 Clock 이며 다만 FCLK은 좀 다른 것 같다.
interrupt와 debug 부분하고 관련 있는거 같다. 자세한 내용 아래에서 확인하자.
     http://infocenter.arm.com/help/topic/com.arm.doc.ddi0337e/DDI0337E_cortex_m3_r1p1_trm.pdf


  • STM Series
STM32 F Series의 각 차이점을 알수 가 있다. 차이라고 해봐야 공통 F시리즈의 차이는 SRAM과 FLASH SIZE 차이인 것 같고,
F의 변경 여부에 따라 주변 Deivce와 PIN이 변경되는 것 같다.

     https://en.wikipedia.org/wiki/STM32#Series

1.2 STM GPIO Manual

     http://stm32.kosyak.info/doc/group___g_p_i_o___exported___types.html
     http://stm32.kosyak.info/doc/group___g_p_i_o___exported___functions.html
     http://patrickleyman.be/blog/stm32f4-gpio-configuration/


1.3 STM Timer Manual

     http://embejide.tistory.com/86
     http://www.cs.indiana.edu/~bhimebau/f3lib/html/group__TIM__Group1.html
     http://visualgdb.com/tutorials/arm/stm32/timers/

     http://nexp.tistory.com/474


2. STM IR sample code

예전처럼, GPIO로 IR를 구현할 일 있어 아래의 Source 참조하여 쉽게 구현을 하였다.
오래전에는, 직접 각 회사 리모콘 가지고 IR 을 GPIO로 읽어서 했는데, 요즘 Github가 잘되어있어 너무 좋다.
  https://github.com/ppkt/stm32f1-irhttps://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol


2.1 NEC IR Remocon Protocol (LG)

NEC IR Protocol의 기본구성은 다음과 같다.

Default Code
  • 9ms high 
  • 4.5ms low
  • 8bit address,
  • 8bit inverse of address
  • 8bit command,
  • 8bit inverse of command
  • 560us 다음  1bit 일 경우 1.69ms   ( 전체 2.25ms)
  • 560us 다음  0bit 일 경우 560us    ( 전체 1.12ms)
  • 마지막은 560us high로 

Repeat Code
  • 9ms High
  • 2.25ms low 

     https://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol
     http://www.sbprojects.com/knowledge/ir/nec.php


2.2 Samsung IR Remocon Protocol 

Samsung도 기본이 NEC 이지만, Timing이 다르다. 이부분을 변경을 해주면 된다.
아래 Samsung 부분을 참고하자.
  https://rusticengineering.com/2011/02/09/infrared-room-control-with-samsung-ir-protocol/

5/26/2016

Javascript 과 AJAX 와 차트(Chart) 관련 자료

1. HTTP의 기본개념  

HTTP는 기본적으로 Client가 Methods기반의 TEXT를 Server에게 보내면 Server가 해당하는 일을 처리하고 Server 상태정보와 함께 관련된 값을 전송을 해주는 것이다.

예를들면 Client가 GET or POST로 Server에게 보내면 200 OK 함께 통신의 성공여부와 함께 관련 데이타를 보내주는 것이다.

  https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
  https://ko.wikipedia.org/wiki/HTTP

HTTP Protocol을 이해하면, SIP/RTSP등 IETF에서 만든 Protocol을 기본적으로 쉽게 이해하며, Protocol 구조가 TEXT기반으로 거의 유사하다

1.1 AJAX의 기본개념 

AJAX (Asynchronous JavaScript and XML)의 약어로 Client와  Server 양쪽에서 사용되어지는 Web 기술이다.

기존은 HTTP 1.1 기준으로 Web browser에서 HTTP를 이용하여 Client가 Server에게 Request (Get or Post)보내면 이에 해당하는 응답(200 OK) 함께 해당 HTML 을 제공해주는 방식이었다.
(물론 HTML과 CSS , Javascript 이 전부포함하여 전체 Web Page, 즉 HTML를 제공해준다)

하지만 기존의 HTTP에는 근본적인 문제가 있다. Client가 Server로부터 주기적으로 관련 Data를 받고자 한다면,  Web Server 부하가 심해진다.
왜냐하면, Web의 통신주체는 항상 Client이며, 관련된 Data 및 Web Page의 변경을 원한다면 Client가 요구가 있을 경우 변경되는 것이  HTTP Protocol의 문제이다.

이런 문제를 조금이나마 극복하고자 나온 기술이 AJAX이며 그 기술은 다음과 같다.
전체 Web Page를 Refresh or Update를 하는 것이 아니라 부분적으로 가능한 것이다.
이는 기존의 Web에서 Client가 값을 얻고 저장하는 방식이 GET/POST 방식을 넘어 다른 매개체를 이용하여 Web Server에게 통신을 하는 것이다.

1.2 기존 Web 모델과 AJAX Engine 모델 비교 

아래의 두 개의 Web Server 모델을 간단히 비교 분석을 해보자

좌측은 기존에 사용되었던 Web Server와 Client모델이며, 항상 Client가 요구시에만 Web Page의 반응을 하는 구조를 가지고 있다.

우측은 AJAX Engine지원이되는 모델이며 이는 Browser(Client)와 Web Server가 동시에 지원이 가능해야한다.
우선 기존모델에는 Web Server을 지원을 하며, 이와 더불어 AJAX Engine이라고 하는 것이 별도로 존재한다.
이는 기본의 Client와 Server 통신을 확장되어 Javascript에 의해 JSON, XML, HTML으로 Data를 Server에 전송하고 응답이 가능하다.

아래의 링크에도 자세한 설명이 포함이 되어있다.
https://en.wikipedia.org/wiki/Ajax_(programming)

아래의 그림을 보고 확장된 기능을 정확히 알아보자. Client는 Server의 상태를 매번 정확히 알고 싶을 경우가 있을 것이다.
이때 기존의 경우는 매번 HTTP를 Request를 해서 값을 얻어 전체 Web Page를 매번 가져와야한다.
하지만, AJAX를 이용한다고 하면, Client는 Javascript을 이용하여 주기적으로 해당값들을 Refresh가 가능하다. 이는 시스템의 부하의 영향이 달라진다.

이 과정을 살펴보면, Client는  Web Server로 전송하는 Request Data를  JSON/XML/HTML로 전송하여, 특정 HTML을 Refresh를 해주면 된다.
(Javascript의 value값을 Refresh가 가능하고, HTML의 값이 가능하다는 소리이다.)


http://stackoverflow.com/questions/11028122/how-update-panel-do-partial-postback-and-server-side-function-is-invoked-and-con

  • AJAX 관련 자료 (일반적인 개념 및 관련자료)
  https://developer.mozilla.org/ko/docs/AJAX/Getting_Started
  https://taegon.kim/archives/206


1.2 AJAX 통신 DATA 매개체 

Web Client는 Web Server로 부터 Data를 얻고 설정하기 위해서는 별도의 통신 매개체를 필요하며, 이는 Client와 Server가 서로 호환이 되어야한다.

현재 알고 있는 방식으로는 Web Client는 XML/JSON/HTML 방식으로 DATA를 요구하고 Web Server를 이해 해당하는 함수를 호출하여 Data값을 전송을 한다.

쉽게 예를 들면, Javascript의 특정변수 값을 주기적으로 받고자 하면, XML로 이를 넣어 Server에게 보내며, Server는 이에 관련된 Refresh하는 것이다.
많이 XML을 이용하여 Server의 원하는 Data를 얻겠지만  JSON이라는 것을 이용하여 얻는다고고 한다.

  https://www.w3schools.com/xml/ajax_intro.asp

A. JSON(JavaScript Object Notation)의 개념 

  http://www.json.org/json-ko.html
  https://ko.wikipedia.org/wiki/JSON

B. AJAX에서 JSON을 이용하여 Data 가져오기 

  http://code.jquery.com/
  http://et-day.tistory.com/entry/Javascript-ajax-%EB%A1%9C-JSON-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0

C. JQUERY-JSON GET, POST

  http://api.jquery.com/jquery.getjson/
  https://api.jquery.com/jquery.post/





1.3 AJAX의 사용법 

이 에 대해 좀 더 자세히 알고 싶다면, XmlHttpRequest 관련하여 검색을 해보거나, AJAX로 검색을 해보면 자세한 설명이 잘 나올 것이다.
많은 사람들이 JQUERY Library를 이용하여 사용하는 것 같으며 이와 관련부분을 알아보자.
상위 사이트에서 알아보자

아래의 그림을 설명과 Client와 Server를 보고 참고만 하자
  https://en.wikipedia.org/wiki/DWR_(Java)


 좌측의 메뉴 AJAX HOME부터 차례대로 예제를 실행 TEST가 가능
  http://www.w3schools.com/ajax/default.asp
  http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp


2. AJAX 적용소스 (Chart관련부분)

아래의 Chart 소스는 AJAX를 적용했던 Chart 소스였으며, 이전에 이를 이용하여 Active-X와 연결하여 사용했던 일이 있다.
아래의 소스가 너무 좋은 예제이어서 지금도 기억을 하고 있다.

  http://www.flotcharts.org/
  http://www.flotcharts.org/flot/examples/realtime/index.html

이외에도 구글에서도 다양한 Chart를 제공을 한다.

2.1 기타 Javascript Chart 소스 및 참고 소스 

  • SVG와 VML관련 자료 및 Chart 
  SVG를 이용하여 Chart or 간단한 그림을 만드는 법을 소개하고 있다.
  http://mobicon.tistory.com/311


  • Google AJAX 
  http://www.htmldrive.net/items/show/1291/-CSS3-and-jQuery-Interactive-Graph
  https://developers.google.com/speed/libraries/#jquery


  • Web Design 및 관련 Interface 참고 사이트 
  http://blog.outsider.ne.kr/422
  http://iyfnzgb.com/?pid=9PO1H9V71&dn=webdesigneraid.com



  • Node.js 와 AJAX 차이 

  https://stackoverflow.com/questions/12089982/difference-between-ajax-and-node-js


  • Node.js

  https://www.w3schools.com/nodejs/default.asp


3. ESP8266 AJAX

ESP8266는 WIFI관련 제어모듈이며, (AP/STA 제어가 가능) 이곳에 HTTP Server도 지원이 가능하다 물론 모듈형태로 제공이되어 Firmware Upgrade로 가능하다

아래예제들을 보며 느낀 것이 최근나온 모델은 별도의 많은 연산이 필요 없다면 MCU 조차 필요가 없을 것 같다.

이에 관련응용은 참으로 신기할 뿐이며,  AJAX 및 Web socket이라는 것을 처음알게된 사이트이며, 정말 감사할 뿐이다.

  http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_esp&wr_id=39
  http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_esp&wr_id=41

  • ESP8266 관련 Firmware Source
 https://github.com/godstale/ESP8266_Sming_Examples/tree/master/Examples/HttpServer_AJAX
 https://github.com/godstale/ESP8266_Sming_Examples/tree/master/Examples/HttpServer_WebSockets

5/22/2016

Win32DiskImager-SD Card Writer (Window)

TI SDK에서 알게된 프로그램으로, 주로 SD Card Writer로 사용하였지만, 구지 이프로그램을 한정지어서 생각할 필요없다.

SD Card Writer되지만, Reader도 되고, 주 기능을 해당 Driver에 Image를 Read/Write 기능을 제공해주는 것이기 때문에
다른 Device에 얼마든지 적용이 가능하다. 다만 용량과 다른 제한사항이 있는지는 정확히 모르겠다.

현재는 거의 SD Card Writer 용으로 사용하지만, Reader 기능 , USB Read/Write 기능
다른목적으로 얼마든지 가능하다.

다른목적으로 사용한다면, 제약사항이 있는지 반드시 검증해보고 사용해봐야겠다.
현재 SD Card 용으로만 사용


  • Win32DiskImager  Download
  https://sourceforge.net/projects/win32diskimager/

TI의 경우 최근 1st Boot Loader 와 Uboot를 FAT를 넣어 확인이 가능하다.

  • 실행화면 
손쉽게 Device에서 찾아서 Image를 선택 후 image를 write 하면 된다.




  • G:\ Driver가 TI의 SD Card 
만약 SD Card가 FAT로 잡히지 않는다면, 어쩔수 없이, FAT로 포맷을 하고 해야할 것이다 



5/16/2016

Web Server 비교

1. HTTP 기본개념

        아주 오래전에 HTTP Parser부분을 수정하고, 기능을 추가한적이
        기억나는데로 간단히 정리한다.
     
        기억하기로는 기본적으로, HTTP 1.0에서 GET과 POST가 확정이 되고,
        1.1에서 POST에 암호화 부분이 추가되었던걸로 기억하고 있다.
        - 추후 다시 관련일을 하면, 다시 정리 필요 (v1.0, 1.1)

        - 관련자료 찾음
        http://bluestarblogkr.blogspot.kr/2011/10/http10-11.html
        http://jaweb.tistory.com/entry/HTTP-HTTP-10-%EA%B3%BC-11-%EC%9D%98-%EC%B0%A8%EC%9D%B4-HTTP10-VS-HTTP11

        일단 GET과 POST의 기본개념은 Client가 Server에게 요청하는 방식의 차이일 뿐이다.
        둘다  Form 태그에 method 부분에 get 혹은 post를 넣어 전송이 가능하며,
        Server에게 데이타를 요청할수 있으며, Server는 이에 반응하여
        그에 해당하는 값을 돌려준다.

        둘의 차이 큰 차이라면, GET은 URI 을 이용하지만, POST는 URI을 이용하여 전송하지않는다.
     
        https://en.wikipedia.org/wiki/POST_(HTTP)
        http://tools.ietf.org/html/rfc7231#section-4.3.3


2. Linux Web Server

linux embed에서 사용하는 Web server 및 Device 들을 간단히 찾아 정리한다.

    A. Boa Web server
   
          http://www.boa.org/
          http://www.boa.org/documentation/boa-2.html
          https://en.wikipedia.org/wiki/Boa_(web_server)

 
    B. lighttpd

          https://ko.wikipedia.org/wiki/Lighttpd
          https://joungkyun.gitbooks.io/annyung-3-user-guide/content/chapter3-3-lighttpd.html

 
     C. shttpd

          https://sourceforge.net/projects/shttpd/files/shttpd/


     D. Library 로 제공 

          https://www.gnu.org/software/libmicrohttpd/

     E. ESP-8266 

         IOT Device에서 많이 사용되는 Wifi Device 이며, Serial 이용하여 쉽게 제어가 가능하다.
         요즘 Micom을 이용하여 사용해 보니, 기본적인 Web server를 제공을 하지만,
         CGI interface가 아니지만,  AT Command를 이용하여 다양하게 제어가 가능하다.
         상당히 흥미롭다.
       
         http://www.esp8266.com/index.php


4. Web server 비교

        http://egloos.zum.com/sharkynara/v/1485910


5/08/2016

WIFI MAC Index 와 무선통신관련자료

1. WIFI 관련책 과 IEEE802.11 

  http://www.ieee802.org/11/
상위사이트에서 얻는 정보는 무료가 아니라고 하며 협회에 가입하고 돈을 내야 얻는다고 한다.
추후 집에 있는 WIFI 관련책과 지인인 WIFI 관련 전문가를 통해 얻은 SPEC(IEEE802.11)을 참조하여 관련부분 검토

  • MAC Layer 관련 Index 
IEEE802.11 MAC/PHY Spec 관련 Index  주로 MAC 중심으로 하며 보안과 다른 부분들은 생략 












2. 무선통신관련자료 

우연히 MAC 관련내용을 찾다가 발견한 사이트인데 감사하게도, 너무 쉽게 설명을 해주셔 감사하다. 


  • 무선통신의 db/dBm 관련내용 

  • 무선랜(WIFI)의 기본 과 IEEE 802.11 표준구성 

  • IEEE 802.11n 관련내용

  • WIFI Component,구성요소