Hi Russel, If all you need is to copy some file.lua to your board, then an alternative is using TMPFS and transfer the file using zmodem.
Few day ago I created a video tutorial about it: https://www.youtube.com/watch?v=Ne3SZZrwL9c BR, Alan On 2/2/23, Russell Haley <russ.ha...@gmail.com> wrote: > I am mistaken. I understood that the rom image was part of the application > on flash, but had mis-read the documentation of boardctl(BOARDIOC_ROMDISK, > (uintptr_t)&desc); and thought that the command loaded the image into *RAM* > (the BOARDIOC_MKRD command makes the RAM disk. oops!). > > Incidentally, neither the romfs example nor my attempt to re-create it > works in my sim: > > osboxes@osboxes ~/n/nuttx (master)> ./nuttx > > NuttShell (NSH) NuttX-12.0.0 > nsh> romfs > ERROR: Failed to create RAM disk: Unknown error > nsh> rapp > Starting Russells App 1... > ERROR: Failed to create RAM disk: Unknown error > nsh> > > I don't know how to debug this "unknown error". I guess I will try to find > where that error message comes from and hook in GDB? I'm terrible at this > stuff, someone needs to revoke my compiler license (tee hee). > > Cheers, > Russ > > On Wed, Feb 1, 2023 at 7:29 PM Xiang Xiao <xiaoxiang781...@gmail.com> > wrote: > >> romfs is part of your image as the const string. There is no difference >> from the below manual step. >> >> On Thu, Feb 2, 2023 at 10:00 AM Russell Haley <russ.ha...@gmail.com> >> wrote: >> >> > 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 >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> >