Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Instructions, support for STLink and ARM-GCC 10.3.1 #14

Merged
merged 7 commits into from
Jul 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 73 additions & 3 deletions How_to_use_Firmware.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ In this file you can look up how to [edit](#Editing-the-code), [compile](#Compil

## Editing the code
We are using [Visual Studio Code](https://code.visualstudio.com/download) to edit this project! Simply download and install it!
- Install the [ARM-GCC](https://mynewt.apache.org/latest/get_started/native_install/cross_tools.html) version [9.3.1 Compiler](https://developer.arm.com/downloads/-/gnu-rm) and remember the path where you installed it.
- Install the [ARM-GCC](https://mynewt.apache.org/latest/get_started/native_install/cross_tools.html) version [10.3.1 Compiler Tested](https://developer.arm.com/downloads/-/gnu-rm) and remember the path where you installed it.
- Install the [C++ Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) in VS-Code.
- Install the [C++ Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack) in VS-Code.
- Create a new IntelliSense Configuration:
- press F1 in VS-Code and enter `C/C++: Edit Configurations (UI)`
- Add a new Configuration and name it
Expand All @@ -16,6 +17,7 @@ We are using [Visual Studio Code](https://code.visualstudio.com/download) to edi
- Edit Makefile.defs:
- Change `GNU_INSTALL_ROOT`(path of previously installed Compiler `bin` folder)
- Change `GNU_VERSION` (Version of the installed Compiler)
- Change the other paths to match your system
- Don't forget to remove the `#` in front of the changed lines
- Install make
- **Ubuntu:**
Expand All @@ -33,8 +35,76 @@ We are using [Visual Studio Code](https://code.visualstudio.com/download) to edi
- Install Homebrew package manager by running the following command: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
- Once Homebrew is installed, run the following command to install Make: `brew install make`
- go into folder and run `make`
- if make fails try to add a folder named `objects` in the `firmware` folder
- do this for `application` and `bootloader` folder

## Merging the code
- Install [nRF Util](https://www.nordicsemi.com/Products/Development-tools/nrf-util)
- Move it to a known path like `C:/nrfutil/`
- Add this path to `PATH` Environment Variable
- Install [nRF Command Line Tools](https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools)
- Install nRF Util packages:
- `nrfutil install completion device nrf5sdk-tools trace`
- go into `objects` folder
- generate settings by `nrfutil settings generate --family NRF52840 --application application.hex --application-version 1 --bootloader-version 1 --bl-settings-version 2 settings.hex` (only has to be done once)
- merge bootloader and settings by `mergehex --merge bootloader.hex settings.hex --output bootloader_settings.hex`
- copy the `s140_nrf52_7.2.0_softdevice.hex` file from `nrf52_sdk/components/softdevice/s140/hex/` to `objects`
- rename `s140_nrf52_7.2.0_softdevice.hex` to `softdevice.hex`
- merge bootloader_settings and app by `mergehex --merge bootloader_settings.hex application.hex softdevice.hex --output project.hex`

## Uploading the code
- If you are using J-Link:
- Install [Segger J-Link](https://www.segger.com/downloads/jlink)
- [Merge](#Merging-the-code) the code
- Upload softdevice with `make flash_softdevice`
- Upload bootloader in bootloader folder with `make flash`
- Upload application in application folder with `make flash`
- If you are using ST-Link:
- Install [openocd](https://mynewt.apache.org/latest/get_started/native_install/cross_tools.html)
- Install [ST-Link drivers](https://www.st.com/en/development-tools/stsw-link009.html)
- Extract downloaded zip
- run `dpinst_amd64.exe`
- Upload full image with `make flash_stlink` in application or bootloader folder


## Debugging the code
- Install [openocd](https://mynewt.apache.org/latest/get_started/native_install/cross_tools.html)
- Install [Cortex-Debug](https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug) VS-Code Extension
- MORE INFO ADDED LATER
- Open `app_main.c`
- Open the extension with `CTRL-SHIFT-D`
- Klick on `create a launch.json file`
- Select `Cortex-Debug`
- Add this in the configuration bracket:
```
{
"cwd": "${workspaceFolder}",
"executable": "${workspaceRoot}/firmware/objects/bootloader.out",
"name": "Debug with JLink",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"showDevDebugOutput": "none",
"servertype": "jlink",
"device": "nrf52",
"interface": "swd",
"svdFile": "${workspaceRoot}/firmware/nrf52_sdk/modules/nrfx/mdk/nrf52.svd",
"gdbPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gdb.exe"
},
{
"cwd": "${workspaceFolder}",
"executable": "${workspaceRoot}/firmware/objects/bootloader.out",
"name": "Debug with STLink",
"request": "launch",
"type": "cortex-debug",
"runToEntryPoint": "main",
"showDevDebugOutput": "none",
"servertype": "openocd",
"device": "nrf52",
"svdFile": "${workspaceRoot}/firmware/nrf52_sdk/modules/nrfx/mdk/nrf52.svd",
"gdbPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/arm-none-eabi-gdb.exe",
"configFiles": [
"interface/stlink.cfg",
"target/nrf52.cfg"
]
}
```
- In the debug menu you can select `Debug with JLink` or `Debug with STLink`
6 changes: 3 additions & 3 deletions firmware/Makefile.defs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# In the nrf52 sdk, will auto detection current platform: posix or windows.
# If your <arm-none-eabi> is already installed, and version and path is this:
# Version : 9.3.1
# Windows-path: C:/Program Files (x86)/GNU Arm Embedded Toolchain/9 2020-q2-update/bin/
# POSIX -path: /usr/local/gcc-arm-none-eabi-9-2020-q2-update/bin/
# Version : 10.3.1
# Windows-path: C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin
# POSIX -path: /usr/local/gcc-arm-none-eabi-10.3-2021.10/bin/
# You can ignore this file modify.
# Warning: your toolchain path not allow PR to public repo!!!
# If you need define the toolchain path, plz delete annotate and change it.
Expand Down
15 changes: 15 additions & 0 deletions firmware/application/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -381,8 +381,23 @@ flash_softdevice:
nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s140/hex/s140_nrf52_7.2.0_softdevice.hex --sectorerase
nrfjprog -f nrf52 --reset

# Flash with ST-Link + OpenOCD
flash_stlink:
@echo Generating settings...
nrfutil settings generate --family NRF52840 --application $(OUTPUT_DIRECTORY)/application.hex --application-version 1 --bootloader-version 1 --bl-settings-version 2 $(OUTPUT_DIRECTORY)/settings.hex
@echo Merging required files
mergehex --merge $(OUTPUT_DIRECTORY)/bootloader.hex $(OUTPUT_DIRECTORY)/settings.hex --output $(OUTPUT_DIRECTORY)/bootloader_settings.hex
mergehex --merge $(OUTPUT_DIRECTORY)/bootloader_settings.hex $(OUTPUT_DIRECTORY)/application.hex $(SDK_ROOT)/components/softdevice/s140/hex/s140_nrf52_7.2.0_softdevice.hex --output $(OUTPUT_DIRECTORY)/project.hex
@echo Flashing...
openocd -f interface/stlink.cfg -f target/nrf52.cfg -c "program $(OUTPUT_DIRECTORY)/project.hex verify reset ; shutdown"

erase:
nrfjprog -f nrf52 --eraseall

# Erase with ST-Link
erase_stlink:
openocd -f interface/stlink.cfg -f target/nrf52.cfg -c "flash init; init; reset halt; flash erase_sector 0 1 last; exit"
@echo Successfully deleted everything!

SDK_CONFIG_FILE := ./${PROJ_DIR}/sdk_config.h
CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar
Expand Down
15 changes: 15 additions & 0 deletions firmware/bootloader/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,23 @@ flash_softdevice:
nrfjprog -f nrf52 --program $(SDK_ROOT)/components/softdevice/s140/hex/s140_nrf52_7.2.0_softdevice.hex --sectorerase
nrfjprog -f nrf52 --reset

# Flash with ST-Link + OpenOCD
flash_stlink:
@echo Generating settings...
nrfutil settings generate --family NRF52840 --application $(OUTPUT_DIRECTORY)/application.hex --application-version 1 --bootloader-version 1 --bl-settings-version 2 $(OUTPUT_DIRECTORY)/settings.hex
@echo Merging required files
mergehex --merge $(OUTPUT_DIRECTORY)/bootloader.hex $(OUTPUT_DIRECTORY)/settings.hex --output $(OUTPUT_DIRECTORY)/bootloader_settings.hex
mergehex --merge $(OUTPUT_DIRECTORY)/bootloader_settings.hex $(OUTPUT_DIRECTORY)/application.hex $(SDK_ROOT)/components/softdevice/s140/hex/s140_nrf52_7.2.0_softdevice.hex --output $(OUTPUT_DIRECTORY)/project.hex
@echo Flashing...
openocd -f interface/stlink.cfg -f target/nrf52.cfg -c "program $(OUTPUT_DIRECTORY)/project.hex verify reset ; shutdown"

erase:
nrfjprog -f nrf52 --eraseall

# Erase with ST-Link
erase_stlink:
openocd -f interface/stlink.cfg -f target/nrf52.cfg -c "flash init; init; reset halt; flash erase_sector 0 1 last; exit"
@echo Successfully deleted everything!

# Config project
SDK_CONFIG_FILE := $(PROJ_DIR)/sdk_config.h
Expand Down
2 changes: 1 addition & 1 deletion firmware/nrf52_sdk/components/toolchain/gcc/Makefile.posix
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
GNU_INSTALL_ROOT ?= /usr/local/gcc-arm-none-eabi-9-2020-q2-update/bin/
GNU_INSTALL_ROOT ?= /usr/local/gcc-arm-none-eabi-10.3-2021.10/bin/
GNU_VERSION ?= 9.3.1
GNU_PREFIX ?= arm-none-eabi
4 changes: 2 additions & 2 deletions firmware/nrf52_sdk/components/toolchain/gcc/Makefile.windows
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
GNU_INSTALL_ROOT ?= C:/Program Files (x86)/GNU Arm Embedded Toolchain/9 2020-q2-update/bin/
GNU_VERSION ?= 9.3.1
GNU_INSTALL_ROOT ?= C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin/
GNU_VERSION ?= 10.3.1
GNU_PREFIX ?= arm-none-eabi