diff --git a/bsp/allwinner/d1s/.config b/bsp/allwinner/d1s/.config
index 1d1717007ac5b5ac8db1974f38f2192972d50701..713067b44bdf03d5cf3d30140c6a678cdca5cb97 100644
--- a/bsp/allwinner/d1s/.config
+++ b/bsp/allwinner/d1s/.config
@@ -194,11 +194,12 @@ CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_COUNT=2
CONFIG_RT_AUDIO_RECORD_PIPE_SIZE=2048
# CONFIG_RT_USING_SENSOR is not set
CONFIG_RT_USING_TOUCH=y
-CONFIG_RT_TOUCH_PIN_IRQ=y
+# CONFIG_RT_TOUCH_PIN_IRQ is not set
# CONFIG_RT_USING_LCD is not set
# CONFIG_RT_USING_HWCRYPTO is not set
# CONFIG_RT_USING_PULSE_ENCODER is not set
# CONFIG_RT_USING_INPUT_CAPTURE is not set
+CONFIG_RT_USING_DEV_BUS=y
CONFIG_RT_USING_WIFI=y
CONFIG_RT_WLAN_DEVICE_STA_NAME="wlan0"
CONFIG_RT_WLAN_DEVICE_AP_NAME="wlan1"
@@ -411,18 +412,7 @@ CONFIG_RT_LWP_SHM_MAX_NR=64
# Wiced WiFi
#
# CONFIG_PKG_USING_WLAN_WICED is not set
-CONFIG_PKG_USING_RW007=y
-CONFIG_PKG_RW007_PATH="/packages/iot/WiFi/rw007"
-CONFIG_PKG_USING_RW007_V201=y
-# CONFIG_PKG_USING_RW007_V200 is not set
-# CONFIG_PKG_USING_RW007_V111 is not set
-# CONFIG_PKG_USING_RW007_V110 is not set
-# CONFIG_PKG_USING_RW007_V100 is not set
-# CONFIG_PKG_USING_RW007_LATEST_VERSION is not set
-CONFIG_PKG_RW007_VER="v2.0.1"
-CONFIG_RW007_NOT_USE_EXAMPLE_DRIVERS=y
-# CONFIG_RW007_USING_STM32_DRIVERS is not set
-CONFIG_RW007_SPI_MAX_HZ=25000000
+# CONFIG_PKG_USING_RW007 is not set
# CONFIG_PKG_USING_COAP is not set
# CONFIG_PKG_USING_NOPOLL is not set
# CONFIG_PKG_USING_NETUTILS is not set
@@ -511,9 +501,6 @@ CONFIG_RW007_SPI_MAX_HZ=25000000
#
# CONFIG_PKG_USING_SIMPLE_XML is not set
# CONFIG_PKG_USING_EZXML is not set
-# CONFIG_PKG_USING_EZXML_LATEST_VERSION is not set
-# CONFIG_PKG_USING_EZXML_V0681 is not set
-# CONFIG_PKG_USING_EZXML_V068 is not set
# CONFIG_PKG_USING_LUATOS_SOC is not set
# CONFIG_PKG_USING_LUA is not set
# CONFIG_PKG_USING_JERRYSCRIPT is not set
@@ -648,9 +635,7 @@ CONFIG_RW007_SPI_MAX_HZ=25000000
# CONFIG_PKG_USING_FREERTOS_WRAPPER is not set
# CONFIG_PKG_USING_CAIRO is not set
# CONFIG_PKG_USING_PIXMAN is not set
-CONFIG_PKG_USING_PARTITION=y
-CONFIG_PKG_PARTITION_PATH="/packages/system/partition"
-CONFIG_PKG_PARTITION_VER="v1.0.1"
+# CONFIG_PKG_USING_PARTITION is not set
# CONFIG_PKG_USING_PERF_COUNTER is not set
# CONFIG_PKG_USING_FLASHDB is not set
# CONFIG_PKG_USING_SQLITE is not set
@@ -677,33 +662,7 @@ CONFIG_PKG_PARTITION_VER="v1.0.1"
# CONFIG_PKG_USING_ARM_2D is not set
# CONFIG_PKG_USING_MCUBOOT is not set
# CONFIG_PKG_USING_TINYUSB is not set
-CONFIG_PKG_USING_CHERRYUSB=y
-CONFIG_PKG_CHERRYUSB_DEVICE=y
-# CONFIG_PKG_CHERRYUSB_DEVICE_FS is not set
-CONFIG_PKG_CHERRYUSB_DEVICE_HS=y
-# CONFIG_PKG_CHERRYUSB_DEVICE_BL is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_CH32 is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_FSDEV is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_DWC2 is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_MM32 is not set
-CONFIG_PKG_CHERRYUSB_DEVICE_MUSB=y
-# CONFIG_PKG_CHERRYUSB_DEVICE_NUVOTON is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_IMXRT is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_MUSB_MSP432 is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_MUSB_ES32F3 is not set
-CONFIG_PKG_CHERRYUSB_DEVICE_MUSB_SUNXI=y
-# CONFIG_PKG_CHERRYUSB_DEVICE_CDC is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_HID is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_MSC is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_AUDIO is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_VIDEO is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_RNDIS is not set
-# CONFIG_PKG_CHERRYUSB_DEVICE_DFU is not set
-# CONFIG_PKG_CHERRYUSB_DEVIEC_HUB is not set
-# CONFIG_PKG_CHERRYUSB_HOST is not set
-CONFIG_PKG_CHERRYUSB_PATH="/packages/system/CherryUSB"
-CONFIG_PKG_USING_CHERRYUSB_LATEST_VERSION=y
-CONFIG_PKG_CHERRYUSB_VER="latest"
+# CONFIG_PKG_USING_CHERRYUSB is not set
# CONFIG_PKG_USING_KMULTI_RTIMER is not set
# CONFIG_PKG_USING_TFDB is not set
# CONFIG_PKG_USING_QPC is not set
@@ -937,6 +896,7 @@ CONFIG_UART0_RX_USING_GPIOE3=y
CONFIG_BSP_USING_SDMMC=y
CONFIG_SD_CARD_CHECK=y
CONFIG_BSP_USING_FS=y
+# CONFIG_BSP_USING_G2D is not set
# CONFIG_BSP_USING_LCD is not set
#
diff --git a/bsp/allwinner/d1s/README-M7.md b/bsp/allwinner/d1s/README-M7.md
new file mode 100644
index 0000000000000000000000000000000000000000..659778ded66ea966a9dd32a784d5fd1d7b9db43e
--- /dev/null
+++ b/bsp/allwinner/d1s/README-M7.md
@@ -0,0 +1,283 @@
+# 基于柿饼M7运行 RT-Smart
+
+## 准备工作
+
+#### 开发环境
+
+推荐使用 ubuntu20.04(虚拟机/docker/服务器) + Window10/11
+
+- ubuntu:用于编译、开发、打包镜像
+- windows:用于下载打包好的镜像
+
+#### 常用工具
+
+**Ubuntu:**
+
+```bash
+sudo apt install libncurses5-dev scons gcc qemu-system
+```
+
+- qemu:用于仿真运行RISC-V程序
+- gcc:用于编译menucofig的程序
+- libncurses5-dev :menucofig功能依赖此库
+- scons:编译RT-Smart需要的构建工具
+
+**Windows:**
+
+- vscode:windows上安装,用于远程连接ubuntu系统,可以在win上体验原生的linux开发环境。
+- MobaXterm:终端工具,可以ssh远程ubuntu系统,也可以通过串口连接柿饼M7模块
+- env_riscv_1.1.3.zip:针对risc-v平台的ENV工具。
+
+#### 相关仓库权限
+
+- https://gitee.com/rtthread/rt-thread :rtthread内核仓库,以submodule的形式存在于rtthread-smart仓库中,这里使用的是rt-smart分支
+
+获取上面的仓库权限,并将rtthread-smart克隆到ubuntu系统目录下。目录结构如下所示:
+
+在做好上面的准备后,就可以真正的开始搭建RT-Smart的开发环境了。
+
+## 模拟仿真环境搭建
+
+在真实的硬件上开发之前,可以先搭建基于QEMU的模拟仿真环境。
+
+参考这篇文章,完成 qemu-riscv64 上 RT-Smart 环境搭建:https://gitee.com/guozhanxin/rtthread-smart/tree/master/docs/risc-v64
+
+最后能够在 qemu-riscv64 上正常运行RT-Smart系统,并运行一个 `hello.elf` 用户态应用。
+
+```
+msh /bin>hello.elf
+msh /bin>hello world!
+```
+
+## 真实硬件环境搭建
+
+#### 硬件连接
+
+按照下图中的连接方式,为开发板供电,并使用USB转TTL工具连接串口调试。
+
+
+
+#### 驱动安装
+
+1. 按住下载模式按钮的情况下为开发板上电。
+
+2. 解压tools目录下fel驱动安装.zip文件。参照如下所示的“驱动安装示意图”,安装fel驱动。
+
+
+
+#### 连接串口工具
+
+打开 MobaXterm 终端工具,并连接到对应的端口,波特率为:500000。
+
+> 注意:如果系统没有固件的话,不会有任何输出,是正常现象。
+
+
+
+#### 制作系统固件
+
+参照 qemu-riscv64 上编译内核的步骤,配置环境变量,并使用 scons 命令编译 RT-Smart 内核
+
+编译完内核之后,会自动执行打包命令 `./mksdimg.sh` 打包出sd.bin镜像文件。此文件将在后面的步骤中借助下载工具,下载到 D1s 上运行。
+
+#### 烧录系统内核
+
+我们借助fel工具烧录系统内核。
+
+1. 解压tools目录下的 xfel_v1.2.9.7z 文件,里面包含三个文件
+
+```shell
+boot0_sdcard_sun20iw1p1_f133.bin ---- 第一次烧录需要烧录此boot文件
+sd.bin ---- 打包好的系统内核镜像
+xfel.exe ---- 烧录工具
+```
+
+2. 解压tools目录下 env_riscv_1.1.3.zip 文件,打开env工具,并进入解压好的 xfel_v1.2.9 目录下。运行下面的命令烧录系统内核
+
+- 烧录boot镜像: xfel.exe write 8192 boot0_sdcard_sun20iw1p1_f133.bin
+- 烧录内核镜像: xfel.exe sd write 57344 sd.bin
+- 复位系统: xfel.exe reset
+
+> 注意:执行烧录命令前,需要使开发板处于fel下载模式(按住下载按钮并上电)
+
+日志如下所示:
+
+```shell
+11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\env_riscv_1.1.3
+> cd E:\workspace\d1s-smart\xfel_v1.2.9
+
+11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
+> xfel.exe write 8192 boot0_sdcard_sun20iw1p1_f133.bin
+ERROR: Can't found any FEL device ---- 如果开发板没有处于fel下载模式的话,会提示错误。
+
+## 第一次使用需要先烧录boot镜像文件
+11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
+> xfel.exe write 8192 boot0_sdcard_sun20iw1p1_f133.bin
+100% [================================================] 48.000 KB, 364.927 KB/s
+
+## 烧录内核镜像文件
+11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
+> xfel.exe sd write 57344 sd.bin
+write 7240Kbytes
+swap buf:00023E00,len=512, cmdlen=512
+Found SD card 126877696 bytes
+100% [================================================] 7.070 MB, 219.468 KB/s
+
+## 复位系统
+11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
+> xfel.exe reset
+usb bulk recv error
+```
+
+如果此时连接着 MobaXterm 终端工具,可以看到系统以及正常启动,并可以通过 **msh** 命令和系统交互了。
+
+```bash
+[I/I2C] I2C bus [i2c2] registered
+
+ \ | /
+- RT - Thread Smart Operating System
+ / | \ 5.0.0 build Oct 20 2022
+ 2006 - 2020 Copyright by rt-thread team
+lwIP-2.0.2 initialized!
+winusb class register done.
+set samplerate:48000
+set samplebits:16
+set channels:2
+set volume:80%
+hal_sdc_create 0
+card_detect insert
+Initial card success. capacity :121MB
+sdmmc bytes_per_secotr:200, sector count:3c800
+found part[0], begin: 8388608, size: 90.0MB
+found partition:sd0 of mbr at offset 0000000000004000, size:000000000002d000
+found part[1], begin: 102760448, size: 23.0MB
+found partition:sd1 of mbr at offset 0000000000031000, size:000000000000b800
+hal_sdc_create 1
+card_detect insert
+Initial card success. capacity :7624MB
+sdmmc bytes_per_secotr:200, sector count:ee4000
+found part[0], begin: 512, size: 4194303.1023GB
+found partition:sd0 of mbr at offset 0000000000000001, size:ffffffffffffffff
+[I/sal.skt] Socket Abstraction Layer initialize success.
+[D/FAL] (fal_flash_init:47) Flash device | sdcard0 | addr: 0x00000000 | len: 0x07900000 | blk_size: 0x00000200 |initialized finish.
+```
+
+#### 运行用户态应用(可选)
+
+在 D1s 上运行系统应用有两种方式:一种是制作 `sdroot.bin` 并借助 `xfel工具` 烧录到 `sdmmc` 对应的位置上;二是使用 romfs 的方式,和内核镜像编译在一起,然后整个的烧录到 `sdmmc` 上。
+
+**1、借助 romfs 运行用户态应用**
+
+romfs 方式优点:打包、调试方便,无需外部 emmc 挂载文件系统,使能 romfs 文件系统即可使用,缺点是 romfs 是只读文件系统。
+
+这部分可以参考 qemu-riscv64 上运行用户态应用的部分。使用 python 命令将 userapps 下 root 目录下的用户态应用打包为 `romfs.c` ,并重新编译系统内核,重复上面的系统内核烧录步骤。最后复位并运行系统。参照下面的运行日志,运行对应的用户态应用。
+
+```bash
+msh />cd bin
+msh /bin>ls
+Directory /bin:
+syslogd.elf 423024
+ping.elf 368104
+webserver.elf 510216
+hello.elf 366096
+em.elf 601336
+pong.elf 367024
+syslog.elf 391128
+vi.elf 528096
+hdc_test.elf 367520
+ntp.elf 392168
+mmapctrl.elf 366992
+pmq.elf 371600
+webclient.elf 413784
+lwIPKit.elf 998504
+msh /bin>hello.elf
+msh /bin>hello world!
+```
+
+**2、在存储设备上运行用户态应用**
+
+sdroot.bin 挂载方式优点:使用 emmc 存储设备的文件系统是可读可写的,更加灵活方便。
+
+首先下载 RT-Smart 用户态应用代码:
+
+```
+git clone https://github.com/RT-Thread/userapps.git
+```
+
+
+
+拷贝之前克隆好的 rtthread rt-smart 分支的仓库到 `userapps` 目录下,进入 `userapps` 目录,使用 scons 编译用户态程序,然后运行 `./mksdcard.sh` 打包脚本,将生成的 `sdroot.bin` 复制到 window 下存在 `xfel.exe ` 的目录下,使用以下命令即可烧录用户态程序到存储设备 :
+
+```bash
+xfel.exe sd write 8388608 sdroot.bin
+```
+
+参照下面的运行日志,运行对应的用户态应用:
+
+```C
+msh />ls
+Directory /:
+bin
+data
+Directory /bin:
+syslogd.elf 423024
+ping.elf 368104
+webserver.elf 510216
+hello.elf 366096
+em.elf 601336
+pong.elf 367024
+syslog.elf 391128
+vi.elf 528096
+hdc_test.elf 367520
+ntp.elf 392168
+mmapctrl.elf 366992
+pmq.elf 371600
+webclient.elf 413784
+lwIPKit.elf 998504
+msh /bin>hello.elf
+msh /bin>hello world!
+```
+
+## D1S-EMMC 分区示意图
+
+
+
+## Q&A
+
+Q:使用 `VSCode` 发现有些已经定义的宏变灰,头文件报错:
+
+A:打开 `VSCode`,按下 “Crtl+Shift+P” 打开 `VSCode` 的控制台,然后输入 “C/C++: **Edit configurations(JSON)** ”,打开 C/C++编辑配置文件,添加如下配置选项
+
+```json
+{
+ "configurations": [
+ {
+ "name": "Linux",
+ "includePath": [
+ "${workspaceFolder}/**",
+ "${workspaceFolder}/bsp/allwinner/d1s",
+ "${workspaceFolder}/include",
+ "${workspaceFolder}/components/drivers/include",
+ "${workspaceFolder}/bsp/allwinner/libraries/sunxi-hal/include"
+ ],
+ "defines": [],
+ "compilerPath": "/usr/bin/gcc",
+ "cStandard": "gnu17",
+ "cppStandard": "gnu++14",
+ "intelliSenseMode": "linux-gcc-x64"
+ }
+ ],
+ "version": 4
+}
+```
+
+---
+
+Q:开机后,出现了 **mount** 失败的错误
+
+
+
+A:原因是没有下载 all_bin/sdroot.bin(用户态) 固件导致,重新烧录 all_bin/sdroot.bin 到 8388608 地址后,即可 mount 成功,,烧录命令如下:
+
+```bash
+xfel.exe sd write 8388608 all.bin/sdroot.bin
+```
diff --git a/bsp/allwinner/d1s/README-MQ.md b/bsp/allwinner/d1s/README-MQ.md
new file mode 100644
index 0000000000000000000000000000000000000000..a6ab259a0f0e4a338510410956169cab8926a277
--- /dev/null
+++ b/bsp/allwinner/d1s/README-MQ.md
@@ -0,0 +1,183 @@
+# 基于麻雀D1运行 RT-Smart
+
+### 下载代码
+
+下载 RT-Smart 用户态应用代码:
+
+```
+git clone https://github.com/RT-Thread/userapps.git
+```
+
+
+
+进入到 `userapps` 目录,克隆 RT-Thread rt-smart 分支
+
+```shell
+git clone -b rt-smart https://gitee.com/rtthread/rt-thread.git
+```
+
+
+
+### 配置工具链
+
+在 userapps\tools 目录下运行 `get_toolchain.py` 的脚本,会下载对应的工具链并展开到 userapps\tools\gun_gcc 目录。后面的工具链名称可以是 arm | riscv64。
+
+因为 D1S 是 RISCV-64 架构的,所以输入下面的命令:
+
+```
+python3 get_toolchain.py riscv64
+```
+
+在 userapps 目录下,运行 `smart-env.sh` 配置工具链路径,目前支持的参数可以是 arm | riscv64
+
+```
+source smart-env.sh riscv64
+```
+
+
+
+
+### 编译内核程序
+
+进入 `rt-thread/bsp/allwinner/d1s` 目录下,执行以下命令拉取一下软件包
+
+* 注:若系统没有安装 env,需要手动输入 `scons --menuconfig` 命令手动下载 env
+
+```shell
+source ~/.env/env.sh
+pkgs --update
+```
+
+使用 scons 命令进行编译,编译成功后会在 `userapps/rt-thread/bsp/allwinner/d1s` 目录下生成 sd.bin,这个文件就是我们需要烧录到开发板中的文件,它包括了 uboot.dtb,opensbi,rtthread.bin。
+
+### 烧录程序
+
+1、首先准备一张容量在 128G 以内的空白 TF卡
+
+2、使用 fdisk 分区。将 TF卡 挂载到 ubuntu 系统后,使用 df 查看设备路径。笔者使用的 32GB TF卡,扇区大小 512 字节,我们需要预留前 8M 的空间,那么计算得知分区扇区开始于:16384,使用命令:`sudo fdisk /dev/sdb`,选择:o,n,p,1,16384,回车。
+
+```shell
+Command (m for help): o
+Created a new DOS disklabel with disk identifier 0x3668b987.
+
+Command (m for help): n
+Partition type
+ p primary (0 primary, 0 extended, 4 free)
+ e extended (container for logical partitions)
+Select (default p): p
+Partition number (1-4, default 1): 1
+First sector (2048-62410751, default 2048): 16384
+Last sector, +sectors or +size{K,M,G,T,P} (16384-62410751, default 62410751):
+
+Created a new partition 1 of type 'Linux' and of size 29.8 GiB.
+
+Command (m for help): w
+The partition table has been altered.
+```
+
+正确的分区效果如下:
+
+
+
+然后格式化 sdb1 分区为 fat32 格式:
+
+```shell
+$ sudo mkfs -t fat /dev/sdb1
+```
+
+这里可以使用 **Gparted** 工具可视化查看一下分区状况:
+
+
+
+3、接下来使用以下命令烧录 RT-SMART 内核:
+
+```shell
+sudo dd if=boot0_sdcard_sun20iw1p1.bin of=/dev/sdb bs=1024 seek=8
+sudo dd if=sd.bin of=/dev/sdb bs=1024 seek=56
+```
+
+* 注:**boot0_sdcard_sun20iw1p1.bin** 文件在 `userapps/rt-thread/bsp/allwinner/d1s/tools` 路径下
+* 这里的 /dev/sdb 设备要根据自己的选择
+
+下面是烧录成功的显示:
+
+
+
+### 启动 RT-Smart
+
+方式二(TF 卡)启动:
+
+此时将 TF 卡放入开发板,串口0(底部排针的7,8脚),串口波特率 500000,然后上电,如下 RT-Smart 已经成功启动
+
+
+
+```shell
+ \ | /
+- RT - Thread Smart Operating System
+ / | \ 5.0.0 build Nov 1 2022
+ 2006 - 2022 Copyright by rt-thread team
+lwIP-2.0.2 initialized!
+hal_sdc_create 0
+card_detect insert
+Initial card success. capacity :30436MB
+sdmmc bytes_per_secotr:200, sector count:3b72400
+found part[0], begin: 8388608, size: 29.732GB
+found partition:sd0 of mbr at offset 0000000000004000, size:0000000003b6e400
+hal_sdc_create 1
+card_detect insert
+Initial card failed!!
+[E/drv-sdmmc] init sdmmc failed!
+[E/drv-sdmmc] sdmmc_init failed!
+[I/sal.skt] Socket Abstraction Layer initialize success.
+[D/FAL] (fal_flash_init:47) Flash device | sdcard0 | addr: 0x00000000 | len: 0x76e480000 | blk_size: 0x00000200 |initialized finish.
+[I/FAL] ==================== FAL partition table ====================
+[I/FAL] | name | flash_dev | offset | length |
+[I/FAL] -------------------------------------------------------------
+[I/FAL] | download | sdcard0 | 0x00800000 | 0x00800000 |
+[I/FAL] | easyflash | sdcard0 | 0x01000000 | 0x00100000 |
+[I/FAL] | filesystem | sdcard0 | 0x01100000 | 0x00c00000 |
+[I/FAL] =============================================================
+[I/FAL] RT-Thread Flash Abstraction Layer initialize success.
+Hello RISC-V
+[W/DBG] disp:[parser_disp_init_para 575]of_property_read screen1_output_type fail
+msh />Mount "sd0p0" on "/" success
+msh />
+```
+
+### 编译用户态程序
+
+进入 `userapps` 目录下,使用 scons 编译用户态程序,编译好的文件会生成在 `root/bin` 目录下。
+
+
+
+### 运行用户态程序
+
+从 `root/bin` 目录下拷贝出 hello 程序,到 TF卡 的文件系统中。
+
+
+
+拔出 TF 卡,插入到开发板,上电。即可体验属于自己的 helloworld 程序了。
+
+```shell
+msh /bin>ls
+Directory /bin:
+dbkit_client.elf 616960
+elmFATKit.elf 373880
+em.elf 585504
+hdc_test.elf 339976
+hello.elf 339624
+lvgl.elf 1382168
+lwIPKit.elf 976784
+mmapctrl.elf 339976
+ntp.elf 363560
+ping.elf 344208
+pmq.elf 345176
+pong.elf 339624
+syslog.elf 364736
+syslogd.elf 377560
+vi.elf 446568
+webclient.elf 358048
+msh /bin>
+msh /bin>hello.elf
+msh /bin>hello world!
+```
diff --git a/bsp/allwinner/d1s/README.md b/bsp/allwinner/d1s/README.md
index b70a0e590300b5aa4b4b42915c7873aca63a05fa..ab1aa971f7af191cefeed1e6bcc3e0de3ee398e1 100644
--- a/bsp/allwinner/d1s/README.md
+++ b/bsp/allwinner/d1s/README.md
@@ -1,331 +1,4 @@
-# 基于柿饼M7(F133)运行 RT-Smart
+# 全志 D1s 运行 RT-Smart
-## 准备工作
-
-#### 开发环境
-
-推荐使用 ubuntu20.04(虚拟机/docker/服务器) + Window10/11
-
-- ubuntu:用于编译、开发、打包镜像
-- windows:用于下载打包好的镜像
-
-#### 常用工具
-
-**Ubuntu:**
-
-```bash
-sudo apt install libncurses5-dev scons gcc qemu-system
-```
-
-- qemu:用于仿真运行RISC-V程序
-- gcc:用于编译menucofig的程序
-- libncurses5-dev :menucofig功能依赖此库
-- scons:编译RT-Smart需要的构建工具
-
-**Windows:**
-
-- vscode:windows上安装,用于远程连接ubuntu系统,可以在win上体验原生的linux开发环境。
-- MobaXterm:终端工具,可以ssh远程ubuntu系统,也可以通过串口连接柿饼M7模块
-- env_riscv_1.1.3.zip:针对risc-v平台的ENV工具。
-
-#### 相关仓库权限
-
-- https://gitee.com/rtthread/rt-thread :rtthread内核仓库,以submodule的形式存在于rtthread-smart仓库中,这里使用的是rt-smart分支
-
-获取上面的仓库权限,并将rtthread-smart克隆到ubuntu系统目录下。目录结构如下所示:
-
-在做好上面的准备后,就可以真正的开始搭建RT-Smart的开发环境了。
-
-## 模拟仿真环境搭建
-
-在真实的硬件上开发之前,可以先搭建基于QEMU的模拟仿真环境。
-
-参考这篇文章,完成 qemu-riscv64 上 RT-Smart 环境搭建:https://gitee.com/guozhanxin/rtthread-smart/tree/master/docs/risc-v64
-
-最后能够在 qemu-riscv64 上正常运行RT-Smart系统,并运行一个 `hello.elf` 用户态应用。
-
-```
-msh /bin>hello.elf
-msh /bin>hello world!
-```
-
-## 真实硬件环境搭建
-
-#### 硬件连接
-
-按照下图中的连接方式,为开发板供电,并使用USB转TTL工具连接串口调试。
-
-
-
-#### 驱动安装
-
-1. 按住下载模式按钮的情况下为开发板上电。
-
-2. 解压tools目录下fel驱动安装.zip文件。参照如下所示的“驱动安装示意图”,安装fel驱动。
-
-
-
-#### 连接串口工具
-
-打开 MobaXterm 终端工具,并连接到对应的端口,波特率为:500000。
-
-> 注意:如果系统没有固件的话,不会有任何输出,是正常现象。
-
-
-
-#### 制作系统固件
-
-参照 qemu-riscv64 上编译内核的步骤,配置环境变量,并使用 scons 命令编译 RT-Smart 内核
-
-```bash
-rb:~/realtouch/kernel/bsp/allwinner/f133$ scons -j12
-scons: Reading SConscript files ...
-scons: done reading SConscript files.
-scons: Building targets ...
-scons: building associated VariantDir targets: build
-CC build/applications/main.o
-CC build/applications/mnt.o
-... ...
-CC /home/blue/work/rtthread-smart/ibsp/libraries/sunxi-hal/hal/source/twi/hal_twi.o
-CC /home/blue/work/rtthread-smart/ibsp/libraries/libos/src/os.o
-LINK rtthread.elf
-riscv64-unknown-linux-musl-objcopy -O binary rtthread.elf rtthread.bin
-riscv64-unknown-linux-musl-size rtthread.elf
- text data bss dec hex filename
-7221249 59608 269222 7550079 73347f rtthread.elf
-./mksdimg.sh
-Allwinner TOC1 Image
-Size: 7413760 bytes
-Contents: 3 items
- 00000000:00000490 Headers
- 00000600:000188e0 => 40000000 opensbi
- 00019000:00007475 => 40200000 dtb
- 00020600:006f18f8 => 40400000 kernel
-scons: done building targets.
-```
-
-编译完内核之后,会自动执行打包命令 `./mksdimg.sh` 打包出sd.bin镜像文件。此文件将在后面的步骤中借助下载工具,下载到 F133 上运行。
-
-#### 烧录系统内核
-
-我们借助fel工具烧录系统内核。
-
-1. 解压tools目录下的 xfel_v1.2.9.7z 文件,里面包含三个文件
-
-```shell
-boot0_sdcard_sun20iw1p1_f133.bin ---- 第一次烧录需要烧录此boot文件
-sd.bin ---- 打包好的系统内核镜像
-xfel.exe ---- 烧录工具
-```
-
-2. 解压tools目录下 env_riscv_1.1.3.zip 文件,打开env工具,并进入解压好的 xfel_v1.2.9 目录下。运行下面的命令烧录系统内核
-
-- 烧录boot镜像: xfel.exe write 8192 boot0_sdcard_sun20iw1p1_f133.bin
-- 烧录内核镜像: xfel.exe sd write 57344 sd.bin
-- 复位系统: xfel.exe reset
-
-> 注意:执行烧录命令前,需要使开发板处于fel下载模式(按住下载按钮并上电)
-
-日志如下所示:
-
-```shell
-11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\env_riscv_1.1.3
-> cd E:\workspace\d1s-smart\xfel_v1.2.9
-
-11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
-> xfel.exe write 8192 boot0_sdcard_sun20iw1p1_f133.bin
-ERROR: Can't found any FEL device ---- 如果开发板没有处于fel下载模式的话,会提示错误。
-
-## 第一次使用需要先烧录boot镜像文件
-11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
-> xfel.exe write 8192 boot0_sdcard_sun20iw1p1_f133.bin
-100% [================================================] 48.000 KB, 364.927 KB/s
-
-## 烧录内核镜像文件
-11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
-> xfel.exe sd write 57344 sd.bin
-write 7240Kbytes
-swap buf:00023E00,len=512, cmdlen=512
-Found SD card 126877696 bytes
-100% [================================================] 7.070 MB, 219.468 KB/s
-
-## 复位系统
-11714@DESKTOP-VEL6MD9 E:\workspace\d1s-smart\xfel_v1.2.9
-> xfel.exe reset
-usb bulk recv error
-```
-
-如果此时连接着 MobaXterm 终端工具,可以看到系统以及正常启动,并可以通过 **msh** 命令和系统交互了。
-
-```bash
-[I/I2C] I2C bus [i2c2] registered
-
- \ | /
-- RT - Thread Smart Operating System
- / | \ 5.0.0 build Oct 20 2022
- 2006 - 2020 Copyright by rt-thread team
-lwIP-2.0.2 initialized!
-winusb class register done.
-set samplerate:48000
-set samplebits:16
-set channels:2
-set volume:80%
-hal_sdc_create 0
-card_detect insert
-Initial card success. capacity :121MB
-sdmmc bytes_per_secotr:200, sector count:3c800
-found part[0], begin: 8388608, size: 90.0MB
-found partition:sd0 of mbr at offset 0000000000004000, size:000000000002d000
-found part[1], begin: 102760448, size: 23.0MB
-found partition:sd1 of mbr at offset 0000000000031000, size:000000000000b800
-hal_sdc_create 1
-card_detect insert
-Initial card success. capacity :7624MB
-sdmmc bytes_per_secotr:200, sector count:ee4000
-found part[0], begin: 512, size: 4194303.1023GB
-found partition:sd0 of mbr at offset 0000000000000001, size:ffffffffffffffff
-[I/sal.skt] Socket Abstraction Layer initialize success.
-[D/FAL] (fal_flash_init:47) Flash device | sdcard0 | addr: 0x00000000 | len: 0x07900000 | blk_size: 0x00000200 |initialized finish.
-
-```
-
-#### 运行用户态应用(可选)
-
-在 F133 上运行系统应用有两种方式:一种是制作 `sdroot.bin` 并借助 `xfel工具` 烧录到 `sdmmc` 对应的位置上;二是使用 romfs 的方式,和内核镜像编译在一起,然后整个的烧录到 `sdmmc` 上。
-
-**1、借助 romfs 运行用户态应用**
-
-romfs 方式优点:打包、调试方便,无需外部 emmc 挂载文件系统,使能 romfs 文件系统即可使用,缺点是 romfs 是只读文件系统。
-
-这部分可以参考 qemu-riscv64 上运行用户态应用的部分。使用 python 命令将 userapps 下 root 目录下的用户态应用打包为 `romfs.c` ,并重新编译系统内核,重复上面的系统内核烧录步骤。最后复位并运行系统。参照下面的运行日志,运行对应的用户态应用。
-
-```bash
-msh />cd bin
-msh /bin>ls
-Directory /bin:
-syslogd.elf 423024
-ping.elf 368104
-webserver.elf 510216
-hello.elf 366096
-em.elf 601336
-pong.elf 367024
-syslog.elf 391128
-vi.elf 528096
-hdc_test.elf 367520
-ntp.elf 392168
-mmapctrl.elf 366992
-pmq.elf 371600
-webclient.elf 413784
-lwIPKit.elf 998504
-msh /bin>hello.elf
-msh /bin>hello world!
-```
-
-**2、在存储设备上运行用户态应用**
-
-sdroot.bin 挂载方式优点:使用 emmc 存储设备的文件系统是可读可写的,更加灵活方便。
-
-首先让我们进入 `realtouch/userapps` 目录,使用 scons 编译用户态程序,然后运行 `./mksdcard.sh` 打包脚本,接下来进入 `realtouch/kernel/bsp/allwinner/f133` 目录将 `sdroot.bin` 复制到 window 下存在 `xfel.exe ` 的目录下,使用以下命令即可烧录用户态程序到存储设备 :
-
-```bash
-xfel.exe sd write 8388608 sdroot.bin
-```
-
-参照下面的运行日志,运行对应的用户态应用:
-
-```C
-msh />ls
-Directory /:
-bin
-data
-Directory /bin:
-syslogd.elf 423024
-ping.elf 368104
-webserver.elf 510216
-hello.elf 366096
-em.elf 601336
-pong.elf 367024
-syslog.elf 391128
-vi.elf 528096
-hdc_test.elf 367520
-ntp.elf 392168
-mmapctrl.elf 366992
-pmq.elf 371600
-webclient.elf 413784
-lwIPKit.elf 998504
-msh /bin>hello.elf
-msh /bin>hello world!
-```
-
-## F133-DDR 分布示意图
-
-
-
-## F133-EMMC 分区示意图
-
-
-
-## Q&A
-
-Q:使用 `VSCode` 发现有些已经定义的宏变灰,头文件报错:
-
-A:打开 `VSCode`,按下 “Crtl+Shift+P” 打开 `VSCode` 的控制台,然后输入 “C/C++: **Edit configurations(JSON)** ”,打开 C/C++编辑配置文件,添加如下配置选项
-
-```json
-{
- "configurations": [
- {
- "name": "Linux",
- "includePath": [
- "${workspaceFolder}/**",
- "${workspaceFolder}/bsp/allwinner/f133",
- "${workspaceFolder}/include",
- "${workspaceFolder}/components/drivers/include",
- "${workspaceFolder}/bsp/allwinner/libraries/sunxi-hal/include"
- ],
- "defines": [],
- "compilerPath": "/usr/bin/gcc",
- "cStandard": "gnu17",
- "cppStandard": "gnu++14",
- "intelliSenseMode": "linux-gcc-x64"
- }
- ],
- "version": 4
-}
-```
-
----
-
-Q:添加 RW007 后开机崩溃,断言在 **rt_thread_resume()**
-
-A:增大 **tcpip** 线程堆栈(原 1k,到 8K),使用 `menuconfig` 配置如图:
-
-
-
----
-
-Q:在 wifi join AP 热点之后,无法执行用户态程序,提示 **command not found.**
-
-A:原因:sys_work 线程出现满栈,**RT_SYSTEM_WORKQUEUE_STACKSIZE** 栈大小增大至 4k 后解决。
-
-
-
----
-
-Q:在 **EMMC** 初始化分区时遇到了卡死情况
-
-
-
-A:原因是软件包 **partition-v1.0.1/partition.h** 中 struct rt_partition 结构体成员 name 问题,改成 char name[8] 即可
-
----
-
-Q:开机后,出现了 **mount** 失败的错误
-
-
-
-A:原因是没有下载 all_bin/sdroot.bin(用户态) 固件导致,重新烧录 all_bin/sdroot.bin 到 8388608 地址后,即可 mount 成功,,烧录命令如下:
-
-```bash
-xfel.exe sd write 8388608 all.bin/sdroot.bin
-```
+* [基于柿饼M7运行 RT-Smart](./README-M7.md)
+* [基于麻雀MQ运行 RT-Smart](./README-MQ.md)
diff --git a/bsp/allwinner/d1s/figures/MQ1.png b/bsp/allwinner/d1s/figures/MQ1.png
new file mode 100644
index 0000000000000000000000000000000000000000..c57fb529363d92e15c209c2ee0e068922116062a
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ1.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ2.png b/bsp/allwinner/d1s/figures/MQ2.png
new file mode 100644
index 0000000000000000000000000000000000000000..3630d2a0b1a4563ee8bc2b9007e84e93dca98901
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ2.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ3.png b/bsp/allwinner/d1s/figures/MQ3.png
new file mode 100644
index 0000000000000000000000000000000000000000..2abe3aa1e0fd6159c6c0f43434ffa07f369b2549
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ3.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ4.png b/bsp/allwinner/d1s/figures/MQ4.png
new file mode 100644
index 0000000000000000000000000000000000000000..8781e6009fc01f0dfc7496d7e497edccbdae7f79
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ4.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ5.png b/bsp/allwinner/d1s/figures/MQ5.png
new file mode 100644
index 0000000000000000000000000000000000000000..954b2baf143a9b0ec5e66b1dc863f499a347ee6d
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ5.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ6.png b/bsp/allwinner/d1s/figures/MQ6.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb9736f88a259767822e3fbc08b1beb4236c045b
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ6.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ7.png b/bsp/allwinner/d1s/figures/MQ7.png
new file mode 100644
index 0000000000000000000000000000000000000000..f202be0509e530c80f059357ab5fc54d7bfbf4c2
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ7.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ8.png b/bsp/allwinner/d1s/figures/MQ8.png
new file mode 100644
index 0000000000000000000000000000000000000000..bad0297128b0788ea411d4fb2ccf097979e2964b
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ8.png differ
diff --git a/bsp/allwinner/d1s/figures/MQ9.png b/bsp/allwinner/d1s/figures/MQ9.png
new file mode 100644
index 0000000000000000000000000000000000000000..8bc99fc274e2c3660547bff872b72b39be57fc0e
Binary files /dev/null and b/bsp/allwinner/d1s/figures/MQ9.png differ
diff --git a/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c b/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c
index 23caccc8b268075b27f08455a2f9a9ee6b52fa4e..c7dd31a0e4d834c6fb6d0dfd5dce5ba0318bf1c5 100644
--- a/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c
+++ b/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c
@@ -1,6 +1,8 @@
/*
- * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd
- * All rights reserved.
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
* Change Logs:
* Date Author Notes
* 2018-01-26 RT-Thread the first version
diff --git a/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c b/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c
index 6b7c2b5d5ccbd153986d62fb04087b9ba8ec2d68..c9e1b184bd33a3de393f173dc219ab75ca5f6bd5 100644
--- a/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c
+++ b/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c
@@ -1,6 +1,7 @@
/*
- * File : fal_flash_sfud_port.c
- * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
diff --git a/bsp/allwinner/d1s/ports/partition/SConscript b/bsp/allwinner/d1s/ports/partition/SConscript
new file mode 100644
index 0000000000000000000000000000000000000000..57f18deef649db51477abe8eafa8de5fa522a407
--- /dev/null
+++ b/bsp/allwinner/d1s/ports/partition/SConscript
@@ -0,0 +1,11 @@
+from building import *
+import rtconfig
+
+cwd = GetCurrentDir()
+
+src = Glob('*.c')
+CPPPATH = [cwd]
+
+group = DefineGroup('partition', src, depend = ['BSP_USING_SDMMC'], CPPPATH = CPPPATH)
+
+Return('group')
diff --git a/bsp/allwinner/d1s/ports/partition/partition.c b/bsp/allwinner/d1s/ports/partition/partition.c
new file mode 100644
index 0000000000000000000000000000000000000000..37e3dbcb7b9986e878071c795de2a79c8a810f10
--- /dev/null
+++ b/bsp/allwinner/d1s/ports/partition/partition.c
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2016-09-20 Bernard the first version
+ */
+
+#include
+#include
+#include
+
+#include
+#include
+
+#include "partition.h"
+
+// #define PARTITION_DEBUG
+
+#ifdef PARTITION_DEBUG
+#define DEBUG_TRACE rt_kprintf("[part] "); rt_kprintf
+#else
+#define DEBUG_TRACE(...)
+#endif
+
+struct partition_device
+{
+ struct rt_device parent; /* parent block device */
+
+ int sector_size;
+ int block_size;
+
+ struct rt_device *block_device;
+ const struct rt_partition *partition;
+};
+
+/* RT-Thread device interface */
+static rt_err_t partition_init(rt_device_t dev)
+{
+ return RT_EOK;
+}
+
+static rt_err_t partition_open(rt_device_t dev, rt_uint16_t oflag)
+{
+ return RT_EOK;
+}
+
+static rt_err_t partition_close(rt_device_t dev)
+{
+ return RT_EOK;
+}
+
+#if RTTHREAD_VERSION >= 30000
+static rt_err_t partition_control(rt_device_t dev, int cmd, void *args)
+#else
+static rt_err_t partition_control(rt_device_t dev, rt_uint8_t cmd, void *args)
+#endif
+{
+ struct partition_device *part;
+
+ part = (struct partition_device*) dev;
+ RT_ASSERT(part != RT_NULL);
+
+ if (cmd == RT_DEVICE_CTRL_BLK_GETGEOME)
+ {
+ struct rt_device_blk_geometry *geometry;
+
+ geometry = (struct rt_device_blk_geometry *)args;
+ if (geometry == RT_NULL) return -RT_ERROR;
+
+ geometry->bytes_per_sector = part->sector_size;
+ geometry->sector_count = part->partition->size / part->sector_size;
+ geometry->block_size = part->block_size;
+ }
+
+ return RT_EOK;
+}
+
+static rt_size_t partition_read(rt_device_t dev,
+ rt_off_t pos,
+ void* buffer,
+ rt_size_t size)
+{
+ struct partition_device *part;
+
+ part = (struct partition_device*) dev;
+ RT_ASSERT(part != RT_NULL);
+
+ DEBUG_TRACE("read block: %d, size=%d\n", pos + part->partition->offset/part->sector_size, size);
+
+ return rt_device_read(part->block_device, pos + part->partition->offset/part->sector_size, buffer, size);
+}
+
+static rt_size_t partition_write(rt_device_t dev,
+ rt_off_t pos,
+ const void* buffer,
+ rt_size_t size)
+{
+ struct partition_device *part;
+
+ part = (struct partition_device*) dev;
+ RT_ASSERT(part != RT_NULL);
+
+ if (part->partition->flags & PARTITION_WRITEABLE)
+ {
+ DEBUG_TRACE("write block: %d, size=%d\n", pos + part->partition->offset/part->sector_size, size);
+
+ return rt_device_write(part->block_device, pos + part->partition->offset/part->sector_size,
+ buffer, size);
+ }
+
+ DEBUG_TRACE("read-only partition!\n");
+ return 0;
+}
+
+int rt_partition_init(const char* flash_device, const struct rt_partition* parts, rt_size_t num)
+{
+ struct rt_device *device;
+ struct partition_device *part_dev;
+ const struct rt_partition* part;
+ struct rt_device_blk_geometry geometry;
+
+ device = (struct rt_device *)rt_device_find(flash_device);
+ if(device == RT_NULL)
+ {
+ DEBUG_TRACE("block device %s not found!\r\n", flash_device);
+ return -RT_ENOSYS;
+ }
+
+ /* open the block device */
+ rt_device_open(device, RT_DEVICE_OFLAG_RDWR);
+ /* get block device geometry */
+ rt_device_control(device, RT_DEVICE_CTRL_BLK_GETGEOME, &geometry);
+
+ /* create each partition device */
+ while(num --)
+ {
+ part = parts ++;
+ part_dev = (struct partition_device*)rt_malloc (sizeof(struct partition_device));
+ if (part_dev)
+ {
+ part_dev->block_device = device;
+ part_dev->partition = part;
+ part_dev->sector_size = geometry.bytes_per_sector;
+ part_dev->block_size = geometry.block_size;
+
+ /* register device */
+ part_dev->parent.type = RT_Device_Class_Block;
+ part_dev->parent.init = partition_init;
+ part_dev->parent.open = partition_open;
+ part_dev->parent.close = partition_close;
+ part_dev->parent.read = partition_read;
+ part_dev->parent.write = partition_write;
+ part_dev->parent.control = partition_control;
+ /* no private */
+ part_dev->parent.user_data = RT_NULL;
+
+ DEBUG_TRACE("add partition: %s\n", part->name);
+ rt_device_register(RT_DEVICE(part_dev), part->name,
+ RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);
+ }
+ }
+
+ return RT_EOK;
+}
diff --git a/bsp/allwinner/d1s/ports/partition/partition.h b/bsp/allwinner/d1s/ports/partition/partition.h
new file mode 100644
index 0000000000000000000000000000000000000000..3ed7c3f6458df2169da16beb862c3c3b592fafcf
--- /dev/null
+++ b/bsp/allwinner/d1s/ports/partition/partition.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2016-09-20 Bernard the first version
+ */
+
+#ifndef PARTITION_H__
+#define PARTITION_H__
+
+#define PARTITION_RDONLY 0x000
+#define PARTITION_WRITEABLE 0x100 /* Device is writable */
+#define PARTITION_POWERUP_LOCK 0x200 /* Always locked after reset */
+
+struct rt_partition
+{
+ char name[8];
+
+ rt_uint32_t offset;
+ rt_uint32_t size;
+
+ rt_uint32_t flags;
+};
+
+int rt_partition_init(const char* flash_device, const struct rt_partition* parts, rt_size_t num);
+
+#endif
diff --git a/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c b/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c
index 7a825038407262488759a31c90686c4018a57e40..0df06e8893a08c25196336da0443d156da20f1a7 100644
--- a/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c
+++ b/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c
@@ -1,6 +1,8 @@
/*
- * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd
- * All rights reserved.
+ * Copyright (c) 2006-2022, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
* Change Logs:
* Date Author Notes
* 2018-12-04 RT-Thread the first version
diff --git a/bsp/allwinner/f133/sbi.bin b/bsp/allwinner/d1s/sbi.bin
similarity index 100%
rename from bsp/allwinner/f133/sbi.bin
rename to bsp/allwinner/d1s/sbi.bin