Manually start the nRF5 802154 radio

Is there a way to manually initialize the nRF5 802154 radio?. I am using an external NOR flash LittleFS partition for data and the nRF5 802154 radio driver keeps complaining about the mount point not being found. For boot speed reasons, I manually mount the FS later. Even if I used automount, the 802154 driver still gets initialized before the filesystem so this is still a problem. Ideally I would like to be able to mount LittleFS and then enable the radio from my application (post boot).

Parents
  • Hello,

    Are you using the nRF5 SDK or the nRF Connect SDK?

    the nRF5 802154 radio driver keeps complaining about the mount point not being found

    Is it the littleFS that complains about the mount point not being found? Have you tried to debug into why? What function call is it that returns an error, and what is the value of that return?

    Best regards,

    Edvin

  • I’m using NCS v2.0.0. That error occurs during Zephyr initialization of the 802154 radio (NOT controlled by my application). This should be observed in any project where you enable LittleFS on external NOR flash and use it for the settings subsystem (I had no success initializing they settings subsystem in the internal flash when using external flash). The issue is apparently due to the radio loading before the file system is mounted (the settings subsystem in this case requires the file system to be mounted first). Due to the time it takes to mount the file system, my application cannot wait for it to mount (it takes about 700ms) and I require being able to manually mount after the application starts running. Therefore I need to do one of two things:

    1. Start the 802154 radio from my application (after the file system is mounted)
    2. Be able to use an internal flash partition for the settings subsystem AND still be able to mount LittleFS on the external flash.
Reply
  • I’m using NCS v2.0.0. That error occurs during Zephyr initialization of the 802154 radio (NOT controlled by my application). This should be observed in any project where you enable LittleFS on external NOR flash and use it for the settings subsystem (I had no success initializing they settings subsystem in the internal flash when using external flash). The issue is apparently due to the radio loading before the file system is mounted (the settings subsystem in this case requires the file system to be mounted first). Due to the time it takes to mount the file system, my application cannot wait for it to mount (it takes about 700ms) and I require being able to manually mount after the application starts running. Therefore I need to do one of two things:

    1. Start the 802154 radio from my application (after the file system is mounted)
    2. Be able to use an internal flash partition for the settings subsystem AND still be able to mount LittleFS on the external flash.
Children
  • Are you using an nRF52840 DK? I was not aware that this is an issue. Did you test this using the external qspi flash on the nRF52840 DK? If so, can you please zip your project folder so that I can try to reproduce it?

    Tristen said:
    I had no success initializing they settings subsystem in the internal flash when using external flash

    Not quite sure what this means.

    Edvin said:
    Is it the littleFS that complains about the mount point not being found? Have you tried to debug into why? What function call is it that returns an error, and what is the value of that return?

    Can you please clarify this? What does it look like when it fails? Where does the error appear?

    And in case you don't reply to the above questions. Are you using Thread or Zigbee? Or are you just using the "raw" 802154 driver? If so, do you intend to use Thread or Zigbee?

    BR,
    Edvin

  • Edvin,

    I see this same issue on my custom board as well as on the nRF52840DK. 

    Tristen said:
    I had no success initializing they settings subsystem in the internal flash when using external flash

    This means that I am using a file system as the settings storage back-end (as opposed to NVS) via the following kconfig options:

    # File system
    CONFIG_FILE_SYSTEM=y
    CONFIG_FILE_SYSTEM_LITTLEFS=y

    # Settings
    CONFIG_SETTINGS_FS=y
    CONFIG_SETTINGS_FS_DIR="/data"
    CONFIG_SETTINGS_FS_FILE="/data/settings"
    It is my understanding that the NRF 802154 driver uses the settings module and therefore will be looking for the storage back-end. In this scenario, the filesystem has not yet been mounted which is why the mount errors are there. 
    Here is the Zephyr log at boot:
    In my projects device tree, I unselected automount. But if I were to rebuild with automount enabled, mounting takes place after the nRF5 802154 radio is initialized and I see the same mount point not found error as above. 

    My project has preparatory code so I'll share the kconfig and board files instead. You should see the issue without my application just by applying the kconfig and dts since the issue happens during boot and not in the application. 

    board.zip

    1122.kconfig.zip

Related