Merge pull request #623 from microbuilder/nrf52840
nRF52: [WIP] Feather52840 BSP and nRF52840 Serial Bootloader and
This commit is contained in:
commit
fb5f653442
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,6 +7,7 @@
|
|||||||
*.bin
|
*.bin
|
||||||
*.map
|
*.map
|
||||||
*.hex
|
*.hex
|
||||||
|
!ports/nrf/**/bootloader/*.hex
|
||||||
*.dis
|
*.dis
|
||||||
*.exe
|
*.exe
|
||||||
|
|
||||||
|
@ -35,8 +35,7 @@
|
|||||||
#define BOOTLOADER_VERSION_REGISTER NRF_TIMER2->CC[0]
|
#define BOOTLOADER_VERSION_REGISTER NRF_TIMER2->CC[0]
|
||||||
uint32_t bootloaderVersion = 0;
|
uint32_t bootloaderVersion = 0;
|
||||||
|
|
||||||
void board_init(void)
|
void board_init(void) {
|
||||||
{
|
|
||||||
// Retrieve bootloader version
|
// Retrieve bootloader version
|
||||||
bootloaderVersion = BOOTLOADER_VERSION_REGISTER;
|
bootloaderVersion = BOOTLOADER_VERSION_REGISTER;
|
||||||
}
|
}
|
||||||
|
201
ports/nrf/boards/feather52840/README.md
Normal file
201
ports/nrf/boards/feather52840/README.md
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# Setup
|
||||||
|
|
||||||
|
The `feather52840` board is currently based on the `PCA10056` development
|
||||||
|
board from Nordic Semiconductors, since commercial modules are not yet
|
||||||
|
available for the nRF52840.
|
||||||
|
|
||||||
|
The difference between the `pca10056` and `feather52840` board support
|
||||||
|
packages is that no bootloader is present on the `pca10056` (a HW debugger
|
||||||
|
like a Segger J-Link is required to flash firmware images), whereas the
|
||||||
|
`feather52840` package uses a serial bootloader, with a slightly different
|
||||||
|
flash layout to account for the bootloader's presence.
|
||||||
|
|
||||||
|
Both targets run on the same hardware and assume the same pinouts.
|
||||||
|
|
||||||
|
The `feather52840` board support package will be updated at a later date
|
||||||
|
to reflect any pin changes in the final Feather form-factor HW.
|
||||||
|
|
||||||
|
## Installing CircuitPython submodules
|
||||||
|
|
||||||
|
Before you can build, you will need to run the following commands once, which
|
||||||
|
will install the submodules that are part of the CircuitPython ecosystem, and
|
||||||
|
build the `mpy-cross` tool:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd circuitpython
|
||||||
|
$ git submodule update --init
|
||||||
|
$ make -C mpy-cross
|
||||||
|
```
|
||||||
|
|
||||||
|
You then need to download the SD and Nordic SDK files via:
|
||||||
|
|
||||||
|
> This script relies on `wget`, which must be available from the command line.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd ports/nrf
|
||||||
|
$ ./drivers/bluetooth/download_ble_stack.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installing the Serial Bootloader
|
||||||
|
|
||||||
|
The Adafruit nRF52840 Feather uses a serial bootloader that allows you to
|
||||||
|
update the core CircuitPython firmware and internal file system contents
|
||||||
|
using only a serial connection.
|
||||||
|
|
||||||
|
On empty devices, the serial bootloader will need to be flashed once using a
|
||||||
|
HW debugger such as a Segger J-Link before the serial updater (`nrfutil`) can
|
||||||
|
be used.
|
||||||
|
|
||||||
|
### Install `nrfjprog`
|
||||||
|
|
||||||
|
Before you can install the bootloader, you will first need to install the
|
||||||
|
`nrfjprog` tool from Nordic Semiconductors for your operating system. The
|
||||||
|
binary files can be downloaded via the following links:
|
||||||
|
|
||||||
|
- [nRF5x toolset tar for Linux 32-bit v9.7.2](http://www.nordicsemi.com/eng/nordic/Products/nRF52832/nRF5x-Command-Line-Tools-Linux32/52619)
|
||||||
|
- [nRF5x toolset tar for Linux 64-bit v9.7.2](http://www.nordicsemi.com/eng/nordic/Products/nRF52832/nRF5x-Command-Line-Tools-Linux64/51388)
|
||||||
|
- [nRF5x toolset tar for OSX v9.7.2](http://www.nordicsemi.com/eng/nordic/Products/nRF52832/nRF5x-Command-Line-Tools-OSX/53406)
|
||||||
|
- [nRF5x toolset installer for Windows v9.7.2](http://www.nordicsemi.com/eng/nordic/Products/nRF52832/nRF5x-Command-Line-Tools-Win32/48768)
|
||||||
|
|
||||||
|
You will then need to add the `nrfjprog` folder to your system `PATH` variable
|
||||||
|
so that it is available from the command line. The exact process for this is
|
||||||
|
OS specific, but on a POSIX type system like OS X or Linux, you can
|
||||||
|
temporarily add the location to your `PATH` environment variables as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ export PATH=$PATH:YOURPATHHERE/nRF5x-Command-Line-Tools_9_7_2_OSX/nrfjprog/
|
||||||
|
```
|
||||||
|
|
||||||
|
You can test this by running the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ nrfjprog --version
|
||||||
|
nrfjprog version: 9.7.2
|
||||||
|
JLinkARM.dll version: 6.20f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Flash the Bootloader with `nrfjprog`
|
||||||
|
|
||||||
|
> This operation only needs to be done once, and only on boards that don't
|
||||||
|
already have the serial bootloader installed.
|
||||||
|
|
||||||
|
Once `nrfjprog` is installed and available in `PATH` you can flash your
|
||||||
|
board with the serial bootloader via the following command:
|
||||||
|
|
||||||
|
```
|
||||||
|
make SD=s140 BOARD=feather52840 boot-flash
|
||||||
|
```
|
||||||
|
|
||||||
|
This should give you the following (or very similar) output, and you will see
|
||||||
|
a DFU blinky pattern on one of the board LEDs:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make SD=s140 BOARD=feather52840 boot-flash
|
||||||
|
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
|
||||||
|
nrfjprog --program boards/feather52840/bootloader/feather52840_bootloader_6.0.0_s140_single.hex -f nrf52 --chiperase --reset
|
||||||
|
Parsing hex file.
|
||||||
|
Erasing user available code and UICR flash areas.
|
||||||
|
Applying system reset.
|
||||||
|
Checking that the area to write is not protected.
|
||||||
|
Programing device.
|
||||||
|
Applying system reset.
|
||||||
|
Run.
|
||||||
|
```
|
||||||
|
|
||||||
|
From this point onward, you can now use a simple serial port for firmware
|
||||||
|
updates.
|
||||||
|
|
||||||
|
### IMPORTANT: Disable Mass Storage on PCA10056 J-Link
|
||||||
|
|
||||||
|
The J-Link firmware on the PCA10056 implement USB Mass Storage, but this
|
||||||
|
causes a known conflict with reliable USB CDC serial port communication. In
|
||||||
|
order to use the serial bootloader, **you must disable MSD support on the
|
||||||
|
Segger J-Link**!
|
||||||
|
|
||||||
|
To disable mass storage support, run the `JLinkExe` (or equivalent) command,
|
||||||
|
and send `MSDDisable`. (You can re-enable MSD support via `MSDEnable`):
|
||||||
|
|
||||||
|
```
|
||||||
|
$ JLinkExe
|
||||||
|
SEGGER J-Link Commander V6.20f (Compiled Oct 13 2017 17:20:01)
|
||||||
|
DLL version V6.20f, compiled Oct 13 2017 17:19:52
|
||||||
|
|
||||||
|
Connecting to J-Link via USB...O.K.
|
||||||
|
Firmware: J-Link OB-SAM3U128-V2-NordicSemi compiled Jul 24 2017 17:30:12
|
||||||
|
Hardware version: V1.00
|
||||||
|
S/N: 683947110
|
||||||
|
VTref = 3.300V
|
||||||
|
|
||||||
|
|
||||||
|
Type "connect" to establish a target connection, '?' for help
|
||||||
|
J-Link>MSDDisable
|
||||||
|
Probe configured successfully.
|
||||||
|
J-Link>exit
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building and Flashing CircuitPython
|
||||||
|
|
||||||
|
### Installing `nrfutil`
|
||||||
|
|
||||||
|
If you haven't installed the required command-line tool yet, go to the
|
||||||
|
`/libs/nrfutil` folder (where nrfutil 0.5.2b is installed as a sub-module)
|
||||||
|
and run the following commands:
|
||||||
|
|
||||||
|
> If you get a 'sudo: pip: command not found' error running 'sudo pip install',
|
||||||
|
you can install pip via 'sudo easy_install pip'
|
||||||
|
|
||||||
|
```
|
||||||
|
$ cd ../../lib/nrfutil
|
||||||
|
$ sudo pip install -r requirements.txt
|
||||||
|
$ sudo python setup.py install
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Changes to `nrfutil` in 0.5.2b
|
||||||
|
|
||||||
|
**IMPORTANT**: Make sure that you have version **0.5.2b**, since a small
|
||||||
|
change was required to `dfu_transport_serial.py` to account for the
|
||||||
|
increased minimum flash erase time on the nRF52840 compared to the earlier
|
||||||
|
nRF52832!
|
||||||
|
|
||||||
|
You can also manually change the file with the following new values (lines
|
||||||
|
67-68), and reinstall the utility via `sudo python setup.py install`:
|
||||||
|
|
||||||
|
```
|
||||||
|
FLASH_PAGE_ERASE_MAX_TIME = 0.1 # Worst time to erase a page 100 ms
|
||||||
|
FLASH_PAGE_ERASE_MIN_TIME = 0.09 # Best time to erase a page 90 ms
|
||||||
|
```
|
||||||
|
|
||||||
|
### Flashing CircuitPython
|
||||||
|
|
||||||
|
With the serial bootloader present on your board, you first need to force your
|
||||||
|
board into DFU mode by holding down BUTTON1 and RESETTING the board (with
|
||||||
|
BUTTON1 still pressed as you come out of reset).
|
||||||
|
|
||||||
|
This will give you a **fast blinky DFU pattern** to indicate you are in DFU
|
||||||
|
mode.
|
||||||
|
|
||||||
|
At this point, you can build and flash a CircuitPython binary via the following
|
||||||
|
command:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make V=1 SD=s140 SERIAL=/dev/tty.usbmodem1411 BOARD=feather52840 dfu-gen dfu-flash
|
||||||
|
```
|
||||||
|
|
||||||
|
This should give you the following results:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make V=1 SD=s140 SERIAL=/dev/tty.usbmodem1411 BOARD=feather52840 dfu-gen dfu-flash
|
||||||
|
nrfutil dfu genpkg --sd-req 0xFFFE --dev-type 0x0052 --application build-feather52840-s140/firmware.hex build-feather52840-s140/dfu-package.zip
|
||||||
|
Zip created at build-feather52840-s140/dfu-package.zip
|
||||||
|
nrfutil --verbose dfu serial --package build-feather52840-s140/dfu-package.zip -p /dev/tty.usbmodem1411 -b 115200
|
||||||
|
Upgrading target on /dev/tty.usbmodem1411 with DFU package /Users/kevintownsend/Dropbox/microBuilder/Code/CircuitPython/circuitpython-mb/ports/nrf/build-feather52840-s140/dfu-package.zip. Flow control is disabled.
|
||||||
|
Starting DFU upgrade of type 4, SoftDevice size: 0, bootloader size: 0, application size: 195252
|
||||||
|
Sending DFU start packet
|
||||||
|
Sending DFU init packet
|
||||||
|
Sending firmware file
|
||||||
|
################################################################################################################################################################################################################################################################################################################################################################################################
|
||||||
|
Activating new firmware
|
||||||
|
|
||||||
|
DFU upgrade took 41.6610329151s
|
||||||
|
Device programmed.
|
||||||
|
```
|
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
GNU linker script for NRF52840 w/S140 6.0.0 SoftDevice
|
||||||
|
|
||||||
|
MEMORY MAP
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
START ADDR END ADDR SIZE DESCRIPTION
|
||||||
|
---------- ---------- ------- -----------------------------------------
|
||||||
|
0x000FF000..0x000FFFFF ( 4KB) Bootloader Settings
|
||||||
|
0x000FE000..0x000FEFFF ( 4KB) Master Boot Record Params
|
||||||
|
0x000F4000..0x000FDFFF ( 40KB) Serial + OTA Bootloader
|
||||||
|
|
||||||
|
0x000F3000..0x000F3FFF ( 4KB ) Private Config Data (Bonding, Keys, etc.)
|
||||||
|
0x000F2000..0x000F2FFF ( 4KB ) User NVM data
|
||||||
|
0x000B2000..0x000F1FFF (256KB) User Filesystem
|
||||||
|
|
||||||
|
0x00025000..0x000B1FFF (564KB) Application Code (including ISR vector)
|
||||||
|
0x00001000..0x00024FFF (144KB) SoftDevice
|
||||||
|
0x00000000..0x00000FFF (4KB) Master Boot Record
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Specify the memory areas (S140 6.0.0) */
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x100000
|
||||||
|
|
||||||
|
FLASH_ISR (rx) : ORIGIN = 0x00025000, LENGTH = 0x001000
|
||||||
|
FLASH_TEXT (rx) : ORIGIN = 0x00026000, LENGTH = 0x08C000
|
||||||
|
FLASH_FATFS (r) : ORIGIN = 0x000B2000, LENGTH = 0x040000
|
||||||
|
|
||||||
|
/* 0x2000000 - RAM:ORIGIN is reserved for Softdevice */
|
||||||
|
RAM (xrw) : ORIGIN = 0x20004000, LENGTH = 0x20040000 - 0x20004000
|
||||||
|
}
|
||||||
|
|
||||||
|
/* produce a link error if there is not this amount of RAM for these sections */
|
||||||
|
_minimum_stack_size = 2K;
|
||||||
|
_minimum_heap_size = 0;
|
||||||
|
|
||||||
|
/* top end of the stack */
|
||||||
|
|
||||||
|
/*_stack_end = ORIGIN(RAM) + LENGTH(RAM);*/
|
||||||
|
_estack = ORIGIN(RAM) + LENGTH(RAM);
|
||||||
|
|
||||||
|
/* RAM extents for the garbage collector */
|
||||||
|
_ram_end = ORIGIN(RAM) + LENGTH(RAM);
|
||||||
|
_heap_end = 0x20007000; /* tunable */
|
||||||
|
|
||||||
|
INCLUDE "boards/common.ld"
|
44
ports/nrf/boards/feather52840/board.c
Normal file
44
ports/nrf/boards/feather52840/board.c
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "nrf.h"
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
87
ports/nrf/boards/feather52840/mpconfigboard.h
Normal file
87
ports/nrf/boards/feather52840/mpconfigboard.h
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FEATHER52840
|
||||||
|
|
||||||
|
#define MICROPY_HW_BOARD_NAME "Feather52840"
|
||||||
|
#define MICROPY_HW_MCU_NAME "NRF52840"
|
||||||
|
#define MICROPY_PY_SYS_PLATFORM "nrf52840-PDK"
|
||||||
|
|
||||||
|
#define MICROPY_PY_MACHINE_HW_PWM (1)
|
||||||
|
#define MICROPY_PY_MACHINE_HW_SPI (1)
|
||||||
|
#define MICROPY_PY_MACHINE_TIMER (1)
|
||||||
|
#define MICROPY_PY_MACHINE_RTC (1)
|
||||||
|
#define MICROPY_PY_MACHINE_I2C (1)
|
||||||
|
#define MICROPY_PY_MACHINE_ADC (1)
|
||||||
|
#define MICROPY_PY_MACHINE_TEMP (1)
|
||||||
|
|
||||||
|
#define MICROPY_HW_HAS_LED (1)
|
||||||
|
#define MICROPY_HW_HAS_SWITCH (0)
|
||||||
|
#define MICROPY_HW_HAS_FLASH (0)
|
||||||
|
#define MICROPY_HW_HAS_SDCARD (0)
|
||||||
|
#define MICROPY_HW_HAS_MMA7660 (0)
|
||||||
|
#define MICROPY_HW_HAS_LIS3DSH (0)
|
||||||
|
#define MICROPY_HW_HAS_LCD (0)
|
||||||
|
#define MICROPY_HW_ENABLE_RNG (0)
|
||||||
|
#define MICROPY_HW_ENABLE_RTC (0)
|
||||||
|
#define MICROPY_HW_ENABLE_TIMER (0)
|
||||||
|
#define MICROPY_HW_ENABLE_SERVO (0)
|
||||||
|
#define MICROPY_HW_ENABLE_DAC (0)
|
||||||
|
#define MICROPY_HW_ENABLE_CAN (0)
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_COUNT (4)
|
||||||
|
#define MICROPY_HW_LED_PULLUP (1)
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED1 (13) // LED1
|
||||||
|
#define MICROPY_HW_LED2 (14) // LED2
|
||||||
|
#define MICROPY_HW_LED3 (15) // LED3
|
||||||
|
#define MICROPY_HW_LED4 (16) // LED4
|
||||||
|
|
||||||
|
// UART config
|
||||||
|
#define MICROPY_HW_UART1_RX (pin_P0_08)
|
||||||
|
#define MICROPY_HW_UART1_TX (pin_P0_06)
|
||||||
|
#define MICROPY_HW_UART1_CTS (pin_P0_07)
|
||||||
|
#define MICROPY_HW_UART1_RTS (pin_P0_05)
|
||||||
|
#define MICROPY_HW_UART1_HWFC (1)
|
||||||
|
|
||||||
|
// SPI0 config
|
||||||
|
#define MICROPY_HW_SPI0_NAME "SPI0"
|
||||||
|
|
||||||
|
#define MICROPY_HW_SPI0_SCK (pin_P1_15)
|
||||||
|
#define MICROPY_HW_SPI0_MOSI (pin_P1_13)
|
||||||
|
#define MICROPY_HW_SPI0_MISO (pin_P1_14)
|
||||||
|
|
||||||
|
#define MICROPY_HW_PWM0_NAME "PWM0"
|
||||||
|
#define MICROPY_HW_PWM1_NAME "PWM1"
|
||||||
|
#define MICROPY_HW_PWM2_NAME "PWM2"
|
||||||
|
#if 0
|
||||||
|
#define MICROPY_HW_PWM3_NAME "PWM3"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define HELP_TEXT_BOARD_LED "1,2,3,4"
|
||||||
|
|
||||||
|
#define PORT_HEAP_SIZE (128*1024)
|
||||||
|
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
4
ports/nrf/boards/feather52840/mpconfigboard.mk
Normal file
4
ports/nrf/boards/feather52840/mpconfigboard.mk
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# This file is a placeholder to enable building with 'SD=s140' flag
|
||||||
|
# The actual config data is stored in the file referenced below, regardless
|
||||||
|
# of whether S140 is actively used or not.
|
||||||
|
include boards/$(BOARD)/mpconfigboard.mk
|
35
ports/nrf/boards/feather52840/mpconfigboard_s140.mk
Normal file
35
ports/nrf/boards/feather52840/mpconfigboard_s140.mk
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
MCU_SERIES = m4
|
||||||
|
MCU_VARIANT = nrf52
|
||||||
|
MCU_SUB_VARIANT = nrf52840
|
||||||
|
SOFTDEV_VERSION ?= 6.0.0-6.alpha
|
||||||
|
|
||||||
|
LD_FILE = boards/feather52840/bluefruit_nrf52840_s140_6.0.0.ld
|
||||||
|
BOOTLOADER_FILENAME = boards/feather52840/bootloader/feather52840_bootloader_6.0.0_s140_single
|
||||||
|
|
||||||
|
NRF_DEFINES += -DNRF52840_XXAA
|
||||||
|
|
||||||
|
CFLAGS += -DADAFRUIT_FEATHER52840
|
||||||
|
|
||||||
|
ifeq ($(SD), )
|
||||||
|
INC += -Idrivers/bluetooth/s140_$(MCU_VARIANT)_$(SOFTDEV_VERSION)/s140_$(MCU_SUB_VARIANT)_$(SOFTDEV_VERSION)_API/include
|
||||||
|
INC += -Idrivers/bluetooth/s140_$(MCU_VARIANT)_$(SOFTDEV_VERSION)/s140_$(MCU_SUB_VARIANT)_$(SOFTDEV_VERSION)_API/include/$(MCU_VARIANT)
|
||||||
|
endif
|
||||||
|
|
||||||
|
check_defined = \
|
||||||
|
$(strip $(foreach 1,$1, \
|
||||||
|
$(call __check_defined,$1,$(strip $(value 2)))))
|
||||||
|
__check_defined = \
|
||||||
|
$(if $(value $1),, \
|
||||||
|
$(error Undefined make flag: $1$(if $2, ($2))))
|
||||||
|
|
||||||
|
.PHONY: dfu-gen dfu-flash boot-flash
|
||||||
|
|
||||||
|
dfu-gen:
|
||||||
|
nrfutil dfu genpkg --sd-req 0xFFFE --dev-type 0x0052 --application $(BUILD)/$(OUTPUT_FILENAME).hex $(BUILD)/dfu-package.zip
|
||||||
|
|
||||||
|
dfu-flash:
|
||||||
|
@:$(call check_defined, SERIAL, example: SERIAL=/dev/ttyUSB0)
|
||||||
|
nrfutil --verbose dfu serial --package $(BUILD)/dfu-package.zip -p $(SERIAL) -b 115200
|
||||||
|
|
||||||
|
boot-flash:
|
||||||
|
nrfjprog --program $(BOOTLOADER_FILENAME).hex -f nrf52 --chiperase --reset
|
18
ports/nrf/boards/feather52840/nrf52_hal_conf.h
Normal file
18
ports/nrf/boards/feather52840/nrf52_hal_conf.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#ifndef NRF52_HAL_CONF_H__
|
||||||
|
#define NRF52_HAL_CONF_H__
|
||||||
|
|
||||||
|
#define HAL_UART_MODULE_ENABLED
|
||||||
|
#define HAL_SPI_MODULE_ENABLED
|
||||||
|
#define HAL_TIME_MODULE_ENABLED
|
||||||
|
#define HAL_PWM_MODULE_ENABLED
|
||||||
|
#define HAL_RTC_MODULE_ENABLED
|
||||||
|
#define HAL_TIMER_MODULE_ENABLED
|
||||||
|
#define HAL_TWI_MODULE_ENABLED
|
||||||
|
#define HAL_ADCE_MODULE_ENABLED
|
||||||
|
#define HAL_TEMP_MODULE_ENABLED
|
||||||
|
#define HAL_RNG_MODULE_ENABLED
|
||||||
|
// #define HAL_UARTE_MODULE_ENABLED
|
||||||
|
// #define HAL_SPIE_MODULE_ENABLED
|
||||||
|
// #define HAL_TWIE_MODULE_ENABLED
|
||||||
|
|
||||||
|
#endif // NRF52_HAL_CONF_H__
|
48
ports/nrf/boards/feather52840/pins.csv
Normal file
48
ports/nrf/boards/feather52840/pins.csv
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
P0_00,P0_00
|
||||||
|
P0_01,P0_01
|
||||||
|
P0_02,P0_02,ADC0_IN0
|
||||||
|
P0_03,P0_03,ADC0_IN1
|
||||||
|
P0_04,P0_04,ADC0_IN2
|
||||||
|
P0_05,P0_05,ADC0_IN3
|
||||||
|
P0_06,P0_06
|
||||||
|
P0_07,P0_07
|
||||||
|
P0_08,P0_08
|
||||||
|
P0_09,P0_09
|
||||||
|
P0_10,P0_10
|
||||||
|
P0_11,P0_11
|
||||||
|
P0_12,P0_12
|
||||||
|
P0_13,P0_13
|
||||||
|
P0_14,P0_14
|
||||||
|
P0_15,P0_15
|
||||||
|
P0_16,P0_16
|
||||||
|
P0_17,P0_17
|
||||||
|
P0_18,P0_18
|
||||||
|
P0_19,P0_19
|
||||||
|
P0_20,P0_20
|
||||||
|
P0_21,P0_21
|
||||||
|
P0_22,P0_22
|
||||||
|
P0_23,P0_23
|
||||||
|
P0_24,P0_24
|
||||||
|
P0_25,P0_25
|
||||||
|
P0_26,P0_26
|
||||||
|
P0_27,P0_27
|
||||||
|
P0_28,P0_28,ADC0_IN4
|
||||||
|
P0_29,P0_29,ADC0_IN5
|
||||||
|
P0_30,P0_30,ADC0_IN6
|
||||||
|
P0_31,P0_31,ADC0_IN7
|
||||||
|
P1_00,P1_00
|
||||||
|
P1_01,P1_01
|
||||||
|
P1_02,P1_02
|
||||||
|
P1_03,P1_03
|
||||||
|
P1_04,P1_04
|
||||||
|
P1_05,P1_05
|
||||||
|
P1_06,P1_06
|
||||||
|
P1_07,P1_07
|
||||||
|
P1_08,P1_08
|
||||||
|
P1_09,P1_09
|
||||||
|
P1_10,P1_10
|
||||||
|
P1_11,P1_11
|
||||||
|
P1_12,P1_12
|
||||||
|
P1_13,P1_13
|
||||||
|
P1_14,P1_14
|
||||||
|
P1_15,P1_15
|
|
Loading…
Reference in New Issue
Block a user