Laczen opened a new pull request, #3062:
URL: https://github.com/apache/nuttx-apps/pull/3062

   Add the possibility to create a `romfs` image for an "external" file system. 
The `romfs.img` can directly be written to a configurable `mtdblock` device.
   
   ## Summary
   
   The elf loader can also be used to generate a `romfs.img` that contains 
applications. This `romfs.img` can be written directly to a internal `mtdblock` 
device. The example then provides a method to separate `kernel` from 
applications and
   allows recompilation and update of the `romfs` without a kernel update.   
   
   ## Impact
   
   None, it is an extra sample configuration.
   
   ## Testing
   
   Tested on `esp32_devkitc:elf`. The romfs.img is copied to mtdblock0 using 
(0x180000 is the start of mtdblock0):
   ```
   esptool.py write_flash 0x180000 nuttx/apps/examples/elf/tests/romfs.img
   ```
   The test is then performed as:
   ```console
   nsh> elf
   Initial memory usage: 13908
   Mounting romfs filesystem at target=/mnt/elf/romfs on /dev/mtdblock0
   
   Memory Usage after mount:
     Before:    13908 After:    19052 Change:     5144
   
   ****************************************************************************
   * Executing errno
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    19052 After:    22324 Change:     3272
   Hello, World on stdout
   Wait a bit for test completion
   Hello, World on stderr
   We failed to open "aflav-sautga-ay!" errno is 0
   
   Memory Usage after program execution:
     Before:    22324 After:    22140 Change:     -184
   
   ****************************************************************************
   * Executing hello
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22140 After:    22324 Change:      184
   Wait a bit for test completion
   Getting ready to say "Hello, world"
   
   Hello, world!
   It has been said.
   
   argc    = 1
   argv    = 0x3ffe38b8
   argv[0] = (0x3ffe38c0) "hello"
   argv[1] = 0
   Goodbye, world!
   
   Memory Usage after program execution:
     Before:    22324 After:    22140 Change:     -184
   
   ****************************************************************************
   * Executing hello++1
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22140 After:    22324 Change:      184
   Wait a bit for test completion
   Hello, World!
   
   Memory Usage after program execution:
     Before:    22324 After:    22140 Change:     -184
   
   ****************************************************************************
   * Executing hello++2
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22140 After:    22324 Change:      184
   Wait a bit for test completion
   main: Started.  Creating MyThingSayer
   CThingSayer::CThingSayer: I am!
   main: Created MyThingSayer=0x3ffe3120
   main: Calling MyThingSayer->Initialize
   CThingSayer::Initialize: When told, I will say 'Hello, World!'
   main: Calling MyThingSayer->SayThing
   CThingSayer::SayThing: I am now saying 'Hello, World!'
   main: Destroying MyThingSayer
   CThingSayer::~CThingSayer: I cease to be
   CThingSayer::~CThingSayer: I will never say 'Hello, World!' again
   main: Returning
   
   Memory Usage after program execution:
     Before:    22324 After:    22140 Change:     -184
   
   ****************************************************************************
   * Executing hello++3
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22140 After:    22348 Change:      208
   Wait a bit for test completion
   CThingSayer::CThingSayer: I am!
   main: Started.  MyThingSayer should already exist
   main: Calling MyThingSayer.Initialize
   CThingSayer::Initialize: When told, I will say 'Hello, World!'
   main: Calling MyThingSayer.SayThing
   CThingSayer::SayThing: I am now saying 'Hello, World!'
   main: Returning.  MyThingSayer should be destroyed
   CThingSayer::~CThingSayer: I cease to be
   CThingSayer::~CThingSayer: I will never say 'Hello, World!' again
   
   Memory Usage after program execution:
     Before:    22348 After:    22140 Change:     -208
   
   ****************************************************************************
   * Executing mutex
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22140 After:    22380 Change:      240
   Wait a bit for test completion
   Starting thread 1
   Starting thread 2
   Stopping threads
           Thread1 Thread2
   Loops   10      10
   Errors  0       0
   
   Memory Usage after program execution:
     Before:    22380 After:    26684 Change:     4304
   
   ****************************************************************************
   * Executing pthread
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    26684 After:    22324 Change:    -4360
   Wait a bit for test completion
   PARENT: started
   
   PARENT: calling pthread_start with arg=305419896
   CHILD: started with arg=305419896
   CHILD: returning -2023406815
   PARENT child exitted with -2023406815
   PARENT returning success
   
   
   Memory Usage after program execution:
     Before:    22324 After:    24412 Change:     2088
   
   ****************************************************************************
   * Executing signal
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    24412 After:    22348 Change:    -2064
   Wait a bit for test completion
   Setting up signal handlers from pid=13
   Old SIGUSR1 sighandler at 0
   New SIGUSR1 sighandler at 0x40086480
   Old SIGUSR2 sighandler at 0
   New SIGUSR2 sighandler at 0x40086480
   Raising SIGUSR1 from pid=13
   Kill-ing SIGUSR1 from pid=13
   siguser_action: Received signo=10 siginfo=0x3ffb13fc arg=0
     SIGUSR1 received
   siginfo:
     si_signo  = 10
     si_code   = 0
     si_errno  = 4
     si_value  = 0
   SIGUSR1 raised from pid=13
   SIGUSR1 not received
   
   Memory Usage after program execution:
     Before:    22348 After:    22172 Change:     -176
   
   ****************************************************************************
   * Executing struct
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22172 After:    22380 Change:      208
   Wait a bit for test completion
   Calling getstruct()
   getstruct returned 0x40086688
     n = 42 (vs 42) PASS
     pn = 0x3ffe3290 (vs 0x3ffe3290) PASS
    *pn = 87 (vs 87) PASS
     ps = 0x40086684 (vs 0x40086684) PASS
     ps->n = 117 (vs 117) PASS
     pf = 0x40086454 (vs 0x40086454) PASS
   Calling mystruct->pf()
   In dummyfunc() -- PASS
   Exit-ing
   
   Memory Usage after program execution:
     Before:    22380 After:    22172 Change:     -208
   
   ****************************************************************************
   * Executing task
   ****************************************************************************
   
   
   Memory Usage after exec:
     Before:    22172 After:    22412 Change:      240
   Wait a bit for test completion
   Parent: Started, pid=20
   Parent: Calling task_create()
   Parent: Waiting for child (pid=22)
   Child: execv was successful!
   Child: argc=2
   Child: argv[0]="child"
   Child: argv[1]="Hello from your parent!"
   Child: Exit-ting with status=0
   Parent: Exit-ing
   
   Memory Usage after program execution:
     Before:    22412 After:    25260 Change:     2848
   
   Memory Usage End-of-Test:
     Before:    25260 After:    25260 Change:        0
   nsh> 
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to