You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mynewt.apache.org by Cris Frusina <cr...@frusina.com> on 2017/01/03 05:12:53 UTC

NFFS compile error

Hi All,

I'm trying to get NFFS working in my project but I'm not having any luck.

The *BSP* *syscfg.yml* file has this included:

syscfg.vals:
     CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
     REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
     NFFS_FLASH_AREA: FLASH_AREA_NFFS
     COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1

The *bsp.yml:*

bsp.flash_map:
     areas:
         # System areas.
         FLASH_AREA_BOOTLOADER:
             device: 0
             offset: 0x00000000
             size: 16kB
         FLASH_AREA_IMAGE_0:
             device: 0
             offset: 0x00008000
             size: 232kB
         FLASH_AREA_IMAGE_1:
             device: 0
             offset: 0x00042000
             size: 232kB
         FLASH_AREA_IMAGE_SCRATCH:
             device: 0
             offset: 0x0007c000
             size: 4kB

         # User areas.
         FLASH_AREA_REBOOT_LOG:
             user_id: 0
             device: 0
             offset: 0x00004000
             size: 16kB
         FLASH_AREA_NFFS:
             user_id: 1
             device: 0
             offset: 0x0007d000
             size: 12kB

*APP **syscfg.yml* has this line:

     CONFIG_NFFS: 1

*APP **pkg.yml:*

pkg.deps.CONFIG_NFFS:
     - "@apache-mynewt-core/fs/nffs"


In my main.c I have included the headers and added the sample code to 
initialize NFFS :

#include "nffs/nffs.h"
#include "fs/fs.h"


/* NFFS_AREA_MAX is defined in the BSP-specified bsp.h header file. */
     struct nffs_area_desc descs[NFFS_AREA_MAX];

     /* Initialize nffs's internal state. */
     rc = nffs_init();


     assert(rc == 0);

     /* Convert the set of flash blocks we intend to use for nffs into 
an array
      * of nffs area descriptors.
      */
     cnt = NFFS_AREA_MAX;
     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);
     assert(rc == 0);

     /* Attempt to restore an existing nffs file system from flash. */
     if (nffs_detect(descs) == FS_ECORRUPT) {
         /* No valid nffs instance detected; format a new one. */
         rc = nffs_format(descs);
         assert(rc == 0);
     }


     rc = fsutil_write_file("/test", "255", 3);
     if (rc != 0) {

     }


I'm getting this compile error:

*Compiling main.c**
**Error: main.c: In function 'main':**
**main.c:392:5: error: implicit declaration of function 
'flash_area_to_nffs_desc' [-Werror=implicit-function-declaration]**
**     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);**
**     ^**
**main.c:392:34: error: 'FLASH_AREA_NFFS' undeclared (first use in this 
function)**
**     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);**
**                                  ^**
**main.c:392:34: note: each undeclared identifier is reported only once 
for each function it appears in**
**main.c:403:2: error: implicit declaration of function 
'fsutil_write_file' [-Werror=implicit-function-declaration]**
**  rc = fsutil_write_file("/color", "255", 3);**
**  ^**
**cc1: all warnings being treated as errors*


I did a search for "flash_area_to_nffs_desc" and I can't find a 
declaration for it anywhere in the repo.

Anyone have any ideas on why I'm getting these compile errors?

Thanks,

Cris




Re: NFFS compile error

Posted by Cris Frusina <cr...@frusina.com>.
Hi Peter,

Perfect, that worked!

Thanks,

Cris


