v2.0.0
> #### New features * Added support for USB interface between the HOST and the concentrator, for sx1250 based concentrator only. * Added support for Listen-Before-Talk for AS923 region, using the additional sx1261 radio from the Semtech Corecell reference design v3. * Added support for Spectral Scan with additional sx1261 radio from the Semtech Corecell reference design v3. * Added support for SX1303 chip, for further Fine Timestamping support. * Merged the master-fdd-cn490 branch to bring support for CN490 Full-Duplex reference design. It is an integration of the releases v1.1.0, v1.1.1, v1.1.2 described below. > #### Changes * HAL: Reworked the complete communication layer. A new loragw_com module has been introduced to handle switching from a USB or a SPI communication interface, aligned function prototypes for sx125x, sx1250 and sx1261 radios. For USB, a mode has been added to group SPI write commands request to the STM32 MCU, in order to optimize latency during time critical configuration phases. * HAL: Added preliminary support for Fine Timestamping for TDOA localization. * HAL: Updated AGC firmware to v6: add configurable delay for PA to start, add Listen-Before-Talk support. * HAL: Added new API function lgw_demod_setconf() to set global demodulator settings. * HAL: Added new API functions for Spectral Scan. * Packet Forwarder: The type of interface is configurable in the global_conf.json file: com_type can be "USB" or "SPI". * Packet Forwarder: Changed the parameters to configure fine timestamping in the global_conf.json. * Packet Forwarder: Added sections to configure the spectral scan and Listen-Before-Talk features. * Packet Forwarder: Added a new thread for background spectral scan example, to show how to use the spectral scan API provided by the HAL, without interfering with the main tasks of the gateway (aka Receive uplinks and transmit downlinks). * Packet Forwarder: Added "nhdr" field parsing from "txpk" JSON downlink request in order to be able to send beacon request from Network Server. * Packet Forwarder: Added chan_multiSF_All in global_conf.json to choose which spreading factors to enable for multi-sf demodulators. * Packet Forwarder: Updated PROTOCOL.md to v1.6. * Tools: added util_spectral_scan, a standalone spectral scanner utility. > #### Notes * This release has been validated on the Semtech Corecell reference design v3 with USB interface. v1.1.2 > Integrated in ***v2.0.0*** from ***master-fdd-cn490*** branch. * packet forwarder: updated global_conf.json.sx1255.CN490.full-duplex with RSSI temperature compensation coefficients, and updated RSSI offset for radio 1. v1.1.1 > Integrated in ***v2.0.0*** from ***master-fdd-cn490*** branch. * HAL: Updated SX1302 LNA/PA LUT configuration for Full Duplex CN490 reference design. * test_loragw_hal_rx/tx: added --fdd option to enable Full Duplex * packet forwarder: updated global_conf.json.sx1255.CN490.full-duplex for CN490 reference design. v1.1.0 > Integrated in ***v2.0.0*** from ***master-fdd-cn490*** branch. * HAL: Added support for CN490 full duplex reference design.
This commit is contained in:
parent
6291e62ef9
commit
2c14708bdb
107 changed files with 13516 additions and 3249 deletions
83
util_boot/Makefile
Normal file
83
util_boot/Makefile
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
### get external defined data
|
||||
|
||||
include ../target.cfg
|
||||
|
||||
### User defined build options
|
||||
|
||||
ARCH ?=
|
||||
CROSS_COMPILE ?=
|
||||
BUILD_MODE := release
|
||||
OBJDIR = obj
|
||||
|
||||
### ----- AVOID MODIFICATIONS BELLOW ------ AVOID MODIFICATIONS BELLOW ----- ###
|
||||
|
||||
ifeq '$(BUILD_MODE)' 'alpha'
|
||||
$(warning /\/\/\/ Building in 'alpha' mode \/\/\/\)
|
||||
WARN_CFLAGS :=
|
||||
OPT_CFLAGS := -O0
|
||||
DEBUG_CFLAGS := -g
|
||||
LDFLAGS :=
|
||||
else ifeq '$(BUILD_MODE)' 'debug'
|
||||
$(warning /\/\/\/ Building in 'debug' mode \/\/\/\)
|
||||
WARN_CFLAGS := -Wall -Wextra
|
||||
OPT_CFLAGS := -O2
|
||||
DEBUG_CFLAGS := -g
|
||||
LDFLAGS :=
|
||||
else ifeq '$(BUILD_MODE)' 'release'
|
||||
$(warning /\/\/\/ Building in 'release' mode \/\/\/\)
|
||||
WARN_CFLAGS := -Wall -Wextra
|
||||
OPT_CFLAGS := -O2 -ffunction-sections -fdata-sections
|
||||
DEBUG_CFLAGS :=
|
||||
LDFLAGS := -Wl,--gc-sections
|
||||
else
|
||||
$(error BUILD_MODE must be set to either 'alpha', 'debug' or 'release')
|
||||
endif
|
||||
|
||||
### Application-specific variables
|
||||
APP_NAME := boot
|
||||
APP_LIBS := -lloragw -lm -ltinymt32 -lrt
|
||||
|
||||
### Environment constants
|
||||
LIB_PATH := ../libloragw
|
||||
|
||||
### Expand build options
|
||||
CFLAGS := -std=c99 $(WARN_CFLAGS) $(OPT_CFLAGS) $(DEBUG_CFLAGS)
|
||||
CC := $(CROSS_COMPILE)gcc
|
||||
AR := $(CROSS_COMPILE)ar
|
||||
|
||||
### General build targets
|
||||
all: $(APP_NAME)
|
||||
|
||||
clean:
|
||||
rm -f obj/*.o
|
||||
rm -f $(APP_NAME)
|
||||
|
||||
install:
|
||||
ifneq ($(strip $(TARGET_IP)),)
|
||||
ifneq ($(strip $(TARGET_DIR)),)
|
||||
ifneq ($(strip $(TARGET_USR)),)
|
||||
@echo "---- Copying boot files to $(TARGET_IP):$(TARGET_DIR)"
|
||||
@ssh $(TARGET_USR)@$(TARGET_IP) "mkdir -p $(TARGET_DIR)"
|
||||
@scp boot $(TARGET_USR)@$(TARGET_IP):$(TARGET_DIR)
|
||||
else
|
||||
@echo "ERROR: TARGET_USR is not configured in target.cfg"
|
||||
endif
|
||||
else
|
||||
@echo "ERROR: TARGET_DIR is not configured in target.cfg"
|
||||
endif
|
||||
else
|
||||
@echo "ERROR: TARGET_IP is not configured in target.cfg"
|
||||
endif
|
||||
|
||||
$(OBJDIR):
|
||||
mkdir -p $(OBJDIR)
|
||||
|
||||
### Compile main program
|
||||
$(OBJDIR)/$(APP_NAME).o: src/$(APP_NAME).c | $(OBJDIR)
|
||||
$(CC) -c $< -o $@ $(CFLAGS) -Iinc -I../libloragw/inc
|
||||
|
||||
### Link everything together
|
||||
$(APP_NAME): $(OBJDIR)/$(APP_NAME).o $(LIB_PATH)/libloragw.a
|
||||
$(CC) -L$(LIB_PATH) -L../libtools $^ -o $@ $(LDFLAGS) $(APP_LIBS)
|
||||
|
||||
### EOF
|
||||
63
util_boot/readme.md
Normal file
63
util_boot/readme.md
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
______ _
|
||||
/ _____) _ | |
|
||||
( (____ _____ ____ _| |_ _____ ____| |__
|
||||
\____ \| ___ | (_ _) ___ |/ ___) _ \
|
||||
_____) ) ____| | | || |_| ____( (___| | | |
|
||||
(______/|_____)_|_|_| \__)_____)\____)_| |_|
|
||||
(C)2020 Semtech-Cycleo
|
||||
|
||||
Switch LoRa concentrator MCU to DFU mode (USB gateway)
|
||||
======================================================
|
||||
|
||||
|
||||
## 1. Introduction
|
||||
|
||||
This software is used to switch the concentrator in DFU mode in order to program
|
||||
its internal MCU.
|
||||
|
||||
## 2. Usage
|
||||
|
||||
```console
|
||||
./boot -d /dev/ttyACMx
|
||||
```
|
||||
|
||||
## 3. Program binary file into internal MCU flash memory
|
||||
|
||||
Download the dfu-util tool from here: http://dfu-util.sourceforge.net
|
||||
|
||||
```console
|
||||
sudo dfu-util -a 0 -s 0x08000000:leave -t 0 -D ../mcu_bin/xxx_fwm_xxx.bin
|
||||
```
|
||||
|
||||
This will automatically exit the DFU bootloader mode, the concentrator is now
|
||||
ready to be used.
|
||||
|
||||
## 4. License
|
||||
|
||||
Copyright (c) 2020, SEMTECH S.A.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Semtech corporation nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL SEMTECH S.A. BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*EOF*
|
||||
132
util_boot/src/boot.c
Normal file
132
util_boot/src/boot.c
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
______ _
|
||||
/ _____) _ | |
|
||||
( (____ _____ ____ _| |_ _____ ____| |__
|
||||
\____ \| ___ | (_ _) ___ |/ ___) _ \
|
||||
_____) ) ____| | | || |_| ____( (___| | | |
|
||||
(______/|_____)_|_|_| \__)_____)\____)_| |_|
|
||||
(C)2020 Semtech
|
||||
|
||||
Description:
|
||||
Utility to switch the concentrator MCU in DFU boot mode (USB gateway)
|
||||
|
||||
License: Revised BSD License, see LICENSE.TXT file include in the project
|
||||
*/
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* --- DEPENDANCIES --------------------------------------------------------- */
|
||||
|
||||
/* fix an issue between POSIX and C99 */
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
#define _XOPEN_SOURCE 600
|
||||
#else
|
||||
#define _XOPEN_SOURCE 500
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <inttypes.h> /* PRIx64, PRIu64... */
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <math.h>
|
||||
#include <signal.h> /* sigaction */
|
||||
#include <getopt.h> /* getopt_long */
|
||||
|
||||
#include "loragw_usb.h"
|
||||
#include "loragw_mcu.h"
|
||||
#include "loragw_hal.h"
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* --- PRIVATE MACROS ------------------------------------------------------- */
|
||||
|
||||
#define RAND_RANGE(min, max) (rand() % (max + 1 - min) + min)
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* --- PRIVATE CONSTANTS ---------------------------------------------------- */
|
||||
|
||||
#define TTY_PATH_DEFAULT "/dev/ttyACM0"
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* --- PRIVATE VARIABLES ---------------------------------------------------- */
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* --- PRIVATE FUNCTIONS ---------------------------------------------------- */
|
||||
|
||||
/* describe command line options */
|
||||
void usage(void) {
|
||||
printf("Library version information: %s\n", lgw_version_info());
|
||||
printf("Available options:\n");
|
||||
printf(" -h print this help\n");
|
||||
printf(" -d [path] TTY path to be used to access the concentrator\n");
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* --- MAIN FUNCTION -------------------------------------------------------- */
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, x;
|
||||
int fd;
|
||||
|
||||
/* USB interfaces */
|
||||
const char tty_path_default[] = TTY_PATH_DEFAULT;
|
||||
const char * tty_path = tty_path_default;
|
||||
void* com_target = NULL;
|
||||
|
||||
/* Parameter parsing */
|
||||
int option_index = 0;
|
||||
static struct option long_options[] = {
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
/* parse command line options */
|
||||
while ((i = getopt_long (argc, argv, "hd:", long_options, &option_index)) != -1) {
|
||||
switch (i) {
|
||||
case 'h':
|
||||
usage();
|
||||
return -1;
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
tty_path = optarg;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf("ERROR: argument parsing\n");
|
||||
usage();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Open connexion with the MCU over USB */
|
||||
x = lgw_usb_open(tty_path, &com_target);
|
||||
if (x != 0) {
|
||||
printf("ERROR: failed to open USB on %s\n", tty_path);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Switch the MCU in Bootloader mode */
|
||||
fd = *(int *)com_target;
|
||||
x = mcu_boot(fd);
|
||||
if (x != 0) {
|
||||
printf("ERROR: failed to switch MCU in BOOT mode\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
printf("INFO: The concentrator is in DFU mode, the MCU can be programmed\n");
|
||||
|
||||
/* close USB connexion (do not call lgw_usb_close() to avoid sending
|
||||
write_gpio commands that the MCU won't be able to receive as already in
|
||||
bootloader mode) */
|
||||
x = close(fd);
|
||||
if (x != 0) {
|
||||
printf("ERROR: failed to close USB\n");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* --- EOF ------------------------------------------------------------------ */
|
||||
Loading…
Add table
Add a link
Reference in a new issue