Wi-Fi Combo Forum Discussions
Hi In current 4.1.1 WICED Studio , there is a low-power example which is called apps_sleep under the test. but it is not support BCM94343WWCD1.
When I try to build it with adding BCM94343* into to valid platform in mk. a error was thrown as below.
MAKEFILE MAKECMDGOALS=test.apps_sleep-BCM94343WWCD1 download OTA2_SUPPORT is disabled
Building Bootloader
Finished Building Bootloader
Compiling App_Apps_Sleep_test
Compiling Platform_BCM94343WWCD1
Compiling WICED
apps/test/apps_sleep/apps_sleep.c:42:28: fatal error: platform_cache.h: No such file or directory
#include "platform_cache.h"
^
compilation terminated.
tools/makefiles/wiced_elf.mk:215: recipe for target 'build/test.apps_sleep-BCM94343WWCD1/Modules/apps/test/apps_sleep/apps_sleep.o' failed
make.exe[1]: *** [build/test.apps_sleep-BCM94343WWCD1/Modules/apps/test/apps_sleep/apps_sleep.o] Error 1
make.exe[1]: *** Waiting for unfinished jobs....
make: *** [main_app] Error 2
Makefile:330: recipe for target 'main_app' failed
15:02:52 Build Finished (took 3s.204ms)
can you help fix this issue and make it working with BCM94343WWCD1 platform?
Show LessI'm doing with BCM94343W, SDK 4.0.1. (internal DCT)
I just want to verify for 100% sure, since the code doesn't look like thread-safe to me.
Assume DCT is not thread-safe.
For our code we can use customized DCT routines that work with a mutex.
But what about all other code & binaries provided in stock SDK?
Is it enough if I naively protect WICED API <wiced_dct_write> with a mutex?
Are there other function calls (by networking / BLE or else) that also modifies DCT?
Show LessHi,is there any software support and development kit for the BCM43455.At the same time ,where we can download the software and purchase the kit. thanks
Show LessHi,
I still can hit below issue sometimes on SDK-3.7.0-7.
Basically, the device is useless after this issue happened.
If there is still no fix available for now, how can I detect this issue?
I'd like to make the device reboot if this issue happened.
Any callback or notification I can know this issue happened?
Below is the message for reference:
[15:15:28:663] 00:01:09.010928 GKI_create_task func=0x803f5e5 id=1 name=BTU stack=0x0 stackSize=6144␍␍␊
[15:15:28:669] 00:01:09.018928 GKI_create_task func=0x8040b05 id=0 name=HCISU stack=0x0 stackSize=4096␍␍␊
[15:15:28:776] 00:01:09.062392 GKI_exception(): Task State Table␍␍␊
[15:15:28:781] 00:01:09.000856 GKI_exception 65527 getbuf: Size is too big␍␍␊
[15:15:28:799] 00:01:09.007856 GKI_exception(): Task State Table␍␍␊
[15:15:28:799] 00:01:09.011856 GKI_exception 65535 Send - Buffer corrupted␍␍␊
[15:15:32:776] 00:01:13.062392 GKI_exception(): Task State Table␍␍␊
[15:15:32:781] 00:01:13.000856 GKI_exception 65527 getbuf: Size is too big␍␍␊
[15:15:32:789] 00:01:13.006856 GKI_exception(): Task State Table␍␍␊
[15:15:32:795] 00:01:13.010856 GKI_exception 65535 Send - Buffer corrupted␍␍␊
[15:15:36:775] 00:01:17.062392 GKI_exception(): Task State Table␍␍␊
[15:15:36:782] 00:01:17.000856 GKI_exception 65527 getbuf: Size is too big␍␍␊
[15:15:36:791] 00:01:17.006856 GKI_exception(): Task State Table␍␍␊
[15:15:36:791] 00:01:17.010856 GKI_exception 65535 Send - Buffer corrupted␍␍␊
[15:15:40:775] 00:01:21.062392 GKI_exception(): Task State Table␍␍␊
[15:15:40:779] 00:01:21.000856 GKI_exception 65527 getbuf: Size is too big␍␍␊
[15:15:40:792] 00:01:21.006856 GKI_exception(): Task State Table␍␍␊
[15:15:40:792] 00:01:21.010856 GKI_exception 65535 Send - Buffer corrupted␍␍␊
[15:15:44:774] 00:01:25.062392 GKI_exception(): Task State Table␍␍␊
[15:15:44:779] 00:01:25.000856 GKI_exception 65527 getbuf: Size is too big␍␍␊
[15:15:44:788] 00:01:25.006856 GKI_exception(): Task State Table␍␍␊
.....
Show LessDownload:
- WICED Studio 4.1.1 IDE Installer (Windows)
- WICED Studio 4.1.1 (OSX)
- WICED Studio 4.1.1 (Linux 64-bit)
- WICED Studio 4.1.1 (Linux 32-bit)
- WICED Studio 4.1.1 Release Notes
=====================================================================
Cypress WICED Software Development Kit - CHANGELOG
=====================================================================
Changes for WICED-SDK 4.1.1
* Libraries, Protocols, Drivers
* Homekit
* Added API to allow application to manage Accessory instance ID. Increased the data type to 16-bit integer
* Resolved 'no response' issue on the controller during stress/long-duration tests
* Stability fixes to MQTT library to resolve memory leak and handling of out-of-order packets
* Resolved DTLS server handshake issue for unsupported cipher suites
* Resolved an issue with RSA parsing during TLS handshake
* Fixed packet loss in NetX/NetX-Duo ARP and ND packet types
* Fixes for Pre-Cert 11n WMM certification issues
Show LessWe are using BCM43455 in our custom board. what is the exact vendor specific HCI command to put the BT module to lowest power mode (Deep sleep) or Low Power Mode (LPM)
Show LessHi
Anybody who has same problem, please advise it.
Our module is adapted and ready to mass production.
We got faced problem with BCM4390 SPIL N-04 module.
For easy duplication, we tested with snip.uart sample application, It also make problem.
Issues : Serial data loss and module reboot issue
- SDK 3.7.0
- Device : BCM4390(SPIL N-04 ) and BCM43362
- Issue :
In case using “wiced_init( ) , wiced_network_up”and Serial input data comes continuously, module
goes to reboot or serial input data loss.
If not using “wiced_init( ) , wiced_network_up” no serial input loss
If wifi is not used then serial data loss does not happen
- Test appication : snip.uart
While module is ready to receive, just send file(file size: 351000Bytes ) at the terminal
Added function:
#ifdef ADDED_FUNCTION
wiced_init( );
wiced_network_up( WICED_STA_INTERFACE, WICED_USE_EXTERNAL_DHCP_SERVER, NULL );
#define RX_BUFFER_SIZE 2048
#endif
- Test condition :
UART port = WICED_UART_1
GLOBAL_DEFINES := WICED_DISABLE_STDIO
file size= 351000Bytes, and ping from external device to module ( 1 packet / second )
===========================================================
- Test result#1
1. serial baudrate =115200
2. BCM43362 works fine in FreeRTOS and ThreadX. No Problem
3. BCM4390 makes problem
--------------------------------------------------------------------------------
OS ThreadX FreeRTOS
--------------------------------------------------------------------------------
Network-up | rebooting rebooting
No network-up| OK OK
--------------------------------------------------------------------------------
===========================================================
- Test result#2
1. Baudrate changed : 38400
2. BCM4390 makes problem
OS ThreadX FreeRTOS
Network-up Serial data loss(10K) Serial data loss(10K)
===========================================================
We tested every baudrate but it has same problem. Attached file is the serial data loss picture
Thanks
Show LessHi all:
I am trying to reconnect after MQTT disconnected.After several times successful reconnection and I can't reconnect any more. So I print the "_eheap-sbrk_heap_top " to check to RAM size I left everytime I make reconnection . I found it will reduce about 8-12K ram every time I reconnect success. So that may expand how my situation appear . I think it should be the problem of “Recycling resources” part .I hope the team can explain that.
here is my mqtt connect function.
/*
* Open a connection and wait for MQTT_REQUEST_TIMEOUT period to receive a connection open OK event
*/
wiced_result_t aws_mqtt_conn_open( wiced_mqtt_object_t mqtt_obj, wiced_mqtt_callback_t callback )
{
wiced_result_t ret = WICED_SUCCESS;
wiced_interface_t interface = WICED_STA_INTERFACE;
do {
wiced_hostname_lookup( aws_app_info->region, &broker_address, 10000 );
wiced_rtos_delay_milliseconds( 100 );
}
while(GET_IPV4_ADDRESS(broker_address)==0);
WPRINT_APP_INFO(("[MQTT] Connecting to broker %u.%u.%u.%u ...\n\n", (uint8_t)(GET_IPV4_ADDRESS(broker_address) >> 24),
(uint8_t)(GET_IPV4_ADDRESS(broker_address) >> 16),
(uint8_t)(GET_IPV4_ADDRESS(broker_address) >> 8),
(uint8_t)(GET_IPV4_ADDRESS(broker_address) >> 0)));
wiced_mqtt_init( aws_app_info->mqtt_object );
WPRINT_APP_INFO(("[MQTT] Connecting to MQTT Broker...\n"));
ret = wiced_mqtt_connect( mqtt_obj, &broker_address, interface, callback, &security, &conninfo );
if ( ret != WICED_SUCCESS )
{
WPRINT_APP_ERROR(("[MQTT] Failed to connect MQTT Broker\n"));
ret = WICED_ERROR;
goto _AWS_MQTT_CONN_OPEN_END;
}
if ( mqtt_wait_for( WICED_MQTT_EVENT_TYPE_CONNECT_REQ_STATUS, MQTT_REQUEST_TIMEOUT ) != WICED_SUCCESS )
{
WPRINT_APP_ERROR(("[MQTT] Failed to connect MQTT Broker\n"));
ret = WICED_ERROR;
goto _AWS_MQTT_CONN_OPEN_END;
}
WPRINT_APP_INFO(("[MQTT] Successfully connected MQTT Broker\n"));
_AWS_MQTT_CONN_OPEN_END:
return ret;
}
Show Lessdo
{
ret = aws_mqtt_conn_open( app_info.mqtt_object, mqtt_connection_event_cb );
connection_retries++ ;
host_rtos_delay_milliseconds( 1000 );
} while ( ( ret != WICED_SUCCESS ) && ( connection_retries < WICED_MQTT_CONNECTION_NUMBER_OF_RETRIES ) );
I wanted to see some debug output from the libraries/filesystems/ota2 component when the WICED 4.1 OTA2 bootloader called functions from that component. I removed WICED_DISABLE_STDIO which allowed debug messages to be printed in the OTA2 bootloader, but not in the OTA2 component, because the debug output was only set to print when the component was not being used by the bootloader. Since this component's makefile already had the required mini_printf component added, I removed the restriction. The console displayed nothing. It did not even display the debug messages from the bootloader. As far as I could tell the bootloader appeared to have completely crashed before it printed anything.
In the component's source file, libraries/filesystems/ota2/wiced_ota2_image.c, I discovered that when expanded, the three OTA2_WPRINT_* called printf() instead of mini_printf(). I changed the definitions from using WPRINT_LIB_* macros to using mini_printf(). I also changed the restriction that barred debug messages when this component was added to the bootloader to a constraint that barred debug messages when WICED_DISABLE_STDIO was defined. Then when I removed the WICED_DISABLE_STDIO from the bootloader I got debug messages from both the bootloader and the component. When I added WICED_DISABLE_STDIO back, neither the bootloader nor the component displayed any output, but the program that was loaded by the bootloader did display output on the console.
// Here is the code I changed:
#if defined(BOOTLOADER)
#define OTA2_WPRINT_ERROR(arg)
#define OTA2_WPRINT_INFO(arg)
#define OTA2_WPRINT_DEBUG(arg)
#else
#include "mini_printf.h"
#define OTA2_WPRINT_ERROR(arg) WPRINT_LIB_ERROR(arg)
#define OTA2_WPRINT_INFO(arg) WPRINT_LIB_INFO(arg)
#define OTA2_WPRINT_DEBUG(arg) WPRINT_LIB_DEBUG(arg)
#endif
// This is what I changed it into:
#ifdef WICED_DISABLE_STDIO
#define OTA2_WPRINT_ERROR(arg)
#define OTA2_WPRINT_INFO(arg)
#define OTA2_WPRINT_DEBUG(arg)
#else
#include "mini_printf.h"
#define OTA2_WPRINT_ERROR(arg) {mini_printf arg;}
#define OTA2_WPRINT_INFO(arg) {mini_printf arg;}
#define OTA2_WPRINT_DEBUG(arg) {mini_printf arg;}
#endif
Additional Notes:
The "#ifdef WICED_DISABLE_STDIO" clause of the conditional probably doesn't really matter. When I built and ran code containing calls to mini_printf() and WICED_DISABLE_STDIO was defined, I got no output, but the code built and ran without a hitch. If all you had was #include "mini_printf.h"... #define OTA2_WPRINT_DEBUG(arg) {mini_printf arg;}, the code should run fine without any #ifdef.
I also made a couple of other changes that ultimately didn't really make any difference. 1) In ota2_bootloader.mk the mini_printf component isn't explicitly added. As far as I can tell, the bootloader inherits the mini_printf component from the ota2 component because calls to mini_printf() do work in the bootloader. I suspect if either the ota2 component was removed from the bootloader or the mini_printf component was removed from the ota2_component then calls to mini_printf() in the bootloader would cause the bootloader to fail to build. I felt it would be better if ota2_bootloader.mk explicitly added the mini_printf component, so I did that. 2) In wiced_ota2_image.c there were several direct calls to mini_printf() that did not use one of the macros. I changed those mini_printf() calls to use a macro instead.
Show LessHello,
I have modified snip.uart example like below. Basically I want to UART receive with timeout and check the number of incoming bytes. I have 2 questions
1) UART RECEIVE does not work when I set the timeout anything other than WICED_NEVER_TIMOUT
2) When timeout is set to WICED_NEVER_TIMEOUT, expected Data Size always return as 0
can you please tell me what I am missing?
void application_start( )
{
char c[8];
uint32_t expected_data_size = 2;
wiced_gpio_init(USER_LED, OUTPUT_PUSH_PULL);
/* Initialise ring buffer */
ring_buffer_init(&rx_buffer, rx_data, RX_BUFFER_SIZE );
/* Initialise UART. A ring buffer is used to hold received characters */
//wiced_uart_init( STDIO_UART, &uart_config, &rx_buffer );
wiced_uart_init( STDIO_UART, &uart_config, NULL );
/* Send a test string to the terminal */
wiced_uart_transmit_bytes( STDIO_UART, TEST_STR, sizeof( TEST_STR ) - 1 );
/* Wait for user input. If received, echo it back to the terminal */
//while ( wiced_uart_receive_bytes( STDIO_UART, &c, &expected_data_size, WICED_NEVER_TIMEOUT ) == WICED_SUCCESS )
while ( wiced_uart_receive_bytes( STDIO_UART, c, &expected_data_size, 10) == WICED_SUCCESS )
{
snprintf(c,3,"%x\n",expected_data_size);
wiced_uart_transmit_bytes( STDIO_UART, c, 8 );
expected_data_size = 2;
memset(c, 0, 8);
}
}
Show Less