On 1/3/2017 3:32 PM, Peter Snyder wrote:
> Hi Cris,
>
> There have been a number of changes in the 1.0-b1 release in how mynewt is initialized and the documentation hasn\u2019t quite caught up yet. The kernel now initializes the packages that are specified in pkg.yml automatically as part of system start up, and that includes the nffs filesystem init code in your main.c.
>
> Your syscfg.yml and pkg.yml files look okay. To be specific, you can remove the following lines from your code:
>
>> /* NFFS_AREA_MAX is defined in the BSP-specified bsp.h header file. */
>>     struct nffs_area_desc descs[NFFS_AREA_MAX];
>>
>>     /* Initialize nffs's internal state. */
>>     rc = nffs_init();
>>
>>
>>     assert(rc == 0);
>>
>>     /* Convert the set of flash blocks we intend to use for nffs into an array
>>      * of nffs area descriptors.
>>      */
>>     cnt = NFFS_AREA_MAX;
>>     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);
>>     assert(rc == 0);
>>
>>     /* Attempt to restore an existing nffs file system from flash. */
>>     if (nffs_detect(descs) == FS_ECORRUPT) {
>>         /* No valid nffs instance detected; format a new one. */
>>         rc = nffs_format(descs);
>>         assert(rc == 0);
>>     }
> Hope this helps.
>
> - peter
>
>
>> On Jan 2, 2017, at 9:12 PM, Cris Frusina <cr...@frusina.com> wrote:
>>
>> Hi All,
>>
>> I'm trying to get NFFS working in my project but I'm not having any luck.
>>
>> The *BSP* *syscfg.yml* file has this included:
>>
>> syscfg.vals:
>>     CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
>>     REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
>>     NFFS_FLASH_AREA: FLASH_AREA_NFFS
>>     COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1
>>
>> The *bsp.yml:*
>>
>> bsp.flash_map:
>>     areas:
>>         # System areas.
>>         FLASH_AREA_BOOTLOADER:
>>             device: 0
>>             offset: 0x00000000
>>             size: 16kB
>>         FLASH_AREA_IMAGE_0:
>>             device: 0
>>             offset: 0x00008000
>>             size: 232kB
>>         FLASH_AREA_IMAGE_1:
>>             device: 0
>>             offset: 0x00042000
>>             size: 232kB
>>         FLASH_AREA_IMAGE_SCRATCH:
>>             device: 0
>>             offset: 0x0007c000
>>             size: 4kB
>>
>>         # User areas.
>>         FLASH_AREA_REBOOT_LOG:
>>             user_id: 0
>>             device: 0
>>             offset: 0x00004000
>>             size: 16kB
>>         FLASH_AREA_NFFS:
>>             user_id: 1
>>             device: 0
>>             offset: 0x0007d000
>>             size: 12kB
>>
>> *APP **syscfg.yml* has this line:
>>
>>     CONFIG_NFFS: 1
>>
>> *APP **pkg.yml:*
>>
>> pkg.deps.CONFIG_NFFS:
>>     - "@apache-mynewt-core/fs/nffs"
>>
>>
>> In my main.c I have included the headers and added the sample code to initialize NFFS :
>>
>> #include "nffs/nffs.h"
>> #include "fs/fs.h"
>>
>>
>> /* NFFS_AREA_MAX is defined in the BSP-specified bsp.h header file. */
>>     struct nffs_area_desc descs[NFFS_AREA_MAX];
>>
>>     /* Initialize nffs's internal state. */
>>     rc = nffs_init();
>>
>>
>>     assert(rc == 0);
>>
>>     /* Convert the set of flash blocks we intend to use for nffs into an array
>>      * of nffs area descriptors.
>>      */
>>     cnt = NFFS_AREA_MAX;
>>     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);
>>     assert(rc == 0);
>>
>>     /* Attempt to restore an existing nffs file system from flash. */
>>     if (nffs_detect(descs) == FS_ECORRUPT) {
>>         /* No valid nffs instance detected; format a new one. */
>>         rc = nffs_format(descs);
>>         assert(rc == 0);
>>     }
>>
>>
>>     rc = fsutil_write_file("/test", "255", 3);
>>     if (rc != 0) {
>>
>>     }
>>
>>
>> I'm getting this compile error:
>>
>> *Compiling main.c**
>> **Error: main.c: In function 'main':**
>> **main.c:392:5: error: implicit declaration of function 'flash_area_to_nffs_desc' [-Werror=implicit-function-declaration]**
>> **     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);**
>> **     ^**
>> **main.c:392:34: error: 'FLASH_AREA_NFFS' undeclared (first use in this function)**
>> **     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);**
>> **                                  ^**
>> **main.c:392:34: note: each undeclared identifier is reported only once for each function it appears in**
>> **main.c:403:2: error: implicit declaration of function 'fsutil_write_file' [-Werror=implicit-function-declaration]**
>> **  rc = fsutil_write_file("/color", "255", 3);**
>> **  ^**
>> **cc1: all warnings being treated as errors*
>>
>>
>> I did a search for "flash_area_to_nffs_desc" and I can't find a declaration for it anywhere in the repo.
>>
>> Anyone have any ideas on why I'm getting these compile errors?
>>
>> Thanks,
>>
>> Cris
>>
>>
>>
>
>


Re: NFFS compile error

Posted by Peter Snyder <pe...@apache.org>.
Hi Cris,

There have been a number of changes in the 1.0-b1 release in how mynewt is initialized and the documentation hasn’t quite caught up yet. The kernel now initializes the packages that are specified in pkg.yml automatically as part of system start up, and that includes the nffs filesystem init code in your main.c.

Your syscfg.yml and pkg.yml files look okay. To be specific, you can remove the following lines from your code:

