In the embedding-full example, that requires disabling mphal-backed stdio
again as it conflicts with the implementation brought in by
vfs_posix_file.c.
Signed-off-by: Christian Walther <cwalther@gmx.ch>
To make use of it, as demonstrated in the embedding-full example:
- Include the word(s) "littlefs1" and/or "littlefs2" in EMBED_EXTRA in
micropython_embed.mk.
- Enable the desired MICROPY_*VFS* features in mpconfigport.h.
- Add include path "$(EMBED_DIR)/lib/littlefs" to your application build
system.
For demonstration, a block device implementation containing a small
read-only littlefs2 image is added to the embedding-full example. The block
device could have been written in C and interface to some external,
possibly writable storage medium, but was written in Python and frozen for
simplicity.
What makes this a bit awkward is the fact that the littlefs sources are
located in lib/ and do need to be compiled into the application, unlike all
previous .c files from lib/ that are #included by other C files and must
not be compiled separately. Therefore, introduce a new directory 'libsrc'
in the embed build output that contains these files and can be added to the
application build system as usual, while 'lib' can remain excluded. The
headers need to stay in 'lib' because vfs_lfs.c refers to them under that
path. I am also not entirely happy about having to add an additional
include path to the application build, but see no way around that as long
as vfs_lfs.c refers to "lib/littlefs/lfs2.h" while lfs2.c refers to
"lfs2.h".
Signed-off-by: Christian Walther <cwalther@gmx.ch>
Optionally adds gmtime, localtime, mktime, time, time_ns to the time
module, implemented using mp_hal_time_ns(). This could also be used by
other ports.
I'm unsure where to put modtime_mphal.h, it could also be in extmod. The
important thing is that for MICROPY_PY_TIME_INCLUDEFILE to work it must be
at the same path in both the port build (original source tree) and the
application build (micropython_embed distribution), therefore not in
ports/embed/port.
It is named .h, mismatching the corresponding ports/*/modtime.c, because it
must not be compiled separately, which naming it .c would make harder for
users of the embed port - they would need to explicitly exclude it, whereas
this way they can continue to just compile all the .c files found in the
micropython_embed distribution except those in lib.
Signed-off-by: Christian Walther <cwalther@gmx.ch>
To include extmod and its dependencies in the output, include the word
"extmod" in make variable EMBED_EXTRA when building the port.
Ideally this would be deduced automatically from the set of modules enabled
in mpconfigport.h (in a more fine-grained way too), but I can't think of a
simple way of achieving that.
Change in mphalport.h: fixes compiler error "type name requires a specifier
or qualifier" in machine_i2c.h, included from machine_i2c.c.
Signed-off-by: Christian Walther <cwalther@gmx.ch>
The implementation of mp_hal_stdout_tx_strn_cooked() does not belong into
the library, but into the embedding application. Some applications may not
want Python output to go straight to their stdout, or may not even have
printf() available.
Signed-off-by: Christian Walther <cwalther@gmx.ch>
It compiles and runs in this state, but a lot of functionality is still
missing, to be extended over the following commits.
Signed-off-by: Christian Walther <cwalther@gmx.ch>