diff --git a/.gitignore b/.gitignore index 2f02054dcb59420ab6943105d40932901aac0436..59b9974e8a4d89600d985fb918c773137f352885 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ ncscope.* #ctag files tags +.vscode/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index f7ecc85ca749d67c94ff14503c4a35a325914747..c8e8951f071f766c2158a4dade15ebdda201b868 100644 --- a/.travis.yml +++ b/.travis.yml @@ -69,7 +69,7 @@ env: # - RTT_BSP='nuvoton_nuc472' RTT_TOOL_CHAIN='sourcery-arm' # - RTT_BSP='nuvoton_m05x' RTT_TOOL_CHAIN='sourcery-arm' # - RTT_BSP='pic32ethernet' # no scons - - RTT_BSP='qemu-vexpress-a9' RTT_TOOL_CHAIN='sourcery-arm' +# - RTT_BSP='qemu-vexpress-a9' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='qemu-vexpress-gemini' RTT_TOOL_CHAIN='sourcery-arm' - RTT_BSP='sam7x' RTT_TOOL_CHAIN='sourcery-arm' # - RTT_BSP='simulator' # x86 diff --git a/bsp/allwinner/README.md b/bsp/allwinner/README.md new file mode 100644 index 0000000000000000000000000000000000000000..d83e2da0ebcdb3dfd8bf4ef904bae742463fac27 --- /dev/null +++ b/bsp/allwinner/README.md @@ -0,0 +1,3 @@ +# allwinner-bsp + +针对全志芯片的rt-smart bsp,包括D1/F133(RISC-V64) \ No newline at end of file diff --git a/bsp/allwinner/d1/.config b/bsp/allwinner/d1/.config new file mode 100644 index 0000000000000000000000000000000000000000..b170a6b5268aedf3e7de6d27319e62400c70b78e --- /dev/null +++ b/bsp/allwinner/d1/.config @@ -0,0 +1,888 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Project Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=20 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +CONFIG_RT_USING_SMART=y +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +# CONFIG_RT_THREAD_PRIORITY_32 is not set +CONFIG_RT_THREAD_PRIORITY_256=y +CONFIG_RT_THREAD_PRIORITY_MAX=256 +CONFIG_RT_TICK_PER_SECOND=100 +# CONFIG_RT_USING_OVERFLOW_CHECK is not set +CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=16384 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=16384 +CONFIG_RT_DEBUG=y +# CONFIG_RT_DEBUG_COLOR is not set +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_MEMHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +CONFIG_RT_USING_MEMTRACE=y +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=256 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart" +CONFIG_RT_VER_NUM=0x50000 +CONFIG_ARCH_CPU_64BIT=y +CONFIG_RT_USING_CACHE=y +# CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +CONFIG_ARCH_MM_MMU=y +CONFIG_RT_USING_USERSPACE=y +CONFIG_KERNEL_VADDR_START=0x150000000 +CONFIG_PV_OFFSET=0x0 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_RISCV64=y + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=16384 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set + +# +# Command shell +# +CONFIG_RT_USING_FINSH=y +CONFIG_RT_USING_MSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=8192 +CONFIG_FINSH_CMD_SIZE=80 +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 + +# +# Device virtual file system +# +CONFIG_RT_USING_DFS=y +CONFIG_DFS_USING_WORKDIR=y +CONFIG_DFS_FILESYSTEMS_MAX=8 +CONFIG_DFS_FILESYSTEM_TYPES_MAX=4 +CONFIG_DFS_FD_MAX=32 +# CONFIG_RT_USING_DFS_MNTTABLE is not set +CONFIG_RT_USING_DFS_ELMFAT=y + +# +# elm-chan's FatFs, Generic FAT Filesystem Module +# +CONFIG_RT_DFS_ELM_CODE_PAGE=437 +CONFIG_RT_DFS_ELM_WORD_ACCESS=y +# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set +CONFIG_RT_DFS_ELM_USE_LFN_3=y +CONFIG_RT_DFS_ELM_USE_LFN=3 +CONFIG_RT_DFS_ELM_MAX_LFN=255 +CONFIG_RT_DFS_ELM_DRIVES=8 +CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512 +# CONFIG_RT_DFS_ELM_USE_ERASE is not set +CONFIG_RT_DFS_ELM_REENTRANT=y +CONFIG_RT_USING_DFS_DEVFS=y +CONFIG_RT_USING_DFS_ROMFS=y +# CONFIG_RT_USING_DFS_CROMFS is not set +# CONFIG_RT_USING_DFS_RAMFS is not set +# CONFIG_RT_USING_DFS_UFFS is not set +# CONFIG_RT_USING_DFS_JFFS2 is not set +# CONFIG_RT_USING_DFS_NFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +CONFIG_RT_PIPE_BUFSZ=512 +CONFIG_RT_USING_SYSTEM_WORKQUEUE=y +CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=8192 +CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 +CONFIG_RT_USING_SERIAL=y +CONFIG_RT_SERIAL_USING_DMA=y +CONFIG_RT_SERIAL_RB_BUFSZ=64 +CONFIG_RT_USING_TTY=y +# CONFIG_RT_TTY_DEBUG is not set +# CONFIG_RT_USING_CAN is not set +CONFIG_RT_USING_HWTIMER=y +# CONFIG_RT_USING_CPUTIME is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +CONFIG_RT_USING_I2C_BITOPS=y +# CONFIG_RT_I2C_BITOPS_DEBUG is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +CONFIG_RT_USING_NULL=y +CONFIG_RT_USING_ZERO=y +CONFIG_RT_USING_RANDOM=y +CONFIG_RT_USING_PWM=y +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_FDT is not set +CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set +# CONFIG_RT_USING_SOFT_RTC is not set +# CONFIG_RT_USING_SDIO is not set +# CONFIG_RT_USING_SPI is not set +CONFIG_RT_USING_WDT=y +# CONFIG_RT_USING_AUDIO is not set +# CONFIG_RT_USING_SENSOR is not set +CONFIG_RT_USING_TOUCH=y +# 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_WIFI is not set +# CONFIG_RT_USING_VIRTIO is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set + +# +# POSIX layer and C standard library +# +CONFIG_RT_USING_LIBC=y +# CONFIG_RT_USING_NEWLIB is not set +CONFIG_RT_USING_MUSL=y +# CONFIG_RT_USING_MLIB is not set +# CONFIG_RT_USING_PTHREADS is not set +CONFIG_RT_USING_POSIX=y +# CONFIG_RT_USING_POSIX_MMAP is not set +# CONFIG_RT_USING_POSIX_GETLINE is not set +# CONFIG_RT_USING_POSIX_AIO is not set +CONFIG_RT_USING_POSIX_CLOCKTIME=y +# CONFIG_RT_USING_MODULE is not set + +# +# Network +# + +# +# Socket abstraction layer +# +CONFIG_RT_USING_SAL=y + +# +# protocol stack implement +# +CONFIG_SAL_USING_LWIP=y +CONFIG_SAL_USING_POSIX=y +# CONFIG_SAL_USING_AF_UNIX is not set + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y +CONFIG_NETDEV_USING_AUTO_DEFAULT=y +# CONFIG_NETDEV_USING_IPV6 is not set +CONFIG_NETDEV_IPV4=1 +CONFIG_NETDEV_IPV6=0 +# CONFIG_NETDEV_IPV6_SCOPES is not set + +# +# light weight TCP/IP stack +# +CONFIG_RT_USING_LWIP=y +# CONFIG_RT_USING_LWIP141 is not set +# CONFIG_RT_USING_LWIP202 is not set +CONFIG_RT_USING_LWIP212=y +# CONFIG_RT_USING_LWIP_IPV6 is not set +CONFIG_RT_LWIP_MEM_ALIGNMENT=4 +CONFIG_RT_LWIP_IGMP=y +CONFIG_RT_LWIP_ICMP=y +# CONFIG_RT_LWIP_SNMP is not set +CONFIG_RT_LWIP_DNS=y +CONFIG_RT_LWIP_DHCP=y +CONFIG_IP_SOF_BROADCAST=1 +CONFIG_IP_SOF_BROADCAST_RECV=1 + +# +# Static IPv4 Address +# +CONFIG_RT_LWIP_IPADDR="192.168.1.30" +CONFIG_RT_LWIP_GWADDR="192.168.1.1" +CONFIG_RT_LWIP_MSKADDR="255.255.255.0" +CONFIG_RT_LWIP_UDP=y +CONFIG_RT_LWIP_TCP=y +CONFIG_RT_LWIP_RAW=y +# CONFIG_RT_LWIP_PPP is not set +CONFIG_RT_MEMP_NUM_NETCONN=8 +CONFIG_RT_MEMP_NUM_TCPIP_MSG_API=16 +CONFIG_RT_MEMP_NUM_TCPIP_MSG_INPKT=16 +CONFIG_RT_LWIP_PBUF_NUM=16 +CONFIG_RT_LWIP_PBUF_STRUCT_NUM=16 +CONFIG_RT_LWIP_NETBUF_NUM=16 +CONFIG_RT_LWIP_RAW_PCB_NUM=4 +CONFIG_RT_LWIP_UDP_PCB_NUM=4 +CONFIG_RT_UDP_RECVMBOX_SIZE=16 +CONFIG_RT_RECV_BUFSIZE_DEFAULT=64 +CONFIG_RT_LWIP_TCP_PCB_NUM=4 +CONFIG_RT_LWIP_TCP_SEG_NUM=40 +CONFIG_RT_LWIP_TCP_SND_BUF=8196 +CONFIG_RT_LWIP_TCP_WND=8196 +CONFIG_RT_TCP_RECVMBOX_SIZE=16 +CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10 +CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8 +CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=8192 +# CONFIG_LWIP_NO_RX_THREAD is not set +# CONFIG_LWIP_NO_TX_THREAD is not set +CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12 +CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=8192 +CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=8 +CONFIG_RT_LWIP_REASSEMBLY_FRAG=y +CONFIG_LWIP_NETIF_STATUS_CALLBACK=1 +CONFIG_LWIP_NETIF_LINK_CALLBACK=1 +CONFIG_SO_REUSE=1 +CONFIG_LWIP_SO_RCVTIMEO=1 +CONFIG_LWIP_SO_SNDTIMEO=1 +CONFIG_LWIP_SO_RCVBUF=1 +CONFIG_LWIP_SO_LINGER=0 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 +# CONFIG_RT_LWIP_STATS is not set +# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set +CONFIG_RT_LWIP_USING_PING=y +# CONFIG_RT_LWIP_DEBUG is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set +# CONFIG_LWIP_USING_DHCPD is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_RT_LINK is not set +CONFIG_RT_USING_LWP=y +CONFIG_RT_LWP_MAX_NR=30 +CONFIG_LWP_TASK_STACK_SIZE=16384 +CONFIG_RT_CH_MSG_MAX_NR=1024 +CONFIG_LWP_CONSOLE_INPUT_BUFFER_SIZE=1024 +CONFIG_LWP_TID_MAX_NR=64 +CONFIG_RT_LWP_SHM_MAX_NR=64 +# CONFIG_LWP_UNIX98_PTY is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LWIP is not set +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# Wiced WiFi +# +# CONFIG_PKG_USING_WLAN_WICED is not set +# 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 +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# CONFIG_PKG_USING_SIMPLE_XML is not set +# CONFIG_PKG_USING_EZXML 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 +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ULOG_FILE is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# 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 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 +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# 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 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 + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_NUCLEI_SDK is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_BL_MCU_SDK is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Sensor libraries +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set + +# +# Display libraries +# +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set + +# +# Timing libraries +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set + +# +# Project libraries +# +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +CONFIG_BOARD_allwinnerd1=y +CONFIG_ENABLE_FPU=y +# CONFIG_RT_USING_USERSPACE_32BIT_LIMIT is not set +CONFIG___STACKSIZE__=16384 + +# +# General Drivers Configuration +# + +# +# General Purpose UARTs +# +# CONFIG_BSP_USING_UART1 is not set +CONFIG_BSP_USING_WDT=y +CONFIG_BSP_USING_RTC=y +CONFIG_RT_USING_SUNXI_HAL=y + +# +# UART Devices +# +CONFIG_DRIVERS_UART=y +# CONFIG_HAL_TEST_UART is not set +# CONFIG_SUNXI_UART_SUPPORT_POLL is not set +# CONFIG_SUNXI_UART_REGISTER_UART0 is not set +# CONFIG_SUNXI_UART_REGISTER_UART1 is not set +# CONFIG_SUNXI_UART_REGISTER_UART2 is not set +# CONFIG_SUNXI_UART_REGISTER_UART3 is not set + +# +# CCMU Devices +# +CONFIG_DRIVERS_CCMU=y +CONFIG_DRIVERS_SUNXI_CLK=y +# CONFIG_DRIVERS_SUNXI_CCU is not set +# CONFIG_HAL_TEST_CLK is not set + +# +# DMA Devices +# +CONFIG_DRIVERS_DMA=y +# CONFIG_HAL_TEST_DMA is not set + +# +# GPIO Devices +# +CONFIG_DRIVERS_GPIO=y +# CONFIG_HAL_TEST_GPIO is not set + +# +# Video support for sunxi +# +# CONFIG_DISP2_SUNXI is not set + +# +# SDMMC Devices +# +# CONFIG_DRIVERS_SDMMC is not set + +# +# TWI Devices +# +# CONFIG_DRIVERS_TWI is not set diff --git a/bsp/allwinner/d1/.gitignore b/bsp/allwinner/d1/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..23aecdf8a8370be4ed21881f871e637d2cacce0b --- /dev/null +++ b/bsp/allwinner/d1/.gitignore @@ -0,0 +1,11 @@ +__pycache__/ +*.bin +*.elf +*.map +build/ +.sconsign.dblite +cconfig.h +.vscode/ +rtconfig.pyc +*.old +sdcard.bat diff --git a/bsp/allwinner/d1/Kconfig b/bsp/allwinner/d1/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..f46246889743e69c74e6c282db3a406a6c77ea3f --- /dev/null +++ b/bsp/allwinner/d1/Kconfig @@ -0,0 +1,47 @@ +mainmenu "RT-Thread Project Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" + +config BOARD_allwinnerd1 + bool + select ARCH_RISCV64 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + select RT_USING_CACHE + select ARCH_MM_MMU + default y + +config RT_USING_USERSPACE + bool + default y + +config ENABLE_FPU + bool "Enable FPU" + default y + +config RT_USING_USERSPACE_32BIT_LIMIT + bool "Enable userspace 32bit limit" + default n + +config __STACKSIZE__ + int "stack size for interrupt" + default 4096 + +source "../libraries/drivers/Kconfig" +source "../libraries/Kconfig" diff --git a/bsp/allwinner/d1/README.md b/bsp/allwinner/d1/README.md new file mode 100644 index 0000000000000000000000000000000000000000..afd01088dd889154af8836cf02dcfd878575ff73 --- /dev/null +++ b/bsp/allwinner/d1/README.md @@ -0,0 +1,84 @@ +# RT-Thread全志D1移植 + +全志 d1-allwinner-nezha 属于 riscv64 平台 + +## 编译环境搭建 + +- 拉取 RT-Thread Smart的代码仓库 `git clone https://gitee.com/guozhanxin/rtthread-smart.git` + +### windows 环境 + +- 打开 RT-Thread ENV 工具 + +- 进入 tools 目录 `cd tools` + +- 拉取 `riscv64`平台的编译工具 `python get_toolchain.py riscv64` + +- 返回上级目录 `cd ..` + +- 设置环境变量 `./smart-env.bat` + +### ubuntu 环境 + +- 打开 ubuntu shell 终端 + +- 进入 tools 目录 `cd tools` + +- 拉取 `riscv64`平台的编译工具 `python get_toolchain.py riscv64` + +- 返回上级目录 `cd ..` + +- 设置环境变量 `source smart-env.sh riscv64` + +### 编译环境验证 + +- 输入:`riscv64-unknown-linux-musl-gcc -v` + +## 开发与编译 + +- windows 下使用RT-Thread ENV 工具, `menuconfig` 配置工程,`scons` 编译工程 + +- ubuntu 下 使用shell 终端: `scons --menuconfig` 配置工程, `scons` 编译工程 + + +## 下载验证 + +- 编译完后,通过:mkimage 生成 img 镜像文件,这个img 镜像文件可以使用 U-boot 引导启动 + +- 启动方式一般有:SD卡启动、NandFlash启动、网络引导启动 + +- windows 下使用全志的:`AllwinnertechPhoeniSuitRelease20201225` + +- 可以使用 xfel 工具进行烧写NandFlash + +## 运行效果 + +```c +## Booting kernel from Legacy Image at 45000000 ... + Image Name: + Image Type: RISC-V Linux Kernel Image (uncompressed) + Data Size: 249576 Bytes = 243.7 KiB + Load Address: 45000000 + Entry Point: 45000000 + Verifying Checksum ... OK +[01.861] +Starting kernel ... +heap: [0x45077bb0 - 0x48277bb0] + \ | / +- RT - Thread Smart Operating System + / | \ 5.0.0 build Jun 18 2022 + 2006 - 2020 Copyright by rt-thread team +file system initialization done! +Hello RISC-V +msh /> + +``` + +## 参考文档 + +- [https://club.rt-thread.org/ask/article/389ac36250b57737.html](https://club.rt-thread.org/ask/article/389ac36250b57737.html) + + + + + diff --git a/bsp/allwinner/d1/SConscript b/bsp/allwinner/d1/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..c7ef7659ecea92b1dd9b71a97736a8552ee02551 --- /dev/null +++ b/bsp/allwinner/d1/SConscript @@ -0,0 +1,14 @@ +# for module compiling +import os +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/d1/SConstruct b/bsp/allwinner/d1/SConstruct new file mode 100644 index 0000000000000000000000000000000000000000..db8b60f1f2b476eee06dac279e307eb3f9cccaa1 --- /dev/null +++ b/bsp/allwinner/d1/SConstruct @@ -0,0 +1,63 @@ +import os +import sys +import rtconfig + +from rtconfig import RTT_ROOT +import sys + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +from building import * + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) +env['ASCOM'] = env['ASPPCOM'] + +Export('RTT_ROOT') +Export('rtconfig') + +rtconfig.CPU='c906' +rtconfig.VENDOR="t-head" +rtconfig.ARCH='risc-v' + +SDK_ROOT = os.path.abspath('./') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu = False) + +d1_library = 'sunxi-hal' +rtconfig.BSP_LIBRARY_TYPE = d1_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, d1_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) + +# include libos +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'libos', 'SConscript'))) + +stack_size = 4096 + +stack_lds = open('link_stacksize.lds', 'w') +if GetDepend('__STACKSIZE__'): stack_size = GetDepend('__STACKSIZE__') +stack_lds.write('__STACKSIZE__ = %d;' % stack_size) +stack_lds.close() + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/allwinner/d1/applications/SConscript b/bsp/allwinner/d1/applications/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..743ad207ab0cf9ab677d0e7d53f7bd247f66867e --- /dev/null +++ b/bsp/allwinner/d1/applications/SConscript @@ -0,0 +1,9 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +CPPPATH = [cwd] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/allwinner/d1/applications/main.c b/bsp/allwinner/d1/applications/main.c new file mode 100644 index 0000000000000000000000000000000000000000..664f925e156407f4f6637ca7d4299016a9a51669 --- /dev/null +++ b/bsp/allwinner/d1/applications/main.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ + +#include +#include +#include +#include + +int main(void) +{ + printf("Hello RISC-V\n"); + + return 0; +} diff --git a/bsp/allwinner/d1/applications/mnt.c b/bsp/allwinner/d1/applications/mnt.c new file mode 100644 index 0000000000000000000000000000000000000000..6730896ff327780856350182d7d7e5d8b3e74d0e --- /dev/null +++ b/bsp/allwinner/d1/applications/mnt.c @@ -0,0 +1,21 @@ +#include + +#ifdef RT_USING_DFS +#include +#include + +int mnt_init(void) +{ + + rt_thread_mdelay(200); + + if (dfs_mount("boot", "/", "elm", 0, 0) != 0) + { + rt_kprintf("Dir /boot mount failed!\n"); + } + + rt_kprintf("file system initialization done!\n"); + return 0; +} +INIT_ENV_EXPORT(mnt_init); +#endif diff --git a/bsp/allwinner/d1/applications/romfs.c b/bsp/allwinner/d1/applications/romfs.c new file mode 100644 index 0000000000000000000000000000000000000000..7d2882928bb9fbea22b8643f1548e19ce0229c0d --- /dev/null +++ b/bsp/allwinner/d1/applications/romfs.c @@ -0,0 +1,13 @@ +#include + +static const struct romfs_dirent _romfs_root[] = { + {ROMFS_DIRENT_DIR, "etc", RT_NULL, 0}, + {ROMFS_DIRENT_DIR, "mnt", RT_NULL, 0}, + {ROMFS_DIRENT_DIR, "boot", RT_NULL, 0}, + {ROMFS_DIRENT_DIR, "boot-resource", RT_NULL, 0}, + {ROMFS_DIRENT_DIR, "bin", RT_NULL, 0} +}; + +const struct romfs_dirent romfs_root = { + ROMFS_DIRENT_DIR, "/", (rt_uint8_t *)_romfs_root, sizeof(_romfs_root) / sizeof(_romfs_root[0])}; + diff --git a/bsp/allwinner/d1/board/Kconfig b/bsp/allwinner/d1/board/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/bsp/allwinner/d1/board/SConscript b/bsp/allwinner/d1/board/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..faea9c1bd9bd1920667d46d5b0b9c1b7b68a0726 --- /dev/null +++ b/bsp/allwinner/d1/board/SConscript @@ -0,0 +1,19 @@ +# RT-Thread building script for component + +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +objs = [group] + +list = os.listdir(cwd) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/d1/board/board.c b/bsp/allwinner/d1/board/board.c new file mode 100644 index 0000000000000000000000000000000000000000..003d9958081dff01fe9d001eaea458130edca3ea --- /dev/null +++ b/bsp/allwinner/d1/board/board.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-30 lizhirui first version + */ + +#include +#include +#include + +#include "board.h" +#include "tick.h" + +#include "drv_uart.h" +#include "encoding.h" +#include "stack.h" +#include "sbi.h" +#include "riscv.h" +#include "stack.h" + +#include "hal_gpio.h" +#include "hal_clk.h" +#include "hal_uart.h" +#include "hal_dma.h" + +#ifdef RT_USING_USERSPACE + #include "riscv_mmu.h" + #include "mmu.h" + #include "page.h" + #include "lwp_arch.h" + + //这个结构体描述了buddy system的页分配范围 + rt_region_t init_page_region = + { + (rt_size_t)RT_HW_PAGE_START, + (rt_size_t)RT_HW_PAGE_END + }; + + //内核页表 + volatile rt_size_t MMUTable[__SIZE(VPN2_BIT)] __attribute__((aligned(4 * 1024))); + rt_mmu_info mmu_info; + +#endif + +//初始化BSS节区 +void init_bss(void) +{ + unsigned int *dst; + + dst = &__bss_start; + while (dst < &__bss_end) + { + *dst++ = 0; + } +} + +static void __rt_assert_handler(const char *ex_string, const char *func, rt_size_t line) +{ + rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line); + asm volatile("ebreak":::"memory"); +} + +//BSP的C入口 +void primary_cpu_entry(void) +{ + extern void entry(void); + + //初始化BSS + init_bss(); + //关中断 + rt_hw_interrupt_disable(); + rt_assert_set_hook(__rt_assert_handler); + //启动RT-Thread Smart内核 + entry(); +} + + +//这个初始化程序由内核主动调用,此时调度器还未启动,因此在此不能使用依赖线程上下文的函数 +void rt_hw_board_init(void) +{ +#ifdef RT_USING_USERSPACE + rt_page_init(init_page_region); + rt_hw_mmu_map_init(&mmu_info,(void *)USER_VADDR_START, USER_VADDR_TOP - USER_VADDR_START, (rt_size_t *)MMUTable, 0); + rt_hw_mmu_kernel_map_init(&mmu_info, 0x00000000UL, USER_VADDR_START - 1); + //将低1GB MMIO区域设置为无Cache与Strong Order访存模式 + MMUTable[0] &= ~PTE_CACHE; + MMUTable[0] &= ~PTE_SHARE; + MMUTable[0] |= PTE_SO; + rt_hw_mmu_switch((void *)MMUTable); +#endif + /* initalize interrupt */ + rt_hw_interrupt_init(); +#ifdef RT_USING_HEAP + rt_kprintf("heap: [0x%08x - 0x%08x]\n", (rt_ubase_t) RT_HW_HEAP_BEGIN, (rt_ubase_t) RT_HW_HEAP_END); + /* initialize memory system */ + rt_system_heap_init(RT_HW_HEAP_BEGIN, RT_HW_HEAP_END); +#endif + /* init hal hardware */ + hal_clock_init(); + hal_gpio_init(); + hal_uart_init(0); + hal_dma_init(); + + /* init rtthread hardware */ + rt_hw_uart_init(); + rt_hw_tick_init(); + +#ifdef RT_USING_CONSOLE + /* set console device */ + rt_console_set_device("uart"); +#endif /* RT_USING_CONSOLE */ + +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif +} + +void rt_hw_cpu_reset(void) +{ + sbi_shutdown(); + while(1); +} +MSH_CMD_EXPORT_ALIAS(rt_hw_cpu_reset, reboot, reset machine); diff --git a/bsp/allwinner/d1/board/board.h b/bsp/allwinner/d1/board/board.h new file mode 100644 index 0000000000000000000000000000000000000000..835ea87fc292044ae2a04f0f8e870633af148e3b --- /dev/null +++ b/bsp/allwinner/d1/board/board.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2006-2021, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-30 lizhirui first version + */ + +#ifndef BOARD_H__ +#define BOARD_H__ + +#include + +extern unsigned int __bss_start; +extern unsigned int __bss_end; + +#define RT_HW_HEAP_BEGIN ((void *)&__bss_end) +#define RT_HW_HEAP_END ((void *)(((rt_size_t)RT_HW_HEAP_BEGIN) + 50 * 1024 * 1024)) +#define RT_HW_PAGE_START RT_HW_HEAP_END +#define RT_HW_PAGE_END ((void *)(((rt_size_t)RT_HW_PAGE_START) + 50 * 1024 * 1024)) + +void rt_hw_board_init(void); +void rt_init_user_mem(struct rt_thread *thread, const char *name, unsigned long *entry); + +#endif diff --git a/bsp/allwinner/d1/generateimg.sh b/bsp/allwinner/d1/generateimg.sh new file mode 100644 index 0000000000000000000000000000000000000000..fd3d660b5d24efc7781d1992428876f3884c56fa --- /dev/null +++ b/bsp/allwinner/d1/generateimg.sh @@ -0,0 +1,2 @@ +#!/bin/sh +mkimage -A riscv -O linux -T kernel -C none -a 0x45000000 -e 0x45000000 -d rtthread.bin rtthread.img \ No newline at end of file diff --git a/bsp/allwinner/d1/link.lds b/bsp/allwinner/d1/link.lds new file mode 100644 index 0000000000000000000000000000000000000000..a6784a00ff52ddd8b0aa912e1ea6dc5d2b5ed2d1 --- /dev/null +++ b/bsp/allwinner/d1/link.lds @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2006-2020, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020/12/12 bernard The first version + */ + +INCLUDE "link_stacksize.lds" + +OUTPUT_ARCH( "riscv" ) + +/* + * Memory layout: + * 0x10200000 - 0x10201000: Bootloader + * 0x10201000 - 0x10A00000: Kernel + * 0x10A00000 - 0x11200000: Heap + */ + +MEMORY +{ + SRAM : ORIGIN = 0x45000000, LENGTH = 0x7FF000 +} + +ENTRY(_start) +SECTIONS +{ + . = 0x45000000 ; + + /* __STACKSIZE__ = 4096; */ + + .start : + { + *(.start); + } > SRAM + + . = ALIGN(8); + + .text : + { + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(8); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(8); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(8); + + /* section information for initial. */ + . = ALIGN(8); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(8); + + __rt_utest_tc_tab_start = .; + KEEP(*(UtestTcTab)) + __rt_utest_tc_tab_end = .; + + . = ALIGN(8); + _etext = .; + } > SRAM + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + *(.eh_frame_entry) + } > SRAM + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } > SRAM + + . = ALIGN(8); + + .data : + { + *(.data) + *(.data.*) + + *(.data1) + *(.data1.*) + + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800 ); + + *(.sdata) + *(.sdata.*) + } > SRAM + + . = ALIGN(8); + .ctors : + { + PROVIDE(__ctors_start__ = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__ctors_end__ = .); + } > SRAM + + .dtors : + { + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE(__dtors_end__ = .); + } > SRAM + + /* stack for dual core */ + .stack : + { + . = ALIGN(64); + __stack_start__ = .; + + . += __STACKSIZE__; + __stack_cpu0 = .; + + . += __STACKSIZE__; + __stack_cpu1 = .; + } > SRAM + + . = ALIGN(8); + + .osdebug : + { + _osdebug_start = .; + . += 87K; + _osdebug_end = .; + } > SRAM + + . = ALIGN(8); + + .sbss : + { + __bss_start = .; + *(.sbss) + *(.sbss.*) + *(.dynsbss) + *(.scommon) + } > SRAM + + .bss : + { + *(.bss) + *(.bss.*) + *(.dynbss) + *(COMMON) + __bss_end = .; + } > SRAM + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/allwinner/d1/link_stacksize.lds b/bsp/allwinner/d1/link_stacksize.lds new file mode 100644 index 0000000000000000000000000000000000000000..8685bc0f1c2d15f0a4bf11d75e743e5a61b16d95 --- /dev/null +++ b/bsp/allwinner/d1/link_stacksize.lds @@ -0,0 +1 @@ +__STACKSIZE__ = 16384; \ No newline at end of file diff --git a/bsp/allwinner/d1/rtconfig.h b/bsp/allwinner/d1/rtconfig.h new file mode 100644 index 0000000000000000000000000000000000000000..728d93ab88c114d977ce829753a2d357369ccc22 --- /dev/null +++ b/bsp/allwinner/d1/rtconfig.h @@ -0,0 +1,351 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Project Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 20 +#define RT_USING_SMART +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_256 +#define RT_THREAD_PRIORITY_MAX 256 +#define RT_TICK_PER_SECOND 100 +#define RT_USING_HOOK +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 16384 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 16384 +#define RT_DEBUG + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_MEMTRACE +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 256 +#define RT_CONSOLE_DEVICE_NAME "uart" +#define RT_VER_NUM 0x50000 +#define ARCH_CPU_64BIT +#define RT_USING_CACHE +#define ARCH_MM_MMU +#define RT_USING_USERSPACE +#define KERNEL_VADDR_START 0x150000000 +#define PV_OFFSET 0x0 +#define ARCH_RISCV +#define ARCH_RISCV64 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 16384 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define RT_USING_MSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 8192 +#define FINSH_CMD_SIZE 80 +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + +#define RT_USING_DFS +#define DFS_USING_WORKDIR +#define DFS_FILESYSTEMS_MAX 8 +#define DFS_FILESYSTEM_TYPES_MAX 4 +#define DFS_FD_MAX 32 +#define RT_USING_DFS_ELMFAT + +/* elm-chan's FatFs, Generic FAT Filesystem Module */ + +#define RT_DFS_ELM_CODE_PAGE 437 +#define RT_DFS_ELM_WORD_ACCESS +#define RT_DFS_ELM_USE_LFN_3 +#define RT_DFS_ELM_USE_LFN 3 +#define RT_DFS_ELM_MAX_LFN 255 +#define RT_DFS_ELM_DRIVES 8 +#define RT_DFS_ELM_MAX_SECTOR_SIZE 512 +#define RT_DFS_ELM_REENTRANT +#define RT_USING_DFS_DEVFS +#define RT_USING_DFS_ROMFS + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 8192 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_SERIAL_USING_DMA +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_TTY +#define RT_USING_HWTIMER +#define RT_USING_I2C +#define RT_USING_I2C_BITOPS +#define RT_USING_PIN +#define RT_USING_NULL +#define RT_USING_ZERO +#define RT_USING_RANDOM +#define RT_USING_PWM +#define RT_USING_RTC +#define RT_USING_WDT +#define RT_USING_TOUCH + +/* Using USB */ + + +/* POSIX layer and C standard library */ + +#define RT_USING_LIBC +#define RT_USING_MUSL +#define RT_USING_POSIX +#define RT_USING_POSIX_CLOCKTIME + +/* Network */ + +/* Socket abstraction layer */ + +#define RT_USING_SAL + +/* protocol stack implement */ + +#define SAL_USING_LWIP +#define SAL_USING_POSIX + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT +#define NETDEV_USING_AUTO_DEFAULT +#define NETDEV_IPV4 1 +#define NETDEV_IPV6 0 + +/* light weight TCP/IP stack */ + +#define RT_USING_LWIP +#define RT_USING_LWIP212 +#define RT_LWIP_MEM_ALIGNMENT 4 +#define RT_LWIP_IGMP +#define RT_LWIP_ICMP +#define RT_LWIP_DNS +#define RT_LWIP_DHCP +#define IP_SOF_BROADCAST 1 +#define IP_SOF_BROADCAST_RECV 1 + +/* Static IPv4 Address */ + +#define RT_LWIP_IPADDR "192.168.1.30" +#define RT_LWIP_GWADDR "192.168.1.1" +#define RT_LWIP_MSKADDR "255.255.255.0" +#define RT_LWIP_UDP +#define RT_LWIP_TCP +#define RT_LWIP_RAW +#define RT_MEMP_NUM_NETCONN 8 +#define RT_MEMP_NUM_TCPIP_MSG_API 16 +#define RT_MEMP_NUM_TCPIP_MSG_INPKT 16 +#define RT_LWIP_PBUF_NUM 16 +#define RT_LWIP_PBUF_STRUCT_NUM 16 +#define RT_LWIP_NETBUF_NUM 16 +#define RT_LWIP_RAW_PCB_NUM 4 +#define RT_LWIP_UDP_PCB_NUM 4 +#define RT_UDP_RECVMBOX_SIZE 16 +#define RT_RECV_BUFSIZE_DEFAULT 64 +#define RT_LWIP_TCP_PCB_NUM 4 +#define RT_LWIP_TCP_SEG_NUM 40 +#define RT_LWIP_TCP_SND_BUF 8196 +#define RT_LWIP_TCP_WND 8196 +#define RT_TCP_RECVMBOX_SIZE 16 +#define RT_LWIP_TCPTHREAD_PRIORITY 10 +#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 +#define RT_LWIP_TCPTHREAD_STACKSIZE 8192 +#define RT_LWIP_ETHTHREAD_PRIORITY 12 +#define RT_LWIP_ETHTHREAD_STACKSIZE 8192 +#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8 +#define RT_LWIP_REASSEMBLY_FRAG +#define LWIP_NETIF_STATUS_CALLBACK 1 +#define LWIP_NETIF_LINK_CALLBACK 1 +#define SO_REUSE 1 +#define LWIP_SO_RCVTIMEO 1 +#define LWIP_SO_SNDTIMEO 1 +#define LWIP_SO_RCVBUF 1 +#define LWIP_SO_LINGER 0 +#define LWIP_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + +#define RT_USING_LWP +#define RT_LWP_MAX_NR 30 +#define LWP_TASK_STACK_SIZE 16384 +#define RT_CH_MSG_MAX_NR 1024 +#define LWP_CONSOLE_INPUT_BUFFER_SIZE 1024 +#define LWP_TID_MAX_NR 64 +#define RT_LWP_SHM_MAX_NR 64 + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + + +/* peripheral libraries and drivers */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Sensor libraries */ + + +/* Display libraries */ + + +/* Timing libraries */ + + +/* Project libraries */ + +#define BOARD_allwinnerd1 +#define ENABLE_FPU +#define __STACKSIZE__ 16384 + +/* General Drivers Configuration */ + +/* General Purpose UARTs */ + +#define BSP_USING_WDT +#define BSP_USING_RTC +#define RT_USING_SUNXI_HAL + +/* UART Devices */ + +#define DRIVERS_UART + +/* CCMU Devices */ + +#define DRIVERS_CCMU +#define DRIVERS_SUNXI_CLK + +/* DMA Devices */ + +#define DRIVERS_DMA + +/* GPIO Devices */ + +#define DRIVERS_GPIO + +/* Video support for sunxi */ + + +/* SDMMC Devices */ + + +/* TWI Devices */ + + +#endif diff --git a/bsp/allwinner/d1/rtconfig.py b/bsp/allwinner/d1/rtconfig.py new file mode 100644 index 0000000000000000000000000000000000000000..40a230cf3bb8e67659b9d2ba91d62f450f7f6428 --- /dev/null +++ b/bsp/allwinner/d1/rtconfig.py @@ -0,0 +1,56 @@ +import os + +# toolchains options +ARCH ='risc-v' +VENDOR ='t-head' +CPU ='c906' +CROSS_TOOL ='gcc' + +RTT_ROOT = os.getenv('RTT_ROOT') or os.path.join(os.getcwd(),'..','..','..') + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') + +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'/opt/riscv64_musl/bin' +else: + print('Please make sure your toolchains is GNU GCC!') + exit(0) + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + #PREFIX = 'riscv64-unknown-elf-' + PREFIX = os.getenv('RTT_CC_PREFIX') or 'riscv64-unknown-linux-musl-' + CC = PREFIX + 'gcc' + CXX = PREFIX + 'g++' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcmodel=medany -march=rv64imafdc -mabi=lp64' + CFLAGS = DEVICE + ' -fvar-tracking -ffreestanding -fno-common -ffunction-sections -fdata-sections -fstrict-volatile-bitfields ' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + LFLAGS = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T link.lds' + ' -lsupc++ -lgcc -static' + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -ggdb' + AFLAGS += ' -ggdb' + else: + CFLAGS += ' -O2 -Os' + + CXXFLAGS = CFLAGS + +DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtthread.asm\n' +POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' diff --git a/bsp/allwinner/d1s/.config b/bsp/allwinner/d1s/.config new file mode 100644 index 0000000000000000000000000000000000000000..1d1717007ac5b5ac8db1974f38f2192972d50701 --- /dev/null +++ b/bsp/allwinner/d1s/.config @@ -0,0 +1,1094 @@ +# +# Automatically generated file; DO NOT EDIT. +# RT-Thread Project Configuration +# + +# +# RT-Thread Kernel +# +CONFIG_RT_NAME_MAX=20 +# CONFIG_RT_USING_ARCH_DATA_TYPE is not set +CONFIG_RT_USING_SMART=y +# CONFIG_RT_USING_SMP is not set +CONFIG_RT_ALIGN_SIZE=8 +# CONFIG_RT_THREAD_PRIORITY_8 is not set +CONFIG_RT_THREAD_PRIORITY_32=y +# CONFIG_RT_THREAD_PRIORITY_256 is not set +CONFIG_RT_THREAD_PRIORITY_MAX=32 +CONFIG_RT_TICK_PER_SECOND=100 +# CONFIG_RT_USING_OVERFLOW_CHECK is not set +CONFIG_RT_USING_HOOK=y +CONFIG_RT_USING_IDLE_HOOK=y +CONFIG_RT_IDLE_HOOK_LIST_SIZE=4 +CONFIG_IDLE_THREAD_STACK_SIZE=16384 +CONFIG_RT_USING_TIMER_SOFT=y +CONFIG_RT_TIMER_THREAD_PRIO=4 +CONFIG_RT_TIMER_THREAD_STACK_SIZE=16384 +CONFIG_RT_DEBUG=y +# CONFIG_RT_DEBUG_COLOR is not set +# CONFIG_RT_DEBUG_INIT_CONFIG is not set +# CONFIG_RT_DEBUG_THREAD_CONFIG is not set +# CONFIG_RT_DEBUG_SCHEDULER_CONFIG is not set +# CONFIG_RT_DEBUG_IPC_CONFIG is not set +# CONFIG_RT_DEBUG_TIMER_CONFIG is not set +# CONFIG_RT_DEBUG_IRQ_CONFIG is not set +# CONFIG_RT_DEBUG_MEM_CONFIG is not set +# CONFIG_RT_DEBUG_SLAB_CONFIG is not set +# CONFIG_RT_DEBUG_MEMHEAP_CONFIG is not set +# CONFIG_RT_DEBUG_MODULE_CONFIG is not set + +# +# Inter-Thread communication +# +CONFIG_RT_USING_SEMAPHORE=y +CONFIG_RT_USING_MUTEX=y +CONFIG_RT_USING_EVENT=y +CONFIG_RT_USING_MAILBOX=y +CONFIG_RT_USING_MESSAGEQUEUE=y +# CONFIG_RT_USING_SIGNALS is not set + +# +# Memory Management +# +CONFIG_RT_USING_MEMPOOL=y +# CONFIG_RT_USING_MEMHEAP is not set +# CONFIG_RT_USING_NOHEAP is not set +CONFIG_RT_USING_SMALL_MEM=y +# CONFIG_RT_USING_SLAB is not set +CONFIG_RT_USING_MEMTRACE=y +CONFIG_RT_USING_HEAP=y + +# +# Kernel Device Object +# +CONFIG_RT_USING_DEVICE=y +# CONFIG_RT_USING_DEVICE_OPS is not set +# CONFIG_RT_USING_DM is not set +# CONFIG_RT_USING_INTERRUPT_INFO is not set +CONFIG_RT_USING_CONSOLE=y +CONFIG_RT_CONSOLEBUF_SIZE=256 +CONFIG_RT_CONSOLE_DEVICE_NAME="uart0" +CONFIG_RT_VER_NUM=0x50000 +CONFIG_ARCH_CPU_64BIT=y +CONFIG_RT_USING_CACHE=y +# CONFIG_RT_USING_CPU_FFS is not set +# CONFIG_ARCH_ARM_BOOTWITH_FLUSH_CACHE is not set +# CONFIG_ARCH_CPU_STACK_GROWS_UPWARD is not set +CONFIG_ARCH_MM_MMU=y +CONFIG_RT_USING_USERSPACE=y +CONFIG_KERNEL_VADDR_START=0x150000000 +CONFIG_PV_OFFSET=0 +CONFIG_ARCH_RISCV=y +CONFIG_ARCH_RISCV64=y + +# +# RT-Thread Components +# +CONFIG_RT_USING_COMPONENTS_INIT=y +CONFIG_RT_USING_USER_MAIN=y +CONFIG_RT_MAIN_THREAD_STACK_SIZE=16384 +CONFIG_RT_MAIN_THREAD_PRIORITY=10 + +# +# C++ features +# +# CONFIG_RT_USING_CPLUSPLUS is not set +CONFIG_RT_USING_MSH=y +CONFIG_RT_USING_FINSH=y +CONFIG_FINSH_USING_MSH=y +CONFIG_FINSH_THREAD_NAME="tshell" +CONFIG_FINSH_THREAD_PRIORITY=20 +CONFIG_FINSH_THREAD_STACK_SIZE=8192 +CONFIG_FINSH_USING_HISTORY=y +CONFIG_FINSH_HISTORY_LINES=5 +CONFIG_FINSH_USING_SYMTAB=y +CONFIG_FINSH_CMD_SIZE=80 +CONFIG_MSH_USING_BUILT_IN_COMMANDS=y +CONFIG_FINSH_USING_DESCRIPTION=y +# CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set +# CONFIG_FINSH_USING_AUTH is not set +CONFIG_FINSH_ARG_MAX=10 + +# +# Device virtual file system +# +CONFIG_RT_USING_DFS=y +CONFIG_DFS_USING_WORKDIR=y +CONFIG_DFS_FILESYSTEMS_MAX=8 +CONFIG_DFS_FILESYSTEM_TYPES_MAX=4 +CONFIG_DFS_FD_MAX=32 +# CONFIG_RT_USING_DFS_MNTTABLE is not set +CONFIG_RT_USING_DFS_ELMFAT=y + +# +# elm-chan's FatFs, Generic FAT Filesystem Module +# +CONFIG_RT_DFS_ELM_CODE_PAGE=936 +CONFIG_RT_DFS_ELM_WORD_ACCESS=y +# CONFIG_RT_DFS_ELM_USE_LFN_0 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_1 is not set +# CONFIG_RT_DFS_ELM_USE_LFN_2 is not set +CONFIG_RT_DFS_ELM_USE_LFN_3=y +CONFIG_RT_DFS_ELM_USE_LFN=3 +CONFIG_RT_DFS_ELM_MAX_LFN=255 +CONFIG_RT_DFS_ELM_DRIVES=8 +CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512 +# CONFIG_RT_DFS_ELM_USE_ERASE is not set +CONFIG_RT_DFS_ELM_REENTRANT=y +CONFIG_RT_USING_DFS_DEVFS=y +# CONFIG_RT_USING_DFS_ROMFS is not set +# CONFIG_RT_USING_DFS_CROMFS is not set +# CONFIG_RT_USING_DFS_RAMFS is not set +# CONFIG_RT_USING_DFS_TMPFS is not set +# CONFIG_RT_USING_DFS_UFFS is not set +# CONFIG_RT_USING_DFS_JFFS2 is not set +# CONFIG_RT_USING_DFS_NFS is not set + +# +# Device Drivers +# +CONFIG_RT_USING_DEVICE_IPC=y +CONFIG_RT_UNAMED_PIPE_NUMBER=64 +CONFIG_RT_PIPE_BUFSZ=512 +CONFIG_RT_USING_SYSTEM_WORKQUEUE=y +CONFIG_RT_SYSTEM_WORKQUEUE_STACKSIZE=4096 +CONFIG_RT_SYSTEM_WORKQUEUE_PRIORITY=23 +CONFIG_RT_USING_SERIAL=y +# CONFIG_RT_USING_SERIAL_V1 is not set +CONFIG_RT_USING_SERIAL_V2=y +# CONFIG_RT_SERIAL_USING_DMA is not set +CONFIG_RT_USING_TTY=y +# CONFIG_RT_TTY_DEBUG is not set +# CONFIG_RT_USING_CAN is not set +# CONFIG_RT_USING_HWTIMER is not set +# CONFIG_RT_USING_CPUTIME is not set +CONFIG_RT_USING_I2C=y +# CONFIG_RT_I2C_DEBUG is not set +# CONFIG_RT_USING_I2C_BITOPS is not set +# CONFIG_RT_USING_PHY is not set +CONFIG_RT_USING_PIN=y +# CONFIG_RT_USING_ADC is not set +# CONFIG_RT_USING_DAC is not set +CONFIG_RT_USING_NULL=y +CONFIG_RT_USING_ZERO=y +CONFIG_RT_USING_RANDOM=y +CONFIG_RT_USING_PWM=y +# CONFIG_RT_USING_MTD_NOR is not set +# CONFIG_RT_USING_MTD_NAND is not set +# CONFIG_RT_USING_PM is not set +# CONFIG_RT_USING_FDT is not set +CONFIG_RT_USING_RTC=y +# CONFIG_RT_USING_ALARM is not set +# CONFIG_RT_USING_SOFT_RTC is not set +# CONFIG_RT_USING_SDIO is not set +CONFIG_RT_USING_SPI=y +# CONFIG_RT_USING_QSPI is not set +# CONFIG_RT_USING_SPI_MSD is not set +# CONFIG_RT_USING_SFUD is not set +# CONFIG_RT_USING_ENC28J60 is not set +# CONFIG_RT_USING_SPI_WIFI is not set +CONFIG_RT_USING_WDT=y +CONFIG_RT_USING_AUDIO=y +CONFIG_RT_AUDIO_REPLAY_MP_BLOCK_SIZE=4096 +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_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_WIFI=y +CONFIG_RT_WLAN_DEVICE_STA_NAME="wlan0" +CONFIG_RT_WLAN_DEVICE_AP_NAME="wlan1" +CONFIG_RT_WLAN_SSID_MAX_LENGTH=32 +CONFIG_RT_WLAN_PASSWORD_MAX_LENGTH=32 +CONFIG_RT_WLAN_DEV_EVENT_NUM=2 +CONFIG_RT_WLAN_MANAGE_ENABLE=y +CONFIG_RT_WLAN_SCAN_WAIT_MS=10000 +CONFIG_RT_WLAN_CONNECT_WAIT_MS=10000 +CONFIG_RT_WLAN_SCAN_SORT=y +CONFIG_RT_WLAN_MSH_CMD_ENABLE=y +CONFIG_RT_WLAN_AUTO_CONNECT_ENABLE=y +CONFIG_AUTO_CONNECTION_PERIOD_MS=2000 +CONFIG_RT_WLAN_CFG_ENABLE=y +CONFIG_RT_WLAN_CFG_INFO_MAX=3 +CONFIG_RT_WLAN_PROT_ENABLE=y +CONFIG_RT_WLAN_PROT_NAME_LEN=8 +CONFIG_RT_WLAN_PROT_MAX=2 +CONFIG_RT_WLAN_DEFAULT_PROT="lwip" +CONFIG_RT_WLAN_PROT_LWIP_ENABLE=y +CONFIG_RT_WLAN_PROT_LWIP_NAME="lwip" +# CONFIG_RT_WLAN_PROT_LWIP_PBUF_FORCE is not set +CONFIG_RT_WLAN_WORK_THREAD_ENABLE=y +CONFIG_RT_WLAN_WORKQUEUE_THREAD_NAME="wlan" +CONFIG_RT_WLAN_WORKQUEUE_THREAD_SIZE=4096 +CONFIG_RT_WLAN_WORKQUEUE_THREAD_PRIO=15 +# CONFIG_RT_WLAN_DEBUG is not set +# CONFIG_RT_USING_VIRTIO is not set + +# +# Using USB +# +# CONFIG_RT_USING_USB_HOST is not set +# CONFIG_RT_USING_USB_DEVICE is not set +CONFIG_RT_USING_FAL=y +CONFIG_FAL_DEBUG_CONFIG=y +CONFIG_FAL_DEBUG=1 +CONFIG_FAL_PART_HAS_TABLE_CFG=y +# CONFIG_FAL_USING_SFUD_PORT is not set + +# +# POSIX layer and C standard library +# +CONFIG_RT_USING_LIBC=y +# CONFIG_RT_USING_NEWLIB is not set +CONFIG_RT_USING_MUSL=y +# CONFIG_RT_USING_MLIB is not set +# CONFIG_RT_USING_PTHREADS is not set +CONFIG_RT_USING_POSIX=y +# CONFIG_RT_USING_POSIX_MMAP is not set +# CONFIG_RT_USING_POSIX_GETLINE is not set +# CONFIG_RT_USING_POSIX_AIO is not set +CONFIG_RT_USING_POSIX_CLOCKTIME=y +# CONFIG_RT_USING_MODULE is not set + +# +# Network +# + +# +# Socket abstraction layer +# +CONFIG_RT_USING_SAL=y + +# +# protocol stack implement +# +CONFIG_SAL_USING_LWIP=y +# CONFIG_SAL_USING_POSIX is not set +# CONFIG_SAL_USING_AF_UNIX is not set +CONFIG_SAL_SOCKETS_NUM=16 + +# +# Network interface device +# +CONFIG_RT_USING_NETDEV=y +CONFIG_NETDEV_USING_IFCONFIG=y +CONFIG_NETDEV_USING_PING=y +CONFIG_NETDEV_USING_NETSTAT=y +CONFIG_NETDEV_USING_AUTO_DEFAULT=y +# CONFIG_NETDEV_USING_IPV6 is not set +CONFIG_NETDEV_IPV4=1 +CONFIG_NETDEV_IPV6=0 +# CONFIG_NETDEV_IPV6_SCOPES is not set + +# +# light weight TCP/IP stack +# +CONFIG_RT_USING_LWIP=y +# CONFIG_RT_USING_LWIP141 is not set +CONFIG_RT_USING_LWIP202=y +# CONFIG_RT_USING_LWIP212 is not set +# CONFIG_RT_USING_LWIP_IPV6 is not set +CONFIG_RT_LWIP_MEM_ALIGNMENT=4 +CONFIG_RT_LWIP_IGMP=y +CONFIG_RT_LWIP_ICMP=y +# CONFIG_RT_LWIP_SNMP is not set +CONFIG_RT_LWIP_DNS=y +CONFIG_RT_LWIP_DHCP=y +CONFIG_IP_SOF_BROADCAST=1 +CONFIG_IP_SOF_BROADCAST_RECV=1 + +# +# Static IPv4 Address +# +CONFIG_RT_LWIP_IPADDR="192.168.1.30" +CONFIG_RT_LWIP_GWADDR="192.168.1.1" +CONFIG_RT_LWIP_MSKADDR="255.255.255.0" +CONFIG_RT_LWIP_UDP=y +CONFIG_RT_LWIP_TCP=y +CONFIG_RT_LWIP_RAW=y +# CONFIG_RT_LWIP_PPP is not set +CONFIG_RT_MEMP_NUM_NETCONN=16 +CONFIG_RT_MEMP_NUM_TCPIP_MSG_API=16 +CONFIG_RT_MEMP_NUM_TCPIP_MSG_INPKT=16 +CONFIG_RT_LWIP_PBUF_NUM=32 +CONFIG_RT_LWIP_PBUF_STRUCT_NUM=16 +CONFIG_RT_LWIP_NETBUF_NUM=16 +CONFIG_RT_LWIP_RAW_PCB_NUM=4 +CONFIG_RT_LWIP_UDP_PCB_NUM=4 +CONFIG_RT_UDP_RECVMBOX_SIZE=16 +CONFIG_RT_RECV_BUFSIZE_DEFAULT=64 +CONFIG_RT_LWIP_TCP_PCB_NUM=4 +CONFIG_RT_LWIP_TCP_SEG_NUM=40 +CONFIG_RT_LWIP_TCP_SND_BUF=8196 +CONFIG_RT_LWIP_TCP_WND=8196 +CONFIG_RT_TCP_RECVMBOX_SIZE=16 +CONFIG_RT_LWIP_TCPTHREAD_PRIORITY=10 +CONFIG_RT_LWIP_TCPTHREAD_MBOX_SIZE=8 +CONFIG_RT_LWIP_TCPTHREAD_STACKSIZE=8192 +# CONFIG_LWIP_NO_RX_THREAD is not set +# CONFIG_LWIP_NO_TX_THREAD is not set +CONFIG_RT_LWIP_ETHTHREAD_PRIORITY=12 +CONFIG_RT_LWIP_ETHTHREAD_STACKSIZE=1024 +CONFIG_RT_LWIP_ETHTHREAD_MBOX_SIZE=32 +# CONFIG_RT_LWIP_REASSEMBLY_FRAG is not set +CONFIG_LWIP_NETIF_STATUS_CALLBACK=1 +CONFIG_LWIP_NETIF_LINK_CALLBACK=1 +CONFIG_SO_REUSE=1 +CONFIG_LWIP_SO_RCVTIMEO=1 +CONFIG_LWIP_SO_SNDTIMEO=1 +CONFIG_LWIP_SO_RCVBUF=1 +CONFIG_LWIP_SO_LINGER=0 +# CONFIG_RT_LWIP_NETIF_LOOPBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=0 +# CONFIG_RT_LWIP_STATS is not set +# CONFIG_RT_LWIP_USING_HW_CHECKSUM is not set +CONFIG_RT_LWIP_USING_PING=y +# CONFIG_RT_LWIP_DEBUG is not set + +# +# AT commands +# +# CONFIG_RT_USING_AT is not set +# CONFIG_LWIP_USING_DHCPD is not set + +# +# VBUS(Virtual Software BUS) +# +# CONFIG_RT_USING_VBUS is not set + +# +# Utilities +# +# CONFIG_RT_USING_RYM is not set +# CONFIG_RT_USING_ULOG is not set +# CONFIG_RT_USING_UTEST is not set +# CONFIG_RT_USING_RT_LINK is not set +CONFIG_RT_USING_LWP=y +CONFIG_RT_LWP_MAX_NR=30 +CONFIG_LWP_TASK_STACK_SIZE=16384 +CONFIG_RT_CH_MSG_MAX_NR=1024 +CONFIG_LWP_CONSOLE_INPUT_BUFFER_SIZE=1024 +CONFIG_LWP_TID_MAX_NR=64 +CONFIG_RT_LWP_SHM_MAX_NR=64 +# CONFIG_LWP_UNIX98_PTY is not set + +# +# RT-Thread online packages +# + +# +# IoT - internet of things +# +# CONFIG_PKG_USING_LWIP is not set +# CONFIG_PKG_USING_LORAWAN_DRIVER is not set +# CONFIG_PKG_USING_PAHOMQTT is not set +# CONFIG_PKG_USING_UMQTT is not set +# CONFIG_PKG_USING_WEBCLIENT is not set +# CONFIG_PKG_USING_WEBNET is not set +# CONFIG_PKG_USING_MONGOOSE is not set +# CONFIG_PKG_USING_MYMQTT is not set +# CONFIG_PKG_USING_KAWAII_MQTT is not set +# CONFIG_PKG_USING_BC28_MQTT is not set +# CONFIG_PKG_USING_WEBTERMINAL is not set +# CONFIG_PKG_USING_LIBMODBUS is not set +# CONFIG_PKG_USING_FREEMODBUS is not set +# CONFIG_PKG_USING_NANOPB is not set + +# +# Wi-Fi +# + +# +# Marvell WiFi +# +# CONFIG_PKG_USING_WLANMARVELL is not set + +# +# 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_COAP is not set +# CONFIG_PKG_USING_NOPOLL is not set +# CONFIG_PKG_USING_NETUTILS is not set +# CONFIG_PKG_USING_CMUX is not set +# CONFIG_PKG_USING_PPP_DEVICE is not set +# CONFIG_PKG_USING_AT_DEVICE is not set +# CONFIG_PKG_USING_ATSRV_SOCKET is not set +# CONFIG_PKG_USING_WIZNET is not set +# CONFIG_PKG_USING_ZB_COORDINATOR is not set + +# +# IoT Cloud +# +# CONFIG_PKG_USING_ONENET is not set +# CONFIG_PKG_USING_GAGENT_CLOUD is not set +# CONFIG_PKG_USING_ALI_IOTKIT is not set +# CONFIG_PKG_USING_AZURE is not set +# CONFIG_PKG_USING_TENCENT_IOT_EXPLORER is not set +# CONFIG_PKG_USING_JIOT-C-SDK is not set +# CONFIG_PKG_USING_UCLOUD_IOT_SDK is not set +# CONFIG_PKG_USING_JOYLINK is not set +# CONFIG_PKG_USING_EZ_IOT_OS is not set +# CONFIG_PKG_USING_IOTSHARP_SDK is not set +# CONFIG_PKG_USING_NIMBLE is not set +# CONFIG_PKG_USING_LLSYNC_SDK_ADAPTER is not set +# CONFIG_PKG_USING_OTA_DOWNLOADER is not set +# CONFIG_PKG_USING_IPMSG is not set +# CONFIG_PKG_USING_LSSDP is not set +# CONFIG_PKG_USING_AIRKISS_OPEN is not set +# CONFIG_PKG_USING_LIBRWS is not set +# CONFIG_PKG_USING_TCPSERVER is not set +# CONFIG_PKG_USING_PROTOBUF_C is not set +# CONFIG_PKG_USING_DLT645 is not set +# CONFIG_PKG_USING_QXWZ is not set +# CONFIG_PKG_USING_SMTP_CLIENT is not set +# CONFIG_PKG_USING_ABUP_FOTA is not set +# CONFIG_PKG_USING_LIBCURL2RTT is not set +# CONFIG_PKG_USING_CAPNP is not set +# CONFIG_PKG_USING_AGILE_TELNET is not set +# CONFIG_PKG_USING_NMEALIB is not set +# CONFIG_PKG_USING_PDULIB is not set +# CONFIG_PKG_USING_BTSTACK is not set +# CONFIG_PKG_USING_LORAWAN_ED_STACK is not set +# CONFIG_PKG_USING_WAYZ_IOTKIT is not set +# CONFIG_PKG_USING_MAVLINK is not set +# CONFIG_PKG_USING_BSAL is not set +# CONFIG_PKG_USING_AGILE_MODBUS is not set +# CONFIG_PKG_USING_AGILE_FTP is not set +# CONFIG_PKG_USING_EMBEDDEDPROTO is not set +# CONFIG_PKG_USING_RT_LINK_HW is not set +# CONFIG_PKG_USING_LORA_PKT_FWD is not set +# CONFIG_PKG_USING_LORA_GW_DRIVER_LIB is not set +# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set +# CONFIG_PKG_USING_HM is not set +# CONFIG_PKG_USING_SMALL_MODBUS is not set +# CONFIG_PKG_USING_NET_SERVER is not set +# CONFIG_PKG_USING_ZFTP is not set + +# +# security packages +# +# CONFIG_PKG_USING_MBEDTLS is not set +# CONFIG_PKG_USING_LIBSODIUM is not set +# CONFIG_PKG_USING_LIBHYDROGEN is not set +# CONFIG_PKG_USING_TINYCRYPT is not set +# CONFIG_PKG_USING_TFM is not set +# CONFIG_PKG_USING_YD_CRYPTO is not set + +# +# language packages +# + +# +# JSON: JavaScript Object Notation, a lightweight data-interchange format +# +# CONFIG_PKG_USING_CJSON is not set +# CONFIG_PKG_USING_LJSON is not set +# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set +# CONFIG_PKG_USING_RAPIDJSON is not set +# CONFIG_PKG_USING_JSMN is not set +# CONFIG_PKG_USING_AGILE_JSMN is not set +# CONFIG_PKG_USING_PARSON is not set + +# +# XML: Extensible Markup Language +# +# 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 +# CONFIG_PKG_USING_MICROPYTHON is not set +# CONFIG_PKG_USING_PIKASCRIPT is not set +# CONFIG_PKG_USING_RTT_RUST is not set + +# +# multimedia packages +# + +# +# LVGL: powerful and easy-to-use embedded GUI library +# +# CONFIG_PKG_USING_LVGL is not set +# CONFIG_PKG_USING_LITTLEVGL2RTT is not set +# CONFIG_PKG_USING_LV_MUSIC_DEMO is not set +# CONFIG_PKG_USING_GUI_GUIDER_DEMO is not set + +# +# u8g2: a monochrome graphic library +# +# CONFIG_PKG_USING_U8G2_OFFICIAL is not set +# CONFIG_PKG_USING_U8G2 is not set +# CONFIG_PKG_USING_OPENMV is not set +# CONFIG_PKG_USING_MUPDF is not set +# CONFIG_PKG_USING_STEMWIN is not set +# CONFIG_PKG_USING_WAVPLAYER is not set +# CONFIG_PKG_USING_TJPGD is not set +# CONFIG_PKG_USING_PDFGEN is not set +# CONFIG_PKG_USING_HELIX is not set +# CONFIG_PKG_USING_AZUREGUIX is not set +# CONFIG_PKG_USING_TOUCHGFX2RTT is not set +# CONFIG_PKG_USING_NUEMWIN is not set +# CONFIG_PKG_USING_MP3PLAYER is not set +# CONFIG_PKG_USING_TINYJPEG is not set +# CONFIG_PKG_USING_UGUI is not set + +# +# PainterEngine: A cross-platform graphics application framework written in C language +# +# CONFIG_PKG_USING_PAINTERENGINE is not set +# CONFIG_PKG_USING_PAINTERENGINE_AUX is not set +# CONFIG_PKG_USING_MCURSES is not set +# CONFIG_PKG_USING_TERMBOX is not set +# CONFIG_PKG_USING_VT100 is not set +# CONFIG_PKG_USING_QRCODE is not set +# CONFIG_PKG_USING_GUIENGINE is not set + +# +# tools packages +# +# CONFIG_PKG_USING_CMBACKTRACE is not set +# CONFIG_PKG_USING_EASYFLASH is not set +# CONFIG_PKG_USING_EASYLOGGER is not set +# CONFIG_PKG_USING_SYSTEMVIEW is not set +# CONFIG_PKG_USING_SEGGER_RTT is not set +# CONFIG_PKG_USING_RDB is not set +# CONFIG_PKG_USING_ULOG_EASYFLASH is not set +# CONFIG_PKG_USING_ULOG_FILE is not set +# CONFIG_PKG_USING_LOGMGR is not set +# CONFIG_PKG_USING_ADBD is not set +# CONFIG_PKG_USING_COREMARK is not set +# CONFIG_PKG_USING_DHRYSTONE is not set +# CONFIG_PKG_USING_MEMORYPERF is not set +# CONFIG_PKG_USING_NR_MICRO_SHELL is not set +# CONFIG_PKG_USING_CHINESE_FONT_LIBRARY is not set +# CONFIG_PKG_USING_LUNAR_CALENDAR is not set +# CONFIG_PKG_USING_BS8116A is not set +# CONFIG_PKG_USING_GPS_RMC is not set +# CONFIG_PKG_USING_URLENCODE is not set +# CONFIG_PKG_USING_UMCN is not set +# CONFIG_PKG_USING_LWRB2RTT is not set +# CONFIG_PKG_USING_CPU_USAGE is not set +# CONFIG_PKG_USING_GBK2UTF8 is not set +# CONFIG_PKG_USING_VCONSOLE is not set +# CONFIG_PKG_USING_KDB is not set +# CONFIG_PKG_USING_WAMR is not set +# CONFIG_PKG_USING_MICRO_XRCE_DDS_CLIENT is not set +# CONFIG_PKG_USING_LWLOG is not set +# CONFIG_PKG_USING_ANV_TRACE is not set +# CONFIG_PKG_USING_ANV_MEMLEAK is not set +# CONFIG_PKG_USING_ANV_TESTSUIT is not set +# CONFIG_PKG_USING_ANV_BENCH is not set +# CONFIG_PKG_USING_DEVMEM is not set +# CONFIG_PKG_USING_REGEX is not set +# CONFIG_PKG_USING_MEM_SANDBOX is not set +# CONFIG_PKG_USING_SOLAR_TERMS is not set +# CONFIG_PKG_USING_GAN_ZHI is not set +# CONFIG_PKG_USING_FDT is not set +# CONFIG_PKG_USING_CBOX is not set +# CONFIG_PKG_USING_SNOWFLAKE is not set +# CONFIG_PKG_USING_HASH_MATCH is not set +# CONFIG_PKG_USING_FIRE_PID_CURVE is not set +# CONFIG_PKG_USING_ARMV7M_DWT_TOOL is not set +# CONFIG_PKG_USING_VOFA_PLUS is not set + +# +# system packages +# + +# +# enhanced kernel services +# +# CONFIG_PKG_USING_RT_MEMCPY_CM is not set +# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set +# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set + +# +# acceleration: Assembly language or algorithmic acceleration packages +# +# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set +# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set +# CONFIG_PKG_USING_QFPLIB_M3 is not set + +# +# CMSIS: ARM Cortex-M Microcontroller Software Interface Standard +# +# CONFIG_PKG_USING_CMSIS_5 is not set +# CONFIG_PKG_USING_CMSIS_RTOS1 is not set +# CONFIG_PKG_USING_CMSIS_RTOS2 is not set + +# +# Micrium: Micrium software products porting for RT-Thread +# +# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set +# CONFIG_PKG_USING_UCOSII_WRAPPER is not set +# CONFIG_PKG_USING_UC_CRC is not set +# CONFIG_PKG_USING_UC_CLK is not set +# CONFIG_PKG_USING_UC_COMMON is not set +# CONFIG_PKG_USING_UC_MODBUS is not set +# 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_PERF_COUNTER is not set +# CONFIG_PKG_USING_FLASHDB is not set +# CONFIG_PKG_USING_SQLITE is not set +# CONFIG_PKG_USING_RTI is not set +# CONFIG_PKG_USING_DFS_YAFFS is not set +# CONFIG_PKG_USING_LITTLEFS is not set +# CONFIG_PKG_USING_DFS_JFFS2 is not set +# CONFIG_PKG_USING_DFS_UFFS is not set +# CONFIG_PKG_USING_LWEXT4 is not set +# CONFIG_PKG_USING_THREAD_POOL is not set +# CONFIG_PKG_USING_ROBOTS is not set +# CONFIG_PKG_USING_EV is not set +# CONFIG_PKG_USING_SYSWATCH is not set +# CONFIG_PKG_USING_SYS_LOAD_MONITOR is not set +# CONFIG_PKG_USING_PLCCORE is not set +# CONFIG_PKG_USING_RAMDISK is not set +# CONFIG_PKG_USING_MININI is not set +# CONFIG_PKG_USING_QBOOT is not set +# CONFIG_PKG_USING_PPOOL is not set +# CONFIG_PKG_USING_OPENAMP is not set +# CONFIG_PKG_USING_LPM is not set +# CONFIG_PKG_USING_TLSF is not set +# CONFIG_PKG_USING_EVENT_RECORDER is not set +# 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_KMULTI_RTIMER is not set +# CONFIG_PKG_USING_TFDB is not set +# CONFIG_PKG_USING_QPC is not set + +# +# peripheral libraries and drivers +# +# CONFIG_PKG_USING_SENSORS_DRIVERS is not set +# CONFIG_PKG_USING_REALTEK_AMEBA is not set +# CONFIG_PKG_USING_SHT2X is not set +# CONFIG_PKG_USING_SHT3X is not set +# CONFIG_PKG_USING_ADT74XX is not set +# CONFIG_PKG_USING_AS7341 is not set +# CONFIG_PKG_USING_STM32_SDIO is not set +# CONFIG_PKG_USING_ESP_IDF is not set +# CONFIG_PKG_USING_ICM20608 is not set +# CONFIG_PKG_USING_BUTTON is not set +# CONFIG_PKG_USING_PCF8574 is not set +# CONFIG_PKG_USING_SX12XX is not set +# CONFIG_PKG_USING_SIGNAL_LED is not set +# CONFIG_PKG_USING_LEDBLINK is not set +# CONFIG_PKG_USING_LITTLED is not set +# CONFIG_PKG_USING_LKDGUI is not set +# CONFIG_PKG_USING_NRF5X_SDK is not set +# CONFIG_PKG_USING_NRFX is not set +# CONFIG_PKG_USING_WM_LIBRARIES is not set + +# +# Kendryte SDK +# +# CONFIG_PKG_USING_K210_SDK is not set +# CONFIG_PKG_USING_KENDRYTE_SDK is not set +# CONFIG_PKG_USING_INFRARED is not set +# CONFIG_PKG_USING_MULTI_INFRARED is not set +# CONFIG_PKG_USING_AGILE_BUTTON is not set +# CONFIG_PKG_USING_AGILE_LED is not set +# CONFIG_PKG_USING_AT24CXX is not set +# CONFIG_PKG_USING_MOTIONDRIVER2RTT is not set +# CONFIG_PKG_USING_AD7746 is not set +# CONFIG_PKG_USING_PCA9685 is not set +# CONFIG_PKG_USING_I2C_TOOLS is not set +# CONFIG_PKG_USING_NRF24L01 is not set +# CONFIG_PKG_USING_TOUCH_DRIVERS is not set +# CONFIG_PKG_USING_MAX17048 is not set +# CONFIG_PKG_USING_RPLIDAR is not set +# CONFIG_PKG_USING_AS608 is not set +# CONFIG_PKG_USING_RC522 is not set +# CONFIG_PKG_USING_WS2812B is not set +# CONFIG_PKG_USING_EMBARC_BSP is not set +# CONFIG_PKG_USING_EXTERN_RTC_DRIVERS is not set +# CONFIG_PKG_USING_MULTI_RTIMER is not set +# CONFIG_PKG_USING_MAX7219 is not set +# CONFIG_PKG_USING_BEEP is not set +# CONFIG_PKG_USING_EASYBLINK is not set +# CONFIG_PKG_USING_PMS_SERIES is not set +# CONFIG_PKG_USING_NUCLEI_SDK is not set +# CONFIG_PKG_USING_CAN_YMODEM is not set +# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set +# CONFIG_PKG_USING_QLED is not set +# CONFIG_PKG_USING_PAJ7620 is not set +# CONFIG_PKG_USING_AGILE_CONSOLE is not set +# CONFIG_PKG_USING_LD3320 is not set +# CONFIG_PKG_USING_WK2124 is not set +# CONFIG_PKG_USING_LY68L6400 is not set +# CONFIG_PKG_USING_DM9051 is not set +# CONFIG_PKG_USING_SSD1306 is not set +# CONFIG_PKG_USING_QKEY is not set +# CONFIG_PKG_USING_RS485 is not set +# CONFIG_PKG_USING_RS232 is not set +# CONFIG_PKG_USING_NES is not set +# CONFIG_PKG_USING_VIRTUAL_SENSOR is not set +# CONFIG_PKG_USING_VDEVICE is not set +# CONFIG_PKG_USING_SGM706 is not set +# CONFIG_PKG_USING_STM32WB55_SDK is not set +# CONFIG_PKG_USING_RDA58XX is not set +# CONFIG_PKG_USING_LIBNFC is not set +# CONFIG_PKG_USING_MFOC is not set +# CONFIG_PKG_USING_TMC51XX is not set +# CONFIG_PKG_USING_TCA9534 is not set +# CONFIG_PKG_USING_KOBUKI is not set +# CONFIG_PKG_USING_ROSSERIAL is not set +# CONFIG_PKG_USING_MICRO_ROS is not set +# CONFIG_PKG_USING_MCP23008 is not set +# CONFIG_PKG_USING_BLUETRUM_SDK is not set +# CONFIG_PKG_USING_MISAKA_AT24CXX is not set +# CONFIG_PKG_USING_MISAKA_RGB_BLING is not set +# CONFIG_PKG_USING_LORA_MODEM_DRIVER is not set +# CONFIG_PKG_USING_BL_MCU_SDK is not set +# CONFIG_PKG_USING_SOFT_SERIAL is not set +# CONFIG_PKG_USING_MB85RS16 is not set +# CONFIG_PKG_USING_CW2015 is not set +# CONFIG_PKG_USING_RFM300 is not set +# CONFIG_PKG_USING_IO_INPUT_FILTER is not set +# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set + +# +# AI packages +# +# CONFIG_PKG_USING_LIBANN is not set +# CONFIG_PKG_USING_NNOM is not set +# CONFIG_PKG_USING_ONNX_BACKEND is not set +# CONFIG_PKG_USING_ONNX_PARSER is not set +# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set +# CONFIG_PKG_USING_ELAPACK is not set +# CONFIG_PKG_USING_ULAPACK is not set +# CONFIG_PKG_USING_QUEST is not set +# CONFIG_PKG_USING_NAXOS is not set + +# +# miscellaneous packages +# + +# +# project laboratory +# + +# +# samples: kernel and components samples +# +# CONFIG_PKG_USING_KERNEL_SAMPLES is not set +# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set +# CONFIG_PKG_USING_NETWORK_SAMPLES is not set +# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set + +# +# entertainment: terminal games and other interesting software packages +# +# CONFIG_PKG_USING_CMATRIX is not set +# CONFIG_PKG_USING_SL is not set +# CONFIG_PKG_USING_CAL is not set +# CONFIG_PKG_USING_ACLOCK is not set +# CONFIG_PKG_USING_THREES is not set +# CONFIG_PKG_USING_2048 is not set +# CONFIG_PKG_USING_SNAKE is not set +# CONFIG_PKG_USING_TETRIS is not set +# CONFIG_PKG_USING_DONUT is not set +# CONFIG_PKG_USING_COWSAY is not set +# CONFIG_PKG_USING_LIBCSV is not set +# CONFIG_PKG_USING_OPTPARSE is not set +# CONFIG_PKG_USING_FASTLZ is not set +# CONFIG_PKG_USING_MINILZO is not set +# CONFIG_PKG_USING_QUICKLZ is not set +# CONFIG_PKG_USING_LZMA is not set +# CONFIG_PKG_USING_MULTIBUTTON is not set +# CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set +# CONFIG_PKG_USING_CANFESTIVAL is not set +# CONFIG_PKG_USING_ZLIB is not set +# CONFIG_PKG_USING_MINIZIP is not set +# CONFIG_PKG_USING_HEATSHRINK is not set +# CONFIG_PKG_USING_DSTR is not set +# CONFIG_PKG_USING_TINYFRAME is not set +# CONFIG_PKG_USING_KENDRYTE_DEMO is not set +# CONFIG_PKG_USING_DIGITALCTRL is not set +# CONFIG_PKG_USING_UPACKER is not set +# CONFIG_PKG_USING_UPARAM is not set +# CONFIG_PKG_USING_HELLO is not set +# CONFIG_PKG_USING_VI is not set +# CONFIG_PKG_USING_KI is not set +# CONFIG_PKG_USING_ARMv7M_DWT is not set +# CONFIG_PKG_USING_UKAL is not set +# CONFIG_PKG_USING_CRCLIB is not set +# CONFIG_PKG_USING_LWGPS is not set +# CONFIG_PKG_USING_STATE_MACHINE is not set +# CONFIG_PKG_USING_DESIGN_PATTERN is not set +# CONFIG_PKG_USING_CONTROLLER is not set +# CONFIG_PKG_USING_PHASE_LOCKED_LOOP is not set +# CONFIG_PKG_USING_MFBD is not set +# CONFIG_PKG_USING_SLCAN2RTT is not set +# CONFIG_PKG_USING_SOEM is not set +# CONFIG_PKG_USING_QPARAM is not set + +# +# Arduino libraries +# +# CONFIG_PKG_USING_RTDUINO is not set + +# +# Sensor libraries +# +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set +# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set +# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set +# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set + +# +# Display libraries +# +# CONFIG_PKG_USING_ARDUINO_U8G2 is not set + +# +# Timing libraries +# +# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set + +# +# Project libraries +# +# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set +# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set +CONFIG_BOARD_allwinnerf133=y +CONFIG_ENABLE_FPU=y +# CONFIG_RT_USING_USERSPACE_32BIT_LIMIT is not set +CONFIG___STACKSIZE__=16384 + +# +# General Drivers Configuration +# +CONFIG_BSP_USING_M7=y + +# +# General Purpose UARTs +# +CONFIG_BSP_USING_UART0=y +CONFIG_UART0_TX_USING_GPIOE2=y +# CONFIG_UART0_TX_USING_GPIOF2 is not set +CONFIG_UART0_RX_USING_GPIOE3=y +# CONFIG_UART0_RX_USING_GPIOF4 is not set +# CONFIG_BSP_USING_UART1 is not set +# CONFIG_BSP_USING_UART2 is not set +# CONFIG_BSP_USING_UART3 is not set +# CONFIG_BSP_USING_UART4 is not set +# CONFIG_BSP_USING_UART5 is not set +# CONFIG_BSP_USING_WDT is not set +# CONFIG_BSP_USING_RTC is not set +# CONFIG_BSP_USING_I2C is not set +# CONFIG_BSP_USING_TOUCH is not set +# CONFIG_BSP_USING_SPI is not set +# CONFIG_BSP_USING_PWM is not set +CONFIG_BSP_USING_SDMMC=y +CONFIG_SD_CARD_CHECK=y +CONFIG_BSP_USING_FS=y +# CONFIG_BSP_USING_LCD is not set + +# +# Board extended module Drivers +# +# CONFIG_BSP_USING_RW007 is not set +CONFIG_RT_USING_SUNXI_HAL=y + +# +# UART Devices +# +# CONFIG_DRIVERS_UART is not set + +# +# CCMU Devices +# +CONFIG_DRIVERS_CCMU=y +# CONFIG_DRIVERS_SUNXI_CLK is not set +CONFIG_DRIVERS_SUNXI_CCU=y +# CONFIG_HAL_TEST_CCU is not set + +# +# DMA Devices +# +CONFIG_DRIVERS_DMA=y +# CONFIG_HAL_TEST_DMA is not set + +# +# GPIO Devices +# +CONFIG_DRIVERS_GPIO=y +# CONFIG_HAL_TEST_GPIO is not set + +# +# Video support for sunxi +# +CONFIG_DISP2_SUNXI=y +CONFIG_SUNXI_DISP2_FB_DISABLE_ROTATE=y +# CONFIG_SUNXI_DISP2_FB_ROTATION_SUPPORT is not set +# CONFIG_HAL_TEST_DISP is not set +# CONFIG_FPGA_V7_PLATFORM is not set +# CONFIG_SUNXI_DISP2_FB_DECOMPRESS_LZMA is not set +# CONFIG_HDMI_DISP2_SUNXI is not set +# CONFIG_HDMI2_DISP2_SUNXI is not set +# CONFIG_HDMI_EP952_DISP2_SUNXI is not set +# CONFIG_TV_DISP2_SUNXI is not set +# CONFIG_VDPO_DISP2_SUNXI is not set +# CONFIG_EDP_DISP2_SUNXI is not set +# CONFIG_DISP2_SUNXI_BOOT_COLORBAR is not set + +# +# LCD panels select +# +# CONFIG_LCD_SUPPORT_GG1P4062UTSW is not set +# CONFIG_LCD_SUPPORT_DX0960BE40A1 is not set +# CONFIG_LCD_SUPPORT_TFT720X1280 is not set +# CONFIG_LCD_SUPPORT_FD055HD003S is not set +CONFIG_LCD_SUPPORT_HE0801A068=y +# CONFIG_LCD_SUPPORT_ILI9341 is not set +# CONFIG_LCD_SUPPORT_LH219WQ1 is not set +# CONFIG_LCD_SUPPORT_LS029B3SX02 is not set +# CONFIG_LCD_SUPPORT_LT070ME05000 is not set +# CONFIG_LCD_SUPPORT_S6D7AA0X01 is not set +# CONFIG_LCD_SUPPORT_T27P06 is not set +# CONFIG_LCD_SUPPORT_TFT720_1280 is not set +# CONFIG_LCD_SUPPORT_TFT08006 is not set +# CONFIG_LCD_SUPPORT_TFTRGB is not set +# CONFIG_LCD_SUPPORT_WTQ05027D01 is not set +# CONFIG_LCD_SUPPORT_H245QBN02 is not set +# CONFIG_LCD_SUPPORT_ST7789V is not set +# CONFIG_LCD_SUPPORT_ST7796S is not set +# CONFIG_LCD_SUPPORT_ST7701S is not set +# CONFIG_LCD_SUPPORT_T30P106 is not set +# CONFIG_LCD_SUPPORT_TO20T20000 is not set +# CONFIG_LCD_SUPPORT_FRD450H40014 is not set +# CONFIG_LCD_SUPPORT_S2003T46G is not set +CONFIG_LCD_SUPPORT_WILLIAMLCD=y +CONFIG_LCD_SUPPORT_LQ101R1SX03=y +CONFIG_LCD_SUPPORT_INET_DSI_PANEL=y +# CONFIG_LCD_SUPPORT_WTL096601G03 is not set +# CONFIG_LCD_SUPPORT_RT13QV005D is not set +# CONFIG_LCD_SUPPORT_ST7789V_CPU is not set +# CONFIG_LCD_SUPPORT_VVX07H005A10 is not set + +# +# Display engine feature select +# +# CONFIG_DISP2_SUNXI_SUPPORT_SMBL is not set +CONFIG_DISP2_SUNXI_SUPPORT_ENAHNCE=y + +# +# Soc and board select +# + +# +# Board Select +# +# CONFIG_V459_PERF1 is not set +# CONFIG_F133_FPGA is not set +# CONFIG_VVX07H005A10_MIPI is not set +# CONFIG_TFT08006_MIPI is not set +# CONFIG_TFT_RGB is not set +# CONFIG_HE0801A068_MIPI is not set +# CONFIG_DEFAULT_LVDS is not set + +# +# Soc Select +# +# CONFIG_ARCH_SUN8IW19 is not set +# CONFIG_ARCH_SUN20IW1 is not set + +# +# SDMMC Devices +# +CONFIG_DRIVERS_SDMMC=y +CONFIG_USE_SD=y +CONFIG_USE_SDIO=y +# CONFIG_USE_MMC is not set +CONFIG_DETECT_CARD=y +CONFIG_SDC_DMA_USED=y +CONFIG_SDIO_IRQ_SUPPORT=y +# CONFIG_SD_TEST is not set +CONFIG_SDC_DMA_BUF_SIZE=64 +CONFIG_DRIVERS_SDC_CDPIN_PRESENT_VAL=0 + +# +# SPI Devices +# +CONFIG_DRIVERS_SPI=y +# CONFIG_HAL_TEST_SPI is not set + +# +# TWI Devices +# +CONFIG_DRIVERS_TWI=y +# CONFIG_HAL_TEST_TWI is not set + +# +# G2D Devices +# +CONFIG_DRIVERS_G2D=y +# CONFIG_HAL_TEST_G2D is not set +# CONFIG_DRIVERS_USB is not set + +# +# CE Devices +# +CONFIG_DRIVERS_CE=y +# CONFIG_HAL_TEST_CE is not set + +# +# EFUSE Devices +# +CONFIG_DRIVERS_EFUSE=y +# CONFIG_HAL_TEST_EFUSE is not set diff --git a/bsp/allwinner/d1s/.gitignore b/bsp/allwinner/d1s/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..23aecdf8a8370be4ed21881f871e637d2cacce0b --- /dev/null +++ b/bsp/allwinner/d1s/.gitignore @@ -0,0 +1,11 @@ +__pycache__/ +*.bin +*.elf +*.map +build/ +.sconsign.dblite +cconfig.h +.vscode/ +rtconfig.pyc +*.old +sdcard.bat diff --git a/bsp/allwinner/d1s/Kconfig b/bsp/allwinner/d1s/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..3512de04b33d2c5544fe957b02acd324b620c87c --- /dev/null +++ b/bsp/allwinner/d1s/Kconfig @@ -0,0 +1,47 @@ +mainmenu "RT-Thread Project Configuration" + +config BSP_DIR + string + option env="BSP_ROOT" + default "." + +config RTT_DIR + string + option env="RTT_ROOT" + default "../../.." + +config PKGS_DIR + string + option env="PKGS_ROOT" + default "packages" + +source "$RTT_DIR/Kconfig" +source "$PKGS_DIR/Kconfig" + +config BOARD_allwinnerf133 + bool + select ARCH_RISCV64 + select RT_USING_COMPONENTS_INIT + select RT_USING_USER_MAIN + select RT_USING_CACHE + select ARCH_MM_MMU + default y + +config RT_USING_USERSPACE + bool + default y + +config ENABLE_FPU + bool "Enable FPU" + default y + +config RT_USING_USERSPACE_32BIT_LIMIT + bool "Enable userspace 32bit limit" + default n + +config __STACKSIZE__ + int "stack size for interrupt" + default 4096 + +source "../libraries/drivers/Kconfig" +source "../libraries/Kconfig" diff --git a/bsp/allwinner/d1s/README.md b/bsp/allwinner/d1s/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b70a0e590300b5aa4b4b42915c7873aca63a05fa --- /dev/null +++ b/bsp/allwinner/d1s/README.md @@ -0,0 +1,331 @@ +# 基于柿饼M7(F133)运行 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驱动。 + +![1662705678296](figures/fel_driver.png) + +#### 连接串口工具 + +打开 MobaXterm 终端工具,并连接到对应的端口,波特率为:500000。 + +> 注意:如果系统没有固件的话,不会有任何输出,是正常现象。 + +1662708288766 + +#### 制作系统固件 + +参照 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 分布示意图 + +![](figures/ddr_partition.png) + +## F133-EMMC 分区示意图 + +![](figures/emmc_partition.png) + +## 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` 配置如图: + +![](figures/lwip.png) + +--- + +Q:在 wifi join AP 热点之后,无法执行用户态程序,提示 **command not found.** + +A:原因:sys_work 线程出现满栈,**RT_SYSTEM_WORKQUEUE_STACKSIZE** 栈大小增大至 4k 后解决。 + +![](figures/user_app.png) + +--- + +Q:在 **EMMC** 初始化分区时遇到了卡死情况 + +![](figures/error_name.png) + +A:原因是软件包 **partition-v1.0.1/partition.h** 中 struct rt_partition 结构体成员 name 问题,改成 char name[8] 即可 + +--- + +Q:开机后,出现了 **mount** 失败的错误 + +![](figures/mount.png) + +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/SConscript b/bsp/allwinner/d1s/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..c7ef7659ecea92b1dd9b71a97736a8552ee02551 --- /dev/null +++ b/bsp/allwinner/d1s/SConscript @@ -0,0 +1,14 @@ +# for module compiling +import os +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/d1s/SConstruct b/bsp/allwinner/d1s/SConstruct new file mode 100644 index 0000000000000000000000000000000000000000..0b4b6b05fb6ae1a6228a805253027c21737a9723 --- /dev/null +++ b/bsp/allwinner/d1s/SConstruct @@ -0,0 +1,101 @@ +import os +import sys +import rtconfig +import platform +import subprocess +import uuid + +from rtconfig import RTT_ROOT +import sys + +sys.path = sys.path + [os.path.join(RTT_ROOT, 'tools')] +from building import * + +TARGET = 'rtthread.' + rtconfig.TARGET_EXT + +DefaultEnvironment(tools=[]) +env = Environment(tools = ['mingw'], + AS = rtconfig.AS, ASFLAGS = rtconfig.AFLAGS, + CC = rtconfig.CC, CCFLAGS = rtconfig.CFLAGS, + CXX = rtconfig.CXX, CXXFLAGS = rtconfig.CXXFLAGS, + AR = rtconfig.AR, ARFLAGS = '-rc', + LINK = rtconfig.LINK, LINKFLAGS = rtconfig.LFLAGS) +env.PrependENVPath('PATH', rtconfig.EXEC_PATH) +env['ASCOM'] = env['ASPPCOM'] + +Export('RTT_ROOT') +Export('rtconfig') + +rtconfig.CPU='c906' +rtconfig.VENDOR="t-head" +rtconfig.ARCH='risc-v' + +SDK_ROOT = os.path.abspath('../') + +if os.path.exists(SDK_ROOT + '/libraries'): + libraries_path_prefix = SDK_ROOT + '/libraries' +else: + libraries_path_prefix = os.path.dirname(SDK_ROOT) + '/libraries' + +SDK_LIB = libraries_path_prefix +Export('SDK_LIB') + +# prepare building environment +objs = PrepareBuilding(env, RTT_ROOT, has_libcpu = False) + +# set spawn +def ourspawn(sh, escape, cmd, args, e): + filename = str(uuid.uuid4()) + newargs = ' '.join(args[1:]) + cmdline = cmd + " " + newargs + if (len(cmdline) > 16 * 1024): + f = open(filename, 'w') + f.write(' '.join(args[1:]).replace('\\', '/')) + f.close() + # exec + cmdline = cmd + " @" + filename + proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, shell = False, env = e) + data, err = proc.communicate() + rv = proc.wait() + def res_output(_output, _s): + if len(_s): + if isinstance(_s, str): + _output(_s) + elif isinstance(_s, bytes): + _output(str(_s, 'UTF-8')) + else: + _output(str(_s)) + res_output(sys.stderr.write, err) + res_output(sys.stdout.write, data) + if os.path.isfile(filename): + os.remove(filename) + return rv + +if platform.system() == 'Windows': + env['SPAWN'] = ourspawn + +hal_library = 'sunxi-hal' +rtconfig.BSP_LIBRARY_TYPE = hal_library + +# include libraries +objs.extend(SConscript(os.path.join(libraries_path_prefix, hal_library, 'SConscript'))) + +# include drivers +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'drivers', 'SConscript'))) + +# include libos +objs.extend(SConscript(os.path.join(libraries_path_prefix, 'libos', 'SConscript'))) + +if rtconfig.PLATFORM == 'gcc': + env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS -Wl,--start-group $_LIBFLAGS -Wl,--end-group' + +stack_size = 4096 + +stack_lds = open('link_stacksize.lds', 'w') +if GetDepend('__STACKSIZE__'): stack_size = GetDepend('__STACKSIZE__') +stack_lds.write('__STACKSIZE__ = %d;' % stack_size) +stack_lds.close() + +# make a building +DoBuilding(TARGET, objs) diff --git a/bsp/allwinner/d1s/applications/SConscript b/bsp/allwinner/d1s/applications/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..743ad207ab0cf9ab677d0e7d53f7bd247f66867e --- /dev/null +++ b/bsp/allwinner/d1s/applications/SConscript @@ -0,0 +1,9 @@ +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') + Glob('*.cpp') +CPPPATH = [cwd] + +group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/allwinner/d1s/applications/main.c b/bsp/allwinner/d1s/applications/main.c new file mode 100644 index 0000000000000000000000000000000000000000..902db7082dea076f1c4c81e54fd65c5632fc4e18 --- /dev/null +++ b/bsp/allwinner/d1s/applications/main.c @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + */ + +#include +#include + +int main(void) +{ + printf("Hello RISC-V\n"); + +#ifdef BSP_USING_LCD + extern int rt_hw_lcd_init(void); + rt_hw_lcd_init(); +#endif // BSP_USING_LCD + + return 0; +} diff --git a/bsp/allwinner/d1s/applications/mnt.c b/bsp/allwinner/d1s/applications/mnt.c new file mode 100644 index 0000000000000000000000000000000000000000..4c58904dcd87d58e41c30897e4668cf16b0faa2e --- /dev/null +++ b/bsp/allwinner/d1s/applications/mnt.c @@ -0,0 +1,135 @@ +/* + * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd + * All rights reserved. + * Change Logs: + * Date Author Notes + * 2018-02-08 RT-Thread the first version + */ + +#include +#include +#include +#include "drv_pin.h" + +#ifdef BSP_USING_SDMMC +#include "drv_sdmmc.h" +#endif + +#ifdef RT_USING_FAL +#include "fal.h" +#endif + +#ifdef RT_USING_DFS +#include + +#define SD_CHECK_PIN GET_PIN(GPIO_PORT_G, GPIO_PIN_3) + +int sd_check_thread_entry(void *p) +{ + rt_uint8_t old_sd_check = 0; + + /* 挂载sd0分区 */ + if (RT_NULL != rt_device_find("sd0p0")) + { + if (dfs_mount("sd0p0", "/", "elm", 0, 0) == 0) + { + rt_kprintf("Mount \"sd0p0\" on \"/\" success\n"); + } + else + { + rt_kprintf("Mount \"sd0p0\" on \"/\" fail\n"); + return -1; + } + + /* 挂载sd1分区 */ + if (RT_NULL != rt_device_find("sd0p1")) + { + if (access("/data", 0) != 0) + { + mkdir("/data", 0777); + } + + if (dfs_mount("sd0p1", "/data", "elm", 0, 0) == 0) + { + rt_kprintf("Mount \"sd0p1\" on \"/data\" success\n"); + } + else + { + rt_kprintf("Mount \"sd0p1\" on \"/data\" fail\n"); + } + } + + while (1) + { +#ifdef SD_CARD_CHECK + if (!rt_pin_read(SD_CHECK_PIN) && !old_sd_check) // mount +#else + if (!old_sd_check) // mount +#endif + { + sd_mmc1_init(); + /* 挂载sd2分区 */ + if (RT_NULL != rt_device_find("sd1p0")) + { + + if (access("/mnt", 0) != 0) + { + mkdir("/mnt", 0777); + } + + if (dfs_mount("sd1p0", "/mnt", "elm", 0, 0) == 0) + { + rt_kprintf("Mount \"sd1p0\" on \"/mnt\" success\n"); + } + else + { + rt_kprintf("Mount \"sd1p0\" on \"/mnt\" fail\n"); + } + } + old_sd_check = 1; + } +#ifdef SD_CARD_CHECK + else if (rt_pin_read(SD_CHECK_PIN) && old_sd_check) // unmount + { + if (RT_NULL != rt_device_find("sd1p0")) + { + + if (dfs_unmount("/mnt") == 0) + { + rt_kprintf("unMount \"sd1p0\" on \"/mnt\" success\n"); + } + else + { + rt_kprintf("unMount \"sd1p0\" on \"/mnt\" fail\n"); + } + } + sd_mmc1_deinit(); + old_sd_check = 0; + } +#endif + rt_thread_delay(RT_TICK_PER_SECOND); + } + } + return 0; +} + +int mnt_init(void) +{ +#ifdef RT_USING_FAL + { + rt_thread_t thread = NULL; + + rt_pin_mode(SD_CHECK_PIN, PIN_MODE_INPUT_PULLUP); + + thread = rt_thread_create("sd", sd_check_thread_entry, NULL, 4096, 21, 10); + if (thread == NULL) + { + return -1; + } + rt_thread_startup(thread); + } +#endif + return 0; +} +INIT_ENV_EXPORT(mnt_init); +#endif diff --git a/bsp/allwinner/d1s/board/SConscript b/bsp/allwinner/d1s/board/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..faea9c1bd9bd1920667d46d5b0b9c1b7b68a0726 --- /dev/null +++ b/bsp/allwinner/d1s/board/SConscript @@ -0,0 +1,19 @@ +# RT-Thread building script for component + +from building import * + +cwd = GetCurrentDir() +src = Glob('*.c') +CPPPATH = [cwd] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +objs = [group] + +list = os.listdir(cwd) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/d1s/board/board.c b/bsp/allwinner/d1s/board/board.c new file mode 100644 index 0000000000000000000000000000000000000000..0ba413b2359f78e3d7a4864f40173a844b0acca5 --- /dev/null +++ b/bsp/allwinner/d1s/board/board.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-30 lizhirui first version + */ + +#include +#include +#include + +#include "board.h" +#include "tick.h" + +#include "drv_uart.h" +#include "encoding.h" +#include "stack.h" +#include "sbi.h" +#include "riscv.h" +#include "stack.h" + +#include "hal_gpio.h" +#include "hal_clk.h" +#include "hal_uart.h" +#include "hal_dma.h" + +#ifdef RT_USING_USERSPACE +#include "riscv_mmu.h" +#include "mmu.h" +#include "page.h" +#include "lwp_arch.h" + +// 这个结构体描述了buddy system的页分配范围 +rt_region_t init_page_region = + { + (rt_size_t)RT_HW_PAGE_START, + (rt_size_t)RT_HW_PAGE_END}; + +// 内核页表 +volatile rt_size_t MMUTable[__SIZE(VPN2_BIT)] __attribute__((aligned(4 * 1024))); +rt_mmu_info mmu_info; + +#endif + +// 初始化BSS节区 +void init_bss(void) +{ + unsigned int *dst; + + dst = &__bss_start; + while (dst < &__bss_end) + { + *dst++ = 0; + } +} + +static void __rt_assert_handler(const char *ex_string, const char *func, rt_size_t line) +{ + rt_kprintf("(%s) assertion failed at function:%s, line number:%d \n", ex_string, func, line); + asm volatile("ebreak" :: + : "memory"); +} + +// BSP的C入口 +void primary_cpu_entry(void) +{ + extern void entry(void); + + // 初始化BSS + init_bss(); + // 关中断 + rt_hw_interrupt_disable(); + rt_assert_set_hook(__rt_assert_handler); + // 启动RT-Thread Smart内核 + entry(); +} + +// 这个初始化程序由内核主动调用,此时调度器还未启动,因此在此不能使用依赖线程上下文的函数 +void rt_hw_board_init(void) +{ +#ifdef RT_USING_USERSPACE + rt_page_init(init_page_region); + rt_hw_mmu_map_init(&mmu_info, (void *)USER_VADDR_START, USER_VADDR_TOP - USER_VADDR_START, (rt_size_t *)MMUTable, 0); + rt_hw_mmu_kernel_map_init(&mmu_info, 0x00000000UL, USER_VADDR_START - 1); + // 将低1GB MMIO区域设置为无Cache与Strong Order访存模式 + MMUTable[0] &= ~PTE_CACHE; + MMUTable[0] &= ~PTE_SHARE; + MMUTable[0] |= PTE_SO; + rt_hw_mmu_switch((void *)MMUTable); +#endif + /* initalize interrupt */ + rt_hw_interrupt_init(); +#ifdef RT_USING_HEAP + rt_kprintf("heap: [0x%08x - 0x%08x]\n", (rt_ubase_t)RT_HW_HEAP_BEGIN, (rt_ubase_t)RT_HW_HEAP_END); + /* initialize memory system */ + rt_system_heap_init(RT_HW_HEAP_BEGIN, RT_HW_HEAP_END); +#endif + /* init hal hardware */ + hal_clock_init(); + hal_gpio_init(); + hal_dma_init(); + + /* init rtthread hardware */ + rt_hw_uart_init(); + rt_hw_tick_init(); + +#ifdef RT_USING_CONSOLE + /* set console device */ + rt_console_set_device(RT_CONSOLE_DEVICE_NAME); +#endif /* RT_USING_CONSOLE */ + +#ifdef RT_USING_COMPONENTS_INIT + rt_components_board_init(); +#endif +} diff --git a/bsp/allwinner/d1s/board/board.h b/bsp/allwinner/d1s/board/board.h new file mode 100644 index 0000000000000000000000000000000000000000..571b3163fa273afdd6c5ac352bef1e27dafe1e59 --- /dev/null +++ b/bsp/allwinner/d1s/board/board.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-01-30 lizhirui first version + */ + +#ifndef BOARD_H__ +#define BOARD_H__ + +#include + +extern unsigned int __bss_start; +extern unsigned int __bss_end; + +#define RAM_SIZE (64 * 1024 * 1024) +#define RAM_BASE (0x40000000) +#define RAM_END (RAM_BASE + RAM_SIZE) + +#define RT_HW_HEAP_BEGIN ((void *)&__bss_end) +#define RT_HW_HEAP_END ((void *)(((rt_size_t)RT_HW_HEAP_BEGIN) + 16 * 1024 * 1024)) +#define RT_HW_PAGE_START RT_HW_HEAP_END +#define RT_HW_PAGE_END ((void *)(RAM_END)) + +void rt_hw_board_init(void); +void rt_init_user_mem(struct rt_thread *thread, const char *name, unsigned long *entry); + +#endif diff --git a/bsp/allwinner/d1s/figures/board.png b/bsp/allwinner/d1s/figures/board.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a465d5e862f97ef23b8d8ed621a1cc11f48121 Binary files /dev/null and b/bsp/allwinner/d1s/figures/board.png differ diff --git a/bsp/allwinner/d1s/figures/ddr_partition.png b/bsp/allwinner/d1s/figures/ddr_partition.png new file mode 100644 index 0000000000000000000000000000000000000000..adbe95fde813fe54571420e2369d5d727d03d7e3 Binary files /dev/null and b/bsp/allwinner/d1s/figures/ddr_partition.png differ diff --git a/bsp/allwinner/d1s/figures/emmc_partition.png b/bsp/allwinner/d1s/figures/emmc_partition.png new file mode 100644 index 0000000000000000000000000000000000000000..da13a6f00b3f32693ca0c9e8c5c88861d6c05d0a Binary files /dev/null and b/bsp/allwinner/d1s/figures/emmc_partition.png differ diff --git a/bsp/allwinner/d1s/figures/error_name.png b/bsp/allwinner/d1s/figures/error_name.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1679ad134f4b65c6bf77e487ed918830766592 Binary files /dev/null and b/bsp/allwinner/d1s/figures/error_name.png differ diff --git a/bsp/allwinner/d1s/figures/fel_driver.png b/bsp/allwinner/d1s/figures/fel_driver.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb24ac88757bde9687496f454444327ca8b8e4c Binary files /dev/null and b/bsp/allwinner/d1s/figures/fel_driver.png differ diff --git a/bsp/allwinner/d1s/figures/lwip.png b/bsp/allwinner/d1s/figures/lwip.png new file mode 100644 index 0000000000000000000000000000000000000000..319861988c321badb8350f2af53e6ca7540c9dda Binary files /dev/null and b/bsp/allwinner/d1s/figures/lwip.png differ diff --git a/bsp/allwinner/d1s/figures/mobaxterm.png b/bsp/allwinner/d1s/figures/mobaxterm.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4efd8c493e749e2ed1894c212575eac91e1eed Binary files /dev/null and b/bsp/allwinner/d1s/figures/mobaxterm.png differ diff --git a/bsp/allwinner/d1s/figures/mount.png b/bsp/allwinner/d1s/figures/mount.png new file mode 100644 index 0000000000000000000000000000000000000000..5ead2f2a12d553acc39779859c10e86a4dbf8e8e Binary files /dev/null and b/bsp/allwinner/d1s/figures/mount.png differ diff --git a/bsp/allwinner/d1s/figures/user_app.png b/bsp/allwinner/d1s/figures/user_app.png new file mode 100644 index 0000000000000000000000000000000000000000..a3926262da37ad7a1664ed306490f7286ee9439a Binary files /dev/null and b/bsp/allwinner/d1s/figures/user_app.png differ diff --git a/bsp/allwinner/d1s/link.lds b/bsp/allwinner/d1s/link.lds new file mode 100644 index 0000000000000000000000000000000000000000..912e63109e78072a34be92a98f4909a850a2ea35 --- /dev/null +++ b/bsp/allwinner/d1s/link.lds @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2006-2020, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2020/12/12 bernard The first version + */ + +INCLUDE "link_stacksize.lds" + +OUTPUT_ARCH( "riscv" ) + +/* + * Memory layout: + * 0x10200000 - 0x10201000: Bootloader + * 0x10201000 - 0x10A00000: Kernel + * 0x10A00000 - 0x11200000: Heap + */ + +MEMORY +{ + SRAM : ORIGIN = 0x40400000, LENGTH = 60M +} + +ENTRY(_start) +SECTIONS +{ + . = 0x40400000 ; + + /* __STACKSIZE__ = 4096; */ + + .start : + { + *(.start); + } > SRAM + + . = ALIGN(8); + + .text : + { + *(.text) /* remaining code */ + *(.text.*) /* remaining code */ + *(.rodata) /* read-only data (constants) */ + *(.rodata*) + *(.glue_7) + *(.glue_7t) + *(.gnu.linkonce.t*) + + /* section information for finsh shell */ + . = ALIGN(8); + __fsymtab_start = .; + KEEP(*(FSymTab)) + __fsymtab_end = .; + . = ALIGN(8); + __vsymtab_start = .; + KEEP(*(VSymTab)) + __vsymtab_end = .; + . = ALIGN(8); + + /* section information for initial. */ + . = ALIGN(8); + __rt_init_start = .; + KEEP(*(SORT(.rti_fn*))) + __rt_init_end = .; + . = ALIGN(8); + + __rt_utest_tc_tab_start = .; + KEEP(*(UtestTcTab)) + __rt_utest_tc_tab_end = .; + + . = ALIGN(8); + _etext = .; + } > SRAM + + .eh_frame_hdr : + { + *(.eh_frame_hdr) + *(.eh_frame_entry) + } > SRAM + .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } > SRAM + + . = ALIGN(8); + + .data : + { + *(.data) + *(.data.*) + + *(.data1) + *(.data1.*) + + . = ALIGN(8); + PROVIDE( __global_pointer$ = . + 0x800 ); + + *(.sdata) + *(.sdata.*) + } > SRAM + + . = ALIGN(8); + .ctors : + { + PROVIDE(__ctors_start__ = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE(__ctors_end__ = .); + } > SRAM + + .dtors : + { + PROVIDE(__dtors_start__ = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE(__dtors_end__ = .); + } > SRAM + + /* stack for dual core */ + .stack : + { + . = ALIGN(64); + __stack_start__ = .; + + . += __STACKSIZE__; + __stack_cpu0 = .; + + . += __STACKSIZE__; + __stack_cpu1 = .; + } > SRAM + + . = ALIGN(8); + + .osdebug : + { + _osdebug_start = .; + . += 87K; + _osdebug_end = .; + } > SRAM + + . = ALIGN(8); + + .sbss : + { + __bss_start = .; + *(.sbss) + *(.sbss.*) + *(.dynsbss) + *(.scommon) + } > SRAM + + .bss : + { + *(.bss) + *(.bss.*) + *(.dynbss) + *(COMMON) + __bss_end = .; + } > SRAM + + _end = .; + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } +} diff --git a/bsp/allwinner/d1s/link_stacksize.lds b/bsp/allwinner/d1s/link_stacksize.lds new file mode 100644 index 0000000000000000000000000000000000000000..8685bc0f1c2d15f0a4bf11d75e743e5a61b16d95 --- /dev/null +++ b/bsp/allwinner/d1s/link_stacksize.lds @@ -0,0 +1 @@ +__STACKSIZE__ = 16384; \ No newline at end of file diff --git a/bsp/allwinner/d1s/mkimage b/bsp/allwinner/d1s/mkimage new file mode 100644 index 0000000000000000000000000000000000000000..e95ff2cfcbc4aa0fabab8cb5298c962442be313a Binary files /dev/null and b/bsp/allwinner/d1s/mkimage differ diff --git a/bsp/allwinner/d1s/mksdimg.sh b/bsp/allwinner/d1s/mksdimg.sh new file mode 100644 index 0000000000000000000000000000000000000000..e8fdc0adc32dcb4d37b762da98034c3c54fedd04 --- /dev/null +++ b/bsp/allwinner/d1s/mksdimg.sh @@ -0,0 +1,5 @@ +#/bin/sh +./mkimage -T sunxi_toc1 -d toc1.cfg sd.bin +# offset: 8K of spl,+48K of toc1 +#sudo dd if=boot0_sdcard_sun20iw1p1_d1s.bin of=/dev/sdb bs=1024 seek=8 +#sudo dd if=sd.bin of=/dev/sdb bs=1024 seek=56 diff --git a/bsp/allwinner/d1s/ports/SConscript b/bsp/allwinner/d1s/ports/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..ca95be14e2b891254901c1c1737c0784d9972abb --- /dev/null +++ b/bsp/allwinner/d1s/ports/SConscript @@ -0,0 +1,12 @@ +import os +from building import * + +objs = [] +cwd = GetCurrentDir() +list = os.listdir(cwd) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/d1s/ports/fal/SConscript b/bsp/allwinner/d1s/ports/fal/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..468abce8436f3cdd42c59baf44d04a14563722cd --- /dev/null +++ b/bsp/allwinner/d1s/ports/fal/SConscript @@ -0,0 +1,23 @@ + +from building import * +import rtconfig + +cwd = GetCurrentDir() + +src = [] + +src += Glob('*.c') +if not GetDepend('BSP_USING_NORFLASH'): + SrcRemove(src, ['fal_norflash_sfud_port.c']) + +CPPPATH = [cwd] +LOCAL_CCFLAGS = '' + +if rtconfig.CROSS_TOOL == 'gcc': + LOCAL_CCFLAGS += ' -std=c99' +elif rtconfig.CROSS_TOOL == 'keil': + LOCAL_CCFLAGS += ' --c99' + +group = DefineGroup('fal', src, depend = ['RT_USING_FAL'], CPPPATH = CPPPATH, LOCAL_CCFLAGS = LOCAL_CCFLAGS) + +Return('group') diff --git a/bsp/x86/applications/application.c b/bsp/allwinner/d1s/ports/fal/fal_cfg.h similarity index 36% rename from bsp/x86/applications/application.c rename to bsp/allwinner/d1s/ports/fal/fal_cfg.h index 8928e6357ecead779bf3a87a1c0298062614793a..d66e0d74b7d5819be5318f6e3b526d9d9b38c5d3 100644 --- a/bsp/x86/applications/application.c +++ b/bsp/allwinner/d1s/ports/fal/fal_cfg.h @@ -1,7 +1,7 @@ /* - * File : application.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team + * File : fal_cfg.h + * This file is part of FAL (Flash Abstraction Layer) package + * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,68 +19,33 @@ * * Change Logs: * Date Author Notes - * 2009-01-05 Bernard the first version + * 2018-05-17 armink the first version */ -#include +#ifndef _FAL_CFG_H_ +#define _FAL_CFG_H_ -#ifdef RT_USING_DFS -#include -#include -#include "floppy.h" -#ifdef RT_USING_MODULE -#include -#endif -extern int elm_init(void); -#endif +#include +#include -/* components initialization for simulator */ -void components_init(void) -{ -#ifdef RT_USING_DFS - rt_floppy_init(); - /* initialize the device file system */ - dfs_init(); +#define NOR_FLASH_DEV_NAME "norflash0" -#ifdef RT_USING_DFS_ELMFAT - /* initialize the elm chan FatFS file system*/ - elm_init(); -#endif - -#ifdef RT_USING_MODULE - rt_system_dlmodule_init(); -#endif -#endif -} -void rt_init_thread_entry(void *parameter) -{ - components_init(); - - /* File system Initialization */ -#ifdef RT_USING_DFS - { - -#ifdef RT_USING_DFS_ELMFAT - /* mount sd card fatfs as root directory */ - if (dfs_mount("floppy", "/", "elm", 0, 0) == 0) - rt_kprintf("fatfs initialized!\n"); - else - rt_kprintf("fatfs initialization failed!\n"); -#endif - } -#endif +/* ===================== Flash device Configuration ========================= */ +//extern const struct fal_flash_dev stm32f2_onchip_flash; +extern struct fal_flash_dev sd_card; +/* flash device table */ +#define FAL_FLASH_DEV_TABLE \ +{ \ + &sd_card, \ } - -int rt_application_init() -{ - rt_thread_t tid; - - tid = rt_thread_create("init", - rt_init_thread_entry, RT_NULL, - 2048, RT_THREAD_PRIORITY_MAX / 3, 20); - - if (tid != RT_NULL) - rt_thread_startup(tid); - - return 0; +/* ====================== Partition Configuration ========================== */ +#ifdef FAL_PART_HAS_TABLE_CFG +/* partition table */ +#define FAL_PART_TABLE \ +{ \ + {FAL_PART_MAGIC_WORD, "download", "sdcard0", 0x800000, 8*1024*1024, 0}, \ + {FAL_PART_MAGIC_WORD, "easyflash", "sdcard0", 0x1000000, 1*1024*1024, 0}, \ + {FAL_PART_MAGIC_WORD, "filesystem", "sdcard0", 0x1100000, 12*1024*1024, 0}, \ } +#endif /* FAL_PART_HAS_TABLE_CFG */ +#endif /* _FAL_CFG_H_ */ diff --git a/bsp/allwinner/d1s/ports/fal/fal_init.c b/bsp/allwinner/d1s/ports/fal/fal_init.c new file mode 100644 index 0000000000000000000000000000000000000000..3135a84f21d0927e478784e81bd74ac4df2ae717 --- /dev/null +++ b/bsp/allwinner/d1s/ports/fal/fal_init.c @@ -0,0 +1,8 @@ +#include +#include + +int fal_init_auto(void) +{ + return fal_init(); +} +INIT_COMPONENT_EXPORT(fal_init_auto); diff --git a/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c b/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c new file mode 100644 index 0000000000000000000000000000000000000000..23caccc8b268075b27f08455a2f9a9ee6b52fa4e --- /dev/null +++ b/bsp/allwinner/d1s/ports/fal/fal_norflash_sfud_port.c @@ -0,0 +1,65 @@ +/* + * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd + * All rights reserved. + * Change Logs: + * Date Author Notes + * 2018-01-26 RT-Thread the first version + */ + +#include +#ifdef RT_USING_FAL +#include + +#include +#include + +static int init(void); +static int read(long offset, uint8_t *buf, size_t size); +static int write(long offset, const uint8_t *buf, size_t size); +static int erase(long offset, size_t size); + +extern sfud_flash sfud_norflash0; +struct fal_flash_dev nor_flash0 = +{ + "norflash0", + 0, + 16 * 1024 * 1024, + 4096, + {init, read, write, erase} +}; + +static int read(long offset, uint8_t *buf, size_t size) +{ + sfud_read(&sfud_norflash0, nor_flash0.addr + offset, size, buf); + return size; +} + +static int write(long offset, const uint8_t *buf, size_t size) +{ + if (sfud_write(&sfud_norflash0, nor_flash0.addr + offset, size, buf) != SFUD_SUCCESS) + { + return -1; + } + + return size; +} + +static int erase(long offset, size_t size) +{ + if (sfud_erase(&sfud_norflash0, nor_flash0.addr + offset, size) != SFUD_SUCCESS) + { + return -1; + } + + return size; +} + +static int init(void) +{ + nor_flash0.len = sfud_norflash0.chip.capacity; + nor_flash0.blk_size = sfud_norflash0.chip.erase_gran; + + return 0; +} + +#endif diff --git a/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c b/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c new file mode 100644 index 0000000000000000000000000000000000000000..6b7c2b5d5ccbd153986d62fb04087b9ba8ec2d68 --- /dev/null +++ b/bsp/allwinner/d1s/ports/fal/fal_sd_sfud_port.c @@ -0,0 +1,100 @@ +/* + * File : fal_flash_sfud_port.c + * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd + * + * Change Logs: + * Date Author Notes + * 2018-01-26 armink the first version + */ + +#include +#include +#include +#include + +#ifdef BSP_USING_SDMMC +#include "drv_sdmmc.h" + +rt_device_t sd_dev; +#define SECTOR_SIZE 512 +static int init(void); +static int read(long offset, uint8_t *buf, size_t size); +static int write(long offset, const uint8_t *buf, size_t size); +static int erase(long offset, size_t size); + +struct fal_flash_dev sd_card = { + "sdcard0", /* name string match yml file */ + 0, + 128 * 1024 * 1024, + 512, + {init, read, write, erase} +}; + +static int read(long offset, uint8_t *buf, size_t size) +{ + rt_size_t sector_pos; + rt_size_t sector_offset; + rt_size_t remain_size = size; + rt_size_t req_size; + ALIGN(4) uint8_t buffer[SECTOR_SIZE]; + + while (remain_size) + { + sector_offset = offset & (SECTOR_SIZE - 1); //块内偏移 + sector_pos = offset / SECTOR_SIZE; //块位置 + rt_device_read(sd_dev, sector_pos, buffer, SECTOR_SIZE / 512); //读取一个块 + req_size = (SECTOR_SIZE - sector_offset) > remain_size ? remain_size : (SECTOR_SIZE - sector_offset); + memcpy(buf, buffer + sector_offset, req_size); + buf += req_size; + offset += req_size; + remain_size -= req_size; + } + + return size; +} + +static int write(long offset, const uint8_t *buf, size_t size) +{ + rt_size_t sector_pos; + rt_size_t sector_offset; + rt_size_t remain_size = size; + rt_size_t req_size; + ALIGN(4) uint8_t buffer[SECTOR_SIZE]; + + while (remain_size) + { + sector_offset = offset & (SECTOR_SIZE - 1); //块内偏移 + sector_pos = offset / SECTOR_SIZE; //块位置 + + rt_device_read(sd_dev, sector_pos, buffer, SECTOR_SIZE / 512); //读取一个块 + req_size = (SECTOR_SIZE - sector_offset) > remain_size ? remain_size : (SECTOR_SIZE - sector_offset); + memcpy(buffer + sector_offset, buf, req_size); + rt_device_write(sd_dev, sector_pos, buffer, SECTOR_SIZE / 512); //写回sd卡 + buf += req_size; + offset += req_size; + remain_size -= req_size; + } + + return size; +} + +static int erase(long offset, size_t size) +{ + return size; +} + +static int init(void) +{ + sd_dev = rt_device_find("sdmmc0"); + if (RT_NULL == sd_dev) + { + return -1; + } + rt_device_open(sd_dev, RT_DEVICE_OFLAG_RDWR); + struct dev_sdmmc *dev_sdmmc = (struct dev_sdmmc *)sd_dev->user_data; + sd_card.len = (size_t)dev_sdmmc->geometry.bytes_per_sector * dev_sdmmc->geometry.sector_count; + sd_card.blk_size = dev_sdmmc->geometry.bytes_per_sector; + + return 0; +} +#endif diff --git a/bsp/allwinner/d1s/ports/wifi/SConscript b/bsp/allwinner/d1s/ports/wifi/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..46e28a0fdde30561ff9aad2d32c7eb0e69707936 --- /dev/null +++ b/bsp/allwinner/d1s/ports/wifi/SConscript @@ -0,0 +1,11 @@ +from building import * +import rtconfig + +cwd = GetCurrentDir() + +src = Glob('*.c') + Glob('*.cpp') +CPPPATH = [cwd] + +group = DefineGroup('rw007', src, depend = ['PKG_USING_RW007'], CPPPATH = CPPPATH) + +Return('group') diff --git a/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c b/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c new file mode 100644 index 0000000000000000000000000000000000000000..7a825038407262488759a31c90686c4018a57e40 --- /dev/null +++ b/bsp/allwinner/d1s/ports/wifi/rw007_pin_port.c @@ -0,0 +1,129 @@ +/* + * COPYRIGHT (C) 2012-2022, Shanghai Real-Thread Technology Co., Ltd + * All rights reserved. + * Change Logs: + * Date Author Notes + * 2018-12-04 RT-Thread the first version + */ + +#include +#include +#include +#include +#include +#include + +#define DBG_ENABLE +#define DBG_SECTION_NAME "RW007_PORT" +#define DBG_LEVEL DBG_LOG +#include + +#define SPI_BUS_NAME "spi0" +#define SPI_DEV_NAME "spi01" +#define INT_BUSY_PIN GET_PIN(GPIO_PORT_G, GPIO_PIN_4) //PG4 +#define RESET_PIN GET_PIN(GPIO_PORT_G, GPIO_PIN_5) //PF4 + +#define RW007_WORKING_STATION_MODE + +extern void spi_wifi_isr(int vector); + +static void rw007_gpio_init(void) +{ + rt_pin_mode(RESET_PIN, PIN_MODE_OUTPUT); + rt_pin_mode(INT_BUSY_PIN, PIN_MODE_INPUT); + + rt_pin_write(RESET_PIN, PIN_LOW); + rt_thread_delay(rt_tick_from_millisecond(100)); + rt_pin_write(RESET_PIN, PIN_HIGH); + + while (!rt_pin_read(INT_BUSY_PIN)) + { + rt_thread_delay(5); + } + + rt_thread_delay(rt_tick_from_millisecond(200)); //Time-delay waiting device activated + rt_pin_mode(INT_BUSY_PIN, PIN_MODE_INPUT_PULLUP); +} + +static void _rw007_int(int argc, char *args[]) +{ + int v; + + v = atoi(args[1]); + + rt_pin_mode(RESET_PIN, PIN_MODE_OUTPUT); + rt_pin_write(RESET_PIN, v); +} +MSH_CMD_EXPORT_ALIAS(_rw007_int, _rw007_int, rw007 int pin); + +static void _rw007_reset(void) +{ + rt_pin_mode(RESET_PIN, PIN_MODE_OUTPUT); + rt_pin_write(RESET_PIN, PIN_LOW); + rt_thread_delay(rt_tick_from_millisecond(100)); + rt_pin_write(RESET_PIN, PIN_HIGH); +} +MSH_CMD_EXPORT_ALIAS(_rw007_reset, rw007_reset, rw007 reset); + +void wifi_init_thread_entry(void *p) +{ + char sn_version[32]; + + rw007_gpio_init(); + +#ifdef PKG_USING_DM9051 + extern int dm9051_auto_init(void); + dm9051_auto_init(); +#endif + + rt_hw_wifi_init(SPI_DEV_NAME); +#ifdef RW007_WORKING_STATION_MODE + rt_wlan_set_mode(RT_WLAN_DEVICE_STA_NAME, RT_WLAN_STATION); +#else + rt_wlan_set_mode(RT_WLAN_DEVICE_AP_NAME, RT_WLAN_AP); +#endif + + if (rw007_sn_get(sn_version) != RT_EOK) + { + LOG_E("rw007 get sn fail !!!"); + } + LOG_I("rw007 sn: [%s]", sn_version); + + if (rw007_version_get(sn_version) != RT_EOK) + { + LOG_E("rw007 get version fail !!!"); + } + LOG_I("rw007 ver: [%s]", sn_version); + + rt_thread_mdelay(1000); +} + +int rt_rw007_init(void) +{ + rt_thread_t thread = NULL; + + thread = rt_thread_create("wifi_init", wifi_init_thread_entry, NULL, 4096, 15, 10); + if (thread == NULL) + { + return -1; + } + + return rt_thread_startup(thread); +} +#ifdef BSP_USING_SPI0 +INIT_COMPONENT_EXPORT(rt_rw007_init); +// MSH_CMD_EXPORT_ALIAS(rt_rw007_init, rw007_init, rw007 init); +#endif + +static void int_wifi_irq(void *p) +{ + ((void)p); + spi_wifi_isr(0); +} + +void spi_wifi_hw_init(void) +{ + rt_pin_mode(INT_BUSY_PIN, PIN_MODE_INPUT_PULLUP); + rt_pin_attach_irq(INT_BUSY_PIN, PIN_IRQ_MODE_FALLING, int_wifi_irq, 0); + rt_pin_irq_enable(INT_BUSY_PIN, RT_TRUE); +} diff --git a/bsp/allwinner/d1s/rtconfig.h b/bsp/allwinner/d1s/rtconfig.h new file mode 100644 index 0000000000000000000000000000000000000000..f309245c7c1799f1b2d01d6cb221a524e37dcc23 --- /dev/null +++ b/bsp/allwinner/d1s/rtconfig.h @@ -0,0 +1,433 @@ +#ifndef RT_CONFIG_H__ +#define RT_CONFIG_H__ + +/* Automatically generated file; DO NOT EDIT. */ +/* RT-Thread Project Configuration */ + +/* RT-Thread Kernel */ + +#define RT_NAME_MAX 20 +#define RT_USING_SMART +#define RT_ALIGN_SIZE 8 +#define RT_THREAD_PRIORITY_32 +#define RT_THREAD_PRIORITY_MAX 32 +#define RT_TICK_PER_SECOND 100 +#define RT_USING_HOOK +#define RT_USING_IDLE_HOOK +#define RT_IDLE_HOOK_LIST_SIZE 4 +#define IDLE_THREAD_STACK_SIZE 16384 +#define RT_USING_TIMER_SOFT +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 16384 +#define RT_DEBUG + +/* Inter-Thread communication */ + +#define RT_USING_SEMAPHORE +#define RT_USING_MUTEX +#define RT_USING_EVENT +#define RT_USING_MAILBOX +#define RT_USING_MESSAGEQUEUE + +/* Memory Management */ + +#define RT_USING_MEMPOOL +#define RT_USING_SMALL_MEM +#define RT_USING_MEMTRACE +#define RT_USING_HEAP + +/* Kernel Device Object */ + +#define RT_USING_DEVICE +#define RT_USING_CONSOLE +#define RT_CONSOLEBUF_SIZE 256 +#define RT_CONSOLE_DEVICE_NAME "uart0" +#define RT_VER_NUM 0x50000 +#define ARCH_CPU_64BIT +#define RT_USING_CACHE +#define ARCH_MM_MMU +#define RT_USING_USERSPACE +#define KERNEL_VADDR_START 0x150000000 +#define PV_OFFSET 0 +#define ARCH_RISCV +#define ARCH_RISCV64 + +/* RT-Thread Components */ + +#define RT_USING_COMPONENTS_INIT +#define RT_USING_USER_MAIN +#define RT_MAIN_THREAD_STACK_SIZE 16384 +#define RT_MAIN_THREAD_PRIORITY 10 + +/* C++ features */ + + +/* Command shell */ + +#define RT_USING_FINSH +#define RT_USING_MSH +#define FINSH_USING_MSH +#define FINSH_THREAD_NAME "tshell" +#define FINSH_USING_HISTORY +#define FINSH_HISTORY_LINES 5 +#define FINSH_USING_SYMTAB +#define FINSH_USING_DESCRIPTION +#define FINSH_THREAD_PRIORITY 20 +#define FINSH_THREAD_STACK_SIZE 8192 +#define FINSH_CMD_SIZE 80 +#define FINSH_ARG_MAX 10 + +/* Device virtual file system */ + +#define RT_USING_DFS +#define DFS_USING_WORKDIR +#define DFS_FILESYSTEMS_MAX 8 +#define DFS_FILESYSTEM_TYPES_MAX 4 +#define DFS_FD_MAX 32 +#define RT_USING_DFS_ELMFAT + +/* elm-chan's FatFs, Generic FAT Filesystem Module */ + +#define RT_DFS_ELM_CODE_PAGE 936 +#define RT_DFS_ELM_WORD_ACCESS +#define RT_DFS_ELM_USE_LFN_3 +#define RT_DFS_ELM_USE_LFN 3 +#define RT_DFS_ELM_MAX_LFN 255 +#define RT_DFS_ELM_DRIVES 8 +#define RT_DFS_ELM_MAX_SECTOR_SIZE 512 +#define RT_DFS_ELM_REENTRANT +#define RT_USING_DFS_DEVFS + +/* Device Drivers */ + +#define RT_USING_DEVICE_IPC +#define RT_UNAMED_PIPE_NUMBER 64 +#define RT_PIPE_BUFSZ 512 +#define RT_USING_SYSTEM_WORKQUEUE +#define RT_SYSTEM_WORKQUEUE_STACKSIZE 4096 +#define RT_SYSTEM_WORKQUEUE_PRIORITY 23 +#define RT_USING_SERIAL +#define RT_SERIAL_RB_BUFSZ 64 +#define RT_USING_TTY +#define RT_USING_I2C +#define RT_USING_PIN +#define RT_USING_NULL +#define RT_USING_ZERO +#define RT_USING_RANDOM +#define RT_USING_PWM +#define RT_USING_RTC +#define RT_USING_SPI +#define RT_USING_WDT +#define RT_USING_AUDIO +#define RT_AUDIO_REPLAY_MP_BLOCK_SIZE 4096 +#define RT_AUDIO_REPLAY_MP_BLOCK_COUNT 2 +#define RT_AUDIO_RECORD_PIPE_SIZE 2048 +#define RT_USING_TOUCH +#define RT_USING_WIFI +#define RT_WLAN_DEVICE_STA_NAME "wlan0" +#define RT_WLAN_DEVICE_AP_NAME "wlan1" +#define RT_WLAN_SSID_MAX_LENGTH 32 +#define RT_WLAN_PASSWORD_MAX_LENGTH 32 +#define RT_WLAN_DEV_EVENT_NUM 2 +#define RT_WLAN_MANAGE_ENABLE +#define RT_WLAN_SCAN_WAIT_MS 10000 +#define RT_WLAN_CONNECT_WAIT_MS 10000 +#define RT_WLAN_SCAN_SORT +#define RT_WLAN_MSH_CMD_ENABLE +#define RT_WLAN_AUTO_CONNECT_ENABLE +#define AUTO_CONNECTION_PERIOD_MS 2000 +#define RT_WLAN_CFG_ENABLE +#define RT_WLAN_CFG_INFO_MAX 3 +#define RT_WLAN_PROT_ENABLE +#define RT_WLAN_PROT_NAME_LEN 8 +#define RT_WLAN_PROT_MAX 2 +#define RT_WLAN_DEFAULT_PROT "lwip" +#define RT_WLAN_PROT_LWIP_ENABLE +#define RT_WLAN_PROT_LWIP_NAME "lwip" +#define RT_WLAN_WORK_THREAD_ENABLE +#define RT_WLAN_WORKQUEUE_THREAD_NAME "wlan" +#define RT_WLAN_WORKQUEUE_THREAD_SIZE 4096 +#define RT_WLAN_WORKQUEUE_THREAD_PRIO 15 + +/* Using USB */ + + +/* POSIX layer and C standard library */ + +#define RT_USING_LIBC +#define RT_USING_MUSL +#define RT_USING_POSIX +#define RT_USING_POSIX_CLOCKTIME + +/* Network */ + +/* Socket abstraction layer */ + +#define RT_USING_SAL + +/* protocol stack implement */ + +#define SAL_USING_LWIP +#define SAL_SOCKETS_NUM 16 + +/* Network interface device */ + +#define RT_USING_NETDEV +#define NETDEV_USING_IFCONFIG +#define NETDEV_USING_PING +#define NETDEV_USING_NETSTAT +#define NETDEV_USING_AUTO_DEFAULT +#define NETDEV_IPV4 1 +#define NETDEV_IPV6 0 + +/* light weight TCP/IP stack */ + +#define RT_USING_LWIP +#define RT_USING_LWIP202 +#define RT_LWIP_MEM_ALIGNMENT 4 +#define RT_LWIP_IGMP +#define RT_LWIP_ICMP +#define RT_LWIP_DNS +#define RT_LWIP_DHCP +#define IP_SOF_BROADCAST 1 +#define IP_SOF_BROADCAST_RECV 1 + +/* Static IPv4 Address */ + +#define RT_LWIP_IPADDR "192.168.1.30" +#define RT_LWIP_GWADDR "192.168.1.1" +#define RT_LWIP_MSKADDR "255.255.255.0" +#define RT_LWIP_UDP +#define RT_LWIP_TCP +#define RT_LWIP_RAW +#define RT_MEMP_NUM_NETCONN 16 +#define RT_MEMP_NUM_TCPIP_MSG_API 16 +#define RT_MEMP_NUM_TCPIP_MSG_INPKT 16 +#define RT_LWIP_PBUF_NUM 32 +#define RT_LWIP_PBUF_STRUCT_NUM 16 +#define RT_LWIP_NETBUF_NUM 16 +#define RT_LWIP_RAW_PCB_NUM 4 +#define RT_LWIP_UDP_PCB_NUM 4 +#define RT_UDP_RECVMBOX_SIZE 16 +#define RT_RECV_BUFSIZE_DEFAULT 64 +#define RT_LWIP_TCP_PCB_NUM 4 +#define RT_LWIP_TCP_SEG_NUM 40 +#define RT_LWIP_TCP_SND_BUF 8196 +#define RT_LWIP_TCP_WND 8196 +#define RT_TCP_RECVMBOX_SIZE 16 +#define RT_LWIP_TCPTHREAD_PRIORITY 10 +#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8 +#define RT_LWIP_TCPTHREAD_STACKSIZE 8192 +#define RT_LWIP_ETHTHREAD_PRIORITY 12 +#define RT_LWIP_ETHTHREAD_STACKSIZE 1024 +#define RT_LWIP_ETHTHREAD_MBOX_SIZE 32 +#define LWIP_NETIF_STATUS_CALLBACK 1 +#define LWIP_NETIF_LINK_CALLBACK 1 +#define SO_REUSE 1 +#define LWIP_SO_RCVTIMEO 1 +#define LWIP_SO_SNDTIMEO 1 +#define LWIP_SO_RCVBUF 1 +#define LWIP_SO_LINGER 0 +#define LWIP_NETIF_LOOPBACK 0 +#define RT_LWIP_USING_PING + +/* AT commands */ + + +/* VBUS(Virtual Software BUS) */ + + +/* Utilities */ + +#define RT_USING_LWP +#define RT_LWP_MAX_NR 30 +#define LWP_TASK_STACK_SIZE 16384 +#define RT_CH_MSG_MAX_NR 1024 +#define LWP_CONSOLE_INPUT_BUFFER_SIZE 1024 +#define LWP_TID_MAX_NR 64 +#define RT_LWP_SHM_MAX_NR 64 + +/* RT-Thread online packages */ + +/* IoT - internet of things */ + + +/* Wi-Fi */ + +/* Marvell WiFi */ + + +/* Wiced WiFi */ + + +/* IoT Cloud */ + + +/* security packages */ + + +/* language packages */ + +/* JSON: JavaScript Object Notation, a lightweight data-interchange format */ + + +/* XML: Extensible Markup Language */ + + +/* multimedia packages */ + +/* LVGL: powerful and easy-to-use embedded GUI library */ + + +/* u8g2: a monochrome graphic library */ + + +/* PainterEngine: A cross-platform graphics application framework written in C language */ + + +/* tools packages */ + + +/* system packages */ + +/* enhanced kernel services */ + + +/* acceleration: Assembly language or algorithmic acceleration packages */ + + +/* CMSIS: ARM Cortex-M Microcontroller Software Interface Standard */ + + +/* Micrium: Micrium software products porting for RT-Thread */ + +#define PKG_USING_PARTITION +#define FAL_DEBUG_CONFIG +#define FAL_PART_HAS_TABLE_CFG + +/* peripheral libraries and drivers */ + + +/* Kendryte SDK */ + + +/* AI packages */ + + +/* miscellaneous packages */ + +/* project laboratory */ + +/* samples: kernel and components samples */ + + +/* entertainment: terminal games and other interesting software packages */ + + +/* Arduino libraries */ + + +/* Sensor libraries */ + + +/* Display libraries */ + + +/* Timing libraries */ + + +/* Project libraries */ + +#define BOARD_allwinnerf133 +#define ENABLE_FPU +#define __STACKSIZE__ 16384 + +/* General Drivers Configuration */ + +#define BSP_USING_M7 + +/* General Purpose UARTs */ + +#define BSP_USING_UART0 +#define UART0_TX_USING_GPIOE2 +#define UART0_RX_USING_GPIOE3 +#define BSP_USING_SDMMC +#define SD_CARD_CHECK +#define BSP_USING_FS + +/* Board extended module Drivers */ + +#define RT_USING_SUNXI_HAL + +/* UART Devices */ + + +/* CCMU Devices */ + +#define DRIVERS_CCMU +#define DRIVERS_SUNXI_CCU + +/* DMA Devices */ + +#define DRIVERS_DMA + +/* GPIO Devices */ + +#define DRIVERS_GPIO + +/* Video support for sunxi */ + +#define DISP2_SUNXI +#define SUNXI_DISP2_FB_DISABLE_ROTATE + +/* LCD panels select */ + +#define LCD_SUPPORT_HE0801A068 +#define LCD_SUPPORT_WILLIAMLCD +#define LCD_SUPPORT_LQ101R1SX03 +#define LCD_SUPPORT_INET_DSI_PANEL + +/* Display engine feature select */ + +#define DISP2_SUNXI_SUPPORT_ENAHNCE + +/* Soc and board select */ + +/* Board Select */ + + +/* Soc Select */ + + +/* SDMMC Devices */ + +#define DRIVERS_SDMMC +#define USE_SD +#define USE_SDIO +#define DETECT_CARD +#define SDC_DMA_USED +#define SDIO_IRQ_SUPPORT +#define SDC_DMA_BUF_SIZE 64 +#define DRIVERS_SDC_CDPIN_PRESENT_VAL 0 + +/* SPI Devices */ + +#define DRIVERS_SPI + +/* TWI Devices */ + +#define DRIVERS_TWI + +/* G2D Devices */ + +#define DRIVERS_G2D + +/* CE Devices */ + +#define DRIVERS_CE + +/* EFUSE Devices */ + +#define DRIVERS_EFUSE + +#endif diff --git a/bsp/allwinner/d1s/rtconfig.py b/bsp/allwinner/d1s/rtconfig.py new file mode 100644 index 0000000000000000000000000000000000000000..09c6467815ccc810c32861843d6c2533b513acef --- /dev/null +++ b/bsp/allwinner/d1s/rtconfig.py @@ -0,0 +1,56 @@ +import os + +# toolchains options +ARCH ='risc-v' +VENDOR ='t-head' +CPU ='c906' +CROSS_TOOL ='gcc' + +RTT_ROOT = os.getenv('RTT_ROOT') or os.path.join(os.getcwd(),'..','..','..') + +if os.getenv('RTT_CC'): + CROSS_TOOL = os.getenv('RTT_CC') + +if CROSS_TOOL == 'gcc': + PLATFORM = 'gcc' + EXEC_PATH = r'/opt/riscv64_musl/bin' +else: + print('Please make sure your toolchains is GNU GCC!') + exit(0) + +if os.getenv('RTT_EXEC_PATH'): + EXEC_PATH = os.getenv('RTT_EXEC_PATH') + +BUILD = 'debug' + +if PLATFORM == 'gcc': + # toolchains + #PREFIX = 'riscv64-unknown-elf-' + PREFIX = os.getenv('RTT_CC_PREFIX') or 'riscv64-unknown-linux-musl-' + CC = PREFIX + 'gcc' + CXX = PREFIX + 'g++' + AS = PREFIX + 'gcc' + AR = PREFIX + 'ar' + LINK = PREFIX + 'gcc' + TARGET_EXT = 'elf' + SIZE = PREFIX + 'size' + OBJDUMP = PREFIX + 'objdump' + OBJCPY = PREFIX + 'objcopy' + + DEVICE = ' -mcmodel=medany -march=rv64imafdc -mabi=lp64' + CFLAGS = DEVICE + ' -fvar-tracking -ffreestanding -fno-common -ffunction-sections -fdata-sections -fstrict-volatile-bitfields ' + AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + LFLAGS = DEVICE + ' -nostartfiles -Wl,--gc-sections,-Map=rtthread.map,-cref,-u,_start -T link.lds' + ' -lsupc++ -lgcc -static' + CPATH = '' + LPATH = '' + + if BUILD == 'debug': + CFLAGS += ' -O0 -ggdb' + AFLAGS += ' -ggdb' + else: + CFLAGS += ' -O2 -Os' + + CXXFLAGS = CFLAGS + +DUMP_ACTION = OBJDUMP + ' -D -S $TARGET > rtthread.asm\n' +POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n' + './mksdimg.sh\n' diff --git a/bsp/allwinner/d1s/toc1.cfg b/bsp/allwinner/d1s/toc1.cfg new file mode 100644 index 0000000000000000000000000000000000000000..53764f2a28fb21ecf479016afde013307f3c31f8 --- /dev/null +++ b/bsp/allwinner/d1s/toc1.cfg @@ -0,0 +1,10 @@ +[opensbi] +file = sbi.bin +addr = 0x40000000 +[dtb] +file = u-boot.dtb +addr = 0x40200000 +[kernel] +file = rtthread.bin +addr = 0x40400000 + diff --git a/bsp/allwinner/d1s/tools/boot0_sdcard_sun20iw1p1_d1s.bin b/bsp/allwinner/d1s/tools/boot0_sdcard_sun20iw1p1_d1s.bin new file mode 100644 index 0000000000000000000000000000000000000000..47e9fc278c0439c7c98e5dad884cea8ca235a71e Binary files /dev/null and b/bsp/allwinner/d1s/tools/boot0_sdcard_sun20iw1p1_d1s.bin differ diff --git a/bsp/allwinner/d1s/u-boot.dtb b/bsp/allwinner/d1s/u-boot.dtb new file mode 100644 index 0000000000000000000000000000000000000000..261d16e8a289d0f5c5e81a3f93b6bb238f1dc202 Binary files /dev/null and b/bsp/allwinner/d1s/u-boot.dtb differ diff --git a/bsp/allwinner/docs/README.md b/bsp/allwinner/docs/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/bsp/allwinner/f133/sbi.bin b/bsp/allwinner/f133/sbi.bin new file mode 100644 index 0000000000000000000000000000000000000000..bd77ba59b7a5ec430ccf821a7869ac289f8ec88b Binary files /dev/null and b/bsp/allwinner/f133/sbi.bin differ diff --git a/bsp/allwinner/libraries/.gitignore b/bsp/allwinner/libraries/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..b4df8ddb320089488711b1af0282f03d7558f838 --- /dev/null +++ b/bsp/allwinner/libraries/.gitignore @@ -0,0 +1,2 @@ +.vscode/ +*.o diff --git a/bsp/allwinner/libraries/Kconfig b/bsp/allwinner/libraries/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..d491d1a0c341e87d4325486cc6c0fa981e1a1b60 --- /dev/null +++ b/bsp/allwinner/libraries/Kconfig @@ -0,0 +1,18 @@ +menuconfig RT_USING_SUNXI_HAL + bool "HAL library from sunxi" + default n + +if RT_USING_SUNXI_HAL + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/uart/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/ccmu/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/dma/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/gpio/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/disp2/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/sdmmc/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/spi/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/twi/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/g2d_rcq/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/usb/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/ce/Kconfig" + source "$BSP_DIR/../libraries/sunxi-hal/hal/source/efuse/Kconfig" +endif diff --git a/bsp/allwinner/libraries/README.md b/bsp/allwinner/libraries/README.md new file mode 100644 index 0000000000000000000000000000000000000000..272bf01b8af32f3ebe553aa04030836656ff0913 --- /dev/null +++ b/bsp/allwinner/libraries/README.md @@ -0,0 +1,3 @@ +# allwinner-libraries + +针对全志芯片的外设驱动库 \ No newline at end of file diff --git a/bsp/allwinner/libraries/SConscript b/bsp/allwinner/libraries/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..ec8fa4bf27dd863194ee90c193f292d973bc7842 --- /dev/null +++ b/bsp/allwinner/libraries/SConscript @@ -0,0 +1,18 @@ +# RT-Thread building script for bridge + +import os +from building import * + +cwd = GetCurrentDir() +objs = [] +list = os.listdir(cwd) + +if not GetDepend('RT_USING_SUNXI_HAL'): + Return('objs') + +for d in list: + path = os.path.join(cwd, d) + if os.path.isfile(os.path.join(path, 'SConscript')): + objs = objs + SConscript(os.path.join(d, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/libraries/drivers/Kconfig b/bsp/allwinner/libraries/drivers/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..46e5e963de1d15ed0cdc892f8b4f0d6ff0ec97d6 --- /dev/null +++ b/bsp/allwinner/libraries/drivers/Kconfig @@ -0,0 +1,283 @@ +menu "General Drivers Configuration" + +choice + prompt "Choose Board" + + default BSP_USING_M7 + + config BSP_USING_M7 + bool "Persimmon M7 board" +endchoice + +menu "General Purpose UARTs" + +menuconfig BSP_USING_UART0 + bool "Enable UART0" + default y + if BSP_USING_UART0 + choice + prompt "UART0 TX PIN" + default UART0_TX_USING_GPIOE2 if BOARD_allwinnerf133 + default UART0_TX_USING_GPIOB8 if BOARD_allwinnerd1 + + if BOARD_allwinnerd1 + config UART0_TX_USING_GPIOB8 + bool "GPIOB08" + endif + config UART0_TX_USING_GPIOE2 + bool "GPIOE02" + config UART0_TX_USING_GPIOF2 + bool "GPIOF02" + endchoice + choice + prompt "UART0 RX PIN" + default UART0_RX_USING_GPIOE3 if BOARD_allwinnerf133 + default UART0_RX_USING_GPIOB9 if BOARD_allwinnerd1 + + if BOARD_allwinnerd1 + config UART0_RX_USING_GPIOB9 + bool "GPIOB09" + endif + config UART0_RX_USING_GPIOE3 + bool "GPIOE03" + config UART0_RX_USING_GPIOF4 + bool "GPIOF04" + endchoice + endif + +menuconfig BSP_USING_UART1 + bool "Enable UART1" + default n + if BSP_USING_UART1 + choice + prompt "UART1 TX PIN" + config UART1_TX_USING_GPIOD21 + bool "GPIOD21" + config UART1_TX_USING_GPIOE10 + bool "GPIOE10" + config UART1_TX_USING_GPIOG6 + bool "GPIOG06" + config UART1_TX_USING_GPIOG12 + bool "GPIOG12" + endchoice + choice + prompt "UART1 RX PIN" + config UART1_RX_USING_GPIOD22 + bool "GPIOD22" + config UART1_RX_USING_GPIOE11 + bool "GPIOE11" + config UART1_RX_USING_GPIOG7 + bool "GPIOG07" + config UART1_RX_USING_GPIOG13 + bool "GPIOG13" + endchoice + endif + +menuconfig BSP_USING_UART2 + bool "Enable UART2" + default n + if BSP_USING_UART2 + choice + prompt "UART2 TX PIN" + config UART2_TX_USING_GPIOD1 + bool "GPIOD01" + config UART2_TX_USING_GPIOE2 + bool "GPIOE02" + endchoice + choice + prompt "UART2 RX PIN" + config UART2_RX_USING_GPIOD2 + bool "GPIOD02" + config UART2_RX_USING_GPIOE3 + bool "GPIOE03" + endchoice + endif + +menuconfig BSP_USING_UART3 + bool "Enable UART3" + default n + if BSP_USING_UART3 + choice + prompt "UART3 TX PIN" + config UART3_TX_USING_GPIOB6 + bool "GPIOB06" + config UART3_TX_USING_GPIOC6 + bool "GPIOC06" + config UART3_TX_USING_GPIOD10 + bool "GPIOD10" + config UART3_TX_USING_GPIOE8 + bool "GPIOE08" + config UART3_TX_USING_GPIOG0 + bool "GPIOG00" + config UART3_TX_USING_GPIOG8 + bool "GPIOG08" + endchoice + choice + prompt "UART3 RX PIN" + config UART3_RX_USING_GPIOB7 + bool "GPIOB07" + config UART3_RX_USING_GPIOC7 + bool "GPIOC07" + config UART3_RX_USING_GPIOD11 + bool "GPIOD11" + config UART3_RX_USING_GPIOE9 + bool "GPIOE09" + config UART3_RX_USING_GPIOG1 + bool "GPIOG01" + config UART3_RX_USING_GPIOG9 + bool "GPIOG09" + endchoice + endif + +menuconfig BSP_USING_UART4 + bool "Enable UART4" + default n + if BSP_USING_UART4 + choice + prompt "UART4 TX PIN" + config UART4_TX_USING_GPIOB2 + bool "GPIOB02" + config UART4_TX_USING_GPIOD7 + bool "GPIOD07" + config UART4_TX_USING_GPIOE4 + bool "GPIOE04" + config UART4_TX_USING_GPIOG2 + bool "GPIOG02" + endchoice + choice + prompt "UART4 RX PIN" + config UART4_RX_USING_GPIOB3 + bool "GPIOB03" + config UART4_RX_USING_GPIOD8 + bool "GPIOD08" + config UART4_RX_USING_GPIOE5 + bool "GPIOE05" + config UART4_TX_USING_GPIOG3 + bool "GPIOG03" + endchoice + endif + +menuconfig BSP_USING_UART5 + bool "Enable UART5" + default n + if BSP_USING_UART5 + choice + prompt "UART5 TX PIN" + config UART5_TX_USING_GPIOB4 + bool "GPIOB04" + config UART5_TX_USING_GPIOD5 + bool "GPIOD05" + config UART5_TX_USING_GPIOE6 + bool "GPIOE06" + config UART5_TX_USING_GPIOG4 + bool "GPIOG04" + endchoice + choice + prompt "UART5 RX PIN" + config UART5_RX_USING_GPIOB5 + bool "GPIOB05" + config UART5_RX_USING_GPIOD6 + bool "GPIOD06" + config UART5_RX_USING_GPIOE7 + bool "GPIOE07" + config UART5_RX_USING_GPIOG5 + bool "GPIOG05" + endchoice + endif + +endmenu + +config BSP_USING_WDT + bool "Enable WatchDog Timer" + select RT_USING_WDT + default n + +config BSP_USING_RTC + bool "Enable RTC driver" + select RT_USING_RTC + select BSP_USING_WDT + default n + +menuconfig BSP_USING_I2C + bool "Enable I2C driver" + select RT_USING_I2C + default n + + if BSP_USING_I2C + config BSP_USING_I2C0 + bool "Enable I2C0" + default n + config BSP_USING_I2C1 + bool "Enable I2C1" + default n + config BSP_USING_I2C2 + bool "Enable I2C2" + default n + config BSP_USING_I2C3 + bool "Enable I2C3" + default n + endif + +menuconfig BSP_USING_TOUCH + bool "Enable TOUCH" + default n + select RT_USING_TOUCH + select RT_TOUCH_PIN_IRQ + select BSP_USING_I2C + select BSP_USING_I2C2 + if BSP_USING_TOUCH + config TOUCH_I2C_NAME + string "touch i2c driver name" + default "i2c2" + endif + +menuconfig BSP_USING_SPI + bool "Enabel spi driver" + default n + select RT_USING_SPI + if BSP_USING_SPI + config BSP_USING_SPI0 + bool "Enable SPI0" + default n + config BSP_USING_SPI1 + bool "Enable SPI1" + default n + endif + +config BSP_USING_PWM + bool "Enable pwm driver" + default n + select RT_USING_PWM + +config BSP_USING_SDMMC + bool "Enable sdmmc driver" + default y + +config SD_CARD_CHECK + bool "Automatic detection of SD cards" + default y + +menuconfig BSP_USING_FS + bool "Enable File System" + select RT_USING_DFS + select BSP_USING_SDMMC + select RT_USING_FAL + select FAL_DEBUG_CONFIG + select FAL_PART_HAS_TABLE_CFG + default y + +menuconfig BSP_USING_LCD + bool "Enable LCD" + select BSP_USING_PWM + default n + +menu "Board extended module Drivers" + menuconfig BSP_USING_RW007 + bool "Enable RW007" + default n + select PKG_USING_RW007 + select BSP_USING_SPI + select BSP_USING_SPI0 +endmenu + +endmenu diff --git a/bsp/allwinner/libraries/drivers/SConscript b/bsp/allwinner/libraries/drivers/SConscript new file mode 100644 index 0000000000000000000000000000000000000000..5dcf08dd767b0f04163b94d7bec2c58765aa3350 --- /dev/null +++ b/bsp/allwinner/libraries/drivers/SConscript @@ -0,0 +1,39 @@ +# RT-Thread building script for component + +from building import * + +cwd = GetCurrentDir() +src = ['drv_uart.c', 'drv_pin.c'] + +CPPPATH = [cwd] + +if GetDepend('BSP_USING_WDT'): + src += ['drv_wdt.c'] + +if GetDepend('BSP_USING_RTC'): + src += ['drv_rtc.c'] + +if GetDepend('BSP_USING_I2C'): + src += ['drv_i2c.c'] + +if GetDepend('BSP_USING_SPI'): + src += ['drv_spi.c'] + +if GetDepend('BSP_USING_PWM'): + src += ['drv_pwm.c'] + +if GetDepend('BSP_USING_LCD'): + src += ['drv_lcd.c'] + src += ['lcd_cfg.c'] + +group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) + +objs = [group] + +list = os.listdir(cwd) + +for item in list: + if os.path.isfile(os.path.join(cwd, item, 'SConscript')): + objs = objs + SConscript(os.path.join(item, 'SConscript')) + +Return('objs') diff --git a/bsp/allwinner/libraries/drivers/drv_i2c.c b/bsp/allwinner/libraries/drivers/drv_i2c.c new file mode 100644 index 0000000000000000000000000000000000000000..91897be4e569b93b46a385d5421508d50180ef69 --- /dev/null +++ b/bsp/allwinner/libraries/drivers/drv_i2c.c @@ -0,0 +1,342 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * 2021-11-19 xieyangrun first version + */ + +#include +#include + +#include "sunxi_hal_twi.h" + +#define DBG_LVL DBG_WARNING +#define DBG_TAG "drv/i2c" +#include + +struct hal_i2c_bus +{ + struct rt_i2c_bus_device parent; + twi_port_t id; + struct rt_mutex lock; +}; + +//connect am drv to rt drv. +static rt_size_t _i2c_master_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg *msgs, rt_uint32_t num) +{ + struct hal_i2c_bus *_i2c_bus = (struct hal_i2c_bus *)bus; + struct rt_i2c_msg *msg; + twi_msg_t *twi_msg; + int i; + twi_status_t status; + extern twi_status_t hal_twi_xfer(twi_port_t port, twi_msg_t *msgs, int32_t num); + + + twi_msg = rt_malloc(sizeof(*twi_msg) * num); + if (!twi_msg) + { + LOG_E("i2c xfer malloc(%d) failure\n", sizeof(*twi_msg) * num); + return -RT_ENOMEM; + } + + for (i = 0; i < num; i++) + { + msg = &msgs[i]; + if (msg->flags == RT_I2C_RD) + { + twi_msg[i].flags = TWI_M_RD; + } + else if(msg->flags == RT_I2C_WR) + { + twi_msg[i].flags = 0; + } + + if (_i2c_bus->parent.flags & RT_I2C_DEV_CTRL_10BIT) + { + twi_msg[i].flags |= TWI_M_TEN; + } + + twi_msg[i].addr = msg->addr; + twi_msg[i].len = msg->len; + twi_msg[i].buf = msg->buf; + } + + rt_mutex_take(&_i2c_bus->lock, RT_WAITING_FOREVER); + status = hal_twi_xfer(_i2c_bus->id, twi_msg, i); + rt_mutex_release(&_i2c_bus->lock); + + if (status != TWI_STATUS_OK) + { + i = 0; + LOG_E("i2c xfer failure\n"); + } + + rt_free(twi_msg); + + return i; +} + +static const struct rt_i2c_bus_device_ops _i2c_ops = +{ + _i2c_master_xfer, + RT_NULL, + RT_NULL +}; + +#ifdef BSP_USING_I2C0 +static struct hal_i2c_bus _i2c_bus_0 = { + .id = TWI_MASTER_0 +}; +#endif + +#ifdef BSP_USING_I2C1 +static struct hal_i2c_bus _i2c_bus_1 = { + .id = TWI_MASTER_1, +}; +#endif + +#ifdef BSP_USING_I2C2 +static struct hal_i2c_bus _i2c_bus_2 = { + .id = TWI_MASTER_2, +}; +#endif + +#ifdef BSP_USING_I2C3 +static struct hal_i2c_bus _i2c_bus_3 = { + .id = TWI_MASTER_3, +}; +#endif + +#define CFG_GPIO_PORT(p) ((p) - 'A' + 1) + +static const user_gpio_set_t _i2c_gpio_cfg[][2] = { + {// twi0 + { + .gpio_name = "twi0.sck", + .port = CFG_GPIO_PORT('B'), + .port_num = 3, // PB3 + .mul_sel = 4, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + }, + { + .gpio_name = "twi0.sda", + .port = CFG_GPIO_PORT('B'), + .port_num = 2, // PB2 + .mul_sel = 4, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + } + }, + {// twi1 + { + .gpio_name = "twi1.sck", + .port = CFG_GPIO_PORT('B'), + .port_num = 4, // PB4 + .mul_sel = 4, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + }, + { + .gpio_name = "twi1.sda", + .port = CFG_GPIO_PORT('B'), + .port_num = 5, // PB5 + .mul_sel = 4, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + } + }, +#ifdef BSP_USING_MANGOPI // mango board + {// twi2 + { + .gpio_name = "twi2.sck", + .port = CFG_GPIO_PORT('E'), + .port_num = 12, // PE12 + .mul_sel = 2, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + }, + { + .gpio_name = "twi2.sda", + .port = CFG_GPIO_PORT('E'), + .port_num = 13, // PE13 + .mul_sel = 2, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + } + }, +#elif defined(BSP_USING_M7) + {// twi2 + { + .gpio_name = "twi2.sck", + .port = CFG_GPIO_PORT('G'), + .port_num = 6, // PG6 + .mul_sel = 3, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + }, + { + .gpio_name = "twi2.sda", + .port = CFG_GPIO_PORT('G'), + .port_num = 7, // PG7 + .mul_sel = 3, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + } + }, +#endif + {// twi3 + { + .gpio_name = "twi3.sck", + .port = CFG_GPIO_PORT('B'), + .port_num = 6, // PB6 + .mul_sel = 4, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + }, + { + .gpio_name = "twi3.sda", + .port = CFG_GPIO_PORT('B'), + .port_num = 7, // PB7 + .mul_sel = 4, + .pull = 1, // pull up + .drv_level = 3, + .data = 1, + } + }, +}; + +int hal_i2c_gpio_cfg_load(user_gpio_set_t *gpio_cfg, int32_t GPIONum, int id) +{ + int i; + + if (id > sizeof(_i2c_gpio_cfg) / sizeof(_i2c_gpio_cfg[0])) + { + rt_kprintf("twi id %d>%d\n", id, sizeof(_i2c_gpio_cfg) / sizeof(_i2c_gpio_cfg[0])); + return -1; + } + + /* twi0 */ + for (i = 0; i < GPIONum; i++) + { + memcpy(gpio_cfg, &_i2c_gpio_cfg[id][i], sizeof(user_gpio_set_t)); + gpio_cfg++; + } + + return 0; +} + +static int _i2c_dev_register(struct hal_i2c_bus* bus, const char* name) +{ + rt_mutex_init(&bus->lock, name, RT_IPC_FLAG_PRIO); + + hal_twi_init(bus->id); + bus->parent.ops = &_i2c_ops; + + if (rt_i2c_bus_device_register(&bus->parent, name) != RT_EOK) + { + LOG_E("i2c bus register:%s failure\n", name); + return -1; + } + + return 0; +} + +int rt_hw_i2c_init(void) +{ +#ifdef BSP_USING_I2C0 + /* init i2c bus device */ + _i2c_dev_register(&_i2c_bus_0, "i2c0"); +#endif + +#ifdef BSP_USING_I2C1 + /* init i2c bus device */ + _i2c_dev_register(&_i2c_bus_1, "i2c1"); +#endif + +#ifdef BSP_USING_I2C2 + _i2c_dev_register(&_i2c_bus_2, "i2c2"); +#endif + +#ifdef BSP_USING_I2C3 + _i2c_dev_register(&_i2c_bus_3, "i2c3"); +#endif + + //rt_kprintf("i2c_init!\n"); + + return 0; +} +// #ifdef RT_USING_COMPONENTS_INIT +INIT_BOARD_EXPORT(rt_hw_i2c_init); +// #endif + +static void _i2c_test(int argc, char *args[]) +{ + struct rt_i2c_bus_device *i2c_bus; + struct rt_i2c_msg msg[2]; + uint8_t buf[3] = {0x12, 0x34, 0x56}; + + if (argc < 2) return; + + i2c_bus = (struct rt_i2c_bus_device*)rt_device_find("i2c2"); + if (!i2c_bus) + { + rt_kprintf("i2c2 not found\n"); + return; + } + + msg[0].addr = 0x36; + msg[0].flags = 0; + msg[0].buf = buf; + msg[0].len = sizeof(buf); + + msg[1].addr = 0x36; + msg[1].flags = RT_I2C_RD; + msg[1].buf = buf; + msg[1].len = sizeof(buf); + + if (atoi(args[1]) == 0) + { + rt_i2c_transfer(i2c_bus, &msg[0], 1); + } + else + { + rt_i2c_transfer(i2c_bus, &msg[0], 2); + } +} +MSH_CMD_EXPORT_ALIAS(_i2c_test, i2c_test, i2c bus test); + +static void _pin_test(void) +{ + int i; + rt_base_t pin; + + pin = GPIO_PE10; + + rt_pin_mode(pin, PIN_MODE_OUTPUT); + + for (i = 0; i < 20; i++) + { + rt_pin_write(pin, !!(i & 1)); + rt_thread_mdelay(2); + } +} +MSH_CMD_EXPORT_ALIAS(_pin_test, pin_test, gpio pin test); + +/*@}*/ + + + + + diff --git a/bsp/allwinner/libraries/drivers/drv_lcd.c b/bsp/allwinner/libraries/drivers/drv_lcd.c new file mode 100644 index 0000000000000000000000000000000000000000..41b16a660cf1c023955072cad08c0a6551183985 --- /dev/null +++ b/bsp/allwinner/libraries/drivers/drv_lcd.c @@ -0,0 +1,703 @@ +/* + * Copyright (c) 2006-2022, RT-Thread Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2018-04-12 RT-Thread the first version + */ + +#include "rtthread.h" +#include +#include +#include + +#include "interrupt.h" +#include "mmu.h" + +#ifdef BSP_USING_LCD + +#include "drv_lcd.h" +#include "lcd_cfg.h" + +#ifdef RT_USING_USERSPACE +#include +#include +#endif + +#include