Tuesday, March 13, 2012

Binary CDMA 아트웍 완료

아... 드디어어제밤에 바이너리 CDMA 아트웍을 완료 하였다. 눈알이 빠지려하네 STM32F103ZET6 144핀 MCU와. 60핀 Board to board 커넥터를 연결하고 나니 ㅆㅂ... 부품 심볼을 잘못만들어서 1번핀이 가운데서 시작하네... 돌아버림.. 다시 1번핀이 구석에서 시작하게 심볼을 새로 만들고 다시 라우팅.... 제길.. 이런걸 진짜 삽질이라한다. 삽질을 안하는 방법은 작은 것에서 신경을 써야한다는거다. 계속된 삽질에 눈이 아프다.

Monday, March 12, 2012

Binary CDMA 공부중

바이너리 CDMA를 처음 알게된건 약 2년전. 친구가 재난관련 업체와 정보를 나누다 전해 들었다. 2.4Ghz의 ISM대역을 사용하므로 전파사용에 허가나 신고 없이 소출력으로 사용이 가능하다.

나는 그것에 별 쓰임이 없다고 생각했으나 최근 고이득안테나를 이용하면 작은 건물정도는 통과할수 있음을 시험으로 알게되고 매우 감탄했다.

현재 STM32F103ZET6과 대우전자부품의 모듈을 이용하여 개발중이며 개발성과가 있으면 포스팅하겠다.

물론 회사 직무관련이므로 회로도를 올릴수는 없고 완성품사진정도만 올릴예정.

근데 눈아파서 아트웍을 못하겠다.

Saturday, March 10, 2012

개발 장비 소개

개발 장비소개의 6번째이다.

개발 장비라기 보다는 개발 환경이 맞겠다.


왼쪽 사진은 나의 개발실이다.

전구 스탠드가 아주 중요하다. 3파장 램프이며, 옥션에서 산것 같은데 제도용이라고 나온것이다.
그냥 크기가 크고, 팔이 길어서 사용하기 편리하다. 독서용 작은 스탠드 램프는 짧은 팔때문에 걸리적거린다.
저런 큰걸 사용하는것이 아주 좋고, 방안에 옅은 조명을 하고 싶을때는 저 전등 부분을 회전시키면 천정을 비춰서 간접조명을 만들어낼 수도 있다.

컴퓨터는 노트북과 데스크탑을 1대씩 사용한다. 데스크탑에서는 주로 모니터링용으로 시리얼 터미널 프로그램을 뛰워놓고, 데이터 시트도 열어놓는다. 회로 그리기, 아트웍, 프로그램 작업은 항상 노트북으로 한다.
노트북이 있어야 언제 어디서라도 생각날때 작업을 할 수 있고, 현장에서 긴급하게 디버깅을 하거나, 프로그램을 수정해야 할때 아주 편리하다.

노트북은 반드시 1920x1080 해상도 이상을 지원하는 i7 cpu정도에 4기가 메모리 정도는 되어야 원활한 작업이 가능하다.
하드디스크는 크면 클수록 좋겠지만 현장을 자주 나간다면 내구성 좋은 SSD를 달도록.

개발 장비 소개

개발 장비 소개 5번째이다.

이번에 소개하는 개발장비는 바로.. 글루건이다.
글루건은 정말 꼭 필요한 장비이다. 각종 부품들을 배치할때 볼트로 고정할 수도 없고 애매할때는 쏘고 붙인다.
물론, 개발할때만 사용하도록 하고 되도록이면 사용할일이 없는게 좋은거다.

아기들 장난감 부셔졌을때도 사용하고 여러가지로 좋다. 너무 제품은 양조절에 실패하여 떡지게 되는 경우가 있으므로
필요에 따라 작은것이나 큰것을 선택하면 된다.

마트에 판다.


개발 장비 소개

개발 장비 소개로 이번이 4번째 글이다.

