# Nordic

18개의 포스트
post-thumbnail

[nRF52] 6. Secure bootloader & OTA DFU

목적 DFU를 위해서는 bootloader 가 필요하다. OTA DFU 를 적용하겠다. Cybersecurity 를 확보하기 위해 secure bootloader 를 이용한다. Git https://github.com/tlaehdtlr/nrf52blebase 21 commit : [Feat] Add bootloader and adjust memory section 22 commit : [Feat] enable log via uart in bootloader 1. Secure bootloader 1-1. 코드 생성 및 포팅 nRF5SDK17.0.09d13099\examples\dfu\securebootloader\pca10100s140ble 의 예제 코드를 이용하여 secure bootloader 를 만들자 **메모리 설정 (bootloader, applica

2022년 5월 11일
·
0개의 댓글
·
post-thumbnail

[nRF52] 5. Watch dog timer & overwrite error handler

목적 코딩의 신이 아니기 때문에 예상치 못한 상황을 대비하고자 WDT를 적용해야한다. Reset caues 확인과 WDT reset 동작 테스트도 하자. WDT reset 전에 log 를 저장해보자. 프로그램이 리셋되게 만든 코드 라인을 저장하고 싶기 때문에 에러 핸들에 대한 강화를 뜬금없이 진행하겠다!! Git https://github.com/tlaehdtlr/nrf52blebase 17 commit : [Feat] Add reset reason 18 commit : [Feat] Add WDT and wdt command for test 19 commit : [Feat] Store log before wdt reset and overwrite apperrorfault_handler 1. Reset reason 구하기 1-1. base_debug.c 만들기 상품화를 진행하며 느낀 점은 H

2022년 4월 21일
·
0개의 댓글
·
post-thumbnail

[nRF52] 4. CLI 적용

목적 개발하면서 쉽게 테스트할 수 있도록 CLI (command line interface) 적용해보자. Git https://github.com/tlaehdtlr/nrf52blebase 14 commit : [Feat] Enable debug log 15 commit : [Feat] Add cli via uart 16 commit : [Feat] Add commands 1. 뜬금 없는 Debug 강화 1-1. 에러 발생 작업을 하면서 programming 할 때마다 처음에 아래와 같은 에러가 발생한다. 디버그 모드에서는 나오지 않기 때문에 런타임 상황에서 디버깅 방법을 강화할 필요가 있었다

2022년 4월 1일
·
0개의 댓글
·

[nRF52] 3. Customize pin map, mmi_hw

목적 보드 핀 재설정 Git https://github.com/tlaehdtlr/nrf52blebase 12 commit : [Feat] customize pin map 13 commit : [Feat] remove useless bsp lib 1. Custom board 현재는 DK 보드 default pin으로 테스트 중이지만, HW 합의를 통해 pin map 이 새로 정해질 것이다. 이에 맞춰 pin을 설정할 수 있도록 미리 만들어 두자. Uart pin 과 DK 보드의 USB 를 활용하기 위한 설정 혹시나 Button, LED 쓰나 싶어서 남겼다. > custom board 를 쓰겠다면 cpreprocessordefinitions 를 수정해야한다. (BOARDPCA10100 -> BOARDCUSTOM) custom_board.h 에서 타이핑 실수가 있었고 15 commit 에서 고쳤다. 2. MMI HW

2022년 3월 30일
·
0개의 댓글
·

[nRF52] 2. Modularization

목적 SDK example 에서 제공하는 프로젝트의 경우, main 에 모든게 박혀있다. 이 시리즈의 목적은 재사용성이 좋은 base code 를 만드는 것이기 때문에 기능 구현을 하고 리팩토링을 하는 것이 아니라, 모듈화를 먼저 진행해볼 것이다. Git https://github.com/tlaehdtlr/nrf52blebase 4 commit : [Refactor] generate mmi module 5 commit : [Refactor] generate timer module 6 commit : [Refactor] generate mmi hw module 7 commit : [Refactor] rename module 8 commit : [Refactor] generate ble module 9 commit : [Refactor] generate gap module 10 commit : [Refactor] generate gatt

2022년 3월 29일
·
0개의 댓글
·

[nRF52] 1. PJT generation & porting

