프로젝트를 매번 정리해야지 하다가 벌써 작년 프로젝트가 되어 버렸다. 

정리를 안 하니 재작년 프로젝트도 기억이 안 나서 도저히 안되겠다는 생각을..

이번 프로젝트는 실리콘랩사의 EFR32BG21 시리즈 칩으로 개발한 건이다. BLE 통신을 이용하는 제품인데 개발자들의 편의를 위해서는 SPP(RFCom)을 에뮬레이션(?) 해주지 않으면 안 된다. 특히 Nordic이 해당 기능으로 시장을 거의 선점해 버려서 후발주자는 어쩔 수 없이 개발을.. 

기본 예제는 silicon에서 운영하는 github의 예제를 이용했다. 다만 펌웨어 레벨로 기기 2대를 클라이언트와 서버를 구축한 거라 다른 기기(예:스마트폰) 과의 연동시에는 많은 수정사항이 있었다.

https://github.com/SiliconLabs/bluetooth_applications/tree/master/bluetooth_secure_spp_over_ble

 

GitHub - SiliconLabs/bluetooth_applications: Bluetooth wireless applications. Go to https://github.com/SiliconLabs/application_e

Bluetooth wireless applications. Go to https://github.com/SiliconLabs/application_examples - GitHub - SiliconLabs/bluetooth_applications: Bluetooth wireless applications. Go to https://github.com/S...

github.com


개발을 시작하려면 우선 기본적인 예제를 준비하고 개발킷으로 해당 제품에 대한 스터디를 해야 한다.
보통 하드웨어 팀이 나 기구 팀이 금형을 파고 PCB를 뜨는 데 시간이 걸리니 소프트웨어는 그 사이에 준비를 하는 것이 보통이다.

 

플래쉬 용량 512kbyte에서 부트로더는 32kb, 메인 프로그램은 416kbyte, 나머지는 저장 영역으로 사용했다. 

보통 개발 시에는 Jtag을 연결해서 개발하면서 디버그를 하기 때문에 크게 신경 쓰지 않지만 업데이트를 위해 부트로더(커스컴)을 만들고 부트로더에서 메인 프로그램으로 점프를 하는 방법을 알아내야 한다. EFR32는 Cortex 계열이라 STM32에서 쓰던 방식을 그대로 쓰면 되었다. 보통은 인터럽트를 활성화한 것을 disable 하고 jmp()를 하면 된다. 다만, 점프를 하면 디버거를 못쓰니 개발을 충분히 한 다음, 적용해야 한다. 

또 점프해서 돌아가는 메인 프로그램은 프로그램 시작 주소만 바꿔주면 된다. 


Silicon EFR32에 프로그램을 다운로드하는 방법은 2가지가 있다. 보통 프로그램 하나만 다운로드하거나 마우스 클릭만으로 하는 방법은 commander 프로그램의 GUI를 이용하는 것이다.

 

2번째는 BAT 파일을 이용하는 방법인데 이는 보통 양산하거나 2개 이상의 파일을 다운로드할 때 사용된다. GUI 방식에서는 2개 이상을 다운로드하려면 불편하긴 하다. 그래서 배치파일을 실행만 하면 생산하는 사람들이 편하게 다운로드가 된다.
(반드시 hex 파일로 할 것)

D:\SiliconLabs\SimplicityStudio\v5\developer\adapter_packs\commander\commander.exe 
 --apack device masserase  -d EFR32BG21A010F512IM32

D:\SiliconLabs\SimplicityStudio\v5\developer\adapter_packs\commander\commander.exe 
 --apack  flash  -d EFR32BG21A010F512IM32 
 "D:\02_Project\05_silicon\06_work\bootloader\GNU ARM v10.2.1 - Debug\bootloader.hex"

다음에는 GPIO 및 UART 등 필요한 소스 설명과 BLE 통신 안정화를 어떻게 했는지 정리 좀 해야겠다.