edak
Posts: 2
Joined: Sun Jan 17, 2016 9:11 pm

Quick to run out of code space

Sun Jan 17, 2016 10:27 pm

Hi all,

I have read through the forum and other sources on the net, I have a better background in hardware however I find myself with a firmware question for you. I originally came to look at the EMW3165 platform because it was integrated and had (theoretically) plenty of flash and RAM.

I am compiling a project that includes some CMSIS-DSP and while I am only using a couple of FFT functions they seem to store the FFT twiddle constants in flash (obviously) and when I add this to the base web-server code I find that with that alone I am running out of codespace. The webserver alone (ala apsta) takes just over 400k of flash and when I add my code it's overflowing by around 12k.

What was not apparent to me is how I can use the SPI-flash in this case as there's plenty of flash on board but I just can't figure out how to use it!

Code: Select all

Compiling the base without web or my DSP code:

----------------------------------,--------,---------
                                  ,        ,  Static
Module                            , Flash  ,   RAM   
----------------------------------,--------,---------
App                               ,       2,       0
Host MCU-family library           ,    6952,     376
Interrupt Vectors                 ,     408,       0
libc                              ,    3944,    2968
platform                          ,    1068,     260
RAM Initialisation                ,    2148,       0
Ring_Buffer                       ,      36,       0
Startup Stack & Link Script fill  ,       2,       0
ThreadX                           ,    5104,     400
WICED                             ,     365,     204
WWD                               ,     431,      56
----------------------------------,--------,---------
TOTAL (bytes)                     ,   18312,    4264
----------------------------------,--------,---------

Compiling the base with just my DSP code:

----------------------------------,--------,---------
                                  ,        ,  Static
Module                            , Flash  ,   RAM   
----------------------------------,--------,---------
App                               ,     874,   14438
Host MCU-family library           ,    6952,     376
Interrupt Vectors                 ,     408,       0
libc                              ,    3952,    2968
Other                             ,   76512,       0
platform                          ,    1068,     260
RAM Initialisation                ,    2148,       0
Ring_Buffer                       ,      36,       0
Startup Stack & Link Script fill  ,       2,       2
ThreadX                           ,    5104,     400
WICED                             ,     365,     204
WWD                               ,     431,      56
----------------------------------,--------,---------
TOTAL (bytes)                     ,   95704,   18704
----------------------------------,--------,---------

My code + just wiced_init():

----------------------------------,--------,---------
                                  ,        ,  Static
Module                            , Flash  ,   RAM   
----------------------------------,--------,---------
App                               ,     878,   14438
Host MCU-family library           ,   12312,    2484
Interrupt Vectors                 ,     408,       0
libc                              ,   23391,    3064
Networking                        ,     929,    8431
NetX-Duo - Interfaces & Stacks    ,       0,      16
Other                             ,   80230,      92
Packet Buffers                    ,       0,   23142
platform                          ,    1140,     260
RAM Initialisation                ,    2276,       0
resources                         ,      16,       0
Ring_Buffer                       ,      92,       0
Startup Stack & Link Script fill  ,       8,       5
ThreadX                           ,    7656,     396
Wi-Fi Firmware                    ,  210412,       0
WICED                             ,    2297,     808
WWD                               ,   10207,    2960
----------------------------------,--------,---------
TOTAL (bytes)                     ,  349976,   56096
----------------------------------,--------,---------


Compiling the base with web code (apsta):

----------------------------------,--------,---------
                                  ,        ,  Static