목적 BLE 개발을 위해 nRF52 의 SDK 를 활용하여 초기 설정 Git https://github.com/tlaehdtlr/nrf52blebase 1 commit : Make readme 2 commit : Copy BLE template 3 commit : Adjust configuration 1. Architecture 1-1. 개발 환경 Git readme 에 업데이트 완료 1-2. 코드 관리, 재사용성 SDK 자체를 수정하지 않고 직접 작성한 소스만 Git 푸쉬 동일한 SDK 버전을 유지하고, segger IDE 의 절대경로 설정 SDK 수정이 필요한 경우, 해당 모듈 복사 및 링커 설정 활용 2. BLE template porting nRF5SDK17.0.09d13099\examples\bleperipheral\bleapptemplate 에 원하는 모델이 없으므로 pca1005

2022년 3월 23일
·
0개의 댓글
·

[nRF52] 나만의 base code 시작

2021년 처음으로 MCU 개발을 시작하였고, 운 좋게도 고가의 복잡한 의료기기 개발에 참여하여 양산 과정을 경험하였다. 1년이 안 되는 기간 동안 STM, Nordic 의 MCU 개발을 할 수 있게 되었고, 폭풍 성장한 나의 후속 프로젝트의 개발일지를 남기고자 한다. GIT : https://github.com/tlaehdtlr/nrf52blebase > 원래 프로젝트 개발일지를 남기려고 했으나 base code 작업하는 부분만 남기도록 하겠다. 기본적인 BLE 서비스는 완성할 예정이다. Nordic MCU 개발에 대한 글은 [Nordic MCU 개발] (https://velog.io/@hellodongsik/series/Nordic-MCU-%EA%B0%9C%EB%B0%9C) 에 적을 것인데 언제 시작하나... (틈틈이 작성 도전!)

2022년 1월 25일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (7)

👨‍💻 개발일지 (7) : Nordic SDK로 DWM1001 I2C 통신하기 -2- 이제 저번시간에 이어 I2c 이용해 LIS2DH12TR의 WHOAMI 레지스터 내용을 수신하는 코드를 작성해 보도록 하겠습니다. 저번 SPI와 마찬가지로 공식 Nordic SDK의 nrfdrvtwi.c 와 nrfdrvtwi.h 파일을 수정해야 합니다. 1. 프로젝트 생성 및 환경설정 늘 그렇듯 프로젝트 부터 생성하도록 하겠습니다. 🔗 개발일지 (3) 에서 참고 하겠습니다. ✌ 프로젝트 이름은 DWM1001I2C 이며, nrfxtwi.c, drvnrftwi.c 두 드라이버 소스 파일을 추가하도록 하겠습니다. 다들 아실 꺼라고 생각하지만.. 혹시나 해서 아래에 👇 경로를 적어

2021년 8월 3일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (6)

👨‍💻 개발일지 (6) : Nordic SDK로 DWM1001 I2C 통신하기 -1- 이번 시간에는 nRF52832의 I2C을 통해 통신하는 방법에 대해 알아보도록 하겠습니다. 보통 MCU를 이용하는 통신 방법에는 UART, SPI, I2C 세 가지 하드웨어 프로토콜을 많이 사용됩니다. 그 밖에 CAN 같은 차량내부에 많이 쓰이는 프로토콜도 있습니다. 🚘 DWM1001은 내부에는 LIS2DH12TR라는 3축 가속도 센서를 내장하고 있으며, 이 센서에 대한 인터페이스는 I2C 입니다. 1. Two Wire Interface vs Inter-Integrated Circuit 💡 본격적인 Product Specification 분석 전, TWI(Two Wire Interface) I2C 차이를 짚고 넘어 가겠습니다. 몇몇 MCU를 제어하다 보면, I2<

2021년 7월 27일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (5)

