mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-23 20:57:20 +08:00
Merge AArch64 libcpu and add some drivers for their bsps
This commit is contained in:
@@ -23,6 +23,13 @@ CONFIG_IDLE_THREAD_STACK_SIZE=2048
|
||||
CONFIG_RT_USING_TIMER_SOFT=y
|
||||
CONFIG_RT_TIMER_THREAD_PRIO=4
|
||||
CONFIG_RT_TIMER_THREAD_STACK_SIZE=2048
|
||||
|
||||
#
|
||||
# kservice optimization
|
||||
#
|
||||
# CONFIG_RT_KSERVICE_USING_STDLIB is not set
|
||||
# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
|
||||
# CONFIG_RT_USING_ASM_MEMCPY is not set
|
||||
CONFIG_RT_DEBUG=y
|
||||
CONFIG_RT_DEBUG_COLOR=y
|
||||
# CONFIG_RT_DEBUG_INIT_CONFIG is not set
|
||||
@@ -55,6 +62,7 @@ CONFIG_RT_USING_MEMHEAP=y
|
||||
CONFIG_RT_USING_SMALL_MEM=y
|
||||
# CONFIG_RT_USING_SLAB is not set
|
||||
# CONFIG_RT_USING_MEMHEAP_AS_HEAP is not set
|
||||
# CONFIG_RT_USING_USERHEAP is not set
|
||||
CONFIG_RT_USING_MEMTRACE=y
|
||||
CONFIG_RT_USING_HEAP=y
|
||||
|
||||
@@ -67,7 +75,8 @@ CONFIG_RT_USING_DEVICE_OPS=y
|
||||
CONFIG_RT_USING_CONSOLE=y
|
||||
CONFIG_RT_CONSOLEBUF_SIZE=512
|
||||
CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
|
||||
CONFIG_RT_VER_NUM=0x40003
|
||||
# CONFIG_RT_PRINTF_LONGLONG is not set
|
||||
CONFIG_RT_VER_NUM=0x40004
|
||||
CONFIG_ARCH_CPU_64BIT=y
|
||||
# CONFIG_RT_USING_CPU_FFS is not set
|
||||
CONFIG_ARCH_ARMV8=y
|
||||
@@ -90,19 +99,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
|
||||
# Command shell
|
||||
#
|
||||
CONFIG_RT_USING_FINSH=y
|
||||
CONFIG_RT_USING_MSH=y
|
||||
CONFIG_FINSH_USING_MSH=y
|
||||
CONFIG_FINSH_THREAD_NAME="tshell"
|
||||
CONFIG_FINSH_THREAD_PRIORITY=20
|
||||
CONFIG_FINSH_THREAD_STACK_SIZE=4096
|
||||
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_THREAD_PRIORITY=20
|
||||
CONFIG_FINSH_THREAD_STACK_SIZE=4096
|
||||
CONFIG_FINSH_CMD_SIZE=80
|
||||
# CONFIG_FINSH_USING_AUTH is not set
|
||||
CONFIG_FINSH_USING_MSH=y
|
||||
CONFIG_FINSH_USING_MSH_DEFAULT=y
|
||||
CONFIG_FINSH_USING_MSH_ONLY=y
|
||||
CONFIG_FINSH_ARG_MAX=10
|
||||
|
||||
#
|
||||
@@ -126,6 +135,11 @@ CONFIG_RT_DFS_ELM_WORD_ACCESS=y
|
||||
# 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_LFN_UNICODE_0=y
|
||||
# CONFIG_RT_DFS_ELM_LFN_UNICODE_1 is not set
|
||||
# CONFIG_RT_DFS_ELM_LFN_UNICODE_2 is not set
|
||||
# CONFIG_RT_DFS_ELM_LFN_UNICODE_3 is not set
|
||||
CONFIG_RT_DFS_ELM_LFN_UNICODE=0
|
||||
CONFIG_RT_DFS_ELM_MAX_LFN=255
|
||||
CONFIG_RT_DFS_ELM_DRIVES=2
|
||||
CONFIG_RT_DFS_ELM_MAX_SECTOR_SIZE=512
|
||||
@@ -134,8 +148,6 @@ CONFIG_RT_DFS_ELM_REENTRANT=y
|
||||
CONFIG_RT_USING_DFS_DEVFS=y
|
||||
# CONFIG_RT_USING_DFS_ROMFS 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
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
@@ -144,6 +156,8 @@ CONFIG_RT_USING_DEVICE_IPC=y
|
||||
CONFIG_RT_PIPE_BUFSZ=512
|
||||
# CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
|
||||
CONFIG_RT_USING_SERIAL=y
|
||||
CONFIG_RT_USING_SERIAL_V1=y
|
||||
# CONFIG_RT_USING_SERIAL_V2 is not set
|
||||
# CONFIG_RT_SERIAL_USING_DMA is not set
|
||||
CONFIG_RT_SERIAL_RB_BUFSZ=64
|
||||
# CONFIG_RT_USING_CAN is not set
|
||||
@@ -153,8 +167,10 @@ CONFIG_RT_USING_I2C=y
|
||||
CONFIG_RT_I2C_DEBUG=y
|
||||
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_PWM is not set
|
||||
# CONFIG_RT_USING_MTD_NOR is not set
|
||||
# CONFIG_RT_USING_MTD_NAND is not set
|
||||
@@ -196,8 +212,10 @@ CONFIG_RT_USING_LIBC=y
|
||||
CONFIG_RT_USING_POSIX=y
|
||||
# CONFIG_RT_USING_POSIX_MMAP is not set
|
||||
# CONFIG_RT_USING_POSIX_TERMIOS is not set
|
||||
# CONFIG_RT_USING_POSIX_GETLINE is not set
|
||||
# CONFIG_RT_USING_POSIX_AIO is not set
|
||||
# CONFIG_RT_USING_MODULE is not set
|
||||
CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
|
||||
|
||||
#
|
||||
# Network
|
||||
@@ -234,6 +252,12 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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
|
||||
|
||||
#
|
||||
# RT-Thread Utestcases
|
||||
#
|
||||
# CONFIG_RT_USING_UTESTCASES is not set
|
||||
|
||||
#
|
||||
# RT-Thread online packages
|
||||
@@ -242,7 +266,9 @@ CONFIG_RT_USING_POSIX=y
|
||||
#
|
||||
# IoT - internet of things
|
||||
#
|
||||
# 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
|
||||
@@ -280,6 +306,7 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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
|
||||
@@ -288,7 +315,7 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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_IOTHUB 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
|
||||
@@ -300,8 +327,6 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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_ONNX_PARSER is not set
|
||||
# CONFIG_PKG_USING_ONNX_BACKEND 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
|
||||
@@ -310,6 +335,20 @@ CONFIG_RT_USING_POSIX=y
|
||||
# CONFIG_PKG_USING_CAPNP is not set
|
||||
# CONFIG_PKG_USING_RT_CJSON_TOOLS is not set
|
||||
# CONFIG_PKG_USING_AGILE_TELNET is not set
|
||||
# CONFIG_PKG_USING_NMEALIB is not set
|
||||
# CONFIG_PKG_USING_AGILE_JSMN 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_RAPIDJSON 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_HM is not set
|
||||
|
||||
#
|
||||
# security packages
|
||||
@@ -318,6 +357,7 @@ CONFIG_RT_USING_POSIX=y
|
||||
# CONFIG_PKG_USING_libsodium 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
|
||||
@@ -325,6 +365,7 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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
|
||||
|
||||
#
|
||||
# multimedia packages
|
||||
@@ -334,6 +375,13 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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
|
||||
|
||||
#
|
||||
# tools packages
|
||||
@@ -342,25 +390,65 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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_QRCODE 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
|
||||
|
||||
#
|
||||
# system packages
|
||||
#
|
||||
|
||||
#
|
||||
# acceleration: Assembly language or algorithmic acceleration packages
|
||||
#
|
||||
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
|
||||
# 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
|
||||
|
||||
#
|
||||
# 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_GUIENGINE is not set
|
||||
# CONFIG_PKG_USING_CAIRO is not set
|
||||
# CONFIG_PKG_USING_PIXMAN is not set
|
||||
# CONFIG_PKG_USING_LWEXT4 is not set
|
||||
# CONFIG_PKG_USING_PARTITION is not set
|
||||
# CONFIG_PKG_USING_FAL is not set
|
||||
# CONFIG_PKG_USING_FLASHDB is not set
|
||||
@@ -370,12 +458,27 @@ CONFIG_RT_USING_POSIX=y
|
||||
# CONFIG_PKG_USING_CMSIS 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_RT_KPRINTF_THREADSAFE 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_WCWIDTH is not set
|
||||
# CONFIG_PKG_USING_MCUBOOT is not set
|
||||
|
||||
#
|
||||
# peripheral libraries and drivers
|
||||
@@ -384,6 +487,7 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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_AS7341 is not set
|
||||
# CONFIG_PKG_USING_STM32_SDIO is not set
|
||||
# CONFIG_PKG_USING_ICM20608 is not set
|
||||
# CONFIG_PKG_USING_U8G2 is not set
|
||||
@@ -399,7 +503,6 @@ CONFIG_RT_USING_POSIX=y
|
||||
# CONFIG_PKG_USING_WM_LIBRARIES is not set
|
||||
# CONFIG_PKG_USING_KENDRYTE_SDK is not set
|
||||
# CONFIG_PKG_USING_INFRARED is not set
|
||||
# CONFIG_PKG_USING_ROSSERIAL 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
|
||||
@@ -413,6 +516,7 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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
|
||||
@@ -421,25 +525,50 @@ CONFIG_RT_USING_POSIX=y
|
||||
# CONFIG_PKG_USING_EASYBLINK is not set
|
||||
# CONFIG_PKG_USING_PMS_SERIES 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_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
|
||||
|
||||
#
|
||||
# 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
|
||||
#
|
||||
# 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_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_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
|
||||
|
||||
#
|
||||
# samples: kernel and components samples
|
||||
@@ -448,17 +577,50 @@ CONFIG_RT_USING_POSIX=y
|
||||
# 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_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_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_NNOM is not set
|
||||
# CONFIG_PKG_USING_LIBANN is not set
|
||||
# CONFIG_PKG_USING_ELAPACK is not set
|
||||
# CONFIG_PKG_USING_KI is not set
|
||||
# CONFIG_PKG_USING_ARMv7M_DWT is not set
|
||||
# CONFIG_PKG_USING_VT100 is not set
|
||||
# CONFIG_PKG_USING_ULAPACK 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_MCURSES is not set
|
||||
# CONFIG_PKG_USING_COWSAY is not set
|
||||
# CONFIG_PKG_USING_TERMBOX is not set
|
||||
CONFIG_BCM2836_SOC=y
|
||||
# CONFIG_BSP_SUPPORT_FPU is not set
|
||||
CONFIG_BSP_SUPPORT_FPU=y
|
||||
|
||||
#
|
||||
# Hardware Drivers Config
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#define __MBOX_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <stdint.h>
|
||||
/* a properly aligned buffer */
|
||||
extern volatile unsigned int* mbox;
|
||||
|
||||
|
||||
@@ -118,6 +118,7 @@ typedef enum
|
||||
#define BSC2_BASE_OFFSET (0x805000)
|
||||
|
||||
/* IRQ */
|
||||
#define MAX_HANDLERS 72
|
||||
#define IRQ_SYSTEM_TIMER_0 0
|
||||
#define IRQ_SYSTEM_TIMER_1 1
|
||||
#define IRQ_SYSTEM_TIMER_2 2
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
if [ ! -f "sd.bin" ]; then
|
||||
dd if=/dev/zero of=sd.bin bs=1024 count=65536
|
||||
fi
|
||||
qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -sd sd.bin -nographic -monitor pty
|
||||
@echo off
|
||||
if exist sd.bin goto run
|
||||
qemu-img create -f raw sd.bin 64M
|
||||
|
||||
:run
|
||||
qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -sd sd.bin
|
||||
@@ -0,0 +1,4 @@
|
||||
if [ ! -f "sd.bin" ]; then
|
||||
dd if=/dev/zero of=sd.bin bs=1024 count=65536
|
||||
fi
|
||||
qemu-system-aarch64 -M raspi3 -kernel kernel8.img -serial null -serial stdio -sd sd.bin -nographic -monitor pty
|
||||
@@ -19,6 +19,9 @@
|
||||
#define RT_USING_TIMER_SOFT
|
||||
#define RT_TIMER_THREAD_PRIO 4
|
||||
#define RT_TIMER_THREAD_STACK_SIZE 2048
|
||||
|
||||
/* kservice optimization */
|
||||
|
||||
#define RT_DEBUG
|
||||
#define RT_DEBUG_COLOR
|
||||
|
||||
@@ -45,7 +48,7 @@
|
||||
#define RT_USING_CONSOLE
|
||||
#define RT_CONSOLEBUF_SIZE 512
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart1"
|
||||
#define RT_VER_NUM 0x40003
|
||||
#define RT_VER_NUM 0x40004
|
||||
#define ARCH_CPU_64BIT
|
||||
#define ARCH_ARMV8
|
||||
|
||||
@@ -62,17 +65,17 @@
|
||||
/* Command shell */
|
||||
|
||||
#define RT_USING_FINSH
|
||||
#define RT_USING_MSH
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_THREAD_NAME "tshell"
|
||||
#define FINSH_THREAD_PRIORITY 20
|
||||
#define FINSH_THREAD_STACK_SIZE 4096
|
||||
#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 4096
|
||||
#define FINSH_CMD_SIZE 80
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_USING_MSH_DEFAULT
|
||||
#define FINSH_USING_MSH_ONLY
|
||||
#define MSH_USING_BUILT_IN_COMMANDS
|
||||
#define FINSH_USING_DESCRIPTION
|
||||
#define FINSH_ARG_MAX 10
|
||||
|
||||
/* Device virtual file system */
|
||||
@@ -90,6 +93,8 @@
|
||||
#define RT_DFS_ELM_WORD_ACCESS
|
||||
#define RT_DFS_ELM_USE_LFN_3
|
||||
#define RT_DFS_ELM_USE_LFN 3
|
||||
#define RT_DFS_ELM_LFN_UNICODE_0
|
||||
#define RT_DFS_ELM_LFN_UNICODE 0
|
||||
#define RT_DFS_ELM_MAX_LFN 255
|
||||
#define RT_DFS_ELM_DRIVES 2
|
||||
#define RT_DFS_ELM_MAX_SECTOR_SIZE 512
|
||||
@@ -101,6 +106,7 @@
|
||||
#define RT_USING_DEVICE_IPC
|
||||
#define RT_PIPE_BUFSZ 512
|
||||
#define RT_USING_SERIAL
|
||||
#define RT_USING_SERIAL_V1
|
||||
#define RT_SERIAL_RB_BUFSZ 64
|
||||
#define RT_USING_HWTIMER
|
||||
#define RT_USING_I2C
|
||||
@@ -124,6 +130,7 @@
|
||||
|
||||
#define RT_USING_LIBC
|
||||
#define RT_USING_POSIX
|
||||
#define RT_LIBC_DEFAULT_TIMEZONE 8
|
||||
|
||||
/* Network */
|
||||
|
||||
@@ -145,6 +152,9 @@
|
||||
/* Utilities */
|
||||
|
||||
|
||||
/* RT-Thread Utestcases */
|
||||
|
||||
|
||||
/* RT-Thread online packages */
|
||||
|
||||
/* IoT - internet of things */
|
||||
@@ -175,16 +185,27 @@
|
||||
|
||||
/* system packages */
|
||||
|
||||
/* acceleration: Assembly language or algorithmic acceleration packages */
|
||||
|
||||
|
||||
/* Micrium: Micrium software products porting for RT-Thread */
|
||||
|
||||
|
||||
/* peripheral libraries and drivers */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
/* AI packages */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
|
||||
/* samples: kernel and components samples */
|
||||
|
||||
|
||||
/* entertainment: terminal games and other interesting software packages */
|
||||
|
||||
#define BCM2836_SOC
|
||||
#define BSP_SUPPORT_FPU
|
||||
|
||||
/* Hardware Drivers Config */
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import os
|
||||
|
||||
# toolchains options
|
||||
ARCH ='aarch64'
|
||||
CPU ='cortex-a53'
|
||||
CPU ='cortex-a'
|
||||
CROSS_TOOL ='gcc'
|
||||
|
||||
if os.getenv('RTT_ROOT'):
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -101,7 +101,11 @@ msh />
|
||||
|
||||
| 驱动 | 支持情况 | 备注 |
|
||||
| ------ | ---- | :------: |
|
||||
| UART | 支持 | UART0|
|
||||
| UART | 支持 | UART0,UART2,UART3,UART4,UART5 |
|
||||
| GPIO | 支持 | - |
|
||||
| MAILBOX | 支持 | - |
|
||||
| SDIO | 支持 | - |
|
||||
| ETH | 支持 | - |
|
||||
|
||||
## 5. 联系人信息
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2017-5-30 bernard the first version
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#ifdef BSP_USING_SDIO0
|
||||
#include <dfs_fs.h>
|
||||
|
||||
int mnt_init(void)
|
||||
{
|
||||
rt_thread_delay(RT_TICK_PER_SECOND);
|
||||
if (dfs_mount("sd0", "/", "elm", 0, 0) == 0)
|
||||
{
|
||||
rt_kprintf("file system initialization done!\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
INIT_ENV_EXPORT(mnt_init);
|
||||
#endif
|
||||
@@ -14,8 +14,24 @@ menu "Hardware Drivers Config"
|
||||
config RT_USING_UART0
|
||||
bool "Enabel UART 0"
|
||||
default y
|
||||
|
||||
config RT_USING_UART1
|
||||
bool "Enabel UART 1"
|
||||
default n
|
||||
|
||||
config RT_USING_UART3
|
||||
bool "Enabel UART 3"
|
||||
default n
|
||||
|
||||
config RT_USING_UART4
|
||||
bool "Enabel UART 4"
|
||||
default n
|
||||
|
||||
config RT_USING_UART5
|
||||
bool "Enabel UART 5"
|
||||
default n
|
||||
endif
|
||||
|
||||
|
||||
menuconfig BSP_USING_GIC
|
||||
bool "Enable GIC"
|
||||
select RT_USING_GIC
|
||||
@@ -53,6 +69,10 @@ menu "Hardware Drivers Config"
|
||||
default n
|
||||
endif
|
||||
|
||||
config BSP_USING_ETH
|
||||
bool "Enable ETH"
|
||||
default n
|
||||
|
||||
config BSP_USING_WDT
|
||||
bool "Enable WDT"
|
||||
select RT_USING_WDT
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
|
||||
#include "cp15.h"
|
||||
#include "mmu.h"
|
||||
#include "mbox.h"
|
||||
|
||||
#ifdef BSP_USING_CORETIMER
|
||||
static rt_uint64_t timerStep;
|
||||
|
||||
int rt_hw_get_gtimer_frq(void);
|
||||
@@ -29,15 +31,21 @@ void core0_timer_enable_interrupt_controller(void)
|
||||
{
|
||||
CORE0_TIMER_IRQ_CTRL |= NON_SECURE_TIMER_IRQ;
|
||||
}
|
||||
#endif
|
||||
|
||||
void rt_hw_timer_isr(int vector, void *parameter)
|
||||
{
|
||||
#ifdef BSP_USING_CORETIMER
|
||||
rt_hw_set_gtimer_val(timerStep);
|
||||
#else
|
||||
ARM_TIMER_IRQCLR = 0;
|
||||
#endif
|
||||
rt_tick_increase();
|
||||
}
|
||||
|
||||
void rt_hw_timer_init(void)
|
||||
{
|
||||
#ifdef BSP_USING_CORETIMER
|
||||
rt_hw_interrupt_install(TIMER_IRQ, rt_hw_timer_isr, RT_NULL, "tick");
|
||||
rt_hw_interrupt_umask(TIMER_IRQ);
|
||||
__ISB();
|
||||
@@ -48,6 +56,27 @@ void rt_hw_timer_init(void)
|
||||
rt_hw_gtimer_enable();
|
||||
rt_hw_set_gtimer_val(timerStep);
|
||||
core0_timer_enable_interrupt_controller();
|
||||
#else
|
||||
rt_uint32_t apb_clock = 0;
|
||||
rt_uint32_t timer_clock = 1000000;
|
||||
|
||||
apb_clock = bcm271x_mbox_clock_get_rate(CORE_CLK_ID);
|
||||
ARM_TIMER_PREDIV = (apb_clock/timer_clock - 1);
|
||||
|
||||
ARM_TIMER_RELOAD = 0;
|
||||
ARM_TIMER_LOAD = 0;
|
||||
ARM_TIMER_IRQCLR = 0;
|
||||
ARM_TIMER_CTRL = 0;
|
||||
|
||||
ARM_TIMER_RELOAD = 1000000 / RT_TICK_PER_SECOND;
|
||||
ARM_TIMER_LOAD = 1000000 / RT_TICK_PER_SECOND;
|
||||
|
||||
/* 23-bit counter, enable interrupt, enable timer */
|
||||
ARM_TIMER_CTRL = (1 << 1) | (1 << 5) | (1 << 7);
|
||||
|
||||
rt_hw_interrupt_install(ARM_TIMER_IRQ, rt_hw_timer_isr, RT_NULL, "tick");
|
||||
rt_hw_interrupt_umask(ARM_TIMER_IRQ);
|
||||
#endif
|
||||
}
|
||||
|
||||
void idle_wfi(void)
|
||||
@@ -65,6 +94,13 @@ void rt_hw_board_init(void)
|
||||
armv8_map(0, 0, 0x6400000, MEM_ATTR_MEMORY);
|
||||
armv8_map(0xFE200000, 0xFE200000, 0x200000, MEM_ATTR_IO);//uart gpio
|
||||
armv8_map(0xFF800000, 0xFF800000, 0x200000, MEM_ATTR_IO);//gic timer
|
||||
armv8_map(ARM_TIMER_BASE, ARM_TIMER_BASE, 0x200000, MEM_ATTR_IO);//arm timer
|
||||
armv8_map(STIMER_BASE, STIMER_BASE, 0x200000, MEM_ATTR_IO);//stimer
|
||||
armv8_map(MMC2_BASE_ADDR, MMC2_BASE_ADDR, 0x200000, MEM_ATTR_IO);//mmc
|
||||
armv8_map(MBOX_ADDR, MBOX_ADDR, 0x200000, MEM_ATTR_IO);//mbox msg
|
||||
armv8_map((unsigned long)MAC_REG_BASE_ADDR, (unsigned long)MAC_REG_BASE_ADDR, 0x80000, MEM_ATTR_IO);//mac
|
||||
armv8_map(SEND_DATA_NO_CACHE, SEND_DATA_NO_CACHE, 0x200000, MEM_ATTR_MEMORY);//eth send
|
||||
armv8_map(RECV_DATA_NO_CACHE, RECV_DATA_NO_CACHE, 0x200000, MEM_ATTR_MEMORY);//eth recv
|
||||
mmu_enable();
|
||||
|
||||
/* initialize hardware interrupt */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,216 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2020-10-30 bigmagic first version
|
||||
*/
|
||||
|
||||
#ifndef __DRV_ETH_H__
|
||||
#define __DRV_ETH_H__
|
||||
|
||||
#define MAC_REG (void *)(0xfd580000)
|
||||
|
||||
#define SYS_REV_CTRL (0x00)
|
||||
#define SYS_PORT_CTRL (0x04)
|
||||
#define PORT_MODE_EXT_GPHY (3)
|
||||
|
||||
#define GENET_SYS_OFF (0x0000)
|
||||
#define SYS_RBUF_FLUSH_CTRL (GENET_SYS_OFF + 0x08)
|
||||
#define SYS_TBUF_FLUSH_CTRL (GENET_SYS_OFF + 0x0c)
|
||||
|
||||
#define GENET_EXT_OFF (0x0080)
|
||||
#define EXT_RGMII_OOB_CTRL (GENET_EXT_OFF + 0x0c)
|
||||
#define RGMII_LINK BIT(4)
|
||||
#define OOB_DISABLE BIT(5)
|
||||
#define RGMII_MODE_EN BIT(6)
|
||||
#define ID_MODE_DIS BIT(16)
|
||||
|
||||
#define GENET_RBUF_OFF (0x0300)
|
||||
#define RBUF_TBUF_SIZE_CTRL (GENET_RBUF_OFF + 0xb4)
|
||||
#define RBUF_CTRL (GENET_RBUF_OFF + 0x00)
|
||||
#define RBUF_ALIGN_2B BIT(1)
|
||||
|
||||
#define GENET_UMAC_OFF (0x0800)
|
||||
#define UMAC_MIB_CTRL (GENET_UMAC_OFF + 0x580)
|
||||
#define UMAC_MAX_FRAME_LEN (GENET_UMAC_OFF + 0x014)
|
||||
#define UMAC_MAC0 (GENET_UMAC_OFF + 0x00c)
|
||||
#define UMAC_MAC1 (GENET_UMAC_OFF + 0x010)
|
||||
#define UMAC_CMD (GENET_UMAC_OFF + 0x008)
|
||||
#define MDIO_CMD (GENET_UMAC_OFF + 0x614)
|
||||
#define UMAC_TX_FLUSH (GENET_UMAC_OFF + 0x334)
|
||||
#define MDIO_START_BUSY BIT(29)
|
||||
#define MDIO_READ_FAIL BIT(28)
|
||||
#define MDIO_RD (2 << 26)
|
||||
#define MDIO_WR BIT(26)
|
||||
#define MDIO_PMD_SHIFT (21)
|
||||
#define MDIO_PMD_MASK (0x1f)
|
||||
#define MDIO_REG_SHIFT (16)
|
||||
#define MDIO_REG_MASK (0x1f)
|
||||
|
||||
#define GENET_INTRL2_OFF (0x0200)
|
||||
#define GENET_INTRL2_CPU_STAT (GENET_INTRL2_OFF + 0x00)
|
||||
#define GENET_INTRL2_CPU_CLEAR (GENET_INTRL2_OFF + 0x08)
|
||||
#define GENET_INTRL2_CPU_STAT_MASK (GENET_INTRL2_OFF + 0x0c)
|
||||
#define GENET_INTRL2_CPU_SET_MASK (GENET_INTRL2_OFF + 0x10)
|
||||
#define GENET_INTRL2_CPU_CLEAR_MASK (GENET_INTRL2_OFF + 0x14)
|
||||
#define GENET_IRQ_MDIO_ERROR BIT(24)
|
||||
#define GENET_IRQ_MDIO_DONE BIT(23)
|
||||
#define GENET_IRQ_TXDMA_DONE BIT(16)
|
||||
#define GENET_IRQ_RXDMA_DONE BIT(13)
|
||||
|
||||
#define CMD_TX_EN BIT(0)
|
||||
#define CMD_RX_EN BIT(1)
|
||||
#define UMAC_SPEED_10 (0)
|
||||
#define UMAC_SPEED_100 (1)
|
||||
#define UMAC_SPEED_1000 (2)
|
||||
#define UMAC_SPEED_2500 (3)
|
||||
#define CMD_SPEED_SHIFT (2)
|
||||
#define CMD_SPEED_MASK (3)
|
||||
#define CMD_SW_RESET BIT(13)
|
||||
#define CMD_LCL_LOOP_EN BIT(15)
|
||||
#define CMD_TX_EN BIT(0)
|
||||
#define CMD_RX_EN BIT(1)
|
||||
|
||||
#define MIB_RESET_RX BIT(0)
|
||||
#define MIB_RESET_RUNT BIT(1)
|
||||
#define MIB_RESET_TX BIT(2)
|
||||
|
||||
/* total number of Buffer Descriptors, same for Rx/Tx */
|
||||
#define TOTAL_DESCS (256)
|
||||
#define RX_DESCS TOTAL_DESCS
|
||||
#define TX_DESCS TOTAL_DESCS
|
||||
|
||||
#define DEFAULT_Q (0x10)
|
||||
|
||||
#define ETH_DATA_LEN (1500)
|
||||
#define ETH_HLEN (14)
|
||||
#define VLAN_HLEN (4)
|
||||
#define ETH_FCS_LEN (4)
|
||||
/*
|
||||
* Body(1500) + EH_SIZE(14) + VLANTAG(4) + BRCMTAG(6) + FCS(4) = 1528.
|
||||
* 1536 is multiple of 256 bytes
|
||||
*/
|
||||
#define ENET_BRCM_TAG_LEN (6)
|
||||
#define ENET_PAD (8)
|
||||
#define ENET_MAX_MTU_SIZE (ETH_DATA_LEN + ETH_HLEN + VLAN_HLEN + ENET_BRCM_TAG_LEN + ETH_FCS_LEN + ENET_PAD)
|
||||
|
||||
/* Tx/Rx Dma Descriptor common bits */
|
||||
#define DMA_EN BIT(0)
|
||||
#define DMA_RING_BUF_EN_SHIFT (0x01)
|
||||
#define DMA_RING_BUF_EN_MASK (0xffff)
|
||||
#define DMA_BUFLENGTH_MASK (0x0fff)
|
||||
#define DMA_BUFLENGTH_SHIFT (16)
|
||||
#define DMA_RING_SIZE_SHIFT (16)
|
||||
#define DMA_OWN (0x8000)
|
||||
#define DMA_EOP (0x4000)
|
||||
#define DMA_SOP (0x2000)
|
||||
#define DMA_WRAP (0x1000)
|
||||
#define DMA_MAX_BURST_LENGTH (0x8)
|
||||
/* Tx specific DMA descriptor bits */
|
||||
#define DMA_TX_UNDERRUN (0x0200)
|
||||
#define DMA_TX_APPEND_CRC (0x0040)
|
||||
#define DMA_TX_OW_CRC (0x0020)
|
||||
#define DMA_TX_DO_CSUM (0x0010)
|
||||
#define DMA_TX_QTAG_SHIFT (7)
|
||||
|
||||
/* DMA rings size */
|
||||
#define DMA_RING_SIZE (0x40)
|
||||
#define DMA_RINGS_SIZE (DMA_RING_SIZE * (DEFAULT_Q + 1))
|
||||
|
||||
/* DMA descriptor */
|
||||
#define DMA_DESC_LENGTH_STATUS (0x00)
|
||||
#define DMA_DESC_ADDRESS_LO (0x04)
|
||||
#define DMA_DESC_ADDRESS_HI (0x08)
|
||||
#define DMA_DESC_SIZE (12)
|
||||
|
||||
#define GENET_RX_OFF (0x2000)
|
||||
#define GENET_RDMA_REG_OFF (GENET_RX_OFF + TOTAL_DESCS * DMA_DESC_SIZE)
|
||||
#define GENET_TX_OFF (0x4000)
|
||||
#define GENET_TDMA_REG_OFF (GENET_TX_OFF + TOTAL_DESCS * DMA_DESC_SIZE)
|
||||
|
||||
#define DMA_FC_THRESH_HI (RX_DESCS >> 4)
|
||||
#define DMA_FC_THRESH_LO (5)
|
||||
#define DMA_FC_THRESH_VALUE ((DMA_FC_THRESH_LO << 16) | DMA_FC_THRESH_HI)
|
||||
|
||||
#define DMA_XOFF_THRESHOLD_SHIFT (16)
|
||||
|
||||
#define TDMA_RING_REG_BASE (GENET_TDMA_REG_OFF + DEFAULT_Q * DMA_RING_SIZE)
|
||||
#define TDMA_READ_PTR (TDMA_RING_REG_BASE + 0x00)
|
||||
#define TDMA_CONS_INDEX (TDMA_RING_REG_BASE + 0x08)
|
||||
#define TDMA_PROD_INDEX (TDMA_RING_REG_BASE + 0x0c)
|
||||
#define DMA_RING_BUF_SIZE (0x10)
|
||||
#define DMA_START_ADDR (0x14)
|
||||
#define DMA_END_ADDR (0x1c)
|
||||
#define DMA_MBUF_DONE_THRESH (0x24)
|
||||
#define TDMA_FLOW_PERIOD (TDMA_RING_REG_BASE + 0x28)
|
||||
#define TDMA_WRITE_PTR (TDMA_RING_REG_BASE + 0x2c)
|
||||
|
||||
#define RDMA_RING_REG_BASE (GENET_RDMA_REG_OFF + DEFAULT_Q * DMA_RING_SIZE)
|
||||
#define RDMA_WRITE_PTR (RDMA_RING_REG_BASE + 0x00)
|
||||
#define RDMA_PROD_INDEX (RDMA_RING_REG_BASE + 0x08)
|
||||
#define RDMA_CONS_INDEX (RDMA_RING_REG_BASE + 0x0c)
|
||||
#define RDMA_XON_XOFF_THRESH (RDMA_RING_REG_BASE + 0x28)
|
||||
#define RDMA_READ_PTR (RDMA_RING_REG_BASE + 0x2c)
|
||||
|
||||
#define TDMA_REG_BASE (GENET_TDMA_REG_OFF + DMA_RINGS_SIZE)
|
||||
#define RDMA_REG_BASE (GENET_RDMA_REG_OFF + DMA_RINGS_SIZE)
|
||||
#define DMA_RING_CFG (0x00)
|
||||
#define DMA_CTRL (0x04)
|
||||
#define DMA_SCB_BURST_SIZE (0x0c)
|
||||
|
||||
#define RX_BUF_LENGTH (2048)
|
||||
#define RX_TOTAL_BUFSIZE (RX_BUF_LENGTH * RX_DESCS)
|
||||
#define RX_BUF_OFFSET (2)
|
||||
|
||||
#define PHY_INTERFACE_MODE_RGMII (7)
|
||||
#define PHY_INTERFACE_MODE_RGMII_RXID (9)
|
||||
|
||||
#define BCM54213PE_MII_CONTROL (0x00)
|
||||
#define BCM54213PE_MII_STATUS (0x01)
|
||||
#define BCM54213PE_PHY_IDENTIFIER_HIGH (0x02)
|
||||
#define BCM54213PE_PHY_IDENTIFIER_LOW (0x03)
|
||||
|
||||
#define BCM54213PE_AUTO_NEGOTIATION_ADV (0x04)
|
||||
#define BCM54213PE_AUTO_NEGOTIATION_LINK (0x05)
|
||||
#define BCM54213PE_AUTO_NEGOTIATION_EXPANSION (0x06)
|
||||
|
||||
#define BCM54213PE_NEXT_PAGE_TX (0x07)
|
||||
|
||||
#define BCM54213PE_PARTNER_RX (0x08)
|
||||
|
||||
#define BCM54213PE_CONTROL (0x09)
|
||||
#define BCM54213PE_STATUS (0x0A)
|
||||
|
||||
#define BCM54213PE_IEEE_EXTENDED_STATUS (0x0F)
|
||||
#define BCM54213PE_PHY_EXTENDED_CONTROL (0x10)
|
||||
#define BCM54213PE_PHY_EXTENDED_STATUS (0x11)
|
||||
|
||||
#define BCM54213PE_RECEIVE_ERROR_COUNTER (0x12)
|
||||
#define BCM54213PE_FALSE_C_S_COUNTER (0x13)
|
||||
#define BCM54213PE_RECEIVE_NOT_OK_COUNTER (0x14)
|
||||
|
||||
#define BCM54213PE_VERSION_B1 (0x600d84a2)
|
||||
#define BCM54213PE_VERSION_X (0x600d84a0)
|
||||
|
||||
//BCM54213PE_MII_CONTROL
|
||||
#define MII_CONTROL_PHY_RESET (1 << 15)
|
||||
#define MII_CONTROL_AUTO_NEGOTIATION_ENABLED (1 << 12)
|
||||
#define MII_CONTROL_AUTO_NEGOTIATION_RESTART (1 << 9)
|
||||
#define MII_CONTROL_PHY_FULL_DUPLEX (1 << 8)
|
||||
#define MII_CONTROL_SPEED_SELECTION (1 << 6)
|
||||
|
||||
//BCM54213PE_MII_STATUS
|
||||
#define MII_STATUS_LINK_UP (1 << 2)
|
||||
|
||||
//BCM54213PE_CONTROL
|
||||
#define CONTROL_FULL_DUPLEX_CAPABILITY (1 << 9)
|
||||
#define CONTROL_HALF_DUPLEX_CAPABILITY (1 << 8)
|
||||
|
||||
#define SPEED_1000 (1000)
|
||||
#define SPEED_100 (100)
|
||||
#define SPEED_10 (10)
|
||||
|
||||
#endif/* __DRV_ETH_H__ */
|
||||
@@ -12,6 +12,63 @@
|
||||
|
||||
#ifdef BSP_USING_PIN
|
||||
|
||||
uint32_t raspi_get_pin_state(uint32_t fselnum)
|
||||
{
|
||||
uint32_t gpfsel = 0;
|
||||
|
||||
switch (fselnum)
|
||||
{
|
||||
case 0:
|
||||
gpfsel = GPIO_REG_GPFSEL0(GPIO_BASE);
|
||||
break;
|
||||
case 1:
|
||||
gpfsel = GPIO_REG_GPFSEL1(GPIO_BASE);
|
||||
break;
|
||||
case 2:
|
||||
gpfsel = GPIO_REG_GPFSEL2(GPIO_BASE);
|
||||
break;
|
||||
case 3:
|
||||
gpfsel = GPIO_REG_GPFSEL3(GPIO_BASE);
|
||||
break;
|
||||
case 4:
|
||||
gpfsel = GPIO_REG_GPFSEL4(GPIO_BASE);
|
||||
break;
|
||||
case 5:
|
||||
gpfsel = GPIO_REG_GPFSEL5(GPIO_BASE);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return gpfsel;
|
||||
}
|
||||
|
||||
void raspi_set_pin_state(uint32_t fselnum, uint32_t gpfsel)
|
||||
{
|
||||
switch (fselnum)
|
||||
{
|
||||
case 0:
|
||||
GPIO_REG_GPFSEL0(GPIO_BASE) = gpfsel;
|
||||
break;
|
||||
case 1:
|
||||
GPIO_REG_GPFSEL1(GPIO_BASE) = gpfsel;
|
||||
break;
|
||||
case 2:
|
||||
GPIO_REG_GPFSEL2(GPIO_BASE) = gpfsel;
|
||||
break;
|
||||
case 3:
|
||||
GPIO_REG_GPFSEL3(GPIO_BASE) = gpfsel;
|
||||
break;
|
||||
case 4:
|
||||
GPIO_REG_GPFSEL4(GPIO_BASE) = gpfsel;
|
||||
break;
|
||||
case 5:
|
||||
GPIO_REG_GPFSEL5(GPIO_BASE) = gpfsel;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void raspi_pin_mode(struct rt_device *dev, rt_base_t pin, rt_base_t mode)
|
||||
{
|
||||
uint32_t fselnum = pin / 10;
|
||||
@@ -46,6 +103,18 @@ static void raspi_pin_mode(struct rt_device *dev, rt_base_t pin, rt_base_t mode)
|
||||
}
|
||||
}
|
||||
|
||||
void prev_raspi_pin_mode(GPIO_PIN pin, GPIO_FUNC mode)
|
||||
{
|
||||
uint32_t fselnum = pin / 10;
|
||||
uint32_t fselrest = pin % 10;
|
||||
uint32_t gpfsel = 0;
|
||||
|
||||
gpfsel = raspi_get_pin_state(fselnum);
|
||||
gpfsel &= ~((uint32_t)(0x07 << (fselrest * 3)));
|
||||
gpfsel |= (uint32_t)(mode << (fselrest * 3));
|
||||
raspi_set_pin_state(fselnum, gpfsel);
|
||||
}
|
||||
|
||||
static void raspi_pin_write(struct rt_device *dev, rt_base_t pin, rt_base_t value)
|
||||
{
|
||||
uint32_t num = pin / 32;
|
||||
|
||||
@@ -60,6 +60,50 @@
|
||||
#define GPIO_REG_REV9(BASE) HWREG32(BASE + 0xA0)
|
||||
#define GPIO_REG_TEST(BASE) HWREG32(BASE + 0xA4)
|
||||
|
||||
typedef enum {
|
||||
GPIO_PIN_0,
|
||||
GPIO_PIN_1,
|
||||
GPIO_PIN_2,
|
||||
GPIO_PIN_3,
|
||||
GPIO_PIN_4,
|
||||
GPIO_PIN_5,
|
||||
GPIO_PIN_6,
|
||||
GPIO_PIN_7,
|
||||
GPIO_PIN_8,
|
||||
GPIO_PIN_9,
|
||||
GPIO_PIN_10,
|
||||
GPIO_PIN_11,
|
||||
GPIO_PIN_12,
|
||||
GPIO_PIN_13,
|
||||
GPIO_PIN_14,
|
||||
GPIO_PIN_15,
|
||||
GPIO_PIN_16,
|
||||
GPIO_PIN_17,
|
||||
GPIO_PIN_18,
|
||||
GPIO_PIN_19,
|
||||
GPIO_PIN_20,
|
||||
GPIO_PIN_21,
|
||||
GPIO_PIN_22,
|
||||
GPIO_PIN_23,
|
||||
GPIO_PIN_24,
|
||||
GPIO_PIN_25,
|
||||
GPIO_PIN_26,
|
||||
GPIO_PIN_27,
|
||||
GPIO_PIN_28,
|
||||
GPIO_PIN_29,
|
||||
GPIO_PIN_30,
|
||||
GPIO_PIN_31,
|
||||
GPIO_PIN_32,
|
||||
GPIO_PIN_33,
|
||||
GPIO_PIN_34,
|
||||
GPIO_PIN_35,
|
||||
GPIO_PIN_36,
|
||||
GPIO_PIN_37,
|
||||
GPIO_PIN_38,
|
||||
GPIO_PIN_39,
|
||||
GPIO_PIN_40,
|
||||
} GPIO_PIN;
|
||||
|
||||
typedef enum {
|
||||
INPUT = 0b000,
|
||||
OUTPUT = 0b001,
|
||||
@@ -71,7 +115,8 @@ typedef enum {
|
||||
ALT5 = 0b010
|
||||
} GPIO_FUNC;
|
||||
|
||||
|
||||
void prev_raspi_pin_mode(GPIO_PIN pin, GPIO_FUNC mode);
|
||||
void prev_raspi_pin_write(GPIO_PIN pin, int pin_value);
|
||||
int rt_hw_gpio_init(void);
|
||||
|
||||
#endif /* __DRV_GPIO_H__ */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,268 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2020-10-27 bigmagic first version
|
||||
*/
|
||||
|
||||
#ifndef __DRV_SDIO_H__
|
||||
#define __DRV_SDIO_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtdevice.h>
|
||||
#include <drivers/mmcsd_core.h>
|
||||
|
||||
#include "board.h"
|
||||
#include "raspi4.h"
|
||||
|
||||
/* Struct for Intrrrupt Information */
|
||||
#define SDXC_CmdDone BIT(0)
|
||||
#define SDXC_DataDone BIT(1)
|
||||
#define SDXC_BlockGap BIT(2)
|
||||
#define SDXC_WriteRdy BIT(4)
|
||||
#define SDXC_ReadRdy BIT(5)
|
||||
#define SDXC_Card BIT(8)
|
||||
#define SDXC_Retune BIT(12)
|
||||
#define SDXC_BootAck BIT(13)
|
||||
#define SDXC_EndBoot BIT(14)
|
||||
#define SDXC_Err BIT(15)
|
||||
#define SDXC_CTOErr BIT(16)
|
||||
#define SDXC_CCRCErr BIT(17)
|
||||
#define SDXC_CENDErr BIT(18)
|
||||
#define SDXC_CBADErr BIT(19)
|
||||
#define SDXC_DTOErr BIT(20)
|
||||
#define SDXC_DCRCErr BIT(21)
|
||||
#define SDXC_DENDErr BIT(22)
|
||||
#define SDXC_ACMDErr BIT(24)
|
||||
|
||||
#define SDXC_BLKCNT_EN BIT(1)
|
||||
#define SDXC_AUTO_CMD12_EN BIT(2)
|
||||
#define SDXC_AUTO_CMD23_EN BIT(3)
|
||||
#define SDXC_DAT_DIR BIT(4) // from card to host
|
||||
#define SDXC_MULTI_BLOCK BIT(5)
|
||||
#define SDXC_CMD_RSPNS_136 BIT(16)
|
||||
#define SDXC_CMD_RSPNS_48 BIT(17)
|
||||
#define SDXC_CMD_RSPNS_48busy BIT(16)|BIT(17)
|
||||
#define SDXC_CHECK_CRC_CMD BIT(19)
|
||||
#define SDXC_CMD_IXCHK_EN BIT(20)
|
||||
#define SDXC_CMD_ISDATA BIT(21)
|
||||
#define SDXC_CMD_SUSPEND BIT(22)
|
||||
#define SDXC_CMD_RESUME BIT(23)
|
||||
#define SDXC_CMD_ABORT BIT(23)|BIT(22)
|
||||
|
||||
#define SDXC_CMD_INHIBIT BIT(0)
|
||||
#define SDXC_DAT_INHIBIT BIT(1)
|
||||
#define SDXC_DAT_ACTIVE BIT(2)
|
||||
#define SDXC_WRITE_TRANSFER BIT(8)
|
||||
#define SDXC_READ_TRANSFER BIT(9)
|
||||
|
||||
struct sdhci_cmd_t
|
||||
{
|
||||
rt_uint32_t cmdidx;
|
||||
rt_uint32_t cmdarg;
|
||||
rt_uint32_t resptype;
|
||||
rt_uint32_t datarw;
|
||||
#define DATA_READ 1
|
||||
#define DATA_WRITE 2
|
||||
rt_uint32_t response[4];
|
||||
};
|
||||
|
||||
struct sdhci_data_t
|
||||
{
|
||||
rt_uint8_t *buf;
|
||||
rt_uint32_t flag;
|
||||
rt_uint32_t blksz;
|
||||
rt_uint32_t blkcnt;
|
||||
};
|
||||
|
||||
struct sdhci_t
|
||||
{
|
||||
char *name;
|
||||
rt_uint32_t voltages;
|
||||
rt_uint32_t width;
|
||||
rt_uint32_t clock;
|
||||
rt_err_t removeable;
|
||||
void *sdcard;
|
||||
|
||||
rt_err_t (*detect)(struct sdhci_t *sdhci);
|
||||
rt_err_t (*setwidth)(struct sdhci_t *sdhci, rt_uint32_t width);
|
||||
rt_err_t (*setclock)(struct sdhci_t *sdhci, rt_uint32_t clock);
|
||||
rt_err_t (*transfer)(struct sdhci_t *sdhci, struct sdhci_cmd_t *cmd, struct sdhci_data_t *dat);
|
||||
void *priv;
|
||||
};
|
||||
|
||||
struct sdhci_pdata_t
|
||||
{
|
||||
size_t virt;
|
||||
};
|
||||
|
||||
// EMMC command flags
|
||||
#define CMD_TYPE_NORMAL (0x00000000)
|
||||
#define CMD_TYPE_SUSPEND (0x00400000)
|
||||
#define CMD_TYPE_RESUME (0x00800000)
|
||||
#define CMD_TYPE_ABORT (0x00c00000)
|
||||
#define CMD_IS_DATA (0x00200000)
|
||||
#define CMD_IXCHK_EN (0x00100000)
|
||||
#define CMD_CRCCHK_EN (0x00080000)
|
||||
#define CMD_RSPNS_NO (0x00000000)
|
||||
#define CMD_RSPNS_136 (0x00010000)
|
||||
#define CMD_RSPNS_48 (0x00020000)
|
||||
#define CMD_RSPNS_48B (0x00030000)
|
||||
#define TM_MULTI_BLOCK (0x00000020)
|
||||
#define TM_DAT_DIR_HC (0x00000000)
|
||||
#define TM_DAT_DIR_CH (0x00000010)
|
||||
#define TM_AUTO_CMD23 (0x00000008)
|
||||
#define TM_AUTO_CMD12 (0x00000004)
|
||||
#define TM_BLKCNT_EN (0x00000002)
|
||||
#define TM_MULTI_DATA (CMD_IS_DATA|TM_MULTI_BLOCK|TM_BLKCNT_EN)
|
||||
|
||||
#define RCA_NO (1)
|
||||
#define RCA_YES (2)
|
||||
|
||||
// INTERRUPT register settings
|
||||
#define INT_AUTO_ERROR (0x01000000)
|
||||
#define INT_DATA_END_ERR (0x00400000)
|
||||
#define INT_DATA_CRC_ERR (0x00200000)
|
||||
#define INT_DATA_TIMEOUT (0x00100000)
|
||||
#define INT_INDEX_ERROR (0x00080000)
|
||||
#define INT_END_ERROR (0x00040000)
|
||||
#define INT_CRC_ERROR (0x00020000)
|
||||
#define INT_CMD_TIMEOUT (0x00010000)
|
||||
#define INT_ERR (0x00008000)
|
||||
#define INT_ENDBOOT (0x00004000)
|
||||
#define INT_BOOTACK (0x00002000)
|
||||
#define INT_RETUNE (0x00001000)
|
||||
#define INT_CARD (0x00000100)
|
||||
#define INT_READ_RDY (0x00000020)
|
||||
#define INT_WRITE_RDY (0x00000010)
|
||||
#define INT_BLOCK_GAP (0x00000004)
|
||||
#define INT_DATA_DONE (0x00000002)
|
||||
#define INT_CMD_DONE (0x00000001)
|
||||
#define INT_ERROR_MASK \
|
||||
( \
|
||||
INT_CRC_ERROR | \
|
||||
INT_END_ERROR | \
|
||||
INT_INDEX_ERROR | \
|
||||
INT_DATA_TIMEOUT | \
|
||||
INT_DATA_CRC_ERR | \
|
||||
INT_DATA_END_ERR | \
|
||||
INT_ERR|INT_AUTO_ERROR \
|
||||
)
|
||||
|
||||
#define INT_ALL_MASK \
|
||||
(\
|
||||
INT_CMD_DONE | \
|
||||
INT_DATA_DONE | \
|
||||
INT_READ_RDY | \
|
||||
INT_WRITE_RDY | \
|
||||
INT_ERROR_MASK \
|
||||
)
|
||||
|
||||
#define EMMC_ARG2 (0x00)
|
||||
#define EMMC_BLKSIZECNT (0x04)
|
||||
#define EMMC_ARG1 (0x08)
|
||||
#define EMMC_CMDTM (0x0c)
|
||||
#define EMMC_RESP0 (0x10)
|
||||
#define EMMC_RESP1 (0x14)
|
||||
#define EMMC_RESP2 (0x18)
|
||||
#define EMMC_RESP3 (0x1c)
|
||||
#define EMMC_DATA (0x20)
|
||||
#define EMMC_STATUS (0x24)
|
||||
#define EMMC_CONTROL0 (0x28)
|
||||
#define EMMC_CONTROL1 (0x2c)
|
||||
#define EMMC_INTERRUPT (0x30)
|
||||
#define EMMC_IRPT_MASK (0x34)
|
||||
#define EMMC_IRPT_EN (0x38)
|
||||
#define EMMC_CONTROL2 (0x3c)
|
||||
#define EMMC_CAPABILITIES_0 (0x40)
|
||||
#define EMMC_CAPABILITIES_1 (0x44)
|
||||
#define EMMC_BOOT_TIMEOUT (0x70)
|
||||
#define EMMC_EXRDFIFO_EN (0x84)
|
||||
#define EMMC_SPI_INT_SPT (0xf0)
|
||||
#define EMMC_SLOTISR_VER (0xfc)
|
||||
|
||||
// CONTROL register settings
|
||||
#define C0_SPI_MODE_EN (0x00100000)
|
||||
#define C0_HCTL_HS_EN (0x00000004)
|
||||
#define C0_HCTL_DWITDH (0x00000002)
|
||||
|
||||
#define C1_SRST_DATA (0x04000000)
|
||||
#define C1_SRST_CMD (0x02000000)
|
||||
#define C1_SRST_HC (0x01000000)
|
||||
#define C1_TOUNIT_DIS (0x000f0000)
|
||||
#define C1_TOUNIT_MAX (0x000e0000)
|
||||
#define C1_CLK_GENSEL (0x00000020)
|
||||
#define C1_CLK_EN (0x00000004)
|
||||
#define C1_CLK_STABLE (0x00000002)
|
||||
#define C1_CLK_INTLEN (0x00000001)
|
||||
|
||||
#define FREQ_SETUP (400000) // 400 Khz
|
||||
#define FREQ_NORMAL (25000000) // 25 Mhz
|
||||
|
||||
// SLOTISR_VER values
|
||||
#define HOST_SPEC_NUM 0x00ff0000
|
||||
#define HOST_SPEC_NUM_SHIFT 16
|
||||
#define HOST_SPEC_V3 2
|
||||
#define HOST_SPEC_V2 1
|
||||
#define HOST_SPEC_V1 0
|
||||
|
||||
// STATUS register settings
|
||||
#define SR_DAT_LEVEL1 (0x1e000000)
|
||||
#define SR_CMD_LEVEL (0x01000000)
|
||||
#define SR_DAT_LEVEL0 (0x00f00000)
|
||||
#define SR_DAT3 (0x00800000)
|
||||
#define SR_DAT2 (0x00400000)
|
||||
#define SR_DAT1 (0x00200000)
|
||||
#define SR_DAT0 (0x00100000)
|
||||
#define SR_WRITE_PROT (0x00080000) // From SDHC spec v2, BCM says reserved
|
||||
#define SR_READ_AVAILABLE (0x00000800) // ???? undocumented
|
||||
#define SR_WRITE_AVAILABLE (0x00000400) // ???? undocumented
|
||||
#define SR_READ_TRANSFER (0x00000200)
|
||||
#define SR_WRITE_TRANSFER (0x00000100)
|
||||
#define SR_DAT_ACTIVE (0x00000004)
|
||||
#define SR_DAT_INHIBIT (0x00000002)
|
||||
#define SR_CMD_INHIBIT (0x00000001)
|
||||
|
||||
#define CONFIG_MMC_USE_DMA
|
||||
#define DMA_ALIGN (32U)
|
||||
|
||||
#define SD_CMD_INDEX(a) ((a) << 24)
|
||||
#define SD_CMD_RESERVED(a) (0xffffffff)
|
||||
#define SD_CMD_INDEX(a) ((a) << 24)
|
||||
#define SD_CMD_TYPE_NORMAL (0x0)
|
||||
#define SD_CMD_TYPE_SUSPEND (1 << 22)
|
||||
#define SD_CMD_TYPE_RESUME (2 << 22)
|
||||
#define SD_CMD_TYPE_ABORT (3 << 22)
|
||||
#define SD_CMD_TYPE_MASK (3 << 22)
|
||||
#define SD_CMD_ISDATA (1 << 21)
|
||||
#define SD_CMD_IXCHK_EN (1 << 20)
|
||||
#define SD_CMD_CRCCHK_EN (1 << 19)
|
||||
#define SD_CMD_RSPNS_TYPE_NONE (0) // For no response
|
||||
#define SD_CMD_RSPNS_TYPE_136 (1 << 16) // For response R2 (with CRC), R3,4 (no CRC)
|
||||
#define SD_CMD_RSPNS_TYPE_48 (2 << 16) // For responses R1, R5, R6, R7 (with CRC)
|
||||
#define SD_CMD_RSPNS_TYPE_48B (3 << 16) // For responses R1b, R5b (with CRC)
|
||||
#define SD_CMD_RSPNS_TYPE_MASK (3 << 16)
|
||||
#define SD_CMD_MULTI_BLOCK (1 << 5)
|
||||
#define SD_CMD_DAT_DIR_HC (0)
|
||||
#define SD_CMD_DAT_DIR_CH (1 << 4)
|
||||
#define SD_CMD_AUTO_CMD_EN_NONE (0)
|
||||
#define SD_CMD_AUTO_CMD_EN_CMD12 (1 << 2)
|
||||
#define SD_CMD_AUTO_CMD_EN_CMD23 (2 << 2)
|
||||
#define SD_CMD_BLKCNT_EN (1 << 1)
|
||||
#define SD_CMD_DMA (1)
|
||||
#define SD_RESP_NONE SD_CMD_RSPNS_TYPE_NONE
|
||||
#define SD_RESP_R1 (SD_CMD_RSPNS_TYPE_48)
|
||||
#define SD_RESP_R1b (SD_CMD_RSPNS_TYPE_48B)
|
||||
#define SD_RESP_R2 (SD_CMD_RSPNS_TYPE_136)
|
||||
#define SD_RESP_R3 SD_CMD_RSPNS_TYPE_48
|
||||
#define SD_RESP_R4 SD_CMD_RSPNS_TYPE_136
|
||||
#define SD_RESP_R5 (SD_CMD_RSPNS_TYPE_48 | SD_CMD_CRCCHK_EN)
|
||||
#define SD_RESP_R5b (SD_CMD_RSPNS_TYPE_48B | SD_CMD_CRCCHK_EN)
|
||||
#define SD_RESP_R6 (SD_CMD_RSPNS_TYPE_48 | SD_CMD_CRCCHK_EN)
|
||||
#define SD_RESP_R7 (SD_CMD_RSPNS_TYPE_48 | SD_CMD_CRCCHK_EN)
|
||||
#define SD_DATA_READ (SD_CMD_ISDATA | SD_CMD_DAT_DIR_CH)
|
||||
#define SD_DATA_WRITE (SD_CMD_ISDATA | SD_CMD_DAT_DIR_HC)
|
||||
#endif
|
||||
@@ -22,6 +22,26 @@ struct hw_uart_device
|
||||
rt_uint32_t irqno;
|
||||
};
|
||||
|
||||
#ifdef RT_USING_UART0
|
||||
static struct rt_serial_device _serial0;
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART1
|
||||
static struct rt_serial_device _serial1;
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART3
|
||||
static struct rt_serial_device _serial3;
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
static struct rt_serial_device _serial4;
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART5
|
||||
static struct rt_serial_device _serial5;
|
||||
#endif
|
||||
|
||||
static rt_err_t uart_configure(struct rt_serial_device *serial, struct serial_configure *cfg)
|
||||
{
|
||||
struct hw_uart_device *uart;
|
||||
@@ -30,26 +50,54 @@ static rt_err_t uart_configure(struct rt_serial_device *serial, struct serial_co
|
||||
|
||||
RT_ASSERT(serial != RT_NULL);
|
||||
uart = (struct hw_uart_device *)serial->parent.user_data;
|
||||
if(uart->hw_base == PL011_BASE)
|
||||
|
||||
if(uart->hw_base == AUX_BASE)
|
||||
{
|
||||
uint32_t gpfsel = 0;
|
||||
prev_raspi_pin_mode(GPIO_PIN_14, ALT5);
|
||||
prev_raspi_pin_mode(GPIO_PIN_15, ALT5);
|
||||
|
||||
gpfsel &= ~((uint32_t)(0x07 << (4 * 3)));
|
||||
gpfsel |= (uint32_t)(ALT0 << (4 * 3));
|
||||
GPIO_REG_GPFSEL1(GPIO_BASE) = gpfsel;
|
||||
|
||||
gpfsel &= ~((uint32_t)(0x07 << (5 * 3)));
|
||||
gpfsel |= (uint32_t)(ALT0 << (5 * 3));
|
||||
GPIO_REG_GPFSEL1(GPIO_BASE) = gpfsel;
|
||||
|
||||
PL011_REG_CR(uart->hw_base) = 0;/*Clear UART setting*/
|
||||
PL011_REG_LCRH(uart->hw_base) = 0;/*disable FIFO*/
|
||||
PL011_REG_IBRD(uart->hw_base) = ibrd;
|
||||
PL011_REG_FBRD(uart->hw_base) = (((bauddiv - ibrd * 1000) * 64 + 500) / 1000);
|
||||
PL011_REG_LCRH(uart->hw_base) = PL011_LCRH_WLEN_8;/*FIFO*/
|
||||
PL011_REG_CR(uart->hw_base) = PL011_CR_UARTEN | PL011_CR_TXE | PL011_CR_RXE;/*art enable, TX/RX enable*/
|
||||
AUX_ENABLES(uart->hw_base) = 1; /* Enable UART1 */
|
||||
AUX_MU_IER_REG(uart->hw_base) = 0; /* Disable interrupt */
|
||||
AUX_MU_CNTL_REG(uart->hw_base) = 0; /* Disable Transmitter and Receiver */
|
||||
AUX_MU_LCR_REG(uart->hw_base) = 3; /* Works in 8-bit mode */
|
||||
AUX_MU_MCR_REG(uart->hw_base) = 0; /* Disable RTS */
|
||||
AUX_MU_IIR_REG(uart->hw_base) = 0xC6; /* Enable FIFO, Clear FIFO */
|
||||
AUX_MU_BAUD_REG(uart->hw_base) = 270; /* 115200 = system clock 250MHz / (8 * (baud + 1)), baud = 270 */
|
||||
AUX_MU_CNTL_REG(uart->hw_base) = 3; /* Enable Transmitter and Receiver */
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
if(uart->hw_base == UART0_BASE)
|
||||
{
|
||||
prev_raspi_pin_mode(GPIO_PIN_14, ALT0);
|
||||
prev_raspi_pin_mode(GPIO_PIN_15, ALT0);
|
||||
}
|
||||
|
||||
if(uart->hw_base == UART3_BASE)
|
||||
{
|
||||
prev_raspi_pin_mode(GPIO_PIN_4, ALT4);
|
||||
prev_raspi_pin_mode(GPIO_PIN_5, ALT4);
|
||||
}
|
||||
|
||||
if(uart->hw_base == UART4_BASE)
|
||||
{
|
||||
prev_raspi_pin_mode(GPIO_PIN_8, ALT4);
|
||||
prev_raspi_pin_mode(GPIO_PIN_9, ALT4);
|
||||
}
|
||||
|
||||
if(uart->hw_base == UART5_BASE)
|
||||
{
|
||||
prev_raspi_pin_mode(GPIO_PIN_12, ALT4);
|
||||
prev_raspi_pin_mode(GPIO_PIN_13, ALT4);
|
||||
}
|
||||
|
||||
PL011_REG_CR(uart->hw_base) = 0;/*Clear UART setting*/
|
||||
PL011_REG_LCRH(uart->hw_base) = 0;/*disable FIFO*/
|
||||
PL011_REG_IBRD(uart->hw_base) = ibrd;
|
||||
PL011_REG_FBRD(uart->hw_base) = (((bauddiv - ibrd * 1000) * 64 + 500) / 1000);
|
||||
PL011_REG_LCRH(uart->hw_base) = PL011_LCRH_WLEN_8;/*FIFO*/
|
||||
PL011_REG_CR(uart->hw_base) = PL011_CR_UARTEN | PL011_CR_TXE | PL011_CR_RXE;/*art enable, TX/RX enable*/
|
||||
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
@@ -70,7 +118,14 @@ static rt_err_t uart_control(struct rt_serial_device *serial, int cmd, void *arg
|
||||
|
||||
case RT_DEVICE_CTRL_SET_INT:
|
||||
/* enable rx irq */
|
||||
PL011_REG_IMSC(uart->hw_base) |= PL011_IMSC_RXIM;
|
||||
if(uart->hw_base == AUX_BASE)
|
||||
{
|
||||
AUX_MU_IER_REG(uart->hw_base) = 0x1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PL011_REG_IMSC(uart->hw_base) |= PL011_IMSC_RXIM;
|
||||
}
|
||||
rt_hw_interrupt_umask(uart->irqno);
|
||||
break;
|
||||
}
|
||||
@@ -85,8 +140,16 @@ static int uart_putc(struct rt_serial_device *serial, char c)
|
||||
RT_ASSERT(serial != RT_NULL);
|
||||
uart = (struct hw_uart_device *)serial->parent.user_data;
|
||||
|
||||
while ((PL011_REG_FR(uart->hw_base) & PL011_FR_TXFF));
|
||||
PL011_REG_DR(uart->hw_base) = (uint8_t)c;
|
||||
if(uart->hw_base == AUX_BASE)
|
||||
{
|
||||
while (!(AUX_MU_LSR_REG(uart->hw_base) & 0x20));
|
||||
AUX_MU_IO_REG(uart->hw_base) = c;
|
||||
}
|
||||
else
|
||||
{
|
||||
while ((PL011_REG_FR(uart->hw_base) & PL011_FR_TXFF));
|
||||
PL011_REG_DR(uart->hw_base) = (uint8_t)c;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -99,9 +162,19 @@ static int uart_getc(struct rt_serial_device *serial)
|
||||
RT_ASSERT(serial != RT_NULL);
|
||||
uart = (struct hw_uart_device *)serial->parent.user_data;
|
||||
|
||||
if((PL011_REG_FR(uart->hw_base) & PL011_FR_RXFE) == 0)
|
||||
if(uart->hw_base == AUX_BASE)
|
||||
{
|
||||
ch = PL011_REG_DR(uart->hw_base) & 0xff;
|
||||
if ((AUX_MU_LSR_REG(uart->hw_base) & 0x01))
|
||||
{
|
||||
ch = AUX_MU_IO_REG(uart->hw_base) & 0xff;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((PL011_REG_FR(uart->hw_base) & PL011_FR_RXFE) == 0)
|
||||
{
|
||||
ch = PL011_REG_DR(uart->hw_base) & 0xff;
|
||||
}
|
||||
}
|
||||
|
||||
return ch;
|
||||
@@ -115,38 +188,180 @@ static const struct rt_uart_ops _uart_ops =
|
||||
uart_getc,
|
||||
};
|
||||
|
||||
static void rt_hw_uart_isr(int irqno, void *param)
|
||||
#ifdef RT_USING_UART1
|
||||
static void rt_hw_aux_uart_isr(int irqno, void *param)
|
||||
{
|
||||
struct rt_serial_device *serial = (struct rt_serial_device*)param;
|
||||
rt_hw_serial_isr(serial, RT_SERIAL_EVENT_RX_IND);
|
||||
PL011_REG_ICR(UART0_BASE) = PL011_INTERRUPT_RECEIVE;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void rt_hw_uart_isr(int irqno, void *param)
|
||||
{
|
||||
#ifdef RT_USING_UART0
|
||||
if((PACTL_CS & IRQ_UART0) == IRQ_UART0)
|
||||
{
|
||||
PACTL_CS &= ~(IRQ_UART0);
|
||||
rt_hw_serial_isr(&_serial0, RT_SERIAL_EVENT_RX_IND);
|
||||
PL011_REG_ICR(UART0_BASE) = PL011_INTERRUPT_RECEIVE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART3
|
||||
if((PACTL_CS & IRQ_UART3) == IRQ_UART3)
|
||||
{
|
||||
PACTL_CS &= ~(IRQ_UART3);
|
||||
rt_hw_serial_isr(&_serial3, RT_SERIAL_EVENT_RX_IND);
|
||||
PL011_REG_ICR(uart3_addr) = PL011_INTERRUPT_RECEIVE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
if((PACTL_CS & IRQ_UART4) == IRQ_UART4)
|
||||
{
|
||||
PACTL_CS &= ~(IRQ_UART4);
|
||||
rt_hw_serial_isr(&_serial4, RT_SERIAL_EVENT_RX_IND);
|
||||
PL011_REG_ICR(uart4_addr) = PL011_INTERRUPT_RECEIVE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART5
|
||||
if((PACTL_CS & IRQ_UART5) == IRQ_UART5)
|
||||
{
|
||||
PACTL_CS &= ~(IRQ_UART5);
|
||||
rt_hw_serial_isr(&_serial5, RT_SERIAL_EVENT_RX_IND);
|
||||
PL011_REG_ICR(uart5_addr) = PL011_INTERRUPT_RECEIVE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef RT_USING_UART0
|
||||
/* UART device driver structure */
|
||||
static struct hw_uart_device _uart0_device =
|
||||
{
|
||||
PL011_BASE,
|
||||
UART0_BASE,
|
||||
IRQ_PL011,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART1
|
||||
/* UART device driver structure */
|
||||
static struct hw_uart_device _uart1_device =
|
||||
{
|
||||
AUX_BASE,
|
||||
IRQ_AUX_UART,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART3
|
||||
static struct hw_uart_device _uart3_device =
|
||||
{
|
||||
UART3_BASE,
|
||||
IRQ_PL011,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
static struct hw_uart_device _uart4_device =
|
||||
{
|
||||
UART4_BASE,
|
||||
IRQ_PL011,
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART5
|
||||
static struct hw_uart_device _uart5_device =
|
||||
{
|
||||
UART5_BASE,
|
||||
IRQ_PL011,
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct rt_serial_device _serial0;
|
||||
|
||||
int rt_hw_uart_init(void)
|
||||
{
|
||||
struct hw_uart_device *uart;
|
||||
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
|
||||
|
||||
uart = &_uart0_device;
|
||||
#ifdef RT_USING_UART0
|
||||
struct hw_uart_device *uart0;
|
||||
uart0 = &_uart0_device;
|
||||
|
||||
_serial0.ops = &_uart_ops;
|
||||
_serial0.config = config;
|
||||
|
||||
/* register UART1 device */
|
||||
rt_hw_serial_register(&_serial0, "uart",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
||||
uart);
|
||||
rt_hw_interrupt_install(uart->irqno, rt_hw_uart_isr, &_serial0, "uart");
|
||||
uart0->hw_base = UART0_BASE;
|
||||
|
||||
|
||||
/* register UART0 device */
|
||||
rt_hw_serial_register(&_serial0, "uart0",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
||||
uart0);
|
||||
rt_hw_interrupt_install(uart0->irqno, rt_hw_uart_isr, &_serial0, "uart0");
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART1
|
||||
struct hw_uart_device *uart1;
|
||||
uart1 = &_uart1_device;
|
||||
|
||||
_serial1.ops = &_uart_ops;
|
||||
_serial1.config = config;
|
||||
|
||||
uart1->hw_base = AUX_BASE;
|
||||
|
||||
/* register UART1 device */
|
||||
rt_hw_serial_register(&_serial1, "uart1",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
||||
uart1);
|
||||
rt_hw_interrupt_install(uart1->irqno, rt_hw_aux_uart_isr, &_serial1, "uart1");
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART3
|
||||
struct hw_uart_device *uart3;
|
||||
uart3 = &_uart3_device;
|
||||
|
||||
_serial3.ops = &_uart_ops;
|
||||
_serial3.config = config;
|
||||
|
||||
uart3_addr = UART3_BASE;
|
||||
|
||||
/* register UART3 device */
|
||||
rt_hw_serial_register(&_serial3, "uart3",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
||||
uart3);
|
||||
rt_hw_interrupt_install(uart3->irqno, rt_hw_uart_isr, &_serial3, "uart3");
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
struct hw_uart_device *uart4;
|
||||
uart4 = &_uart4_device;
|
||||
|
||||
_serial4.ops = &_uart_ops;
|
||||
_serial4.config = config;
|
||||
|
||||
uart4_addr = UART4_BASE;
|
||||
|
||||
/* register UART4 device */
|
||||
rt_hw_serial_register(&_serial4, "uart4",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
||||
uart4);
|
||||
rt_hw_interrupt_install(uart4->irqno, rt_hw_uart_isr, &_serial4, "uart4");
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART5
|
||||
struct hw_uart_device *uart5;
|
||||
uart5 = &_uart5_device;
|
||||
|
||||
_serial5.ops = &_uart_ops;
|
||||
_serial5.config = config;
|
||||
|
||||
uart5_addr = UART5_BASE;
|
||||
|
||||
/* register UART5 device */
|
||||
rt_hw_serial_register(&_serial5, "uart5",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX,
|
||||
uart5);
|
||||
rt_hw_interrupt_install(uart5->irqno, rt_hw_uart_isr, &_serial5, "uart5");
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -78,6 +78,30 @@
|
||||
#define PL011_REG_ITOP(BASE) HWREG32(BASE + 0x88)
|
||||
#define PL011_REG_TDR(BASE) HWREG32(BASE + 0x8C)
|
||||
|
||||
/*
|
||||
* Auxiliary
|
||||
*/
|
||||
#define AUX_IRQ(BASE) HWREG32(BASE + 0x00) /* Auxiliary Interrupt status 3 */
|
||||
#define AUX_ENABLES(BASE) HWREG32(BASE + 0x04) /* Auxiliary enables 3bit */
|
||||
#define AUX_MU_IO_REG(BASE) HWREG32(BASE + 0x40) /* Mini Uart I/O Data 8bit */
|
||||
#define AUX_MU_IER_REG(BASE) HWREG32(BASE + 0x44) /* Mini Uart Interrupt Enable 8bit */
|
||||
#define AUX_MU_IIR_REG(BASE) HWREG32(BASE + 0x48) /* Mini Uart Interrupt Identify 8bit */
|
||||
#define AUX_MU_LCR_REG(BASE) HWREG32(BASE + 0x4C) /* Mini Uart Line Control 8bit */
|
||||
#define AUX_MU_MCR_REG(BASE) HWREG32(BASE + 0x50) /* Mini Uart Modem Control 8bit */
|
||||
#define AUX_MU_LSR_REG(BASE) HWREG32(BASE + 0x54) /* Mini Uart Line Status 8bit */
|
||||
#define AUX_MU_MSR_REG(BASE) HWREG32(BASE + 0x58) /* Mini Uart Modem Status 8bit */
|
||||
#define AUX_MU_SCRATCH(BASE) HWREG32(BASE + 0x5C) /* Mini Uart Scratch 8bit */
|
||||
#define AUX_MU_CNTL_REG(BASE) HWREG32(BASE + 0x60) /* Mini Uart Extra Control 8bit */
|
||||
#define AUX_MU_STAT_REG(BASE) HWREG32(BASE + 0x64) /* Mini Uart Extra Status 32bit */
|
||||
#define AUX_MU_BAUD_REG(BASE) HWREG32(BASE + 0x68) /* Mini Uart Baudrate 16bit */
|
||||
#define AUX_SPI0_CNTL0_REG(BASE) HWREG32(BASE + 0x80) /* SPI 1 Control register 0 32bit */
|
||||
#define AUX_SPI0_CNTL1_REG(BASE) HWREG32(BASE + 0x84) /* SPI 1 Control register 1 8bit */
|
||||
#define AUX_SPI0_STAT_REG(BASE) HWREG32(BASE + 0x88) /* SPI 1 Status 32bit */
|
||||
#define AUX_SPI0_IO_REG(BASE) HWREG32(BASE + 0x90) /* SPI 1 Data 32bit */
|
||||
#define AUX_SPI0_PEEK_REG(BASE) HWREG32(BASE + 0x94) /* SPI 1 Peek 16bit */
|
||||
#define AUX_SPI1_CNTL0_REG(BASE) HWREG32(BASE + 0xC0) /* SPI 2 Control register 0 32bit */
|
||||
#define AUX_SPI1_CNTL1_REG(BASE) HWREG32(BASE + 0xC4) /* SPI 2 Control register 1 8bit */
|
||||
|
||||
int rt_hw_uart_init(void);
|
||||
|
||||
#endif /* DRV_UART_H__ */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,187 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2020-09-10 bigmagic first version
|
||||
*/
|
||||
|
||||
#ifndef __MBOX_H__
|
||||
#define __MBOX_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <stdint.h>
|
||||
|
||||
// https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
|
||||
// https://github.com/hermanhermitage/videocoreiv
|
||||
|
||||
/* a properly aligned buffer */
|
||||
extern volatile unsigned int *mbox;
|
||||
|
||||
#define MBOX_REQUEST 0
|
||||
|
||||
/* channels */
|
||||
#define MBOX_CH_POWER 0
|
||||
#define MBOX_CH_FB 1
|
||||
#define MBOX_CH_VUART 2
|
||||
#define MBOX_CH_VCHIQ 3
|
||||
#define MBOX_CH_LEDS 4
|
||||
#define MBOX_CH_BTNS 5
|
||||
#define MBOX_CH_TOUCH 6
|
||||
#define MBOX_CH_COUNT 7
|
||||
#define MBOX_CH_PROP 8
|
||||
|
||||
/* tags */
|
||||
#define MBOX_TAG_SETPOWER 0x28001
|
||||
#define MBOX_TAG_SETCLKRATE 0x38002
|
||||
#define MBOX_GET_MAC_ADDRESS 0x10003
|
||||
#define MBOX_TAG_LAST 0
|
||||
|
||||
#define MMIO_BASE 0xFE000000
|
||||
#define VIDEOCORE_MBOX (MMIO_BASE+0x0000B880)
|
||||
#define MBOX_READ ((volatile unsigned int*)(VIDEOCORE_MBOX+0x0))
|
||||
#define MBOX_POLL ((volatile unsigned int*)(VIDEOCORE_MBOX+0x10))
|
||||
#define MBOX_SENDER ((volatile unsigned int*)(VIDEOCORE_MBOX+0x14))
|
||||
#define MBOX_STATUS ((volatile unsigned int*)(VIDEOCORE_MBOX+0x18))
|
||||
#define MBOX_CONFIG ((volatile unsigned int*)(VIDEOCORE_MBOX+0x1C))
|
||||
#define MBOX_WRITE ((volatile unsigned int*)(VIDEOCORE_MBOX+0x20))
|
||||
#define MBOX_RESPONSE 0x80000000
|
||||
#define MBOX_FULL 0x80000000
|
||||
#define MBOX_EMPTY 0x40000000
|
||||
|
||||
#define DEVICE_ID_SD_CARD (0)
|
||||
#define DEVICE_ID_USB_HCD (3)
|
||||
#define POWER_STATE_OFF (0 << 0)
|
||||
#define POWER_STATE_ON (1 << 0)
|
||||
#define POWER_STATE_WAIT (1 << 1)
|
||||
#define POWER_STATE_NO_DEVICE (1 << 1) // in response
|
||||
#define MMU_ENABLE (1)
|
||||
#define MMU_DISABLE (0)
|
||||
|
||||
/*
|
||||
* raspi hardware info
|
||||
*/
|
||||
enum
|
||||
{
|
||||
MBOX_TAG_HARDWARE_GET_MODEL = 0x00010001,
|
||||
MBOX_TAG_HARDWARE_GET_REV = 0x00010002,
|
||||
MBOX_TAG_HARDWARE_GET_MAC_ADDRESS = 0x00010003,
|
||||
MBOX_TAG_HARDWARE_GET_SERIAL = 0x00010004,
|
||||
MBOX_TAG_HARDWARE_GET_ARM_MEMORY = 0x00010005,
|
||||
MBOX_TAG_HARDWARE_GET_VC_MEMORY = 0x00010006,
|
||||
MBOX_TAG_HARDWARE_GET_CLOCKS = 0x00010007,
|
||||
};
|
||||
|
||||
/*
|
||||
* raspi clock
|
||||
*/
|
||||
enum
|
||||
{
|
||||
MBOX_TAG_CLOCK_GET_TURBO = 0x00030009,
|
||||
MBOX_TAG_CLOCK_SET_TURBO = 0x00038009,
|
||||
MBOX_TAG_CLOCK_GET_STATE = 0x00030001,
|
||||
MBOX_TAG_CLOCK_SET_STATE = 0x00038001,
|
||||
MBOX_TAG_CLOCK_GET_RATE = 0x00030002,
|
||||
MBOX_TAG_CLOCK_SET_RATE = 0x00038002,
|
||||
MBOX_TAG_CLOCK_GET_MAX_RATE = 0x00030004,
|
||||
MBOX_TAG_CLOCK_GET_MIN_RATE = 0x00030007,
|
||||
};
|
||||
|
||||
/*
|
||||
* raspi power
|
||||
*/
|
||||
enum
|
||||
{
|
||||
MBOX_TAG_POWER_GET_STATE = 0x00020001,
|
||||
MBOX_TAG_POWER_SET_STATE = 0x00028001,
|
||||
};
|
||||
|
||||
/*
|
||||
* raspi temperature
|
||||
*/
|
||||
enum
|
||||
{
|
||||
MBOX_TAG_TEMP_GET = 0x00030006,
|
||||
MBOX_TAG_TEMP_GET_MAX = 0x0003000A,
|
||||
};
|
||||
|
||||
/*
|
||||
* raspi Memory
|
||||
*/
|
||||
enum
|
||||
{
|
||||
MBOX_TAG_ALLOCATE_MEMORY = 0x0003000C, // Memory: Allocates Contiguous Memory On The GPU (Response: Handle)
|
||||
MBOX_TAG_LOCK_MEMORY = 0x0003000D, // Memory: Unlock Buffer (Response: Status)
|
||||
MBOX_TAG_UNLOCK_MEMORY = 0x0003000E, // Memory: Unlock Buffer (Response: Status)
|
||||
MBOX_TAG_RELEASE_MEMORY = 0x0003000F, // Memory: Free The Memory Buffer (Response: Status)
|
||||
MBOX_TAG_EXECUTE_CODE = 0x00030010, // Memory: Calls The Function At Given (Bus) Address And With Arguments Given
|
||||
};
|
||||
|
||||
/*
|
||||
* raspi GPU
|
||||
*/
|
||||
enum
|
||||
{
|
||||
MBOX_TAG_EXECUTE_QPU = 0x00030011, // QPU: Calls The QPU Function At Given (Bus) Address And With Arguments Given
|
||||
// (Response: Number Of QPUs, Control, No Flush, Timeout In ms)
|
||||
MBOX_TAG_ENABLE_QPU = 0x00030012, // QPU: Enables The QPU (Response: Enable State)
|
||||
};
|
||||
|
||||
/*
|
||||
* raspi HDMI
|
||||
*/
|
||||
#define MBOX_TAG_GET_EDID_BLOCK 0x00030020 // HDMI: Read Specificed EDID Block From Attached HDMI/DVI Device
|
||||
// (Response: Block Number, Status, EDID Block (128 Bytes))
|
||||
|
||||
/*
|
||||
* raspi NOTIFY
|
||||
*/
|
||||
#define MBOX_TAG_NOTIFY_REBOOT 0x00030048
|
||||
#define MBOX_TAG_NOTIFY_XHCI_RESET 0x00030058
|
||||
|
||||
/*
|
||||
* touch
|
||||
*/
|
||||
#define MBOX_TAG_GET_TOUCHBUF (0x0004000F)
|
||||
|
||||
#define MBOX_ADDR 0x08000000
|
||||
|
||||
#define RES_CLK_ID (0x000000000)
|
||||
#define EMMC_CLK_ID (0x000000001)
|
||||
#define UART_CLK_ID (0x000000002)
|
||||
#define ARM_CLK_ID (0x000000003)
|
||||
#define CORE_CLK_ID (0x000000004)
|
||||
#define V3D_CLK_ID (0x000000005)
|
||||
#define H264_CLK_ID (0x000000006)
|
||||
#define ISP_CLK_ID (0x000000007)
|
||||
#define SDRAM_CLK_ID (0x000000008)
|
||||
#define PIXEL_CLK_ID (0x000000009)
|
||||
#define PWM_CLK_ID (0x00000000a)
|
||||
|
||||
int mbox_call(unsigned char ch, int mmu_enable);
|
||||
int bcm271x_mbox_get_touch(void);
|
||||
int bcm271x_notify_reboot(void);
|
||||
int bcm271x_notify_xhci_reset(void);
|
||||
int bcm271x_gpu_enable(void);
|
||||
int bcm271x_mbox_hardware_get_model(void);
|
||||
int bcm271x_mbox_hardware_get_revison(void);
|
||||
int bcm271x_mbox_hardware_get_mac_address(uint8_t *mac);
|
||||
int bcm271x_mbox_hardware_get_serial(rt_uint64_t *sn);
|
||||
int bcm271x_mbox_hardware_get_arm_memory(rt_uint32_t *base, rt_uint32_t *size);
|
||||
int bcm271x_mbox_hardware_get_vc_memory(rt_uint32_t *base, rt_uint32_t *size);
|
||||
int bcm271x_mbox_clock_get_turbo(void);
|
||||
int bcm271x_mbox_clock_set_turbo(int level);
|
||||
int bcm271x_mbox_clock_get_state(int id);
|
||||
int bcm271x_mbox_clock_set_state(int id, int state);
|
||||
int bcm271x_mbox_clock_get_rate(int id);
|
||||
int bcm271x_mbox_clock_set_rate(int id, int rate);
|
||||
int bcm271x_mbox_clock_get_max_rate(int id);
|
||||
int bcm271x_mbox_clock_get_min_rate(int id);
|
||||
int bcm271x_mbox_power_get_state(int id);
|
||||
int bcm271x_mbox_power_set_state(int id, int state);
|
||||
int bcm271x_mbox_temp_get(void);
|
||||
int bcm271x_mbox_temp_get_max(void);
|
||||
|
||||
#endif
|
||||
@@ -1,29 +1,145 @@
|
||||
#ifndef __RASPI4_H__
|
||||
#define __RASPI4_H__
|
||||
|
||||
#include <rthw.h>
|
||||
|
||||
#define __REG32(x) (*((volatile unsigned int *)(x)))
|
||||
|
||||
//base address
|
||||
#define PER_BASE (0xFE000000)
|
||||
|
||||
//gpio offset
|
||||
#define GPIO_BASE_OFFSET (0x00200000)
|
||||
|
||||
//pl011 offset
|
||||
#define PL011_UART_BASE_OFFSET (0x00201000)
|
||||
|
||||
//pactl cs offset
|
||||
#define PACTL_CS_OFFSET (0x00204E00)
|
||||
|
||||
//aux offset
|
||||
#define AUX_BASE_OFFSET (0x00215000)
|
||||
|
||||
//gpio
|
||||
#define GPIO_BASE (0xFE000000 + 0x00200000)
|
||||
#define GPIO_BASE (PER_BASE + GPIO_BASE_OFFSET)
|
||||
#define GPIO_IRQ_NUM (3) //40 pin mode
|
||||
#define IRQ_GPIO0 (96 + 49) //bank0 (0 to 27)
|
||||
#define IRQ_GPIO1 (96 + 50) //bank1 (28 to 45)
|
||||
#define IRQ_GPIO2 (96 + 51) //bank2 (46 to 57)
|
||||
#define IRQ_GPIO3 (96 + 52) //bank3
|
||||
|
||||
//system timer
|
||||
#define ARM_TIMER_IRQ (64)
|
||||
#define ARM_TIMER_BASE (PER_BASE + 0xB000)
|
||||
#define ARM_TIMER_LOAD HWREG32(ARM_TIMER_BASE + 0x400)
|
||||
#define ARM_TIMER_VALUE HWREG32(ARM_TIMER_BASE + 0x404)
|
||||
#define ARM_TIMER_CTRL HWREG32(ARM_TIMER_BASE + 0x408)
|
||||
#define ARM_TIMER_IRQCLR HWREG32(ARM_TIMER_BASE + 0x40C)
|
||||
#define ARM_TIMER_RAWIRQ HWREG32(ARM_TIMER_BASE + 0x410)
|
||||
#define ARM_TIMER_MASKIRQ HWREG32(ARM_TIMER_BASE + 0x414)
|
||||
#define ARM_TIMER_RELOAD HWREG32(ARM_TIMER_BASE + 0x418)
|
||||
#define ARM_TIMER_PREDIV HWREG32(ARM_TIMER_BASE + 0x41C)
|
||||
#define ARM_TIMER_CNTR HWREG32(ARM_TIMER_BASE + 0x420)
|
||||
|
||||
//uart
|
||||
#define UART0_BASE (0xFE000000 + 0x00201000)
|
||||
#define PL011_BASE UART0_BASE
|
||||
#define IRQ_PL011 (121 + 32)
|
||||
#define UART_REFERENCE_CLOCK (48000000)
|
||||
#define UART_BASE (PER_BASE + PL011_UART_BASE_OFFSET)
|
||||
#define UART0_BASE (UART_BASE + 0x0)
|
||||
#define UART2_BASE (UART_BASE + 0x400)
|
||||
#define UART3_BASE (UART_BASE + 0x600)
|
||||
#define UART4_BASE (UART_BASE + 0x800)
|
||||
#define UART5_BASE (UART_BASE + 0xA00)
|
||||
#define IRQ_AUX_UART (96 + 29)
|
||||
#define UART_REFERENCE_CLOCK (48000000)
|
||||
|
||||
//aux
|
||||
#define AUX_BASE (PER_BASE + AUX_BASE_OFFSET)
|
||||
#define IRQ_PL011 (96 + 57)
|
||||
|
||||
//pactl cs
|
||||
#define PACTL_CS_ADDR (PER_BASE + PACTL_CS_OFFSET)
|
||||
#define PACTL_CS HWREG32(PACTL_CS_ADDR)
|
||||
typedef enum
|
||||
{
|
||||
IRQ_SPI0 = 0x00000000,
|
||||
IRQ_SPI1 = 0x00000002,
|
||||
IRQ_SPI2 = 0x00000004,
|
||||
IRQ_SPI3 = 0x00000008,
|
||||
IRQ_SPI4 = 0x00000010,
|
||||
IRQ_SPI5 = 0x00000020,
|
||||
IRQ_SPI6 = 0x00000040,
|
||||
IRQ_I2C0 = 0x00000100,
|
||||
IRQ_I2C1 = 0x00000200,
|
||||
IRQ_I2C2 = 0x00000400,
|
||||
IRQ_I2C3 = 0x00000800,
|
||||
IRQ_I2C4 = 0x00001000,
|
||||
IRQ_I2C5 = 0x00002000,
|
||||
IRQ_I2C6 = 0x00004000,
|
||||
IRQ_I2C7 = 0x00008000,
|
||||
IRQ_UART5 = 0x00010000,
|
||||
IRQ_UART4 = 0x00020000,
|
||||
IRQ_UART3 = 0x00040000,
|
||||
IRQ_UART2 = 0x00080000,
|
||||
IRQ_UART0 = 0x00100000
|
||||
} PACTL_CS_VAL;
|
||||
|
||||
// 0x40, 0x44, 0x48, 0x4c: Core 0~3 Timers interrupt control
|
||||
#define CORE0_TIMER_IRQ_CTRL HWREG32(0xFF800040)
|
||||
#define TIMER_IRQ 30
|
||||
#define NON_SECURE_TIMER_IRQ (1 << 1)
|
||||
|
||||
//core timer
|
||||
#define ST_BASE_OFFSET (0x003000)
|
||||
#define STIMER_BASE (PER_BASE + ST_BASE_OFFSET)
|
||||
#define STIMER_CS HWREG32(STIMER_BASE + 0x0000)
|
||||
#define STIMER_CLO HWREG32(STIMER_BASE + 0x0004)
|
||||
#define STIMER_CHI HWREG32(STIMER_BASE + 0x0008)
|
||||
#define STIMER_C0 HWREG32(STIMER_BASE + 0x000C)
|
||||
#define STIMER_C1 HWREG32(STIMER_BASE + 0x0010)
|
||||
#define STIMER_C2 HWREG32(STIMER_BASE + 0x0014)
|
||||
#define STIMER_C3 HWREG32(STIMER_BASE + 0x0018)
|
||||
|
||||
#define DELAY_MICROS(micros) \
|
||||
do { \
|
||||
rt_uint32_t compare = STIMER_CLO + micros * 25; \
|
||||
while (STIMER_CLO < compare); \
|
||||
} while (0) \
|
||||
|
||||
//mmc
|
||||
#define MMC0_BASE_ADDR (PER_BASE + 0x300000)
|
||||
#define MMC2_BASE_ADDR (PER_BASE + 0x340000)
|
||||
|
||||
//eth
|
||||
#define MAC_REG_BASE_ADDR (void *)(0xfd580000)
|
||||
#define ETH_IRQ (160 + 29)
|
||||
#define SEND_DATA_NO_CACHE (0x08200000)
|
||||
#define RECV_DATA_NO_CACHE (0x08400000)
|
||||
|
||||
//gic max
|
||||
#define MAX_HANDLERS (256)
|
||||
#define ARM_GIC_NR_IRQS (512)
|
||||
#define INTC_BASE (0xff800000)
|
||||
#define ARM_GIC_MAX_NR (512)
|
||||
#define GIC_V2_BASE (INTC_BASE + 0x00040000)
|
||||
#define GIC_V2_DISTRIBUTOR_BASE (INTC_BASE + 0x00041000)
|
||||
#define GIC_V2_CPU_INTERFACE_BASE (INTC_BASE + 0x00042000)
|
||||
#define GIC_V2_HYPERVISOR_BASE (INTC_BASE + 0x00044000)
|
||||
#define GIC_V2_VIRTUAL_CPU_BASE (INTC_BASE + 0x00046000)
|
||||
|
||||
#define GIC_IRQ_START 0
|
||||
#define GIC_ACK_INTID_MASK 0x000003ff
|
||||
|
||||
#define GIC_PL400_DISTRIBUTOR_PPTR GIC_V2_DISTRIBUTOR_BASE
|
||||
#define GIC_PL400_CONTROLLER_PPTR GIC_V2_CPU_INTERFACE_BASE
|
||||
|
||||
/* the basic constants and interfaces needed by gic */
|
||||
rt_inline rt_uint32_t platform_get_gic_dist_base(void)
|
||||
{
|
||||
return GIC_PL400_DISTRIBUTOR_PPTR;
|
||||
}
|
||||
|
||||
rt_inline rt_uint32_t platform_get_gic_cpu_base(void)
|
||||
{
|
||||
return GIC_PL400_CONTROLLER_PPTR;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
#define RT_USING_TIMER_SOFT
|
||||
#define RT_TIMER_THREAD_PRIO 4
|
||||
#define RT_TIMER_THREAD_STACK_SIZE 2048
|
||||
|
||||
/* kservice optimization */
|
||||
|
||||
#define RT_DEBUG
|
||||
|
||||
/* Inter-Thread communication */
|
||||
@@ -40,8 +43,8 @@
|
||||
#define RT_USING_DEVICE
|
||||
#define RT_USING_CONSOLE
|
||||
#define RT_CONSOLEBUF_SIZE 128
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart"
|
||||
#define RT_VER_NUM 0x40003
|
||||
#define RT_CONSOLE_DEVICE_NAME "uart0"
|
||||
#define RT_VER_NUM 0x40004
|
||||
#define ARCH_CPU_64BIT
|
||||
#define ARCH_ARMV8
|
||||
|
||||
@@ -58,16 +61,17 @@
|
||||
/* Command shell */
|
||||
|
||||
#define RT_USING_FINSH
|
||||
#define RT_USING_MSH
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_THREAD_NAME "tshell"
|
||||
#define FINSH_THREAD_PRIORITY 20
|
||||
#define FINSH_THREAD_STACK_SIZE 4096
|
||||
#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 4096
|
||||
#define FINSH_CMD_SIZE 80
|
||||
#define FINSH_USING_MSH
|
||||
#define FINSH_USING_MSH_DEFAULT
|
||||
#define MSH_USING_BUILT_IN_COMMANDS
|
||||
#define FINSH_USING_DESCRIPTION
|
||||
#define FINSH_ARG_MAX 10
|
||||
|
||||
/* Device virtual file system */
|
||||
@@ -77,16 +81,42 @@
|
||||
#define DFS_FILESYSTEMS_MAX 2
|
||||
#define DFS_FILESYSTEM_TYPES_MAX 2
|
||||
#define DFS_FD_MAX 16
|
||||
#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_LFN_UNICODE_0
|
||||
#define RT_DFS_ELM_LFN_UNICODE 0
|
||||
#define RT_DFS_ELM_MAX_LFN 255
|
||||
#define RT_DFS_ELM_DRIVES 2
|
||||
#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_PIPE_BUFSZ 512
|
||||
#define RT_USING_SYSTEM_WORKQUEUE
|
||||
#define RT_SYSTEM_WORKQUEUE_STACKSIZE 2048
|
||||
#define RT_SYSTEM_WORKQUEUE_PRIORITY 23
|
||||
#define RT_USING_SERIAL
|
||||
#define RT_USING_SERIAL_V1
|
||||
#define RT_SERIAL_USING_DMA
|
||||
#define RT_SERIAL_RB_BUFSZ 64
|
||||
#define RT_USING_PIN
|
||||
#define RT_USING_RTC
|
||||
#define RT_USING_ALARM
|
||||
#define RT_USING_SDIO
|
||||
#define RT_SDIO_STACK_SIZE 512
|
||||
#define RT_SDIO_THREAD_PRIORITY 15
|
||||
#define RT_MMCSD_STACK_SIZE 2048
|
||||
#define RT_MMCSD_THREAD_PREORITY 22
|
||||
#define RT_MMCSD_MAX_PARTITION 16
|
||||
|
||||
/* Using USB */
|
||||
|
||||
@@ -95,17 +125,73 @@
|
||||
|
||||
#define RT_USING_LIBC
|
||||
#define RT_USING_POSIX
|
||||
#define RT_LIBC_DEFAULT_TIMEZONE 8
|
||||
|
||||
/* Network */
|
||||
|
||||
/* Socket abstraction layer */
|
||||
|
||||
#define RT_USING_SAL
|
||||
#define SAL_INTERNET_CHECK
|
||||
|
||||
/* 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_LWIP203
|
||||
#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_LWIP_PBUF_NUM 16
|
||||
#define RT_LWIP_RAW_PCB_NUM 4
|
||||
#define RT_LWIP_UDP_PCB_NUM 4
|
||||
#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_LWIP_TCPTHREAD_PRIORITY 10
|
||||
#define RT_LWIP_TCPTHREAD_MBOX_SIZE 8
|
||||
#define RT_LWIP_TCPTHREAD_STACKSIZE 2048
|
||||
#define RT_LWIP_ETHTHREAD_PRIORITY 12
|
||||
#define RT_LWIP_ETHTHREAD_STACKSIZE 2048
|
||||
#define RT_LWIP_ETHTHREAD_MBOX_SIZE 8
|
||||
#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 */
|
||||
|
||||
@@ -115,6 +201,11 @@
|
||||
|
||||
/* Utilities */
|
||||
|
||||
#define RT_USING_RYM
|
||||
#define YMODEM_USING_FILE_TRANSFER
|
||||
|
||||
/* RT-Thread Utestcases */
|
||||
|
||||
|
||||
/* RT-Thread online packages */
|
||||
|
||||
@@ -146,16 +237,27 @@
|
||||
|
||||
/* system packages */
|
||||
|
||||
/* acceleration: Assembly language or algorithmic acceleration packages */
|
||||
|
||||
|
||||
/* Micrium: Micrium software products porting for RT-Thread */
|
||||
|
||||
|
||||
/* peripheral libraries and drivers */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
/* AI packages */
|
||||
|
||||
|
||||
/* miscellaneous packages */
|
||||
|
||||
/* samples: kernel and components samples */
|
||||
|
||||
|
||||
/* entertainment: terminal games and other interesting software packages */
|
||||
|
||||
#define BCM2711_SOC
|
||||
#define BSP_SUPPORT_FPU
|
||||
|
||||
/* Hardware Drivers Config */
|
||||
|
||||
@@ -167,6 +269,11 @@
|
||||
#define BSP_USING_GIC400
|
||||
#define BSP_USING_PIN
|
||||
#define BSP_USING_CORETIMER
|
||||
#define BSP_USING_ETH
|
||||
#define BSP_USING_RTC
|
||||
#define BSP_USING_ALARM
|
||||
#define BSP_USING_SDIO
|
||||
#define BSP_USING_SDIO0
|
||||
|
||||
/* Board Peripheral Drivers */
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import os
|
||||
|
||||
# toolchains options
|
||||
ARCH ='aarch64'
|
||||
CPU ='cortex-a72'
|
||||
CPU ='cortex-a'
|
||||
CROSS_TOOL ='gcc'
|
||||
|
||||
if os.getenv('RTT_ROOT'):
|
||||
|
||||
Reference in New Issue
Block a user