mirror of
https://github.com/apache/nuttx.git
synced 2026-10-08 06:45:19 +00:00
The documentation grew one page at a time, so the tree follows the
history of who wrote what and not the shape of NuttX. Scheduling is
spread over three places, a driver page can sit above the subsystem
that owns it, and the front page lists everything at the same level.
That is a lot to face when all you want to know is where the scheduler
lives.
This change files every page under the code it describes. It is a move,
not a rewrite: outside the ten pages named below, every page keeps the
text that is already in master, and no page's text is deleted.
What it does:
* Groups the table of contents into nine chapters.
* Moves the OS subsystems under os/: scheduling, memory, drivers,
filesystem, networking, IPC, interrupts, libs, time.
* Renames the platform pages to the names the source tree uses, and
derives their tags from the tree instead of by hand.
* Splits guides/ by subject.
* Adds Documentation/redirects.py, with a rule for every page that left
its old path, so old URLs keep working. The redirect page also carries
a link's #anchor across to the new page.
Ten pages have text that is new or rewritten. Nine of them are the
landing page of a chapter, which has to exist for the new structure:
index the front page
os/index OS Design
os/scheduling/index Scheduling
os/interrupts/index Interrupts
os/ipc/index IPC
os/time/index Time and timers
about/index About
developing/index Developing NuttX
ReleaseNotes/index Release notes
The tenth is os/libs/libbuiltin, the only page here with technical
content: libs/libbuiltin/ had no page at all. Five SVG diagrams come
with these pages, hand-written XML with no editor metadata.
Nothing outside Documentation/ is touched.
How it was checked:
* Sphinx builds with -W: no warnings, and no document left outside a
toctree.
* A script, offered in the PR, proves the narrow claim this rests on.
For every page outside the ten named above it erases what a move
touches -- link target, path, tag line, toctree block, table border --
from the whole old text and the whole new text, and requires the two
to be byte for byte identical. It also requires every sentence of a
deleted page to turn up somewhere, and every page that left its old
path to have a redirect, from a URL that existed, to where its content
went. It exits non-zero and names the page if any of that is not true,
and it tests added pages too, so forgetting to declare one cannot make
it pass.
* An independent audit checked 133 factual claims on these ten pages
against the tree, one shell command per claim: 130 confirmed, 1
refuted and fixed here, 2 not checkable.
* tools/checkpatch.sh is clean over the range.
The diff is large because moving a page changes every link that points
to it. Most of it is pure renames, and board pages that gained one tag
line.
Assisted-by: Claude:claude-opus-5
7.7 KiB
7.7 KiB
NuttX-6.29
The 96th release of NuttX, Version 6.29, was made on July 31, 2013, and is available for download from the SourceForge website. Note that release consists of two tarballs: nuttx-6.29.tar.gz and apps-6.29.tar.gz. Both may be needed (see the top-level nuttx/README.txt file for build information).
Additional new features and extended functionality:
- Drivers:
- Generalized the SSD1306 driver and added support UG-2832HSWEG04 which is very similar to the existing support for the UG-2864HSWEG01.
- Added support for a generic bit-bang SPI driver. This includes both a common "upper half" driver as well as a platformp-specific "lower half" dirvers based on a common "template."
- ARMv7-A, Cortex-A5
- Added support for the ARMv7-A architecture and the Cortex-A5 in particular.
- ARMv7-M, Cortex-M3/4
- Modified how some registers are copied during a context switch (with lazy FPU register saving). This should save some context switching time when the context switch is due to interrupt level processing.
- STM32:
- Added support for a separate CCM heap. This may be useful for segregating allocations for CCM (which cannot be used for DMA) from other allocations (that may be used used for DMA).
- STM32 Drivers:
- DAC: Added support for DAC DMA (contributed by John Wharington).
- I2C: An I2C driver for the STM32 F3 family (from John Wharington).
- Atmel AT91 SAM/4:
- Add support for SAM3X and SAM3A chips
- Atmel AT91 SAM/4 Drivers:
- Re-architect the SAM3/4 SPI driver so that is it compatible with the SPI drivers of other MCUs.
- Added register definition file for the SAM4L LCD peripheral.
- Added SAM4L PDCA register definition file
- Atmel AT91 SAM/4 Boards:
- SAM4L-Xplained: Added support for the SPI-based SD card on the I/O1 module.
- SAM4L-Xplained: Added a driver for the LED1 segment LCD module.
- SAM4L-Xplained: Added support for the UG-2832HSWEG04 OLED on the SAM4L Xplained Pro's OLED1 module
- SAM4S-Xplained: Added support for on-board 1MB SRAM
- Arduino Due: Basic support for the Arduino Due (SAM3X) is now included.
- SAM3U-EK: The touchscreen is now functional.
- Atmel AT91 SAMA5D3
- Added support for the Atmel AT91SAMA5D3 Cortex-A5 chip family.
- Atmel AT91 SAMA5D3 Boards
- Added support for the Atmel SAMA5D3x-EK boards which use the AT9 SAMA5D3x chips (x=1,3,4,5).
- Freescale KL25Z Drivers
- Freescale KL25Z TSI register definitions and example TSI driver for the Freedom KL25Z board from Alan Carvalho de Assis.
- Added SPI driver and register definitions for the Freescale KL25Z.
- Added a framework for controlling SPI-related discrete inputs and outputs. Taken from work by Alan Carvalho de Assis
- Build System:
- New sub-directories to hold SPI-related files: includes/nuttx/spi.h moved to include/nuttx/spi/.; SPI-related Kconfig info moved from drivers/Kconfig to drivers/spi/kconfig.
- Finally... I changed the naming of configuration variables like CONFIG_DRAM_ to CONFIG_RAM_. This has bothered me for a long time since most boards don't have DRAM. The more generic RAM naming should not produce so much cognitive dissonance
- Libraries:
- Added CRC16 support.
- Applications:
- Added Zmodem file transfer support. This may be used as an embedded library or may be built as 'sz' and 'rz' commands that can be executed from NSH.
- C++ initializers should be set once and, preferably, in the context of the task that uses any C++ statically initialized classes. This only becomes an issue if cxxtest or helloxx are built as NSH builtin applications. Then you want the initialization done in cxxtext or helloxx and not in NSH (and certainly not twice). Added configuration options to control who does the C++ initialization. NSH now does not do C++ initialization be default and must be configured to do otherwise. Conversely, cxxtest and helloxx will always do C++ initialization unless configured do otherwise.
- examples/cxxtext: Add ostream test as provided by Michael.
- NSH: Added a 'cmp' command that can be used to compare two files for equivalence. Returns an indication if the files differ. Contributed by Andrew Tridgell (via Lorenz Meier).
Efforts In Progress. The following are features that are partially implemented but present in this release. They are not likely to be completed soon.
- Audio System:
- A complete audio subsystem include CODECs, higher level management, interface definitions, and audio drivers was contributed by Ken Pettit. This work has not been completely verified as of this release and so is categorized as a work-in-progress. At present, progress is blocked due to issues interfacing with the VS1053 audio DAC on the Mikroe STM32F4 board.
- kconfig-fronted Configuration:
- Conversion of old configurations to use the kconfig-frontends tool is an ongoing effort that will continue for some time. At this time, only 45% of the configurations have been converted to use the kconfig-frontends tools.
Bugfixes (see the ChangeLog for details). Some of these are very important:
- File Systems:
- Fixed compilation error if no file systems are enabled: Change error to ERROR.
- Read-Ahead/Write buffering: Correct typos that can cause failures in some configurations (From Chia Cheng Tsao).
- Drivers
- Remove the wait for the touchscreen busy bit in the ADS7843E driver. From my reading of the ADS7843 spec, it would not be appropriate to wait for the BUSY bit to de-asserted anyway (since it is only de- asserted when we read the data). Most boards do not even bother to provide the BUSY bit.
- MMC/SD SPI based driver: Driver needs to make sure that the SPI mode and data width are correct.
- ENC28J60: Change buffer ordering to work around Errata. From Dave (ziggurat29).
- USB Device Controller Drivers:
- Fixed a typo in the composite device driver unitialization logic. DEV1 should be DEV2 in one case.
- usbdev.h: Fix some typos that cause compiler errors when CONFIG_USBDEV_DMA and CONFIG_USBDEV_DMAMEMORY are selected (From Chia Cheng Tsao).
- ARM9:
- Fix a bug (uninitialized register error) that crept in the ARM9 boot-up code several years ago. Obviously no one has used the ARM9 NuttX port for years!
- STM32 Drivers:
- Fix STM32 OTF FS endpoint allocation logic. Apparently the same endpoint can be allocated as both an IN or an OUT endpoint. The existing implementation only supported one allocation, either IN or OUT. This resulted in failures to allocate endpoints when used with the CDC/ACM + MSC composite driver (From Chia Cheng Tsao).
- SDIO: Add support for the data block end (DBCKEND) interrupt to terminate transfers (From Chia Cheng Tsao).
- DAC: Fixed numerous DAC driver errors and added support for DAC DMA (contributed by John Wharington).
- SAM3/4:
- SAM4S: Correct configuration of PIO pins for SAM4S B and C peripherals.
- Need to disable write protection before configuring PIO pins.
- GPIO configuration logic must protect against re-entrancy.
- Clocking must be applied to the SMC module for the 3X and 3A family in order for the NFC SRAM to be functional.
- Fixed some errors for interrupts on ports D-F.
- SAM3/4 Drivers:
- Common SPI driver: Fix SPI mode setting. In the SAM3/4 family, the clock phase control (CPHA) is inverted (NPHA). Also fixed an incorrect pointer test. Was checking if the wrong pointer was NULL.
- SAM3/4 Boards:
- SAM3U-EK: Fix polarity of the /PENIRQ signal (it is active low). The SAM3U-EK board now runs at 96MHz.
- Applications:
- apps/examples/nxhello: Minor fix for compilation error when the display resolution is low (< 8bpp) due to a typo that has been there for a long time. Also Correct default colors when in Y1 code mode.
- apps/system/ramtest: The RAM test was not correctly built into the configuration and build system.
- apps/examples/composite: Change to prevent some false alarm debug assertions (From Chia Cheng Tao).