Module                            , Flash  ,   RAM   
----------------------------------,--------,---------
App                               ,     868,    7088
base64                            ,     517,       0
crypto_open                       ,   50165,       0
DHCP_Server                       ,    1540,     132
DNS                               ,      68,      44
DNS_Redirect_Daemon               ,     605,       0
Host MCU-family library           ,   12686,    2484
HTTP_Server                       ,    3016,       0
Interrupt Vectors                 ,     408,       0
libc                              ,   33879,    3136
Linked_List                       ,     208,       0
Networking                        ,    4945,   13184
NetX-Duo - Interfaces & Stacks    ,       0,      16
Other                             ,   44538,     535
Packet Buffers                    ,       0,   23142
platform                          ,    1140,     260
RAM Initialisation                ,    2432,       0
resources                         ,    2592,       0
Ring_Buffer                       ,      92,       0
Startup Stack & Link Script fill  ,      68,      11
Supplicant - BESL                 ,   15293,     504
ThreadX                           ,    8588,     396
Wi-Fi Firmware                    ,  210412,       0
WICED                             ,    3034,     820
WWD                               ,   12650,    3004
----------------------------------,--------,---------
TOTAL (bytes)                     ,  407312,   54756
----------------------------------,--------,---------



My code is taking roughly 80k and the web stuff around 385k

Can I move some of this to RAM or SPI-FLASH? to get it to fit?

Thanks in advance.

edak
Posts: 2
Joined: Sun Jan 17, 2016 9:11 pm

Re: Quick to run out of code space

Mon Jan 18, 2016 9:25 pm

Some progress.

Instead of worrying about where to put the code, I just reduced the size of the code. I noticed that there was a lot of space being allocated for functions that I didn't think would be used in my program because my FFT size is only 2048:

Code: Select all

FLASH,Other, rodata.arm_cfft_sR_q15_len1024, 16, 0x000000000803879c, 134449052, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len16, 16, 0x00000000080387ac, 134449068, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len32, 16, 0x00000000080387bc, 134449084, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len4096, 16, 0x00000000080387cc, 134449100, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len512, 16, 0x00000000080387dc, 134449116, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len64, 16, 0x00000000080387ec, 134449132, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len256, 16, 0x00000000080387fc, 134449148, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len128, 16, 0x000000000803880c, 134449164, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)
FLASH,Other, rodata.arm_cfft_sR_q15_len2048, 16, 0x000000000803881c, 134449180, ./libraries/math/arm_math/arm_math.a(arm_const_structs.o)


The only shat should have applied is arm_cfft_sR_q15_len2048 so I commented the rest out in arm_rfft_init_q15

Code: Select all

    switch (S->fftLenReal)
    {
    //case 8192u:
    //    S->twidCoefRModifier = 1u;
    //    S->pCfft = &arm_cfft_sR_q15_len4096;
    //    break;
    //case 4096u:
    //    S->twidCoefRModifier = 2u;
    //    S->pCfft = &arm_cfft_sR_q15_len2048;
    //    break;
    case 2048u:
        S->twidCoefRModifier = 4u;
        S->pCfft = &arm_cfft_sR_q15_len1024;
        break;


etc...

Recompiled and all good! Yet to flash it and run it through it's paces though...

Code: Select all

----------------------------------,--------,---------
                                  ,        ,  Static
Module                            , Flash  ,   RAM   
----------------------------------,--------,---------
App                               ,    1736,   15382
base64                            ,     517,       0
crypto_open                       ,   50165,       0
DHCP_Server                       ,    1540,     132
DNS                               ,      68,      44
DNS_Redirect_Daemon               ,     606,       0
Host MCU-family library           ,   12686,    2484
HTTP_Server                       ,    3016,       0
Interrupt Vectors                 ,     408,       0
libc                              ,   33879,    3136
Linked_List                       ,     208,       0
Networking                        ,    4945,   13184
NetX-Duo - Interfaces & Stacks    ,       0,      16
Other                             ,   84806,     535
Packet Buffers                    ,       0,   23142
platform                          ,    1140,     260
RAM Initialisation                ,    2432,       0
resources                         ,    2592,       0
Ring_Buffer                       ,      92,       0
Startup Stack & Link Script fill  ,      70,      17
Supplicant - BESL                 ,   15293,     504
ThreadX                           ,    8588,     396
Wi-Fi Firmware                    ,  210412,       0
WICED                             ,    3031,     824
WWD                               ,   12650,    3004
----------------------------------,--------,---------
TOTAL (bytes)                     ,  448448,   63060
----------------------------------,--------,---------


Return to “WICED SDK Based Development”

Who is online

Users browsing this forum: No registered users and 1 guest