How can I use CYW43438+STM32F4xx without external Flash.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
YaIn_2200856
Level 1
Level 1
First like given

I am using WICED 6.2.1. And I want to configure WICED SDK without using external flash.

Of course from WICED 5.2 it needs external flash like shown below,

---- from WICED 6.0.0 release note -----

WICED 5.2 or later releases:

   a. WLAN firmware and CLM blobs are separated.

   b. By default, WLAN firmware and CLM blobs are placed in WICEDFS on the external flash. Specify “download_apps” in the build target for 43364, 43438 and 4343W based platforms to place WLAN firmware and CLM blobs in WICEDFS on external flash as in the example below:

          make snip.scan-BCM943364WCD1 download download_apps run

--------

But there is also written,

----

f. Optionally, CLM blob can be made a direct resource while leaving WLAN firmware in WICEDFS. This scenario also requires specifying “download_apps” flag.

g. If both WLAN firmware and CLM blob are made direct resources, there is no need to specify “download_apps” flag.

-----

Currently I cannot configure without external flash.

Can someone teach me how to put everything on internal flash without external flash ?

Thank you.

0 Likes
1 Solution

Can you go into debug mode and check what is the assert that you have been hitting inside wiced_wlan_connectivity_init()?

pastedImage_0.png

This is the only change required in platform.mk file to put the firmware and blob in internal flash. All the other sections are already stored in internal flash, so there should not be any reason to use the external flash.

You can try one more thing:

In the platform.h, remove or comment out

/* SPI flash is present */

#define WICED_PLATFORM_INCLUDES_SPI_FLASH

#define WICED_SPI_FLASH_CS ( WICED_GPIO_5 )

and to be doubly sure, you can remove the spi flash initialization in platform.c

/* SPI flash. Exposed to the applications through include/wiced_platform.h */

#if defined ( WICED_PLATFORM_INCLUDES_SPI_FLASH )

const wiced_spi_device_t wiced_spi_flash =

{

    .port        = WICED_SPI_1,

    .chip_select = WICED_SPI_FLASH_CS,

    .speed      = 25000000,

    .mode        = (SPI_CLOCK_RISING_EDGE | SPI_CLOCK_IDLE_HIGH | SPI_USE_DMA | SPI_MSB_FIRST),

    .bits        = 8

};

#endif

View solution in original post

4 Replies
RaktimR_11
Moderator
Moderator
Moderator
500 replies posted 250 replies posted 100 replies posted

In your platform.mk file, you can specify RESOURCES_LOCATION ?= RESOURCES_IN_DIRECT_RESOURCES to download the firmware and blob into main application but this might cause the internal flash to overflow.

0 Likes

Hi! RaktimR_11

Thanks for your suggestion.

I already done that before but doesnt work that is the reason of I sent to forum a question.

Also I checked the size of binary. Used last address was  0x08020888+36 .

  It shouldnt make over flow.

The last block was read from C:\Users\xxx\Documents\WICED-Studio-6.2\43xxx_Wi-Fi\build\yyy.zzz\binary\yyy_zzz_map.csv

" WICED  sleep_event_handlers.wiced_sleep_call_event_handlers 36  0x08020888 "

You told "but this might cause the internal flash to overflow."  must not happen in this case.
I thought there will be another switch or flag or parameter for all is in internal flash.
But could not find yet.
0 Likes

I must explain the detail.

The problem is,

Without external flash. It doesnt work.

After boot process it stopped at ,,, it seems to stopped at  "wiced_wlan_connectivity_init( )"

Maybe waiting for spi-flash response.

If all the software and blob was on internal flash. It doesnt need ex.flash access.

But still have access. Why ? Where do I need to change the parameter of makefile or somewhere ?

0 Likes

Can you go into debug mode and check what is the assert that you have been hitting inside wiced_wlan_connectivity_init()?

pastedImage_0.png

This is the only change required in platform.mk file to put the firmware and blob in internal flash. All the other sections are already stored in internal flash, so there should not be any reason to use the external flash.

You can try one more thing:

In the platform.h, remove or comment out

/* SPI flash is present */

#define WICED_PLATFORM_INCLUDES_SPI_FLASH

#define WICED_SPI_FLASH_CS ( WICED_GPIO_5 )

and to be doubly sure, you can remove the spi flash initialization in platform.c

/* SPI flash. Exposed to the applications through include/wiced_platform.h */

#if defined ( WICED_PLATFORM_INCLUDES_SPI_FLASH )

const wiced_spi_device_t wiced_spi_flash =

{

    .port        = WICED_SPI_1,

    .chip_select = WICED_SPI_FLASH_CS,

    .speed      = 25000000,

    .mode        = (SPI_CLOCK_RISING_EDGE | SPI_CLOCK_IDLE_HIGH | SPI_USE_DMA | SPI_MSB_FIRST),

    .bits        = 8

};

#endif