• Hardware

    [BLE 5.0 강좌 05] Programmer로 펌웨어 Write 하기

    twitter facebook

    안녕하세요? 착한이입니다.


    Nordic 사의 nRF52840을 이용한 BLE 5.0 강좌를 시작합니다.

    본 강좌에서는 nRF52840을 장착한 nRF52840 Dongle(USB 방식)과

    nRF52840 DK(Development Kit) 보드를 이용하여 BLE 5.0 펌웨어 개발에 대해 알아 보고자 합니다.


    nRF52840 관련 자세한 사항은 다음 사이트에서 확인하실 수 있습니다.

    https://www.nordicsemi.com/Products/Low-power-short-range-wireless/nRF52840


    nRF52840 Dongle 제품에 대한 자세한 사항은 다음 사이트에서 확인하실 수 있습니다.

    https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-Dongle


    nRF52840 DK 보드에 대한 자세한 사항은 다음 사이트에서 확인하실 수 있습니다.

    https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-DK


    [BLE 5.0 강좌 02] nRF52840 BLE 5.0 개발 준비 과정 2 - SEGGER Embedded System 설치 및 예제 빌드하기

    http://www.wearedev.net/?m=bbs&bid=lecture&uid=188

    [BLE 5.0 강좌 03] Central 모드 테스트 - nRF52840 Dongle로 Scan 하기

    http://www.wearedev.net/?m=bbs&bid=lecture&uid=190

    [BLE 5.0 강좌 04] Peripheral 모드 테스트 - nRF52840 Dongle로 Advertising 하기

    http://www.wearedev.net/?m=bbs&bid=lecture&uid=191


    지난 강좌 02에서 SEGGER Embedded System을 이용하여 nRF5 SDK 예제를 빌드하는 것에 대해 알아 보았습니다.

    성공적으로 빌드하게 되면 nRF52840 Dongle용 펌웨어 파일(hex 파일)이 만들어 집니다.

    이 파일을 Programmer를 이용하여 nRF52840 Dongle에 Write 할 수 있습니다.

    본 강좌에서는 Progammer를 이용하여 펌웨어 파일을 nRF52840 Dongle에 Write 하는 방법에 대해 설명 드리겠습니다. 


    1. nRF52840 Dongle을 Progammer에 인식시키기


    펌웨어를 Write 하기 위해서는 Nordic에서 제공하는 Programmer를 이용합니다.

    Pragmmer에서 nRF52840 Dongle을 인식하려면 bootloader 모드로 변경해야 합니다.

    nRF52840 Dongle을 bootloader  모드로 변경하는 방법은

    PC에 연결한 후에 Reset 버튼을 한번 눌러 주면 됩니다.

    이에 대해 자세히 알아 보겠습니다.


    먼저 Programmer를 실행합니다. nRF Connect를 실행합니다.

    다음 화면에서 "Programmer"를 실행합니다.


    다음과 같이 Progammer 이 실행됩니다.

    Programmer에서 인식한 장치가 없음을 확인할 수 있습니다.


    nRF52840 Dongle을 PC에 연결하고

    Reset 버튼을 한번 눌러 주면 bootloader 모드로 변경됩니다.

    Dongle 외에 다른 장치도 bootloader 모드로 변경해 주면

    Programmer를 이용해서 펌웨어를 Write 할 수 있습니다.

    bootloader 모드가 되면 Dongle의 LED2가 붉은색으로 점등하게 됩니다.

    다음 그림과 같이 Programmer에서 인식된 장치가 표시됩니다.

    "Select device" 콤포 박스를 클릭해서 원하는 장치를 선택합니다.


    다음 그림과 같이 선택된 장치의 메모리맵을 보여 줍니다.

    Log 화면에 정보가 표시 됩니다.


    이제 펌웨어를 Write 할 수 있는 상태가 되었습니다.

    그 전에 Programmer의 메모리맵 부분에 대해 좀 더 살펴 보겠습니다.

    다음 그림과 같이 nRF52840 옆에 마우스 포인터를 올리면 현재 장치의 정보를 보여 줍니다. 


    다음 그림과 같이 메모리맵의 붉은 색 영역은 bootloader이고 Addresss 영역도 알 수 있습니다. 


    연두색 영역은 Application이고 Addresss과 크기도 알 수 있습니다. 

     


    그 다음은 SoftDevice 영역임을 알 수 있습니다. 마찬가지로 Address 영역과 크기를 알 수 있습니다.

    SoftDevice는 Nordic에서 제공하는 기본 펌웨어로 BLE 기능과 장치 관련 펌웨어입니다.


    그 다음 주황색 영역은 MBR 영역입니다. 


    메모리맵 관련 정보를 알아 두시면 향후에 유용하게 사용하실 수 있습니다.

    Programmer 에서는 메모리맵 영역 관련해서 오류가 발생하면 에러 표시로 알려 줍니다.

    예를 들어 Application 펌웨어가 정해진 영역의 크기보다 큰 경우에는

    다른 영역을 침범 했다고 표시해 주므로 문제를 쉽게 파악할 수 있습니다.

    또한 SoftDevice 펌웨어의 경우, Nordic에서 제공하고 있으며,

    상황에 따라 사용하지 않을 수도 있습니다.

    BLE 5.0 기능을 사용하는 경우에는 반드시 사용해야 합니다.

    이제 Progammer로 펌웨어 Write 하는 방법에 대해 알아 보겠습니다.


    2. Progammer로 펌웨어 Write 하기 
     

    먼저 BLE 5.0 강좌 02 (http://www.wearedev.net/?m=bbs&bid=lecture&uid=188) 를 참고하여

    BLE 5.0 펌웨어를 빌드합니다. SEGGER 툴 외에 IAR, KEIL 등의 툴을 사용하셔도 됩니다.


    본 강좌에서는 ble_app_blinky 예제를 기준으로 펌웨어 Write 방법을 설명하겠습니다.


    SDK_ROOT\example\ble_peripheral\ble_app_blinky

    위치의 예제를 빌드하면 다음 경로의 hex 파일이 생성됩니다.

    SDK_ROOT\example\ble_peripheral\ble_app_blinky\pca10059\s140\ses\

     Output\Release\Exe\ble_app_blinky_pca10059_s140.hex


    이 hex 파일이 Application 펌웨어 파일이며 Programmer로 Dongle에 Write 할 수 있습니다.

    Dongle을 bootloader 모드로 한 후에, Progammer에서 장치를 선택합니다.

    다음 그림과 같이 Dongle의 메모리맵이 표시됩니다.


    ble_app_blinky 예제는 softdevice 펌웨어가 필요합니다.

    "Add HEX File" 콤보 박스를 클릭해서 softdevice 펌웨어을 선택합니다.

    SDK_Root\components\softdevices\s140\hex\s140_nrf52_6.1.1_softdevice.hex 파일을

    선택하면 됩니다.

    선택을 마치면 메모리맵에 다음 그림과 같이 표시됩니다.

    Log 화면에 정보가 표시 됩니다.


    이제 ble_app_blinky 펌웨어 파일을 추가해 보겠습니다.

    "Add HEX file" 콤보 박스를 클릭하여 다음 경로의 hex 파일을 추가합니다.

    SDK_ROOT\example\ble_peripheral\ble_app_blinky\pca10059\s140\ses\

     Output\Release\Exe\ble_app_blinky_pca10059_s140.hex

    펌웨어 파일이 로딩되면 메모리맵에 표시가 됩니다.

    에러가 없다면 Dongle에 Write 할 수 있습니다.


    화면 오른쪽의 "Write" 버튼을 클릭하면 BLE 5.0 펌웨어가 Dongle에 Write 됩니다.

    Write 되는 동안 LED2가 점멸하게 되며, 에러 없이 Write 되면

    펌웨어가 실행되어 bootloader 모드가 해제가 됩니다.

    당연히 다음 그림과 같이 Programmer에서도 Dongle이 표시되지 않습니다.


    펌웨어가 성공적으로 Write 되었다면 자동으로 그 펌웨어가 실행됩니다.

    ble_app_blinky 예제를 Write 하면 LED1가 초록색으로 점등합니다.

    또한 peripheral 모드로 동작하므로 스마트폰에서 검색이 될 것입니다.


    같은 방법으로 nRF5 SDK의 다양한 예제를 빌드 후에

    Programmer로 펌웨어를 Write 할 수 있습니다.

    직접 예제들을 테스트해 보시길 바랍니다.


    여기까지 Programmer를 이용한 펌웨어 Write 하는 방법에 대해 알아 보았습니다.


    궁금하신 사항은 댓글로 남겨 주세요.

    다음 강좌에서 뵙겠습니다.

    즐거운 개발하시길 바랍니다.


    다음 유튜브 채널에서 BLE 5.0 관련 동영상을 보실 수 있습니다.

    https://www.youtube.com/c/wearedev

    구독 부탁 드립니다.