Hi all,
I successfully build and ran RT-Thread (a small embedded OS) on the RISC-V Allwinner D1H SoC.
Experimenting on ClockworkPi DevTerm R-01 device and Sipeed Lichee RV board.
Intention was to make RT-Thread portable terminal with a working display and keyboard.
I manage to:
Create a working LCD MIPI DSI Display driver with frame buffer.
Create a working LCD RGB Display driver with frame buffer.
Make some progress on a USB keyboard driver.
Boot from SD card and communicate via UART
Debugging with GDB
The code is available at: https://github.com/ylyamin/RT-Thread-on-Allwinner-D1H
If you enjoy brainteaser and some low-level stuff, you’re welcome.
Should say: it's not truly low-level bare-metal from ground as RT-Thread operates with threads and events and the HAL level is quite complex. But it is easier to manage compared to working within the Linux kernel - at least for me, as I'm not an expert in Linux. RT-Thread has great potential, as it supports many packages for GUI, audio, Ethernet, and more.
Ready images for SD card:
DevTerm R01: sd_image_devterm.img
uConsole R01: sd_image_uconsole.img (not tested yet)
Sipeed Lichee RV: sd_image_lichee.img
Please note: The DevTerm/uConsole battery charging/discharging controller is not yet configured in the driver, so I’m unsure how it affects the battery. I suggest not using the battery with RT-Thread and powering it via USB instead.
I’m writing a series of articles covering the knowledge and experience I’ve gained:
D1-1. Introduction - Motivation and intention.
D1-2. Boot process - Existing Allwinner D1H bootloaders best practice in example with booting Linux and RT-Thread, also JTAG and GDB.
D1-3. RT-Thread overview and Build - Overview of RT-Thread structure and libraries. Compile RT-Thread for Allwinner D1H platform.
D1-4. Makefile and Hardware changes - My repository structure, Makefile and Hardware changes was needed to be done.
D1-5. LCD Display driver - Display driver for DevTerm R-01, uConsole R-01 and Sipeed Lichee RV.
D1-6. USB Keyboard - USB Keyboard driver for ClockworkPi DevTerm, still not working.
Finally, I dare to ask for help from the community, please:
I’m really stuck with the USB driver. It can detect device connections, but communication has not started.<br>
Perhaps someone would enjoy diving deep into the USB driver to solve this riddle. Ready for issue reports and pull requests.
Picture of LCD Display test in RT-Thread running on Devterm R-01:
最近编辑记录 ylyamin (2024-10-18 17:41:38)
离线
USB is really hard to tune
离线
UPD:
@jusentari made Clockworkpi uConsole R-01 display work in RTT (experimental display parameters, use with caution).
最近编辑记录 ylyamin (2024-10-22 17:31:17)
离线
USB is really hard to tune
USB部分可以看下CherryUSB,好像CherryUSB支持F133,按道理应该是可以用
离线
USB部分可以看下CherryUSB,好像CherryUSB支持F133,按道理应该是可以用
Hi, thanks for your involvement,
Actually I was port CherryUSB already in folder rt-thread/bsp/allwinner/d1s_d1h/packages/CherryUSB/.
Cherry USB do switch from EHCI to OHCI companion controller when I connect USB device but in Cherry USB - OHCI transfer functions is not implemented.
Because of that I switch to TinyUSB in folder rt-thread/bsp/allwinner/d1s_d1h/packages/TinyUSB/
However, it did not reach the point when OHCI started to work in TinyUSB.
More info at D1-6. USB Keyboard
最近编辑记录 ylyamin (2024-10-26 00:06:50)
离线