👨‍💻 개발일지 (5) : Nordic SDK로 DWM1001 SPI 통신하기 -2- 지난 시간에 이어 오늘은 SPI 통신을 직접 코드를 통해 직접 다뤄보도록 하겠습니다. 물론 Nordic SDK에 구현되어있는 드라이버 파일을 사용하며 nrfxspi.c, nrfxspi.h 뿐 아니라 drvnrfspi.c, drvnrfspi.h 을 이용해 코드를 작성 하겠습니다. 1. 프로젝트 생성 및 환경설정 🔗 개발일지 (3)의 1절 프로젝트 생성 및 환경설정 부분을 참고 해주시면 됩니다. 이때 프로젝트 이름은 DWM1001_SPI 라고 하겠습니다. 다음은 어떤 파일을 이 프로젝트에 포함시킬지를 정하도록 하겠습니다. 이번 프로젝트에 포함될 드라이버 소스파일은 nrfxspi.c, `drv

2021년 7월 20일
·
1개의 댓글
·
post-thumbnail

nRF52832 개발일지 (4)

👨‍💻 개발일지 (4) : Nordic SDK로 DWM1001 SPI 통신하기 -1- 지난번까지는 UART 통신을 바탕으로 Driver 분석을 진행했습니다. 이번에는 SPI 통신을 이용해 DWM1001을 제어를 해보겠습니다. 🔗 개발일지 (1) 에서 설명했듯 DWM1001은 DW1000 이라는 UWB칩 + nRF52832를 붙여놓은 SoC 입니다. Host MCU(nRF52832) 에서 DW1000에 있는 레지스터를 읽거나 쓰면서 제어하게 되는데 이때 사용되는 인터페이스가 SPI 입니다. 1. nRF52832 SPI 확인 우선 nRF5832의 SPI 부분의 Product Specification에서 SPI관련 인스턴스 및 레지스터 부터 살펴보도록 하겠습니다. SPIM - Serial peripheral in

2021년 7월 19일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (번외)

💡 nRF52832 개발일지 (번외) : 나의 UART는 UART_ISR로 점프할까? nRF52832 SoC 에는 하나의 UART와 UARTE 모듈이 존재합니다. 이는 서로 비슷한 기능하며 공유하는 자원이 같지만(register 등) 완전히 같은 모듈은 아닙니다. 이번 번외편에서는 초반에 UART Interrupt Service Routine(혹은 Interrupt Handler)을 관찰하면서 겪었던 이야기를 하겠습니다. 1. 기: Compile Error ❌ 우선 기본 예제부터 다시 살펴보겠습니다. 👨‍💻 개발일지 (1) 의 마지막 단락 예제를 참고 하겠습니다. 예제를 SoC 에 다운로드하기 전 브레이크 포인트를 설정한 뒤, UARTISR 인지 혹은 UARTEISR 인지를 판단하겠습니다. 각각 `nrfx_uart.c

2021년 7월 15일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (3)

👨‍💻 개발일지 (3) : SDK를 이용한 UART nrfx Driver 사용하기 이번 개발일지 (3) 에서는 Nordic SDK의 nrfx_driver를 이용해 UART를 제어해 보도록 하겠습니다. 보통 이러한 튜토리얼은 SoC의 제작사에서 배포하는 예제 프로젝트를 복사해서 진행하며, Nordic SDK에서도 역시 많은 예제를 제공하여 SDK와 SoC의 사용법을 익힙니다. 또한 다양한 라이브러리를 제공하기 때문에 사용자는 이를 이용해 FIFO, Queue 등 기본적인 자료구조 혹은 Delay 같은 지연 방법은 SDK에 있는 라이브러리를 가져다 사용만 하면 됩니다. 그러나 이번 개발일지서는 SDK에서 제공하는 예제와 라이브러리를 사용하지 않고 아닌 SDK안의 드라이버만을 사용하여 주변장치를 제어해보도록 하겠습니다. 1. 프로젝트 생성 및 환경설정 ⚠️*이번 개발일지에서는 예제 프로젝트를 복사하지 않지만 환경설정이 귀찮으시면 복사하시고 1장

2021년 7월 8일
·
0개의 댓글
·
post-thumbnail

CMSIS Configuration Wizard Embedded Studio 적용 및 편집

