- qspi: both XSPI variants poll the status flags with no bound, so an
unresponsive bus hangs the caller and silently defeats the timeout it
passed in. Route every wait through the timeout-carrying helpers,
return -RT_ETIMEOUT and disable the controller on failure, and replace
the "poll then send" loops with one bounded wait per element.
- hard_i2c: the interrupt receive path programs the BYTENUM window once
and never reloads it, so a longer message was truncated and still
reported as success; refuse it with -RT_EINVAL (enable RX DMA for
longer reads) instead of capping XferSize. Stop capping the transmit
byte count at the window size as well: BYTENUM counts received bytes
only, and the cap stopped feeding DAT after byte 255 while TXDATE
stayed asserted. Reject RT_I2C_NO_START/RT_I2C_NO_STOP on the series
without frame chaining, where they would silently become a fresh START
and a STOP, and tear the DMA channel down when the address phase times
out instead of leaving it armed against a buffer about to unwind.
- spi: the H7xx LLI chain advanced the memory side by SPI_DMA_BLOCK_MAX
bytes although BlkTfrSize counts elements, so a 16-bit transfer walked
half a word early per node; advance by elements and scale both the
chunk offset and the staging buffer by the data width. Propagate the
DMA arm failure that was ignored.
- nand: an odd data length has no halfword-only encoding on the 16-bit
bus and padding would program a byte the caller never asked for, so
refuse it before the command phase; issue the empty-page dummy store
as a halfword there too, where 8-bit AHB writes are unsupported.
- Kconfig: gate the Ethernet/SDRAM/LCD/QSPI/NAND options behind
BSP_PERIPH_PIN_CFG_READY on all three boards. The peripheral clock and
IO are not configured for these boards yet, so selecting one of them
builds a driver whose pins stay in the reset function.
The link points to launchpad.net, which shut down its gcc-arm-embedded
downloads years ago (the URL now returns 503), and the tarball it names
is a 2016 Q3 build (gcc 5.4).
- Point to Arm GNU Toolchain Downloads, matching the link already used
in bsp/nxp/imx/imx91/README.md. The old gnu-rm page covers the
GNU Arm Embedded Toolchain, which Arm has superseded.
- Mention installing the toolchain from the distribution package
manager, with Debian/Ubuntu as an example, since rtconfig.py already
defaults EXEC_PATH to /usr/bin. libstdc++-arm-none-eabi-newlib is
listed because LFLAGS links with -lsupc++.
The dependency list in the QEMU (Ubuntu) quick start no longer works on
current Debian/Ubuntu releases:
- gdb-arm-none-eabi no longer exists (dropped since Debian 11 /
Ubuntu 22.04); gdb-multiarch replaces it
- the qemu meta-package has been split up and can no longer be installed
- libncurses5-dev has been removed; libncurses-dev replaces it
- libstdc++-arm-none-eabi-newlib was missing, so linking fails with
"cannot find -lsupc++", which does not point at the missing package
- kconfiglib was not mentioned at all, although scons --menuconfig needs
it; python3-kconfiglib is packaged, and pip install kconfiglib is
rejected by PEP 668 on recent releases
Merge the eleven single-package commands into one, add a table mapping
the old package names to the current ones, and note the kconfiglib
requirement where menuconfig is first used.
Verified with apt-get -s install on Debian 13.
NUM_MEM_REGIONS / NUM_CONFIGURABLE_REGIONS / NUM_EXCLUSIVE_REGIONS had no
Kconfig defaults. Enabling RT_USING_HW_STACK_GUARD without explicitly
setting them generated empty macros in rtconfig.h (e.g.
'#define NUM_CONFIGURABLE_REGIONS'), which expanded into invalid C
expressions like '(2 + )' and 'for (i = 0U; i < ; i++)', breaking
compilation for cortex-m4/m7/m33 MPU code.
Add safe defaults: NUM_MEM_REGIONS=8, NUM_CONFIGURABLE_REGIONS=0,
NUM_EXCLUSIVE_REGIONS=0. Also document the MemManage_Handler strong-symbol
conflict with CubeMX-generated stm32f4xx_it.c and how to resolve it.
Reported-by: wdfk-prog
Without CXX = rtconfig.CXX the scons Environment falls back to the
default host 'g++', and CXXFLAGS stays an empty CLVar, so the C++
group flags appended by DefineGroup end up as a single unquoted
argument and the build fails as soon as RT_USING_CPLUSPLUS is on:
g++: error: -fno-exceptions -fno-rtti ... -Wl,--gc-sections:
linker input file not found: No such file or directory
Found by the CI C++ ctor (.init_array) check.
The terminal subsystem's own headers (terminal.h, tty_config.h, ...) are
resolved by the compiler's quoted-include directory lookup for sources
inside components/lwp/terminal; nothing else depends on the path.
Stop polluting the global CPPPATH with this internal directory,
following the convention discussed in #10980.
When sal_socket() rejects a request, DFS v2 descriptor cleanup destroys the dfs_file but leaves its separately allocated vnode behind.
Destroy the vnode before releasing the failed descriptor and add a regression test that verifies repeated failures do not consume heap.
Fixes#11710
Assisted-by: OpenAI Codex:GPT-5
Grow maps without a 256 VMA cap, skip RSS walks for maps, report
matching status text, real RSS/statm, MemAvailable after page-pool
free pages, load averages plus last PID, cumulative processes, RV32
cpuinfo, and per-character mount escaping.
NULL read/write buffers now return -EFAULT. tmpfs setattr uses the
vnode-backed object after unlink, keeps S_ISUID/S_ISGID/S_ISVTX, and
the tmpfs utest checks ENAMETOOLONG plus post-unlink fchmod.
Pass -mpoke-function-name to the compiler and assembler when
RT_BACKTRACE_FUNCTION_NAME is enabled for the Cortex-A9 QEMU BSP.
Keep the BSP configuration opt-in so users can enable symbolized
backtraces through menuconfig without changing the default build.
The flag is appended through CCFLAGS and ASPPCOM after the build
environment is created instead of concatenating it into
CFLAGS/CXXFLAGS/ASFLAGS: when the toolchain is selected with
--exec-path, PrepareBuilding() reloads rtconfig and
_apply_exec_path_override() overwrites those variables, which would
silently drop the option. The build still succeeds but function names
are missing from the text section, leaving backtraces without usable
frames.
Example backtrace in QEMU (vexpress-a9, RT_BACKTRACE_FUNCTION_NAME=y,
fault triggered from msh through cmd_fault -> fault_level1 ->
fault_level2 -> fault_level3):
backtrace:
0x600475a8 @ fault_level3
0x600475dc @ fault_level2
0x60047608 @ fault_level1
0x60047630 @ cmd_fault
0x6006ca80 @ _msh_exec_cmd
0x6006cb3c @ msh_exec
0x600717b4 @ finsh_thread_entry
Signed-off-by: Hui Su <3164683437@qq.com>