mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
arch/arm/rtl8721dx: add shared Ameba UART driver.
Add a shared Ameba high-speed UART driver on top of the GPIO driver's common/ameba/ infrastructure, exposing UART0/UART1 through the NuttX serial upper half. - arch/arm/src/common/ameba/ameba_uart.c/.h: serial lower-half driver built on the SDK fwlib UART register layer (ROM symbol table). RX/TX dispatch through NuttX-native interrupts; TERMIOS get/set supported. The pins are muxed to the direction-specific UART crossbar function codes (TXD/RXD per controller) required by the amebadplus pinmux, and RX is pulled high through the SDK ROM. - arch/arm/src/common/ameba/Kconfig: AMEBA_UART option (selects SERIAL and ARCH_HAVE_SERIAL_TERMIOS) plus RX/TX buffer-size knobs. - arch/arm/src/rtl8721dx: wire ameba_uart.c into the Make/CMake builds and pull the fwlib ram_common UART table into the fwlib link set. - boards/arm/rtl8721dx/pke8721daf: board UART port table registering UART0 at /dev/ttyS1 (PB18/PB19, 115200), bring-up hook, and a uart NSH config with the serialrx/serialblaster examples. - Documentation: describe the driver and the uart board config. Verified on hardware (PKE8721DAF): pinmux routing, TX/RX and interrupt paths, and the TERMIOS ioctl path via loopback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: dechao_gong <dechao_gong@realsil.com.cn>
This commit is contained in:
parent
57c7e47a6b
commit
f8d6160022
15 changed files with 1066 additions and 2 deletions
|
|
@ -35,6 +35,8 @@ Supported in this NuttX port:
|
|||
* DHCP client (STA) and DHCP server (SoftAP)
|
||||
* GPIO pins exposed as ``/dev/gpioN`` character devices (input, output and
|
||||
interrupt), driven directly on the SDK fwlib register layer
|
||||
* General-purpose UARTs exposed as ``/dev/ttySN`` serial devices, driven
|
||||
directly on the SDK fwlib register layer
|
||||
|
||||
Buttons and LEDs
|
||||
================
|
||||
|
|
@ -78,6 +80,26 @@ Pins are encoded with the ``AMEBA_PA()`` / ``AMEBA_PB()`` helpers from
|
|||
``arch/arm/src/common/ameba/ameba_gpio.h`` (port A/B, pin 0-31), matching the
|
||||
Ameba SDK ``PinName`` layout.
|
||||
|
||||
uart
|
||||
----
|
||||
|
||||
Minimal NSH with the general-purpose UART driver and the ``serialrx`` /
|
||||
``serialblaster`` examples enabled (no Wi-Fi). The LOG-UART owns the console
|
||||
and ``/dev/ttyS0``, so the board registers UART0 from its table (see
|
||||
``boards/arm/rtl8721dx/pke8721daf/src/rtl8721dx_uart.c``) as ``/dev/ttyS1`` at
|
||||
115200 8N1. Edit that table -- controller, TX/RX pads and baud -- to match a
|
||||
board's wiring. The TX/RX pads use the same ``AMEBA_PA()`` / ``AMEBA_PB()``
|
||||
encoding as the GPIO table; the driver muxes them to the UART function and
|
||||
pulls RX high through the SDK ROM. Exercise the port with the examples (loop TX
|
||||
back to RX, or wire it to a host serial adapter)::
|
||||
|
||||
nsh> serialblaster # stream a test pattern out /dev/ttyS1
|
||||
nsh> serialrx # receive and dump bytes from /dev/ttyS1
|
||||
|
||||
The line format can be changed at runtime through ``tcsetattr()`` (the config
|
||||
enables ``CONFIG_SERIAL_TERMIOS``). UART2 is shared with Bluetooth and is not
|
||||
exposed by the driver.
|
||||
|
||||
Wi-Fi
|
||||
=====
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue