nuttx/Documentation/platforms/renesas/rx65n/boards/rx65n-grrose/index.rst
Abhishek Mishra e9c9cba51d boards: add CI ROMFS passwd credentials and refresh docs
Support NUTTX_ROMFS_PASSWD_PASSWORD via update_romfs_password.sh for
configs that enable ROMFS passwd without a defconfig password (sim/login
CI). Enable RANDOMIZE_KEYS in sim/login defconfig. Update mkpasswd.c
header, platform docs, and the mkpasswd_autogen guide.

Signed-off-by: Abhishek Mishra <mishra.abhishek2808@gmail.com>
2026-07-09 22:41:11 +08:00

574 lines
14 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

============
RX65N GRROSE
============
.. tags:: arch:renesas
This documentation discusses the port of NuttX to “GR-ROSE” board produced by
Gadget Renesas. This board features the RX65N (R5F565NEHDFP 100pin QFP).
Board Features
==============
- Micro controller - RX65N (R5F565NEHDFP 100pin QFP) RXv2 core [34 CoreMark/mA]
- ROM/RAM - 2MB/640KB
- Operating Frequency - 120MHz(12MHz 10 Multiplication)
- RTC Clock - 32.768kHz
- Sensors - Temperature(inside MCU)
- ROS I/F - Ethernet, USB(rosserial)
- Serial Servo I/F - TTL x 4, RS-485 x 1
- Analog I/F - ADC(12bit) x 6, DAC x 1
- Wireless - IEEE 802.11b/g/n
- PMOD I/F - 1 (I2C, SPI, UART)
- External power supply - USB VBUS or 4.5V18V
- Supply to external - 3.3V, 5V
See the RX65N GRROSE website for further information about this board:
http://gadget.renesas.com/en/product/rose.html
Serial Console
==============
RX65N GRROSE supports 12 serial ports (SCI0 - SCI12), however only 5 ports can be tested(SCI0, SCI1, SCI2,
SCI5 & SCI6).
Please find the pin configurations for SCI0, SCI1, SCI2, SCI5 & SCI6
SCI0 Pin Configuration:
=== ========
Pin Function
=== ========
P21 RXD0
P20 TXD0
=== ========
SCI1 Pin Configuration:
=== ========
Pin Function
=== ========
P30 RXD1
P26 TXD1
=== ========
SCI2 Pin Configuration:
=== ========
Pin Function
=== ========
P12 RXD2
P13 TXD2
=== ========
SCI3 Pin Configuration (connected to WiFi module):
=== ========
Pin Function
=== ========
P25 RXD3
P23 TXD3
=== ========
SCI5 Pin Configuration:
=== ========
Pin Function
=== ========
PC2 RXD5
PC3 TXD5
=== ========
SCI6 Pin Configuration:
=== ========
Pin Function
=== ========
P33 RXD6
P32 TXD6
=== ========
SCI8 Pin Configuration (Half duplication mode with RS485 driver):
=== ==========================
Pin Function
=== ==========================
PC6 RXD8
PC7 TXD8
PC5 Direction (L=TX, H=RX)
=== ==========================
Serial Connection Configuration
-------------------------------
1. GRROSE board needs to be connected to PC terminal, using USB to Serial Chip.
2. Connect TX of USB to serial chip to RX of SCIX(0,1,2,5,6)
3. Connect RX of USB to serial chip to TX of SCIX(0,1,2,5,6)
4. Connect GND to GND pin.
5. Configure Teraterm to 115200 baud.
LEDs
====
The RX65N GRROSE board has 2 LED's, 1 Power LED(LED3) and 2 User LED's(LED1,
LED2),which are enabled through software.
If enabled the LED is simply turned on when the board boots successfully, and is
blinking on panic / assertion failed.
Networking
==========
Ethernet Connections
--------------------
========== ============
Pin Function
========== ============
PA4 ET0_MDC
PA3 ET0_MDIO
PB2 REF50CK0
PB7 RMII0_CRS_DV
PB1 RMII0_RXD0
PB0 RMII0_RXD1
PB3 RMII0_RX_ER
PB5 RMII0_ETXD0
PB6 RMII0_ETXD1
PB4 RMII0_TXD_EN
PA5 ET0_LINKSTA
PA6_ET_RST ETHER reset
========== ============
NuttX Configurations
====================
The following configurations need to be enabled for network.
* ``CONFIG_RX65N_EMAC=y``: Enable the EMAC Peripheral for RX65N
* ``CONFIG_RX65N_EMAC0=y``: Enable the EMAC Peripheral for RX65N
* ``CONFIG_RX65N_EMAC0_PHYSR=30``: Address of PHY status register on LAN8720A
* ``CONFIG_RX65N_EMAC0_PHYSR_100FD=0x18``: Needed for LAN8720A
* ``CONFIG_RX65N_EMAC0_PHYSR_100HD=0x08``
* ``CONFIG_RX65N_EMAC0_PHYSR_10FD=0x14``
* ``CONFIG_RX65N_EMAC0_PHYSR_10HD=0x04``
* ``CONFIG_RX65N_EMAC0_PHYSR_ALTCONFIG=y``
* ``CONFIG_RX65N_EMAC0_PHYSR_ALTMODE=0x1c``
* ``CONFIG_RX65N_EMAC0_RMII=y``
* ``CONFIG_RX65N_EMAC0_PHYADDR=0``: LAN8720A PHY is at address 1
* ``CONFIG_SCHED_WORKQUEUE=y``: Work queue support is needed
* ``CONFIG_SCHED_HPWORK=y``: High Priority Work queue support
* ``CONFIG_SCHED_LPWORK=y``: Low Priority Work queue support
Using the network with NSH
--------------------------
The IP address is configured using DHCP, using the below mentioned configurations:
* ``CONFIG_NETUTILS_DHCPC=y``
* ``CONFIG_NETUTILS_DHCPD=y``
* ``CONFIG_NSH_DHCPC=y``
* ``CONFIG_NETINIT_DHCPC=y``
.. code:: console
nsh> ifconfig
eth0 HWaddr 00:e0:de:ad:be:ef at UP
IPaddr:10.75.24.53 DRaddr:10.75.24.1 Mask:255.255.254.0
You can use ping to test for connectivity to the host (Careful, Window firewalls
usually block ping-related ICMP traffic). On the target side, you can:
.. code:: console
nsh> ping 10.75.24.250
PING 10.75.24.250 56 bytes of data
56 bytes from 10.75.24.250: icmp_seq=1 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=2 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=3 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=4 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=5 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=6 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=7 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=8 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=9 time=0 ms
56 bytes from 10.75.24.250: icmp_seq=10 time=0 ms
10 packets transmitted, 10 received, 0% packet loss, time 10100 ms
On the host side, you should also be able to ping the RX65N-GRROSE:
.. code:: console
$ ping 10.75.24.53
Configure UDP blaster application as mentioned below:
.. code:: text
CONFIG_EXAMPLES_UDPBLASTER_HOSTIP=0x0a4b1801 (10.75.24.1) ------> Gateway IP
CONFIG_EXAMPLES_UDPBLASTER_NETMASK=0xfffffe00 (255.255.254.0) --------> Netmask
CONFIG_EXAMPLES_UDPBLASTER_TARGETIP=0x0a4b189b (10.75.24.155) ---------> Target IP
RSPI
----
For GRROSE board only channel 1 can be tested since RSPI channel1 pinout is only
brought out as Pin number 2 and 3 in CN4 is used for MOSIB and MISOB
respectively.
USB Host
========
For the RX65N RSK2MB board, to be used as USB Device, the following Jumper
settings need to be done:
* J7: Short Pin 1 & Pin 2
* J16: Short Pin 2 & Pin 3
USB Device
==========
For the RX65N RSK2MB board, to be used as USB Device, the following Jumper
settings need to be done:
* J7: Short Pin 2 & Pin 3
* J16: Short Pin 1 & Pin 2
RTC
===
RTC Testing
-----------
The test cases mentioned in Renesas_RX65N_RTC_Test_Cases.xls are to be executed
as part of RTC testing.
The following configurations are to be enabled as part of testing RTC examples.
* ``CONFIG_EXAMPLES_ALARM``
* ``CONFIG_EXAMPLES_PERIODIC``
* ``CONFIG_EXAMPLES_CARRY``
USB Device Configurations
--------------------------
The following configurations need to be enabled for USB Device
* ``CONFIG_USBDEV``
* ``CONFIG_CDCACM``
* ``CONFIG_STDIO_BUFFER_SIZE=64``
* ``CONFIG_STDIO_LINEBUFFER``
USB Device Testing
------------------------
The following testing is executed as part of USB Device testing on RX65N target
for GRROSE board:
.. code:: console
$ echo "This is a test for USB Device" > /dev/ttyACM0
$ xd 0 0x20000 > /dev/ttyACM0
The output of the commands mentioned above should be seen on the USB Device COM
port on teraterm
RSPI Configurations
-------------------
The following configurations need to be enabled for RSPI
* ``CONFIG_SYSTEM_SPITOOL=y``
RSPI Testing
------------
The following testing is executed as part of RSPI testing on RX65N target for
GRROSE board
On GRROSE board only channel 1 can be tested since RSPI channel1 pinout is only
brought out.
The following command can be used for testing RSPI communication to the slave
device:
.. code:: console
$ spi exch -b 0 -x 4 aabbccdd
where b is bus number and x is number of words to exchange.
RIIC Configurations
-------------------
The following configurations need to be enabled for RIIC
* ``CONFIG_SYSTEM_I2CTOOL=y``
RIIC Testing
------------
On GRROSE board, none of the RIIC channel pins are brought out in the board so
not tested for communication.
DTC Configurations
------------------
The following configurations need to be enabled for DTC.
* ``CONFIG_SYSTEM_SPITOOL=y``
DTC Testing
-----------
DTC has been tested using RSPI driver.
USB Host Configurations
-----------------------
The following configurations need to be enabled for USB Host Mode driver to
support USB HID Keyboard class and MSC Class.
* ``CONFIG_USBHOST=y``
* ``CONFIG_USBHOST_HIDKBD=y``
* ``CONFIG_FS_FAT=y``
* ``CONFIG_EXAMPLES_HIDKBD=y``
USB Host Driver Testing
------------------------
The Following Class Drivers were tested as mentioned below:
- USB HID Keyboard Class
On the NuttX Console "hidkbd" application was executed
.. code:: console
nsh> hidkbd
The characters typed from the keyboard were executed correctly.
- USB MSC Class
The MSC device is enumerated as ``sda`` in ``/dev`` directory.
The block device is mounted using the command as mentioned below:
.. code:: console
$ mount -t vfat /dev/sda /mnt
The MSC device is mounted in ``/dev`` directory
The copy command is executed to test the Read/Write functionality
.. code:: console
$ cp /mnt/<file.txt> /mnt/file_copy.txt
USB Host Hub Configurations
---------------------------
The following configurations need to be enabled for USB Host Mode driver to
support USB HID Keyboard class and MSC Class.
* ``CONFIG_RX65N_USBHOST=y``
* ``CONFIG_USBHOST_HUB=y``
* ``CONFIG_USBHOST_ASYNCH=y``
* ``CONFIG_USBHOST=y``
* ``CONFIG_USBHOST_HIDKBD=y``
* ``CONFIG_FS_FAT=y``
* ``CONFIG_EXAMPLES_HIDKBD=y``
USB Host Hub Driver Testing
---------------------------
The Following Class Drivers were tested as mentioned below :
- USB HID Keyboard Class
On the NuttX Console "hidkbd" application was executed
.. code:: console
nsh> hidkbd
The characters typed from the keyboard were executed correctly.
- USB MSC Class
The MSC device is enumerated as ``sda`` in ``/dev`` directory.
The block device is mounted using the command as mentioned below:
.. code:: console
$ mount -t vfat /dev/sda /mnt
The MSC device is mounted in ``/dev`` directory
The copy command is executed to test the Read/Write functionality
.. code:: console
$ cp /mnt/<file.txt> /mnt/file_copy.txt
Debugging
=========
1. NuttX needs to be compiled in Cygwin.
The following Configuration needs to be set, in order to do source level
debugging:
``CONFIG_DEBUG_SYMBOLS=y`` (Set this option, using menuconfig only, DO NOT
Enable this as default configuration).
2. Download & Install Renesas e2studio IDE.
3. Load the project(NuttX built on Cygwin) as Makefile project with existing code
4. Right click on the project, and select Debug Configurations.
5. The binary(NuttX) needs to be loaded using E1/E2 Emulator.
6. Select the Device name as R5F565NE and Emulator as E1/E2(whichever is being used)
7. Select Connection type as FINE.
8. Load and run the binary.
Flashing NuttX
==============
Alternatively, NuttX binary can be flashed using Renesas flash programmer tool
without using e2 studio/Cygwin
Below are the steps mentioned to flash NuttX binary using Renesas flash
programmer tool(RFP).
1. In order to flash using Renesas flash programmer tool, nuttx.mot file should
be generated.
2. Add the following lines in tools/Unix.mk file:
.. code:: makefile
ifeq ($(CONFIG_MOTOROLA_SREC),y)
@echo "CP: nuttx.mot"
$(Q) $(OBJCOPY) $(OBJCOPYARGS) $(BIN) -O srec -I elf32-rx-be-ns nuttx.mot
endif
3. Add ``CONFIG_MOTOROLA_SREC=y`` in defconfig file or choose ``make
menuconfig`` -> Build Setup -> Binary Output Format -> Select Motorola SREC
format.
4. Download Renesas flash programmer tool from
https://www.renesas.com/in/en/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html#downloads
5. Refer to the user manual document, for steps to flash NuttX binary using RFP
tool.
ROMFS
======
Overview
--------
This directory contains logic to support a custom ROMFS system-init script and
start-up script. These scripts are used by by the NSH when it starts provided
that ``CONFIG_ETC_ROMFS=y``. These scripts provide a ROMFS volume that will be
mounted at /etc and will look like this at run-time:
.. code:: console
NuttShell (NSH) NuttX-8.2
nsh> ls -Rl /etc
/etc:
dr-xr-xr-x 0 .
-r--r--r-- 20 group
dr-xr-xr-x 0 init.d/
-r--r--r-- 35 passwd
/etc/init.d:
dr-xr-xr-x 0 ..
-r--r--r-- 110 rcS
-r--r--r-- 110 rc.sysinit
nsh>
``/etc/init.d/rc.sysinit`` is system init script; ``/etc/init.d/rcS`` is the
start-up script; ``/etc/passwd`` is the password file.
The ``/etc/passwd`` file is auto-generated at build time when
``CONFIG_BOARD_ETC_ROMFS_PASSWD_ENABLE`` is set. See :ref:`mkpasswd_autogen`
for the full setup (admin password, TEA keys, NSH encrypted-password login).
* ``CONFIG_BOARD_ETC_ROMFS_PASSWD_ENABLE=y``
* ``CONFIG_BOARD_ETC_ROMFS_PASSWD_USER`` (default: ``root``)
* Admin password and TEA keys — set in menuconfig (not saved in defconfig)
The password is hashed with TEA by ``tools/mkpasswd``; the plaintext is **not**
stored in the firmware.
The format of the password file is:
.. code:: text
user:encrypted_hash:uid:gid:home
Where:
user: User name
encrypted_hash: TEA-encrypted password (base64)
uid: User ID
gid: Group ID
home: Login directory
``/etc/group`` is a group file. It is not currently used.
.. code:: console
nsh> cat /etc/group
root:*:0:root,admin
The format of the group file is:
.. code:: text
group:x:gid:users
Where:
group: The group name
x: Group password
gid: Group ID
users: A comma separated list of members of the group
``/etc/init.d/rcS`` should have the following contents:
.. code:: text
vi rcS
echo "This is NuttX"
Updating the ROMFS File System
------------------------------
The content on the ``nsh_romfsimg.h`` header file is generated from a sample
directory structure. That directory structure is contained in the ``etc/``
directory and can be modified per the following steps:
1. Change directory to etc/:
.. code:: console
$ cd etc/
2. Make modifications as desired.
3. Create the new ROMFS image.
.. code:: console
$ genromfs -f romfs_img -d etc -V SimEtcVol
4. Convert the ROMFS image to a C header file
.. code:: console
$ xxd -i romfs_img >nsh_romfsimg.h
5. Edit ``nsh_romfsimg.h``, mark both data definitions as ``const`` so that that
will be stored in FLASH.