시작

협력 업체에서 일이 넘치고 인력은 부족하고 그래서 거절하는 프로젝트들이 생겼다며
사장님이 우리가 그걸 하면 어떻겠냐며 제안해서 시작된 STM32 프로젝트.

요건 처음 해보는 거라...
CPU datasheet 보니 단순해보이고 마치 대략 들어본 ATmega 128 같은 느낌??
ARM9, ARM11, CorTex-A8  요런거만 하다가 갑자기 CorTex-M3 이라니..

개발 환경

모든 프로젝트가 비슷하듯 개발 환경 구축이 먼저.

iar embedded workbench, keil uVision, RIDE7 등의 툴로 firmware?? application??을 작성한다고 한다.
RIDE7은 공짜 iar, keil은 상용.

RTOS도 올리는데 uC/OS, ucLinux를 보통 올린다고 한다. 업체에서는 uC/OS-II (마이크로C OS라고 읽는다)사용 중.

-컴파일러
일단 업체에서 iar을 사용하고, 사용하고 있었으므로 같은 툴 사용.
iar은 compile 외에는 편집이나 소스리뷰가 좀 더러움. 소스 수정,리뷰는 Source Insight를 활용.

-다운로더
시리얼을 통해 OS와 firmware? 가 합쳐진 바이너리를 다운로드할 때 쓰는 것이 
STM32의 제조사인 STMicroelectronics 에서 배포중인 Flash Loader Demo 툴. 설치.

-STM32F10x standard peripheral library 3.5.0
STM32 processor에 관련된 Windows CE에서 보면 CSP, BSP라고 볼 수 있다.
각 Peripheral들에 대한 드라이버와 CorTex-M3 과 관련된 Core 지원, 각종 예제, 템플릿이 제공된다.
개발에 꼭 필요하므로 다운.

-그외에 STM32 사이트에서 해당 CPU와 관련된 항목들은 우선 모두 다운로드해서 가지고 있자.

-uC/OS-II 다운.
 

프로젝트 구성

STM32는 uC/OS 와 같은 RTOS를 넣거나 또는 OSless로 펌웨어로만 구성해도 된다.

내부 ROM에 bootloader를 이식할 수 있으므로 
STM32F10x_AN2557_FW_V3.3.0 이라고 되어있는 부트로더 소스를 다운받아 컴파일하고 다운로드한다.

iar에서 새 프로젝트를 만들고
uC/OS와 STM32 Std library를 잘 배치해놓는다.

그리고 uC/OS에서 호출되는 main 함수 구현(예제가 있으니 대부분 가져다 쓰면 됨)
이후에 필요한 Task별이나 항목별로 추가 구현.

프로젝트 진행

프로젝트를 진행하면 각 프로젝트의 성격이 있겠지만
이번건 이동통신사에서 설치하는 소형중계기의 RF를 컨트롤하는 제어보드였다.

Labwindow로 제작된 GUI와 시리얼로 프로토콜을 작성해서 통신하고 제어와 상태정보를 주고 받는 단순하다면 단순한 역할.
상태/제어 항목이 많아서 탈이었지만...

상태체크,명령 적용,RF Feedback 수치 수집, 시리얼통신,
또 나름 알고리즘? 이 있는 제어와 장비 불량등을 방지하기 위한 여러 기능들을
여러개의 Task와 여러개의 Timer를 가지고 Polling을 하면서 주고 받는 것이었다. 

암튼, 기존 레퍼런스 소스들을 참조해서 작성을 하는데, 
내가 몰라서 그래야는지 그쪽 업계는 원래 그리해야하는지의 혼란속에 진행되었다.

MC절약차원에서 바꾸거나 저렴하게 구성한 회로로 인해 혼란도 가중되고...
우선은 그쪽이 그동안 해온게 있으니 소소한 변화만 주면서 진행했는데
디버그용 시리얼 하나도 안내놓고 처음부터 양산용으로 보드를 떠오고 일정은 빠듯하니 속만 탔다.

다운로드도 USBtoSerial을 사용하면 PC에서 할때보다 두배는 시간이 더걸리는데
뭐 하나 확인하려고 해도 매번 다운로드를 하게 해놓고 -_- 

제대로 파악도 안된 플랫폼에 firmware까지 짜넣고 제어흐름에 기능들까지 하다보니 스트레스를 많이 받았다.
뭐 계속 그래왔다니 할말은 없었지만.. 

프로젝트 일단 완료

뭐 각 기능들에다 제어/통신까지 대부분을 마무리했지만 
통신사에서 당분간 소형중계기는 말이 없다며..
일단 여기까지 해놓고 다음 해에 얘기나오면 바로 대응하자고 -_-
고생만하고 매출과 이어지진 않았다. 
그래도 뭐 스터디는 급하게 조금 했으니까... 신발

매번 고사양, 고Clock, 이런저런 주변장치들이 붙는걸 하다가 슬림한? MCU를 다뤄보니 신선했다.
산업용/제어 등에 쓰기에 좋게 잘 만들어 놓은 것 같고,

일단 STM32를 쓰는 프로젝트는 얘기 나오는게 없다. 그러나 틈틈히 공부하고 정리를 해야겠다.
CorTex-M3관련해서 하드웨어 구성만 할 줄 알게되면 혼자서 간단한 제품은 만들 수 있지 않을까??

그리고 곧 ARM9으로 Embedded Linux를 올리는 중계기 프로젝트에 투입 될 예정이다.

대학때 Linux와 JAVA를 버리며 아무리 흥해도 Windows와 C/C++로도 먹고 살 수 있을 거라 생각했는데...
기존 Widnows CE로 된 제품마저 안드로이드를 올릴 계획도 세워지고 있고...그럼 app은 JAVA로 ㅠ.ㅠ

아.. 할게 많아진다...


'Embedded > Cortex M3' 카테고리의 다른 글

STM32 프로젝트 일단 완료  (1) 2011.10.01
  1. 삽자루 2012.02.03 20:55

    혹시 윈도우7에서 진행하셨나요? xp에서 진행하셨나요?
    윈7에서 VCP문제로 고생중이라서요 ㅠㅠ

+ Recent posts