💡 CMSIS Configuration Wizard Embedded Studio 적용 및 편집 Nordic SDK를 사용하다 보면 여러 주변장치에 관련된 매크로를 사용해야합니다. 예를 들면 NARFXUARTENABLE 같은 매크로를 1/0 으로 설정해 UART를 활성 혹은 비활성 시킵니다. 이러한 매크로는 sdk_config.h 에 정의되있으며, 이 헤더 파일을 열어 매크로를 하나하나 찾아 1/0 으로 설정하는 것은 매우 귀찮고 불편합니다. 이런 불편함을 해결하기위해 Nordic SDK에는 CMSIS Configuration Wizard 라는 프로그램을 이용해 이를 시각화시켜 사용자에게 편리한 환경을 제공해줍니다. 이번에는 Embedded Studio 에 CMSIS Configuration Wizard를 적용하고 사용하는법 그리고 간단한게 sdk_config.h 를 편집해 보겠습니다. 1. 환경설정 Nordic SDK 내부에 `📁 ext

2021년 7월 4일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (2)

👨‍💻 개발일지 (2) : UART 예제를 통한 SDK 분석 -2- 1. nRF52832의 UART nRF52832는 내부적으로 UART를 1개 가지고 있습니다. 그리고 이 UART는 사용자가 GPIO핀을 이용해 마치 아두이노의 software serial 처럼 TX, RX, RTS, CTS를 설정 할 수 있습니다. nRF52832의 UART는 EasyDMA를 이용하여 UARTE(UART + EasyDMA)를 이용할 수 있으나, UART와 UARTE는 자원을 공유하기 때문에 동시에 사용할 수 없습니다. 두 peripheral 및 관련 레지스터를 간단히 살펴보겠습니다. 1.1 UART 001 nRF52832 UART가 지원하는 내용과 주요 레지스터 목록입니다. Full-du

2021년 6월 30일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (1)

👨‍💻 개발일지 (1) : UART 예제를 통한 SDK 분석 -1- 1. Nordic SDK UART 예제 선작업 1.1 Custom Board schematic 확인 PCA10040, PCA10056, PCA10100 등 같은 Nordic에서 제공하는 DK(Development kit)를 이용하시는 분들은 예제를 바로 이용하여 개발을 하면 됩니다. 그러나 저처럼 Custom Borad를 이용하시는 분들은 Custom borad를 정의해주시고 사용하셔야 합니다. 이번에 소개할 Custom Board는 Decawave서에서 제작한 DWM1001입니다. DWM1001는 UWB 칩셋인 DW1000을 제어하기위해 Host MCU와 DW1000으로 구성되어 있는 모듈입니다. DWM1001에 여러 IC 소자, LED, 칩을 붙여 프로그래밍 및 제어가 가능한 Borad가 지금 부터 사용하게 될 **DWM1001 DEVELOPMENT BOARD(DWM1001-D

2021년 6월 26일
·
0개의 댓글
·
post-thumbnail

nRF52832 개발일지 (0)

👨‍💻 개발일지 (0) : SoC 소개 및 개발환경 구축 1. nRF52832 Specification nRF52832는 노르웨이에있는 Nordic Semiconductor의 SoC입니다. 기본적으로 Bluetooth 5.2를 지원 및 NFC, Zigbee 등 PAN 프로토콜을 지원합니다. SoC의 간단한 스펙을 알아봅시다. 001 > * 64 MHz Arm Cortex-M4 with FPU 512 KB Flash, 128 KB RAM UART, SPI, TWI, PDM, HS-SPI, I2S, PWM 12-bit ADC USB 2.0 ... SoC의 코어 CPU가 ARM Cortex-M4입니다. Real Time OS에 적합한 CPU를 이용하며 기본적인 하드웨어 프로토콜(UA

2021년 6월 22일
·
0개의 댓글
·
post-thumbnail

Nordic SDK를 통한 BLE 통신 이해하기

목적 BLE 프로토콜 이해 UART 통신구현 Nordic SDK를 통해 BLE 통신이 어떻게 이루어 지는지 알아보자. 제공되는 SDK를 가지고 BLE 통신 프로토콜을 완전 이해하는 욕심은 버리자. BLE Chip 제조사 엔지니어가 잘 구현해 줄 것이다. nNF52 DK를 검색하면 아래와 같은 이미지를 찾을 수 있다. USB 케이블만 연결하면 전원 및 디버깅 동작을 할 수 있다. SDK 다운로드 IDE 및 Toolchain도 같이 다운. (SEGGER Embedded Studio를 다운) 관련 소스코드는 여기에서 다운.

2021년 3월 20일
·
0개의 댓글
·