Fills in the boards, drivers, build, and hals subsections with major
additions and changes in the 1.12 release.
Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
Updated doc for release 1.12 for :-
Kernel:
Added k_thread_foreach API
Libraries / Subsystems:
subsys/disk: Added support for multiple disk interfaces
subsys/fs: Added support for multiple instances of filesystem
subsys/fs: Added Virtual File system Switch (VFS) support
Signed-off-by: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
Add a doc to the security section enumerating a threat model for a
sensor-type device. This will help the direction of work to meet these
security requirements for this particular application.
Signed-off-by: David Brown <david.brown@linaro.org>
Noticed in docs.zephyrproject.org/subsystems/test/sanitycheck.html that
the first column of the option table display is too narrow (for short
option names that are shown on the same line as the description). This
PR tweaks the CSS to widen the first column enough to stop wrapping in
most cases.
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Add special command @req to reference requirements. This will help with
traceability between tests and requirements using doxygen.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This patch adds a set of priorities at the (numerically) lowest end of
the range which have "meta-irq" behavior. Runnable threads at these
priorities will always be scheduled before threads at lower
priorities, EVEN IF those threads are otherwise cooperative and/or
have taken a scheduler lock.
Making such a thread runnable in any way thus has the effect of
"interrupting" the current task and running the meta-irq thread
synchronously, like an exception or system call. The intent is to use
these priorities to implement "interrupt bottom half" or "tasklet"
behavior, allowing driver subsystems to return from interrupt context
but be guaranteed that user code will not be executed (on the current
CPU) until the remaining work is finished.
As this breaks the "promise" of non-preemptibility granted by the
current API for cooperative threads, this tool probably shouldn't be
used from application code.
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
Turn 'content', 'kconfig', and 'prep' into phony targets so that the
docs can be built even if there is a file called e.g. 'kconfig' in
zephyr/doc/.
Also remove the Python scripts as prerequisites from the rules and
reference them directly in the recipes instead. The phony targets are
always "out-of-date", and there are no rules to run for the Python
scripts themselves.
Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
Make all menu paths ("(top menu) -> menu -> submenu -> ...") exclude
implicit submenus, which are shown indented in the menuconfig interface
and are created when items depend on the symbol before them.
Previously, implicit submenus were excluded in the menu path at the top
of the menuconfig interface, but were included in the menuconfig symbol
information dialog and in the docs generated by genrest.py.
This makes it consistent, and un-spams the documentation for some
symbols a bit.
Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
i.MX7 updated doc sections for Zephyr release 1.12:
Architectures:
nxp_imx/mcimx7_m4: Added support for i.MX7 Cortex M4 core
Boards:
colibri_imx7d_m4: Added support for Toradex Colibri i.MX7 board
Drivers and Sensors:
serial: Added support for i.MX UART interface
gpio: Added support for i.MX GPIO
HALs:
nxp/imx: imported i.MX7 FreeRTOS HAL
Signed-off-by: Diego Sueiro <diego.sueiro@gmail.com>
Updated doc for release 1.12 for :-
1. Added device tree support for nios2 based boards.
Signed-off-by: Savinay Dharmappa <savinay.dharmappa@intel.com>
Leading/trailing whitespace in prompts requires ugly workarounds in
genrest.py, as e.g. *prompt * is invalid RST. strip() all prompts in
Kconfiglib and get rid of the genrest.py workarounds. Add a warning too.
The Kconfiglib update has some unrelated cleanups and fixes (that won't
affect Zephyr).
Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
add a comment so the script for checking undocumented defgroups doesn't
report this internal API as not documented
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Inspired by #7666, I scanned for other doxygen defgroups that weren't
mention in the documentation and found these:
vlan (defined in net/ethernet_vlan.h)
ieee802154_mgmt (defined in net/ieee802154_mgmt.h)
ethernet_mgmt (defined in net/ethernet_mgmt.h)
Added these to networking .rst, and also added one more level to the
toctree directive to show these nested groups in the table of contents.
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Sphinx only displays API documentation for items within the specified
doxygen defgroup, and importantly, not the subgroups of this defgroup.
If you define a defgroup with defgroup children, you need to tell Sphinx
to display API information about the child defgroups too. (If the
parent defgroup has no entities of it's own, you can leave that out.)
This patch replaces the (empty) display of the parent defgroup with that
of its two child defgroups.
It also fixes an unnecessarily long text line while I was in there.
Fixes: #7666
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Skip writing index and symbol RST files whose content hasn't changed, to
avoid updating their timestamps. This makes documentation rebuilds much
faster, as Sphinx looks at the timestamp to determine if an RST file has
been updated.
Rebuilding docs with symbol reference up-to-date, before:
$ time make html
real 4m52.838s
user 4m46.242s
sys 0m4.249s
After:
$ time make html
real 0m48.731s
user 0m47.571s
sys 0m0.908s
Testing was done with 'make VERBOSE=1 SPHINXOPTS= html', suggested by
Marti Bolivar.
Piggyback a small cleanup to the code generating the select/imply
information.
Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
Previously, symbols defined in multiple locations (e.g.,
Kconfig.defconfig symbols) would incorrectly get all their defaults,
selects, implies, and ranges displayed on the first definition.
This commit uses the Kconfiglib functionality added in 53af8db920066
("kconfiglib: Record which MenuNode has each property") to show such
symbols with all properties in the right location.
The definitions are now listed one-by-one, with the filename/linenr
displayed before each definition. The menu path (e.g.,
'(top menu) -> Device Drivers') is now listed for each definition as
well.
Fixes: #6879
Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
This commit gets rid of the 'option env="ENV_VAR"' bounce symbols.
"$FOO" now expands directly to the value of the environment variable
FOO, instead of to the value of the Kconfig symbol FOO.
This change is likely to soon appear in the C tools as well. Those
'option env' symbols always seemed kinda pointless, and have broken
dependency handling due to forcing symbol evaluation during parsing,
before all the symbols have even been seen.
Compatibility with the C tools could be retained by naming all
'option env' symbols the same as the environment variable they
reference.
This commit also updated the Zephyr documentation to explain the new
behavior. It's relevant for $ZEPHYR_BASE and out-of-tree Kconfig
extensions.
Commit message from Kconfiglib (cbf32e29a130d)
==============================================
Make "$FOO" directly reference the environment variable $FOO in e.g.
'source' statements, instead of the symbol FOO. Use os.path.expandvars()
to expand strings (which preserves "$FOO" as-is if no environment
variable FOO exists).
This gets rid of the 'option env' "bounce" symbols, which are mostly
just spam and are buggy in the C tools (dependencies aren't always
respected, due to parsing and evaluation getting mixed up). The same
change will probably appear soon in the C tools as well.
Keep accepting 'option env' to preserve some backwards compatibility,
but ignore it when expanding strings. For compatibility with the C
tools, bounce symbols will need to be named the same as the environment
variables they reference (which is the case for the Linux kernel).
This is a compatibility break, so the major version will be bumped to 6
at the next release.
The main motivation for adding this now is to allow recording properties
on each MenuNode in a clean way. 'option env' symbols interact badly
with delayed dependency propagation.
Side note: I have a feeling that recording environment variable values
might be redundant to trigger rebuilds if sync_deps() is run at each
compile. It should detect all changes to symbol values due to
environment variables changing value.
Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
User mode may now use queue objects. Instead of embedding the kernel's
linked list information directly in the data item, a container struct
is allocated from the caller's resource pool which is then added to
the queue. The new sflist type is now used to store a flag indicating
whether a data item needs to be freed when removed from the queue.
FIFO/LIFOs are derived from k_queues and have had allocator functions
added.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Majority of "accessing Internet" setup is the same for both QEMU and
real boards connected to host, mention that explicitly. Be more
precise that networking settings require net_app_settings API, not
entire net_app. Finally, add information about DNS setup for the
samples requiring it.
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
Similar to what has been done with pipes and message queues,
user mode can't be trusted to provide a buffer for the kernel
to use. Remove k_stack_init() as a syscall and offer
k_stack_alloc_init() which allocates a buffer from the caller's
resource pool.
Fixes#7285
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Dynamic kernel objects no longer is hard-coded to use the kernel
heap. Instead, objects will now be drawn from the calling thread's
resource pool.
Since we now have a reference counting mechanism, if an object
loses all its references and it was dynamically allocated, it will
be automatically freed.
A parallel dlist is added for efficient iteration over the set of
all dynamic objects, allowing deletion during iteration.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Some kernel APIs may need to allocate memory in order to function
correctly, especially if they are exposed to userspace where
buffers provided by user code cannot be trusted.
Instead of simply drawing from the system heap, specific pools
may instead be assigned to threads, and any requests made on
behalf of the calling thread will draw heap memory from that pool.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Forthcoming patches will dual-purpose an object's permission
bitfield as also reference tracking for kernel objects, used to
handle automatic freeing of resources.
We do not want to allow user thread A to revoke thread B's access
to some object O if B is in the middle of an API call using O.
However we do want to allow threads to revoke their own access to
an object, so introduce a new API and syscall for that.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This works like k_malloc() but allows the user to designate
a specific memory pool to use instead of the kernel heap.
Test coverage provided by existing tests for k_malloc(), which is
now derived from this API.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
The 'getting started' documentation is stating that one should set
some environment variables, but this is not necessary because the user
has already been instructed to set the variables in the
platform-specific guides.
The duplicated documentation should be removed because it is inferiour
to the original documentation. E.g. this documentation does not
describe how to permanently set environment variables. Also, it is
confusingly demonstrating how to use the SDK on Windows, but this is
not supported.
I believe that the purpose of the section is to verify that the user
has not misconfigured or misinstalled the toolchain, but this
responsibility is handled better by CMake itself.
Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
Zephyr supports fatfs, nffs and fcb as storage layer. fatfs and nffs
are less suited for application in memory restricted IC's. fcb has a
smaller footprint but has a complex api.
The proposed module is a module with a even smaller footprint compared
to fcb and a simple interface for reading and writing entries. The
module provides wear levelling of flash. This allows the module to be
used not only to store configuration settings but to store device state
(e.g. state of a light switch over reboots) of a zephyr device.
Fixes buffer overflow by introducing maximum read length in nvs_read()
and nvs_read_hist().
Fixes nvs_write() not to reflash the same data. Allows the user to do
call nvs_write() for all defined entries without worries about flash
wear.
Fixes garbage collection error where wrong data could be copied.
Add nvs_delete() to allow deleting a stored entry. A deleted entry will
not be copied to a new flash sector
Include flash wear information in the README.md documentation
0/25 Update module after reviewers remarks, added documentation to
nvs.h, removed README.md by nvs.rst in doc/subsystems folder
04/26 Update module after reviewers remarks, updated nvs.rst, added more
documentation to samples/subsys/nvs/src/main.c, updated doxygen info
in nvs.h (hope this time it works).
04/26 Update subsystems.rst to include nvs.restart
04/27 Updated nvs.c and nvs.h to avoid a possible flash deletion loop
when the file system is full.
04/29 Updated nvs_write to detect and ignore deletes of non-existing
items
05/06 Update NVS module to return standard error codes, removed low
level API, added configuration options. NVS now uses the board dts to
determine the flash storage location (FLASH_AREA_STORAGE_OFFSET).
05/06 Update nvs.rst. Updated intendation and added intermediate
variables in nvs.c to make the code easier to read.
05/06 Update nvs.rst.
05/07 Update nvs.rst
05/08 Changed the API to a more standard file system API.
05/08 Removed cnt_max from nvs_read() as it is not used.
05/08 Removed #ifdef(CONFIG_NVS_LOG) from nvs_priv.h, now the module can
be build with debugging off.
05/09 Removed configuration options for SECTOR_SIZE, SECTOR_COUNT and
MAX_ELEM_SIZE. It is now easy to support multiple NVS filesystems on
one or multiple devices. Changed logging to support newlib systems.
Thanks to Olivier Martin for reporting and proposed changes.
Signed-off-by: Laczen JMS <laczenjms@gmail.com>
The zephyr.exe created when building a native POSIX application can take
some parameters that are documented in the "board" document, so add a
reference to that documentation here.
fixes: #6384
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
New API enables setting watchdog timeout in the unit of microseconds.
It is possible to configure watchdog timer behavior in CPU sleep state
as well as when it is halted by the debugger.
It supports watchdogs with multiple reload channels.
Jira: ZEP-2564
Signed-off-by: Michał Kruszewski <michal.kruszewski@nordicsemi.no>
Signed-off-by: Karol Lasończyk <karol.lasonczyk@nordicsemi.no>
This is handier in some ways compared to the symbol reference pages. The
search feature is more flexible, and you get to see which dependencies
are currently unsatisfied.
Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
The document talks of settings_handler fields such
as ch_name and ch_set, whereas the actual names
are name, h_set, etc.
Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
I've collected some of the common issues encountered with doc reviews
into a new contributing document, and included use of the
Zephyr-specific extension for generating code building examples.
Updated conf.py and created an external list of substitutions making it
easier to manage them without editing the sphinx conf file (and
documented this).
Tweaked the comments in the application.py extension python code to
render better in the generated doc that extracts these comments (keeps
the documentation in the python code too to ease maintenance when
updates are made).
Updated the sample template to mention use of this sphinx extension.
fixes: #6831fixes: #6811
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Document the gsource (globbing source), rsource (relative source), and
grsource (globbing + relative source) statements.
Also add a separate section that documents Zephyr's non-standard
prefer-later-defaults Kconfig behavior. It was only mentioned in passing
before.
Piggyback: Move the note about .config assignments having no effect on
invisible symbols closer to the beginning of the 'Configuring invisible
Kconfig symbols' section. It makes more sense there.
Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
With the introduction of --list-tests to sanitycheck, a few rules have
been added to how to declare test suites.
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
The current doxygen configuration settings create 4096 folders to hold
the generated HTML output (with names such as d3/ddb/). This makes it
difficult to know what an URL would be for a particular module's
(defgroup's) documentation. By not creating these subdirectories,
module documentation file names become quite predictable:
group__<group name>.html
(e.g., group__sensor__interface.html) allowing us to create
links from the Sphinx-generated documentation into the doxygen-generated
HTML content (this part is under investigation).
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Remove the C Kconfig tools and various scripts associated with them.
scripts/kconfig/diffconfig is popular, so keep it.
I don't know whether anyone is using scripts/kconfig/config. Remove it
and see if anyone screams.
scripts/kconfig/streamline_config.pl deals with modules ('m' values) and
can safely be removed. Zephyr's Kconfig files do not use modules.
Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
Update the Application Development Primer to describe the new menuconfig
configuration interface:
- Update the section explaining how the configuration is navigated,
changed, and saved
- Add a section explaining how to jump directly to a symbol in the
configuration interface
- Replace mconf screenshots with menuconfig.py screenshots. Remove some
screenshots that are no longer used.
- Remove the section explaining how to load arbitrary .config files
from within the configuration interface. That feature hasn't been
implemented yet in menuconfig.py.
- Do various minor language cleanup
Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>