컴파일한 프로그램을 Arm CPU의 Flash 메모리에 넣으려면 jtag 프로그래머-디버거가 필요하다.
ARM 개발을 하는 사람들 중에 혹자들은 프로그램을 CPU에 넣을때 ISP(in system programmer)를 사용하거나 Serial downloader, usb downloader 등을 사용하는 경향이 있는데 jtag 프로그래머-디버거를 구입하지 않고 가지고 있던 싼 시리얼 케이블이나 usb 케이블만으로 하려고 하니까 그런건지는 모르겠는데 한마디로 미친짖이다.
ㅅㅂ 완전 천재가 아니면 프로그램에 오류가 있고 그것을 디버깅 할때 어디서 어떻게 되는건지를 추적하려면 디버깅이 되어야 하는데, 넣어놓고 돌려보고 안되면 다시 돌리는 미친짖을 하다니.. 천재인가? 아니면 나만 바보인가?

디버깅 코드를 넣어서 하는것도 어느 정도지, 그냥 아래 사진처럼 jtag 프로그래머이자 디버거인 장비를 사서 쓰도록 하자.

단돈 5만5천원이다. 5만5천원 아까워서 시리얼 터미널로 어디까지 갔는지, 변수에 뭐가 들어있는지 터미널만 보는것은 한심하다.



그리고 Cortex-m3 제품들에는 SWD 기능이 있다. SWDIO 핀과 SWCLK 핀. 이 두개와 VCC, GND . 총 4개의 핀만 연결해주면 프로그램 굽기와 디버깅이 다 된다.

Cortex-m3 쓰면서 20Pin Jtag 콘넥터 꼽아서 자리만 차지하게 하지 말고, 깔끔하게 4핀짜리 헤더소캣이나 작은 커넥터를 사용하여 공간도 줄이고 아트웍도 편하게 가자.

개발 장비 소개

개발 장비 소개 3번째 글이다.

이것은 인두기다. 그냥 막 쓰는 인두기. 집에서는 이정도 인두기만 있으면 충분하다.
일단, 온도조절도 잘 되고, ESD SAFE 라는데 정말 그런지는 모르겠다. 여하튼 회로가 파손되거나 내가 전기맞은적은 없으니까 그런거 같기도 하고.



역시 최고의 장점은 가격이 싸다. 20만원에 기본 팁까지 준다. 땡큐..

QFP 64핀이나 32핀 등 조밀한 IC를 조립하기 위해서는 900M-T-K 팁이 필수다.
이거보다 얇은 팁이 있는데 얇은게 IC 조립에는 완전 안맞다. 넓은게 좋다.
왜냐하면 팁이 넓으면 납을 다시 빨아 낼때도 확 잘 빨린다.

무슨 소리냐면, 아래 그림처럼 할때 인두기가 넓은게 좋다는거다.

납을 너무 많이 뭍혀서 지지면, 납이 핀에 엉겨 붙어서 다 붙어버린다. 그러면 인두기를 잘 닦아서 솔더링 패이스트(플럭스)를 뭍혀서 그 엉겨 붙은곳을 다시 지지면 납이 인두기로 빨려들어온다.

이러한 방법으로 전체적으로 고르게 납땜을 할 수가 있다.

초보자의 경우에, 잘 안되면 플럭스 팬을 사서 핀에도 바르고 패드에도 바르고 잔뜩 발라라. 그러면 납이 금속 표면에만 붙고 다른곳에는 안붙고 잘된다.

나중에 플럭스야 제거하면 장땡이니까, 쉽게 하자.

개발 장비 소개

개발 장비 소개 2번째 글임.

이번에 소개할 장비는 DC Power supply HY3003D-3 이다.

3채널이다. 30V 3A 2개 , 5V/3A 1개.
5V 출력은 Current limit이 없으므로 안쓴다. 집에서 장난치다가 태워먹으면 x되니까.


이 제품은 다 좋은데 전압이 오락가락한다. 3.3V에 맞추면 3V ~ 3.4V 를 왔다갔다 한다. 심할때도 있고 안그럴때도 있는데
좀 뭐랄까 품질이 아주 좋지는 않다.

그러다 최대의 장점이 있는데 가격이 29만원이라는거.

3채널에서 가장 싸다. 집에서 사용하기에는 이거면 충분.

개발 장비 소개

집에서 개발을 하려면 이정도는 갖춰야 가능하다.

그중 첫번째는 오실로스코프.



