Skip to content

Instantly share code, notes, and snippets.

@C47D
Last active November 9, 2019 15:21
Show Gist options
  • Save C47D/f1071e63d8bfce3e1c4580d896fca51f to your computer and use it in GitHub Desktop.
Save C47D/f1071e63d8bfce3e1c4580d896fca51f to your computer and use it in GitHub Desktop.
Creación de board custom en LoRaMac-node
## Creando custom board basados en el board B-L072Z-LRWAN1 ##
# Clonamos el repositorio de LoRaMac-node
$ git clone https://github.com/Lora-net/LoRaMac-node.git
# Entramos a LoRaMac-node/src/boards y copiamos el directorio B-L072Z-LRWAN1,
# al nuevo directorio le asignamos el nombre de nuetro board, por ejemplo FOO
$ cd LoRaMac-node/src/boards
$ cp -r B-L072Z-LRWAN1 FOO
# Entramos al nuevo directorio (FOO) y abrimos el archivo CMakeLists.txt...
$ mi_editor_favorito CMakeLists.txt
# Como solo estamos cambiandole el nombre a la tarjeta cambiamos el comando
# project(B-L072Z-LRWAN1) por project(FOO)
# Almacenamos los cambios y vamos a LoRaMac-node/src y abrimos el CMakeLists.txt
# Agregamos el nombre de nuestra tarjeta (FOO) a la linea que comienza con set(BOARD_LIST...
set(BOARD_LIST NAMote72 NucleoL073 NucleoL152 NucleoL476 SAML21 SKiM880B SKiM980A SKiM881AXL B-L072Z-LRWAN1 FOO)
# Bajamos hasta la seccion de configuración de toolchain (justo antes de General Components),
# copiamos la configuración de la B-L072Z-LRWAN1 y la modificamos para que apunte al directorio de nuestra tarjeta
elseif(BOARD STREQUAL FOO)
# Configure toolchain for FOO
set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/boards/FOO/cmsis/arm-gcc/stm32l072xx_flash.ld)
include(stm32l0)
# Build platform specific board implementation
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/boards/FOO)
# Configure radio
set(RADIO sx1276 CACHE INTERNAL "Radio sx1276 selected")
endif()
# Ahora para compilar una aplicacion: Por ejemplo LoRaMac/classA.
# Vamos a LoRaMac-node/src/apps/LoRaMac/classA y vemos que contiene:
LoRaMac-node/src/apps/LoRaMac/classA $ ls
B-L072Z-LRWAN1 NAMote72 NucleoL073 NucleoL152 NucleoL476 SAML21 SKiM880B SKiM881AXL SKiM980A
# Contiene un directorio por board soportado, copiamos el directorio B-L072Z-LRWAN1 cambiandole el nombre
# por el de nuestra tarjeta (FOO)
LoRaMac-node/src/apps/LoRaMac/classA $ cp -r B-L072Z-LRWAN1 FOO
# Ahora esta todo listo para compilar el ejemplo LoRaMac, subproyecto class A para nuestra tarjeta (FOO)
# Vamos a LoRaMac-node, creamos un directorio (build) e ingresamos a el
LoRaMac-node $ mkdir build && cd build
# Por defecto LoRaMac-node usa el proyecto LoRaMac subproyecto classA (https://github.com/Lora-net/LoRaMac-node/blob/develop/Doc/development-environment.md#available-configuration-options-for-cmake)
# Para que use nuestra tarjeta configuramos la opcion BOARD
# En Windows 10, debemos de tener instalado make con MinGW y el toolchain de ARM, además debemos de decirle a CMake en donde esta instalado nuestro toolchain y además agregar el flag -G"MinGW Makefiles"
# cmake -DCMAKE_TOOLCHAIN_FILE="cmake/toolchain-arm-none-eabi.cmake" -DTOOLCHAIN_PREFIX="C:/Program Files (x86)/GNU Tools ARM Embedded/9 2019-q4-major" -G"MinGW Makefiles" -DBOARD="NucleoL476" -DMBED_RADIO_SHIELD="SX1276MB1LAS" -DAPPLICATION="LoRaMac" -DSUB_PROJECT="classA" -DACTIVE_REGION="LORAMAC_REGION_US915" -DREGION_EU868=OFF -DREGION_US915=ON ..
# openocd -f interface/stlink-v2-1.cfg -f target/stm32l4x.cfg
LoRaMac-node/build $ cmake -DCMAKE_TOOLCHAIN_FILE="cmake/toolchain-arm-none-eabi.cmake" -DBOARD="FOO" ..
# Termina de hacer lo que debe de hacer cmake (generar makefiles) y podemos hacer make
# En Windows 10 hay un bug en el toolchain a la hora de usar objcopy: https://bugs.launchpad.net/gcc-arm-embedded/+bug/1810274
LoRaMac-node/build $ make
# Se va a compilar la aplicación LoRaMac, subproyecto classA.
# Y es todo, si queremos compilar otra aplicación debemos de agregar el directorio de nuestro board a la carpeta de apps correspondiente
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment