전체 글129 EFR32BG21 BLE SPP 개발 (2부, GPIO, UART 등) 펌웨어로 무언가를 개발하려면 제일 먼저 하는 건, LED 켜고 끄기다. 사실 더 이전에 하는 일은 전원이 정상 들어오는지? 뻥 터지지 않는지? 오실레이터가 정상적으로 발진하는지, JTAG과 CPU가 정상적으로 통신하는지... 등이 있다. 그래서 가장 마지막에 테스트하는 GPIO로 LED가 제어가 된다면 개발 관련해서는 50% 이상은 한 것이나 마찬가지이다. (개발 관련은..) - GPIO - 출력 설정을 하려면 GPIO_PinModeSet 함수를 이용하면 된다. 포트와 PIN 번호를 가지고 풀업을 하지 말지 그리고 초기 출력값을 무엇으로 할지 결정하면 된다. 또 CMU_ClockEnable 함수로 GPIO 클럭 활성화도 같이 해주면 된다. 위는 PORTD의 4번 핀에 있는 LED를 풀업으로 초기값 '.. 2023. 7. 3. EFR32BG21 BLE SPP 개발 (1부, 프로젝트 구성) 프로젝트를 매번 정리해야지 하다가 벌써 작년 프로젝트가 되어 버렸다. 정리를 안 하니 재작년 프로젝트도 기억이 안 나서 도저히 안되겠다는 생각을.. 이번 프로젝트는 실리콘랩사의 EFR32BG21 시리즈 칩으로 개발한 건이다. BLE 통신을 이용하는 제품인데 개발자들의 편의를 위해서는 SPP(RFCom)을 에뮬레이션(?) 해주지 않으면 안 된다. 특히 Nordic이 해당 기능으로 시장을 거의 선점해 버려서 후발주자는 어쩔 수 없이 개발을.. 기본 예제는 silicon에서 운영하는 github의 예제를 이용했다. 다만 펌웨어 레벨로 기기 2대를 클라이언트와 서버를 구축한 거라 다른 기기(예:스마트폰) 과의 연동시에는 많은 수정사항이 있었다. https://github.com/SiliconLabs/bl.. 2023. 3. 15. [ESP32/idf] Panic, watchdog 이벤트 발생 시 참조할 사항 프로그램을 짜다보면 에러 발생 시 조치를 취해 주어야 한다. 특히 연결된 하드웨어가 모터라던가, 열을 발생하는 장비라던가 특히 인명에 관련된 장비라면, 메모리가 오버플로우가 발생한다던가 워치독이 발생한다던가 해서 시스템이 재부팅이 되거나 멈추게 되었을때, 안정적으로 하드웨어 처리에 대한 예외처리를 해주어야 한다. ESP32는 Exception 에러를 Panic이라고 하며 panicHandler 를 실행한다. 그래서 해당 함수내에서 장치를 끄는 예외코드를 삽입하면 된다. 또 UART나 I2C같은 통신을 사용 시 노이즈 데이터가 주변 장치로 전달되는 것을 방지하려면 내부 레지스터를 초기화 하는 함수도 ESP32 idf에서 제공한다. 먼저 Panic handler behaviour를 ~~reboot로 설정하고.. 2022. 10. 14. 펌웨어와 커스텀 부트로더(SRAM과 보안,MPU) 펌웨어로 개발을 하다보면 부트로더의 개발은 선택이 아닌 필수가 된다. 부트로더는 보통 하드웨어 또는 환경설정( 예:맥어드레스..) 초기화를 하거나 프로그램 다운로드 및 업데이트를 진행한다. 내가 그동안 개발했던 펌웨어 부트로더는 Romless cpu+ Nor flash(또는 spi flash) + sdram 인 케이스, 내부플래쉬에서 점프하는 가장 맘편한 케이스 그리고 지금하는 qspi flash에서 점프하는 케이스가 있다. Romless cpu+ Nor flash(또는 spi flash) + sdram 인 케이스는 NXP의 lpc1820으로 개발한 경우였다. spi flash로 부팅하고 sdram에 메인 프로그램을 복사한 뒤, vector와 스택포인터만 변경해 주면 문제없이 점프를 했다. 내부 .. 2022. 10. 14. EFR32FG1 HFXO 오실레이터 관련된 개발 이야기 실리콘랩스의 EFR32FG1 시리즈를 개발하고 양산하는 도중, 꽤 많은 생산 불량이 나오기 시작했다. 한 7% 정도... ? 무한 재부팅이 되고, 와치 독을 빼면 어디선가 멈춰서 JTAG도 안되고, 멀쩡한 건 정상 부팅이 되고... 문제를 분석하기 위해 크리스털 발진을 찍어보니 발진을 하는 순간, 리셋이 되었다. 어디인지 보기 위해 디버깅 메시지를 이리저리 추가하니, RAIL_StartRx 함수가 실행되면 다음 리셋이 실행되는 것을 확인했다. (https://docs.silabs.com/rail/latest/group-receive) 무선 RF 통신을 하는 장비가 통신을 하니 멈춘다니.. 우선 크리스털이 문제인가 해서 교체해 봤으나 문제는 해결되지 않았다. 냉납인가 해서 납땜도 다시 해봤으나,.. 2022. 10. 14. [안드로이드]BLE SPP와 Bonding 블루투스 관련 제품을 개발하기는 하지만 아직도 블루투스 스택에 대해 많은 공부가 필요한 것 같다. GATT라던가 A2DP라던가 사용하면서도 누군가에게 설명해 줄 그런 지식이 없어 가끔 한심하기도 한다. 최근 개발하는 장비는 BLE 통신을 사용하며 SPP(Serial Port Profile)를 지원하지 않기에 이를 GATT로 구현한 SPP 에뮬레이터(?)를 사용한다. Nordic CPU가 이쪽으로는 선점을 하고 있으며, 최근에는 Ambiq Apollo 시리즈와 Silicon Labs의 EFR32 시리즈도 사용되는 추세이다. SPP를 검색해 보다가 Bluetooth 구 버전의 SPP와 BLE로 구현한 SPP의 차이에 대한 글을 발견했다. https://devzone.nordicsemi.com/f/nor.. 2022. 10. 14. 이전 1 2 3 4 5 6 7 8 ··· 22 다음