> /* NFFS_AREA_MAX is defined in the BSP-specified bsp.h header file. */
>    struct nffs_area_desc descs[NFFS_AREA_MAX];
> 
>    /* Initialize nffs's internal state. */
>    rc = nffs_init();
> 
> 
>    assert(rc == 0);
> 
>    /* Convert the set of flash blocks we intend to use for nffs into an array
>     * of nffs area descriptors.
>     */
>    cnt = NFFS_AREA_MAX;
>    rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);
>    assert(rc == 0);
> 
>    /* Attempt to restore an existing nffs file system from flash. */
>    if (nffs_detect(descs) == FS_ECORRUPT) {
>        /* No valid nffs instance detected; format a new one. */
>        rc = nffs_format(descs);
>        assert(rc == 0);
>    }

Hope this helps.

- peter


> On Jan 2, 2017, at 9:12 PM, Cris Frusina <cr...@frusina.com> wrote:
> 
> Hi All,
> 
> I'm trying to get NFFS working in my project but I'm not having any luck.
> 
> The *BSP* *syscfg.yml* file has this included:
> 
> syscfg.vals:
>    CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
>    REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
>    NFFS_FLASH_AREA: FLASH_AREA_NFFS
>    COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1
> 
> The *bsp.yml:*
> 
> bsp.flash_map:
>    areas:
>        # System areas.
>        FLASH_AREA_BOOTLOADER:
>            device: 0
>            offset: 0x00000000
>            size: 16kB
>        FLASH_AREA_IMAGE_0:
>            device: 0
>            offset: 0x00008000
>            size: 232kB
>        FLASH_AREA_IMAGE_1:
>            device: 0
>            offset: 0x00042000
>            size: 232kB
>        FLASH_AREA_IMAGE_SCRATCH:
>            device: 0
>            offset: 0x0007c000
>            size: 4kB
> 
>        # User areas.
>        FLASH_AREA_REBOOT_LOG:
>            user_id: 0
>            device: 0
>            offset: 0x00004000
>            size: 16kB
>        FLASH_AREA_NFFS:
>            user_id: 1
>            device: 0
>            offset: 0x0007d000
>            size: 12kB
> 
> *APP **syscfg.yml* has this line:
> 
>    CONFIG_NFFS: 1
> 
> *APP **pkg.yml:*
> 
> pkg.deps.CONFIG_NFFS:
>    - "@apache-mynewt-core/fs/nffs"
> 
> 
> In my main.c I have included the headers and added the sample code to initialize NFFS :
> 
> #include "nffs/nffs.h"
> #include "fs/fs.h"
> 
> 
> /* NFFS_AREA_MAX is defined in the BSP-specified bsp.h header file. */
>    struct nffs_area_desc descs[NFFS_AREA_MAX];
> 
>    /* Initialize nffs's internal state. */
>    rc = nffs_init();
> 
> 
>    assert(rc == 0);
> 
>    /* Convert the set of flash blocks we intend to use for nffs into an array
>     * of nffs area descriptors.
>     */
>    cnt = NFFS_AREA_MAX;
>    rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);
>    assert(rc == 0);
> 
>    /* Attempt to restore an existing nffs file system from flash. */
>    if (nffs_detect(descs) == FS_ECORRUPT) {
>        /* No valid nffs instance detected; format a new one. */
>        rc = nffs_format(descs);
>        assert(rc == 0);
>    }
> 
> 
>    rc = fsutil_write_file("/test", "255", 3);
>    if (rc != 0) {
> 
>    }
> 
> 
> I'm getting this compile error:
> 
> *Compiling main.c**
> **Error: main.c: In function 'main':**
> **main.c:392:5: error: implicit declaration of function 'flash_area_to_nffs_desc' [-Werror=implicit-function-declaration]**
> **     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);**
> **     ^**
> **main.c:392:34: error: 'FLASH_AREA_NFFS' undeclared (first use in this function)**
> **     rc = flash_area_to_nffs_desc(FLASH_AREA_NFFS, &cnt, descs);**
> **                                  ^**
> **main.c:392:34: note: each undeclared identifier is reported only once for each function it appears in**
> **main.c:403:2: error: implicit declaration of function 'fsutil_write_file' [-Werror=implicit-function-declaration]**
> **  rc = fsutil_write_file("/color", "255", 3);**
> **  ^**
> **cc1: all warnings being treated as errors*
> 
> 
> I did a search for "flash_area_to_nffs_desc" and I can't find a declaration for it anywhere in the repo.
> 
> Anyone have any ideas on why I'm getting these compile errors?
> 
> Thanks,
> 
> Cris
> 
> 
>