diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/README.md b/Ubiquitous/XiZi_IIoT/board/ch569w/README.md index 89e770521..1ab572cf3 100644 --- a/Ubiquitous/XiZi_IIoT/board/ch569w/README.md +++ b/Ubiquitous/XiZi_IIoT/board/ch569w/README.md @@ -1,78 +1,75 @@ -# 1. 简介 - -| 硬件 | 描述 | -| --------- | ----------------------------------------- | -| 芯片型号 | CH569W | -| CPU | 单核RISC-V3A | -| 主频 | 120MHz | -| 片内SRAM | 32/64/96KB 可配置的 128 位宽 SRAM(RAMX) | -| 片内FLASH | 448KB 用户应用程序存储区 CodeFlash | -| 外设 | UART等 | - -# 2. 克隆代码 - -将XiUOS的源代码克隆下来: - -```bash -git clone https://gitlink.org.cn/xuos/xiuos.git -``` - -# 3. 下载编译工具链 - -编译环境:Ubuntu 20.04.6 LTS - -编译工具链:riscv-none-embed-gcc(xpack-riscv-none-embed-gcc-8.2.0-3.1) - -编译工具链可到Github进行下载:https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v8.2.0-3.1/xpack-riscv-none-embed-gcc-8.2.0-3.1-linux-x64.tgz - -下载完成后将其移动到`/opt`目录下,并进行解压: - -```bash -sudo tar -xvzf xpack-riscv-none-embed-gcc-8.2.0-3.1-linux-x64.tgz -``` - -# 4. 编译 - -## 方式1(推荐) - -可以在`Ubiquitous/XiZi_IIoT`目录下创建文件`script.sh`,内容如下: - -```sh -#! /bin/env sh -export CROSS_COMPILE=/opt/xPacks/riscv-none-embed-gcc/8.2.0-3.1/bin/riscv-none-embed- -make BOARD=ch569w distclean # 将之前的编译生成文件清空 -make BOARD=ch569w menuconfig -make BOARD=ch569w -``` - -创建之后,在命令行移动到`XiZi-IIOT`目录下,键入`./script`运行该脚本。 - -经过Kconfig配置、编译后,即可在`Ubiquitous/XiZi_IIoT/build`目录中生成`XiZi-ch569w.bin`文件,将该文件拷贝至Windows侧待下一步进行烧录。 - -> [!CAUTION] -> -> 如果`make BOARD=ch569w menuconfig`显示【无法找到`kconfig-mconf`】,需要先安装`ncurses-devel`和`kconfig-mconf`,如下: -> -> ```bash -> sudo apt install libncurses5-dev kconfig-frontends - - - -# 5. 烧录 - -1. 沁恒微电子官网下载 WCHISPTool.exe 工具进行 bin 文件下载到芯片 flash 的操作。CH569W 芯片需要进入下载模式才能使用 ISP 工具下载代码,一般使用 USB 方式下载代码最为方便。 -2. 将 CH569W 评估板使用 USB 插头对插头线和计算机连接起来。如图,打开 ISP 下载工具,芯片信号选择 CH569,下载方式选择 USB,将 CH569W 评估板断电,然后将下载配置脚(出厂默认为 PA5,原理图上的HD0)接地后对评估板上电,此时 ISP 工具的 USB 设备列表中将显示新连上来的 CH569W 芯片。最后点击“下载”,即可使程序下载到评估版上的主芯片。 - -image_shaolukaifabanpaizhao - -image_shaoluruanjianjietu - - - -# 6. 启动 - -烧录完成后,并且将串口连接至电脑。 - -将评估板上电重新,即可看到操作系统启动的信息,如下: - +# 1. 简介 + +| 硬件 | 描述 | +| --------- | ------------------------------------------------- | +| 芯片型号 | CH569W | +| CPU | 单核RISC-V3A | +| 主频 | 120MHz | +| 片内SRAM | 32/64/96KB 可配置的 128 位宽 SRAM(RAMX) | +| 片内FLASH | 448KB 用户应用程序存储区 CodeFlash | +| 外设 | 串口、SPI FLASH、SerDes网络、USBD CDC、Watchdog等 | + +# 2. 克隆代码 + +将XiUOS的源代码克隆下来: + +```bash +git clone https://gitlink.org.cn/xuos/xiuos.git +``` + +# 3. 下载编译工具链 + +编译环境:Ubuntu 20.04.6 LTS + +编译工具链:riscv-none-embed-gcc(xpack-riscv-none-embed-gcc-8.2.0-3.1) + +编译工具链可到Github进行下载:https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v8.2.0-3.1/xpack-riscv-none-embed-gcc-8.2.0-3.1-linux-x64.tgz + +下载完成后将其移动到`/opt`目录下,并进行解压: + +```bash +sudo tar -xvzf xpack-riscv-none-embed-gcc-8.2.0-3.1-linux-x64.tgz +``` + +# 4. 编译 + +## 方式1(推荐) + +可以在`Ubiquitous/XiZi_IIoT`目录下创建文件`script.sh`,内容如下: + +```sh +#! /bin/env sh +export CROSS_COMPILE=/opt/xPacks/riscv-none-embed-gcc/8.2.0-3.1/bin/riscv-none-embed- +make BOARD=ch569w distclean # 将之前的编译生成文件清空 +make BOARD=ch569w menuconfig +make BOARD=ch569w +``` + +创建之后,在命令行移动到`XiZi-IIOT`目录下,键入`./script.sh`运行该脚本。 + +经过Kconfig配置、编译后,即可在`Ubiquitous/XiZi_IIoT/build`目录中生成`XiZi-ch569w.bin`文件,将该文件拷贝至Windows本地电脑,用于下一步烧录。 + +如果`make BOARD=ch569w menuconfig`显示【无法找到`kconfig-mconf`】,需要先安装`ncurses-devel`和`kconfig-mconf`,如下: + +```bash +sudo apt install libncurses5-dev kconfig-frontends +``` + +# 5. 烧录 + +1. 沁恒微电子官网下载 WCHISPTool.exe 工具进行 bin 文件下载到芯片 flash 的操作。CH569W 芯片需要进入下载模式才能使用 ISP 工具下载代码,一般使用 USB 方式下载代码最为方便。 +2. 将 CH569W 评估板使用 USB 插头对插头线和计算机连接起来。如图,打开 ISP 下载工具,芯片信号选择 CH569,下载方式选择 USB,将 CH569W 评估板断电,然后将下载配置脚(出厂默认为 PA5,原理图上的HD0)接地后对评估板上电,此时 ISP 工具的 USB 设备列表中将显示新连上来的 CH569W 芯片。最后点击“下载”,即可使程序下载到评估版上的主芯片。 + +image_shaolukaifabanpaizhao + +image_shaoluruanjianjietu + + + +# 6. 启动 + +烧录完成后,并且将串口连接至电脑。 + +将评估板上电重新,即可看到操作系统启动的信息,如下: + ![image_xitongqidongrizhi](imgs/image_xitongqidongrizhi.png) \ No newline at end of file diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/imgs/image_xitongqidongrizhi.png b/Ubiquitous/XiZi_IIoT/board/ch569w/imgs/image_xitongqidongrizhi.png index 2813913a8..9b0265fd3 100644 Binary files a/Ubiquitous/XiZi_IIoT/board/ch569w/imgs/image_xitongqidongrizhi.png and b/Ubiquitous/XiZi_IIoT/board/ch569w/imgs/image_xitongqidongrizhi.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/README.md b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/README.md new file mode 100644 index 000000000..09e8feab0 --- /dev/null +++ b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/README.md @@ -0,0 +1,61 @@ +# 1. 模块编译配置 + +开发板支持外设驱动:UART、SPI FLASH、SerDes网络、USBD CDC、Watchdog。 + +默认配置文件路径:`xiuos/Ubiquitous/XiZi_IIoT$ ll board/ch569w/.defconfig` + +可以通过命令`make BOARD=ch569w menuconfig` ,查看`ch569w feature`的默认配置。 + +![make-menuconfig.png](imgs/make-menuconfig.png) + +# 2. 模块测试用例 + +下面介绍各模块的测试方法。 + +## 2.1 UART + +UART用于串口打印,和shell命令输入。 + +测试方法,查看设备启动日志,以及输入命令。 + +## 2.2 SPI FLASH + +开发板的spi没有外部接口,是连接的flash芯片。测试通过spi对flash的读写。 + +串口执行:`SpiFlashTest` + +![SpiFlashTest.png](imgs/SpiFlashTest.png) + +## 2.3 SerDes + +串并互转控制器及收发器(SerDes)。系统内置了支持信号隔离和远距离传输的 SerDes 模块,支持 1.2Gbps 高速差分信号(GXM/GXP +引脚),可以通过光纤模块或网线中的一个差分对等传输媒体,进行远距离数据传输。 + +开发板上SERDES为半双工接口,仅单向传输使用。需要两个CH569设备通过SerDes进行通信。 + +SerDes测试需要先执行`SerdesRxTest`,等到SerdesRx打印初始化成功后,在另有一个设备上执行`SerdesTxTest`。 + +![SerdesTestRx.png](imgs/SerdesTestRx.png) + +![SerdesTxTest.png](imgs/SerdesTxTest.png) + +## 2.4 USBD CDC + +USBD CDC(USB Device Communication Device Class)是一种将 USB 设备模拟为串口(虚拟串口)的功能实现,允许设备通过 USB 与主机进行串行数据通信。 + +串口输入命令:`UsbdCdcTest`,在电脑的设备管理器查看,出现新增COM口。 + +![UsbdCdcTestCmd.png](imgs/UsbdCdcTestCmd.png) + +![UsbdCdcTestUSB20.png](imgs/UsbdCdcTestUSB20.png) + + + +## 2.5 Watchdog + +看门狗测试,需要编译时选择打开watchdog功能。 + +系统在后台运行wdt,通过命令`WdtTest`,停止喂狗,触发系统重启。 + +![WdtTest.png](imgs/WdtTest.png) + diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SerdesTestRx.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SerdesTestRx.png new file mode 100644 index 000000000..f93f60366 Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SerdesTestRx.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SerdesTxTest.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SerdesTxTest.png new file mode 100644 index 000000000..704915edc Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SerdesTxTest.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SpiFlashTest.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SpiFlashTest.png new file mode 100644 index 000000000..48787feda Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/SpiFlashTest.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/UsbdCdcTestCmd.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/UsbdCdcTestCmd.png new file mode 100644 index 000000000..d5c62e3a0 Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/UsbdCdcTestCmd.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/UsbdCdcTestUSB20.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/UsbdCdcTestUSB20.png new file mode 100644 index 000000000..48ab50459 Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/UsbdCdcTestUSB20.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/WdtTest.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/WdtTest.png new file mode 100644 index 000000000..fbae2c308 Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/WdtTest.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/make-menuconfig.png b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/make-menuconfig.png new file mode 100644 index 000000000..cdf478cb6 Binary files /dev/null and b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/imgs/make-menuconfig.png differ diff --git a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/spi/connect_spi_flash.c b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/spi/connect_spi_flash.c index e2babe5e1..193dc112a 100644 --- a/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/spi/connect_spi_flash.c +++ b/Ubiquitous/XiZi_IIoT/board/ch569w/third_party_driver/spi/connect_spi_flash.c @@ -417,7 +417,6 @@ UINT16 SPIFlash_ReadID(void) */ int InitHwSpi(void) { SPI_MASTER_INIT ( ); /* SPI0 master mode initialization */ - KPrintf("START SPI FLASH\n"); return 0; }