On Tue, Jan 31, 2023 at 6:16 AM Fotis Panagiotopoulos <f.j.pa...@gmail.com>
wrote:

> Hello,
>
> Indeed the "proper" way of including a script would be to store it in a
> file system.
>
> However, when I needed to include a single and small script and I didn't
> want to introduce a complete FS just for this, I used xxd.
> xxd can convert any file to a C header file.
>
> You can then include the header, and access the whole file as a variable.
> Here is an example:
>
> I added this in my app Makefile:
>
> # Setup any special pre-build context
> context: header
>         $(Q) cd path/to/libs/json.lua/ && xxd -i json.lua > json_lua.h &&
> echo -n "const " | cat - json_lua.h > temp && mv temp json_lua.h
>
>
>
> And then I used the file like this:
>
> #include "lua.h"#include "lauxlib.h"#include <string.h>
>  #include "json_lua.h"
>  static int luaopen_json(lua_State * L);
>
>  void ExtLibs_load(lua_State * L){
>         // json.lua#ifdef CONFIG_EXT_LIB_JSON_LUA
>         luaL_requiref(L, "json", luaopen_json, 1);
>         lua_pop(L, 1);#endif}
>
>  int luaopen_json(lua_State * L){
>         const char * modname = lua_tostring(L, 1);
>
>         if (strcmp(modname, "json") != 0)
>                 return luaL_error(L, "cannot load json module");
>
>         if (luaL_loadbufferx(L, (char*)json_lua, json_lua_len, "json",
> "t") != LUA_OK)
>                 return lua_error(L);
>
>         lua_call(L, 0, 1);
>
>         return 1;}
>
>
> I hope this helps...
>
That is very helpful, and not just for nuttx development! Thanks for the
tip.

The romfs example actually uses xxd as well to convert the filesystem into
hex code that is also stored in a header file. If I am reading the code
correctly, the example app loads the entire filesystem into memory, which
isn't very efficient and not at all what I wanted. Can someone tell me if
that's true?

Thanks,
Russ

>
>
>
> On Sun, Jan 29, 2023 at 7:34 AM Xiang Xiao <xiaoxiang781...@gmail.com>
> wrote:
>
> > You can use the real file system on the device, there are many choices:
> > romfs, littlefs, fatfs, starmtfs and spiffs.
> >
> > On Sun, Jan 29, 2023 at 12:59 PM Russell Haley <russ.ha...@gmail.com>
> > wrote:
> >
> > > On Sat, Jan 28, 2023 at 7:35 PM Xiang Xiao <xiaoxiang781...@gmail.com>
> > > wrote:
> > >
> > > > You can enable CONFIG_FS_HOSTFS/CONFIG_SIM_HOSTFS, put your scripts
> > into
> > > > some PC folder and run mount this folder from nsh:
> > > > mount -t hostfs -o fs=/path/to/your/pc/folder. /data
> > > >
> > > > While I appreciate the answer, I am using the sim as a testing
> platform
> > > and hoping to move to either an STM32F4/7 or a Sony Spresense. I am
> > hoping
> > > for a solution that is applicable to an embedded project. If I can't
> just
> > > add files to the initial image then I will look at the romfs example
> and
> > > maybe the next best thing?
> > >
> > >
> > > >
> > > > On Sun, Jan 29, 2023 at 2:24 AM Russell Haley <russ.ha...@gmail.com>
> > > > wrote:
> > > >
> > > > > Hi,
> > > > >
> > > > > Big thanks to Xiang Xiao for pointing me to the sim:lua
> > configuration.
> > > I
> > > > > was unable to simply include the defconfig file that you linked to,
> > > but I
> > > > > was able to reconfigure for the sim:lua configuration.  I've now
> got
> > an
> > > > app
> > > > > in the examples folder that includes the Lua interpreter. Is there
> a
> > > > > tutorial on how to include folders and lua scripts or extra files
> in
> > > the
> > > > > initial file system?
> > > > >
> > > > > Much appreciated,
> > > > > Russ
> > > > >
> > > >
> > >
> >
>

Reply via email to