이 제품은 완전 초 저가형으로 디바이스마트에서 50만원에 구입하였다. (http://www.devicemart.co.kr/goods/view.php?seq=23582)
대충 30Mhz 정도까지는 사용하는데 문제가 없으며, 일반적인 마이크로프로세서를 사용할때는 보통 외부 인터페이스가 제아무리 빨라봐야 10Mhz를 넘을 일이 없으므로 충분하다.

장점:
싸다.
가볍고 작다.

단점:
조작성이 아주 빠르지는 않다.
Vertical position 이 채널별로 있으면 좋겠지만 그게 하나라서 버튼으로 전환해가면서 봐야한다. 2채널을 함께 볼때는 약간 불편함.

나의 능력으로는 이 장비 이상이 필요가 없다.

집에 오실로스코프 하나쯤은 놓고 쓰자.

젠장 내가 미쳤나보다. STM32F103R8T6에 I2S를 쓸라고 했으니..

내가 하루동안 STM32F103R8T6에서 I2S SlaveRX 모드로 PCM1808 에서 나온 I2S 신호를 받으려고 완전 쌩쑈 했는데
알고보니 지원 안한다.

STM32F103RET6을 사려고 했었는데 나도 모르게 2천원 싼값이 R8T6을 샀던것이었고 자세히 보니 R8T6은 I2S 기능이 없네

완전 삽질한거지.

삽질을 피할 사람들은 스팩 잘보고 사서 해보세요. 제길..... 우라질..

디바이스마트에서 주문 넣었고 이제 입금만 하면 되는데, 인증서가 회사에 있네.. 완전 쓋...

Wednesday, March 7, 2012

LG 옵티머스 LTE 벽돌 현상 해결 방법

증상:
홈 화면에 리치노트 위젯과 달력 위젯과 구글검색 위젯을 첫페이지에 놓고 껏다 켰더니
홈 화면에서 벽돌됨.
껏다 켜도 바로 벽돌됨.
메뉴 버튼을 누를 수가 없어 어떤 조치도 불가능함.

해결 방법:
휴대폰을 끄고 MicroSD 카드(외장메모리)를 제거하고 후대폰을 켠다. 그러면 켜짐.

아마도 위젯들이 MicroSD 카드를 서로 읽으려 하는것일 수도 있고 홈화면 프로그램이 병신같아서 그럴 수도 있고..
여하튼 해결되었음.

Cortex-M3(lm3s808, lm3s811 등)가 FaultISR()에 빠질때 해결방법.

증상:
FaultISR() 에 들어가 while(1) 무한 루프 도는 현상이 랜덤하게 생긴다.
왜그런지 알 수가 없이 그냥 뒤진다.


그건 심각한 오류가 발생했을때 그렇게 되는데 거의 두가지 이유다.
1. GPIO 나 USART 같은 포트를 초기화 하지 않고 사용하려 했을때.
2. System stack 이 overflow 됐을때.

해결 방법:
1. GPIO 나 포트 문제: 초기화 하고 사용하라.
2. System stack 이 overflow 됐을때는 스택 사용을 줄이든가, startup.c 의 static unsigned long pulStack[xx] @ ".noinit"; 부분의 xx를 늘려라. 단, CPU의 ram 크기에 따라서 적당히 늘려야 한다.
특히 인터럽트 핸들러를 사용하는 경우에 스택 사용이 몰리는 현상을 예측하기 어려우므로 인터럽트 핸들러를 많이 사용하는 경우에는 핸들러 안에서 스택사용을 줄이고, main 함수에서도 마찬가지로 스택 사용을 줄인다.
스택 사용을 줄이는 방법은 지역 변수 사용하지 말고 전역 변수 사용하기. 임시로 메모리 써야 할때는 malloc 해서 heap 에다가 할당 받아 사용하고 해제하기. 재귀 호출 같은거 하지 말기.

3. 또, 왜그런지는 알 수 없지만 실수 연산 할때 뒤지면 형을 강제로 맞춰라. 예를 들어 float x = (float)1 / 2.0; 이라고 하면 뒤의 2.0은 float 인지 double 인지 알수 없지만 기본적으로 double로 될것이다. 그러면 double 갔다가 float랑 연산하느라 float가 double로 변했다가 또 다시 변수에 들어가느라 float로 형변환 해야 하므로,
float x = (float)1.0 / (float)2.0; 식으로 쓰면 전체적으로 float만 있게 된다.