JorgeGzm opened a new pull request, #3120: URL: https://github.com/apache/nuttx-apps/pull/3120
Create new example application that: - Integrates BAS (Barracuda Application Server) library - Automatically downloads BAS and BAS-Resources repositories - Generates XedgeZip.c for embedded web resources - Provides complete build configuration for NuttX ## Summary I'm supporting @surfskidude to update xedge support with nuttx. This commit covers conversations: https://github.com/apache/nuttx/pull/16352 https://github.com/apache/nuttx-apps/pull/3071 ## Impact ``Xedge`` a lightweight Lua-based web framework for building secure, real-time IoT applications ========================================================================= `Xedge <https://realtimelogic.com/products/xedge/>`_ is a robust IoT and web framework that is designed for microcontrollers. It is based on the industrial-grade Barracuda Application Server, designed for seamless OEM integration. Xedge accelerates embedded firmware development by providing a flexible, Lua-based environment and a full stack of industrial-strength protocols, including: - OPC UA - Modbus - MQTT - SMQ - WebSockets - HTTP/HTTPS This Xedge port for NuttX comes pre-configured and requires: - TCP/IP v4 and v6 support - File System support - 2 MB RAM allocated statically in ``xedge/xedge_main.c`` .. note:: These instructions set up Xedge in **development mode**. Xedge supports many configuration options that differ between development and production builds. For production settings and optimization, refer to the general Xedge build instructions (details below). Why Use Lua and Xedge in Embedded Systems ------------------------------------------ Great Lua developers don't treat it as a "better C"; they treat it as a complement. Lua is an extension language, which means it's designed to work alongside C, not replace it. Smart embedded programmers use C for performance-critical, low-level code and Lua for high-level business logic, such as processing sensor data and managing secure cloud connectivity. Writing embedded business logic purely in C often means hundreds of lines of boilerplate code to manage memory, handle complex APIs, and handle errors. Lua, especially when paired with a framework like Xedge, lifts that burden. It provides high-level libraries and modules out of the box for protocols, networking, file systems, and more. This shift doesn't just make development easier; it makes it faster. What used to take weeks in C can now be done in days. Lua's simplicity encourages rapid prototyping and quick iteration, which is essential in modern IoT and embedded development, where both time-to-market and security are critical. For a conceptual overview of why this hybrid development model is so powerful, check out the tutorial `Why Smart C Coders Love Lua. ## Testing This routine is incomplete and still needs to be fixed. ```bash ./tools/configure.sh linum-stm32h753bi:netnsh ``` Open the menu config and enable the flags bellow: NETUTILS_NTPCLIENT=y ALLOW_GPL_COMPONENTS=y EXAMPLES_XEDGE=y ```bash $ make -j Create version.h LN: platform/board to /home/jaga/nuttxspace/apps/platform/dummy Downloading BAS from hash 9f74a2f778b002ad8441471b8a7a5b13172dbe76... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 3867k 0 3867k 0 0 4078k 0 --:--:-- --:--:-- --:--:-- 4078k Downloading BAS-Resources from hash 227a4b998300fa4cfde871dc7dac92c09e1636c2... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 813k 0 813k 0 0 1192k 0 --:--:-- --:--:-- --:--:-- 1192k Creating XedgeZip.c Register: nsh Register: sh Register: ping Register: dd Register: telnetd Register: xedge Register: alarm CPP: /home/jaga/nuttxspace/nuttx/boards/arm/stm32h7/linum-stm32h753bi/scripts/flash.ld-> /home/jaga/nuttxspace/nuttx/boards/arm/stm32h7LD: nuttx arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/nuttx section `.bss' will not fit in region `sram' arm-none-eabi-ld: region `sram' overflowed by 1621920 bytes arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `luaD_throw': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:11775: undefined reference to `longjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `luaD_rawrunprotected': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:11801: undefined reference to `setjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `lua_strx2number': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:16759: undefined reference to `localeconv' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `l_str2d': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:16857: undefined reference to `localeconv' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `tostringbuff': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:16956: undefined reference to `localeconv' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `num2straux': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:21029: undefined reference to `localeconv' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `quotefloat': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:21149: undefined reference to `localeconv' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `l_strcmp': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:23289: undefined reference to `strcoll' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `os_execute': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:25147: undefined reference to `system' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `os_setlocale': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:25423: undefined reference to `setlocale' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `read_number': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:26782: undefined reference to `localeconv' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `DeadProp_save': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:83645: undefined reference to `setjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `LockNode_setOwner': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:85492: undefined reference to `setjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `cachelevel': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:86369: undefined reference to `setjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:86478: undefined reference to `setjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `resetstate': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:86702: undefined reference to `setjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o):/home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:86798: more undefined references to `setjmp' follow arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `SlException_set': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:92496: undefined reference to `longjmp' arm-none-eabi-ld: /home/jaga/nuttxspace/nuttx/staging/libapps.a(BAS.c.home.jaga.nuttxspace.apps.examples.xedge_1.o): in function `SXmlRoot_parse': /home/jaga/nuttxspace/apps/examples/xedge/BAS/src/BAS.c:92507: undefined reference to `setjmp' make[1]: *** [Makefile:217: nuttx] Error 1 make: *** [tools/Unix.mk:552: nuttx] Error 2 ``` -- 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