Last active
November 9, 2019 15:21
-
-
Save C47D/f1071e63d8bfce3e1c4580d896fca51f to your computer and use it in GitHub Desktop.
Creación de board custom en LoRaMac-node
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## 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