2025-05-19 6:50 AM
Hello,
I want to try out 6LowPan on S2LP and found that in SUBG2 module I can do that on Contiki. Everything is being built on `NUCLEO-H753ZI` + `NUCLEO-S2868A2`. But after trying to generate code I found few issues in order to make it compile. Maybe it is some misconfiguration, some bugs or mixture of both. But basically issues I found with their fixes I have applied are as follows:
#define USE_NUCLEO_144
#define USE_NUCLEO_H753ZI
- BSP_COM_Init(COM1);
+ COM_InitTypeDef comInit = {.BaudRate = 115200,
+ .WordLength = UART_WORDLENGTH_8B,
+ .Parity = UART_PARITY_NONE,
+ .StopBits = UART_STOPBITS_1,
+ .HwFlowCtl = UART_HWCONTROL_NONE};
+ BSP_COM_Init(COM1, &comInit);
//#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
//void SUBG2_RTIMER_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
//#else
//void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
//#endif /*USE_HAL_TIM_REGISTER_CALLBACKS*/
//{
// if(htim->Instance == SUBG2_RTIMER_INSTANCE)
// {
// __HAL_TIM_CLEAR_FLAG(&contiki_rtimer, TIM_FLAG_UPDATE);
// }
//}
and add Contiki timer clearing in system timer callback:
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
+#include "subg2_bsp_ip_conf.h"
/* USER CODE END Includes */
...
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
/* USER CODE BEGIN Callback 0 */
/* USER CODE END Callback 0 */
if (htim->Instance == TIM13) {
HAL_IncTick();
}
/* USER CODE BEGIN Callback 1 */
+ if(htim->Instance == SUBG2_RTIMER_INSTANCE)
+ {
+ __HAL_TIM_CLEAR_FLAG(&contiki_rtimer, TIM_FLAG_UPDATE);
+ }
/* USER CODE END Callback 1 */
}
/* Private function prototypes -----------------------------------------------*/
- void TimeBase_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
/* Private functions ---------------------------------------------------------*/
...
if(HAL_TIM_Base_Init(&htim13) == HAL_OK)
{
/* Start the TIM time Base generation in interrupt mode */
return HAL_TIM_Base_Start_IT(&htim13);
}
- HAL_TIM_RegisterCallback(&htim13, HAL_TIM_PERIOD_ELAPSED_CB_ID, TimeBase_TIM_PeriodElapsedCallback);
/* Return function status */
return HAL_ERROR;
...
- /**
- * @brief Period elapsed callback in non blocking mode
- * @note This function is called when TIM6 interrupt took place, inside
- * HAL_TIM_IRQHandler(). It makes a direct call to HAL_IncTick() to increment
- * a global variable "uwTick" used as application time base.
- * @PAram htim TIM handle
- * @retval None
- */
-
-void TimeBase_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
-{
- /* Prevent unused argument(s) compilation warning */
- UNUSED(htim);
-
- HAL_IncTick();
-}
And after all these changes I have `UDP server` and `UDP Client` apps running side by side. But not working/communicating. Or I do not know how to test them. Since I assume they should see each other and client would broadcast some message and server receive and echo it back, and I would see that in their log. But no what I see on server side is:
[INFO: S2LP_platform] Starting Contiki-NG
[INFO: S2LP_platform] - Routing: RPL Lite
[INFO: S2LP_platform] - Net: sicslowpan
[INFO: S2LP_platform] - MAC: CSMA
[INFO: S2LP_platform] - 802.15.4 PANID: 0xabcd
[INFO: S2LP_platform] - 802.15.4 Default channel: 0
[INFO: S2LP_platform] Node ID: 32050
[INFO: S2LP_platform] Link-layer address: 0e51.3332.6f33.7d32
[INFO: RPL ] initializing
[INFO: S2LP_platform] Tentative link-local IPv6 address: fe80::c51:3332:6f33:7d32
[INFO: S2LP_platform] ST S2LP Platform
Platform and Contiki-NG parameters:
"Board: stm32h7xx_nucleo": "Board: stm32h7xx_nucleo"
"Expansion Board: S2868A2": "Expansion Board: S2868A2"
RSSI_RX_THRESHOLD: -118.0
RSSI_TX_THRESHOLD: -90.0
RADIO_HW_CSMA: 1
POWER_DBM: 12.0
CHANNEL_SPACE: 100e3
FREQ_DEVIATION: 20e3
BANDWIDTH: 100.0e3
MODULATION_SELECT: MOD_2FSK
DATARATE: 38400
IEEE802154_CONF_PANID: abcd
BASE_FREQUENCY: 868.0e6
CHANNEL_NUMBER: 0
MAX_PACKET_LEN: 128
UIP_CONF_BUFFER_SIZE: 1280
UIP_CONF_ROUTER: 1
UIP_CONF_IPV6_RPL: 1
RPL_DEFAULT_LEAF_ONLY: 0
QUEUEBUF_CONF_NUM: 8
UIP_ND6_REACHABLE_TIME: 60000
UIP_TCP_MSS: 1220
UIP_RECEIVE_WINDOW: 1220
UIP_CONF_TCP: 0
UIP_MAX_ROUTES: 0
NBR_TABLE_CONF_MAX_NEIGHBORS: 16
UIP_CONF_ND6_SEND_RA: 0
UIP_CONF_ND6_SEND_NA: 1
UIP_CONF_ND6_SEND_NS: 0
IP64 is disabled.
DTLS is disabled.
RADIO_LOW_POWER: 0
RADIO_SNIFF_MODE: 0
RADIO_LONG_PREAMBLE: 0
[INFO: S2LP_platform] Contiki-NG and Sub-GHz Radio correctly configured... Starting all processes
[INFO: RPL ] IPv6 addresses:
[INFO: RPL ] -- fd00::c51:3332:6f33:7d32
[INFO: RPL ] -- fe80::c51:3332:6f33:7d32
[INFO: RPL ] reset DIO timer (Init root)
[INFO: RPL ] created DAG with instance ID 0, DAG ID fd00::c51:3332:6f33:7d32, rank 128
[INFO: RPL ] created a new RPL DAG
[INFO: RPL ] sending a multicast-DIO with rank 128 to ff02::1a
[INFO: CSMA ] sending to 0000.0000.0000.0000, len 80, seqno 70, queue length 1, free packets 7
[DBG : CSMA ] scheduling transmission in 24 ticks, NB=0, BE=3
[INFO: CSMA ] preparing packet for 0000.0000.0000.0000, seqno 70, tx 0, queue 1
And on client is:
[INFO: S2LP_platform] Starting Contiki-NG
[INFO: S2LP_platform] - Routing: RPL Lite
[INFO: S2LP_platform] - Net: sicslowpan
[INFO: S2LP_platform] - MAC: CSMA
[INFO: S2LP_platform] - 802.15.4 PANID: 0xabcd
[INFO: S2LP_platform] - 802.15.4 Default channel: 0
[INFO: S2LP_platform] Node ID: 23602
[INFO: S2LP_platform] Link-layer address: 0e51.3332.6133.5c32
[INFO: RPL ] initializing
[INFO: S2LP_platform] Tentative link-local IPv6 address: fe80::c51:3332:6133:5c32
[INFO: S2LP_platform] ST S2LP Platform
Platform and Contiki-NG parameters:
"Board: stm32h7xx_nucleo": "Board: stm32h7xx_nucleo"
"Expansion Board: S2868A2": "Expansion Board: S2868A2"
RSSI_RX_THRESHOLD: -118.0
RSSI_TX_THRESHOLD: -90.0
RADIO_HW_CSMA: 1
POWER_DBM: 12.0
CHANNEL_SPACE: 100e3
FREQ_DEVIATION: 20e3
BANDWIDTH: 100.0e3
MODULATION_SELECT: MOD_2FSK
DATARATE: 38400
IEEE802154_CONF_PANID: abcd
BASE_FREQUENCY: 868.0e6
CHANNEL_NUMBER: 0
MAX_PACKET_LEN: 128
UIP_CONF_BUFFER_SIZE: 1280
UIP_CONF_ROUTER: 1
UIP_CONF_IPV6_RPL: 1
RPL_DEFAULT_LEAF_ONLY: 0
QUEUEBUF_CONF_NUM: 8
UIP_ND6_REACHABLE_TIME: 60000
UIP_TCP_MSS: 1220
UIP_RECEIVE_WINDOW: 1220
UIP_CONF_TCP: 0
UIP_MAX_ROUTES: 0
NBR_TABLE_CONF_MAX_NEIGHBORS: 16
UIP_CONF_ND6_SEND_RA: 0
UIP_CONF_ND6_SEND_NA: 1
UIP_CONF_ND6_SEND_NS: 0
IP64 is disabled.
DTLS is disabled.
RADIO_LOW_POWER: 0
RADIO_SNIFF_MODE: 0
RADIO_LONG_PREAMBLE: 0
[INFO: S2LP_platform] Contiki-NG and Sub-GHz Radio correctly configured... Starting all processes
[INFO: App ] Not reachable yet
[INFO: App ] Not reachable yet
[INFO: App ] Not reachable yet
[INFO: App ] Not reachable yet
[INFO: RPL ] sending a DIS to ff02::1a
[INFO: CSMA ] sending to 0000.0000.0000.0000, len 10, seqno 152, queue length 1, free packets 7
[DBG : CSMA ] scheduling transmission in 29 ticks, NB=0, BE=3
[INFO: CSMA ] preparing packet for 0000.0000.0000.0000, seqno 152, tx 0, queue 1
Bother devices are started/restarted same time and next to each other.
So all that boils down to 3 main questions:
Project `*.ioc` file of `UDP client` is attached if it would be of any help.
Thank you in advance for any help.
@SUBG2 @6lowpan @S2LP @Contiki
2025-05-20 1:06 AM
Hello @lauris
First let me thank you for posting .
I'm currently investigating this issue. I will get back to you as soon as possible.
THX
Ghofrane
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
2025-05-20 8:32 AM
Hello @lauris
I sincerely appreciate you bringing these issues to our attention.
Ticket has been raised to dev team.
Internal ticket number 210193
I will keep you posted with updates.
THX
Ghofrane
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
2025-06-03 12:23 AM
Hello Ghofrane,
Any news regarding this issue?
2025-06-03 12:48 AM
Hello @lauris
Regarding the compilation errors :
There is a limitation regarding the compatibility of Start From Board with X-CUBE-SUBG2. This issue is documented in the Start From Board wiki.
THX
Ghofrane
To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.