platformio / platform-nordicnrf52

Nordic nRF52: development platform for PlatformIO
https://registry.platformio.org/platforms/platformio/nordicnrf52
Apache License 2.0
103 stars 115 forks source link

Add support for Pinnacle 100 dev kit board #93

Open sinkyl opened 3 years ago

sinkyl commented 3 years ago

Hi, I would like you to add support for Pinnacle 100 dvk board (P/N: 453-00011)

https://github.com/LairdCP/zephyr_boards/blob/master/pinnacle_100_dvk/doc/index.rst

https://github.com/LairdCP/zephyr_boards/tree/master/pinnacle_100_dvk

thx

sinkyl commented 3 years ago

Hi, I do not want to put any pressure on you guys but I need to finish a project within the next 3 months. So, I made a custom board that contains the minimum required as I see it. But, I'm not sure about the "connectivity" part where I added: cat-m1, nb-iot and lte. I'm guessing it's just to display these connectivity "strings" in Platformio IDE in the connectivity section of the board. Right? I also added an "f" at the end of the CPU name: "cpu": "cortex-m4f". Do I need to specify the exact model? Do I need to add anything to connect as SWD with jlink segger?

{
  "build": {
    "cpu": "cortex-m4f",
    "f_cpu": "64000000L",
    "mcu": "nrf52840",
    "zephyr": {
       "variant": "pinnacle_100_dvk"
    }
  },
  "connectivity": [
    "cat-m1",
    "nb-iot",
    "lte",
    "bluetooth"
  ],
  "debug": {
    "default_tools": [
      "jlink"
    ],
    "jlink_device": "nRF52840_xxAA",
    "onboard_tools": [
      "jlink"
    ],
    "svd_path": "nrf52840.svd"
  },
  "frameworks": [
    "zephyr"
  ],
  "name": "Pinnacle 100 Development Kit",
  "upload": {
    "maximum_ram_size": 262144,
    "maximum_size": 1048576,
    "protocol": "jlink"
  },
  "url": "https://github.com/LairdCP/zephyr_boards/blob/master/pinnacle_100_dvk/doc/index.rst",
  "vendor": "Laird Connectivity"
}

With this information Pinnacle 100 Specification Summary I think the minimum requirement for the .json file is there.

Next, to set Zephyr prj.conf file I add the code below I found here Laird Pinnacle 100


# Copyright (c) 2020 Laird Connectivity

# SPDX-License-Identifier: Apache-2.0

CONFIG_SOC_SERIES_NRF52X=y
CONFIG_SOC_NRF52840_QIAA=y
CONFIG_BOARD_PINNACLE_100_DVK=y

# Enable MPU
CONFIG_ARM_MPU=y

# Enable RTT
CONFIG_USE_SEGGER_RTT=y

# enable GPIO
CONFIG_GPIO=y

# enable uart driver
CONFIG_SERIAL=y

# enable console
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y

# additional board options
CONFIG_GPIO_AS_PINRESET=y

# Modem driver
CONFIG_MODEM=y
CONFIG_MODEM_RECEIVER=y
CONFIG_MODEM_HL7800=y

# Networking
CONFIG_NETWORKING=y
CONFIG_NET_IPV4=y
CONFIG_NET_CONFIG_NEED_IPV4=y
CONFIG_NET_UDP=y
# disable IPv6 because it is not yet supported for the HL7800 driver
CONFIG_NET_IPV6=n
CONFIG_NET_CONFIG_NEED_IPV6=n

Actually, I didn't give a try... I'll see tomorrow. Thanks in advance for helping me out!

valeros commented 3 years ago

I'm guessing it's just to display these connectivity "strings" in Platformio IDE in the connectivity section of the board. Right?

That's correct.

I also added an "f" at the end of the CPU name: "cpu": "cortex-m4f". Do I need to specify the exact model?

There is no need to add that extra f. The CPU model should be cortex-m4.

Do I need to add anything to connect as SWD with jlink segger?

Not sure I understand, but if that board have an embedded JLink probe , it should work out of the box.

The problem you may face is that there is no official support for this board in the Zephyr v2.3.0: https://docs.zephyrproject.org/2.3.0/boards/index.html So you will need to add that custom board files in your project and consequently configure your project to use that files.

sinkyl commented 3 years ago

I tried it but as you said the Pinnacle 100 folder (the board) was missing in the directory. So I added this folder https://github.com/LairdCP/zephyr_boards/tree/master/pinnacle_100_dvk to this directory ~/.platformio/packages/framework-zephyr/boards/arm and i got this error :

~/.platformio/packages/framework-zephyr/boards/arm/pinnacle_100_dvk/pinnacle_100_dvk_defconfig:31: warning: attempt to assign the value 'y' to the undefined symbol MODEM_HL7800

Then I searched in

~/.platformio/packages/framework-zephyr/boards/arm/pinnacle_100_dvk/pinnacle_100_dvk_defconfig

and commented this CONFIG_MODEM_HL7800=y

After that no error, but the thing is that I need the HL7800 semiconductor. I looked for HL7800 in the Zephyr documentation and if I am not wrong it is on only supported in the 2.4 rc1 version of Zephyr. What I don't understand it how Laird has already examples of projects working with this board using Zephyr 2.3 and HL7800 here. For each of prj.conf file of these examples there is a CONFIG_MODEM_HL7800_.... call...