@@ -220,7 +220,7 @@ CONFIG_ULOG_ASYNC_OUTPUT_THREAD_PRIORITY=30
|
|||||||
#
|
#
|
||||||
# log format
|
# log format
|
||||||
#
|
#
|
||||||
# CONFIG_ULOG_OUTPUT_FLOAT is not set
|
CONFIG_ULOG_OUTPUT_FLOAT=y
|
||||||
CONFIG_ULOG_USING_COLOR=y
|
CONFIG_ULOG_USING_COLOR=y
|
||||||
CONFIG_ULOG_OUTPUT_TIME=y
|
CONFIG_ULOG_OUTPUT_TIME=y
|
||||||
# CONFIG_ULOG_TIME_USING_TIMESTAMP is not set
|
# CONFIG_ULOG_TIME_USING_TIMESTAMP is not set
|
||||||
@@ -322,6 +322,8 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_AGILE_FTP is not set
|
# CONFIG_PKG_USING_AGILE_FTP is not set
|
||||||
# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
|
# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
|
||||||
# CONFIG_PKG_USING_RT_LINK_HW is not set
|
# CONFIG_PKG_USING_RT_LINK_HW is not set
|
||||||
|
# CONFIG_PKG_USING_RYANMQTT is not set
|
||||||
|
# CONFIG_PKG_USING_RYANW5500 is not set
|
||||||
# CONFIG_PKG_USING_LORA_PKT_FWD 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_GW_DRIVER_LIB is not set
|
||||||
# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
|
# CONFIG_PKG_USING_LORA_PKT_SNIFFER is not set
|
||||||
@@ -329,6 +331,7 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_SMALL_MODBUS is not set
|
# CONFIG_PKG_USING_SMALL_MODBUS is not set
|
||||||
# CONFIG_PKG_USING_NET_SERVER is not set
|
# CONFIG_PKG_USING_NET_SERVER is not set
|
||||||
# CONFIG_PKG_USING_ZFTP is not set
|
# CONFIG_PKG_USING_ZFTP is not set
|
||||||
|
# CONFIG_PKG_USING_WOL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# security packages
|
# security packages
|
||||||
@@ -420,7 +423,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_SEGGER_RTT is not set
|
# CONFIG_PKG_USING_SEGGER_RTT is not set
|
||||||
# CONFIG_PKG_USING_RDB is not set
|
# CONFIG_PKG_USING_RDB is not set
|
||||||
# CONFIG_PKG_USING_ULOG_EASYFLASH 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_LOGMGR is not set
|
||||||
# CONFIG_PKG_USING_ADBD is not set
|
# CONFIG_PKG_USING_ADBD is not set
|
||||||
# CONFIG_PKG_USING_COREMARK is not set
|
# CONFIG_PKG_USING_COREMARK is not set
|
||||||
@@ -454,7 +456,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_CBOX is not set
|
# CONFIG_PKG_USING_CBOX is not set
|
||||||
# CONFIG_PKG_USING_SNOWFLAKE is not set
|
# CONFIG_PKG_USING_SNOWFLAKE is not set
|
||||||
# CONFIG_PKG_USING_HASH_MATCH 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_ARMV7M_DWT_TOOL is not set
|
||||||
# CONFIG_PKG_USING_VOFA_PLUS is not set
|
# CONFIG_PKG_USING_VOFA_PLUS is not set
|
||||||
|
|
||||||
@@ -467,7 +468,15 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
|
# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
|
||||||
# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
|
# CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
|
||||||
# CONFIG_PKG_USING_RT_VSNPRINTF_FULL is not set
|
CONFIG_PKG_USING_RT_VSNPRINTF_FULL=y
|
||||||
|
CONFIG_PKG_RT_VSNPRINTF_FULL_PATH="/packages/system/enhanced-kservice/rt_vsnprintf_full"
|
||||||
|
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_SPRINTF is not set
|
||||||
|
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_SNPRINTF is not set
|
||||||
|
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_PRINTF is not set
|
||||||
|
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_VSPRINTF is not set
|
||||||
|
# CONFIG_RT_VSNPRINTF_FULL_REPLACING_VSNPRINTF is not set
|
||||||
|
CONFIG_PKG_USING_RT_VSNPRINTF_FULL_LATEST_VERSION=y
|
||||||
|
CONFIG_PKG_RT_VSNPRINTF_FULL_VER="latest"
|
||||||
|
|
||||||
#
|
#
|
||||||
# acceleration: Assembly language or algorithmic acceleration packages
|
# acceleration: Assembly language or algorithmic acceleration packages
|
||||||
@@ -531,15 +540,88 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
#
|
#
|
||||||
# peripheral libraries and drivers
|
# peripheral libraries and drivers
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_SENSORS_DRIVERS is not set
|
|
||||||
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
|
#
|
||||||
|
# sensors drivers
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_LSM6DSM is not set
|
||||||
|
# CONFIG_PKG_USING_LSM6DSL is not set
|
||||||
|
# CONFIG_PKG_USING_LPS22HB is not set
|
||||||
|
# CONFIG_PKG_USING_HTS221 is not set
|
||||||
|
# CONFIG_PKG_USING_LSM303AGR is not set
|
||||||
|
# CONFIG_PKG_USING_BME280 is not set
|
||||||
|
# CONFIG_PKG_USING_BME680 is not set
|
||||||
|
# CONFIG_PKG_USING_BMA400 is not set
|
||||||
|
# CONFIG_PKG_USING_BMI160_BMX160 is not set
|
||||||
|
# CONFIG_PKG_USING_SPL0601 is not set
|
||||||
|
# CONFIG_PKG_USING_MS5805 is not set
|
||||||
|
# CONFIG_PKG_USING_DA270 is not set
|
||||||
|
# CONFIG_PKG_USING_DF220 is not set
|
||||||
|
# CONFIG_PKG_USING_HSHCAL001 is not set
|
||||||
|
# CONFIG_PKG_USING_BH1750 is not set
|
||||||
|
# CONFIG_PKG_USING_MPU6XXX is not set
|
||||||
|
# CONFIG_PKG_USING_AHT10 is not set
|
||||||
|
# CONFIG_PKG_USING_AP3216C is not set
|
||||||
|
# CONFIG_PKG_USING_TSL4531 is not set
|
||||||
|
# CONFIG_PKG_USING_DS18B20 is not set
|
||||||
|
# CONFIG_PKG_USING_DHT11 is not set
|
||||||
|
# CONFIG_PKG_USING_DHTXX is not set
|
||||||
|
# CONFIG_PKG_USING_GY271 is not set
|
||||||
|
# CONFIG_PKG_USING_GP2Y10 is not set
|
||||||
|
# CONFIG_PKG_USING_SGP30 is not set
|
||||||
|
# CONFIG_PKG_USING_HDC1000 is not set
|
||||||
|
# CONFIG_PKG_USING_BMP180 is not set
|
||||||
|
# CONFIG_PKG_USING_BMP280 is not set
|
||||||
|
# CONFIG_PKG_USING_SHTC1 is not set
|
||||||
|
# CONFIG_PKG_USING_BMI088 is not set
|
||||||
|
# CONFIG_PKG_USING_HMC5883 is not set
|
||||||
|
# CONFIG_PKG_USING_MAX6675 is not set
|
||||||
|
# CONFIG_PKG_USING_TMP1075 is not set
|
||||||
|
# CONFIG_PKG_USING_SR04 is not set
|
||||||
|
# CONFIG_PKG_USING_CCS811 is not set
|
||||||
|
# CONFIG_PKG_USING_PMSXX is not set
|
||||||
|
# CONFIG_PKG_USING_RT3020 is not set
|
||||||
|
# CONFIG_PKG_USING_MLX90632 is not set
|
||||||
|
# CONFIG_PKG_USING_MLX90393 is not set
|
||||||
|
# CONFIG_PKG_USING_MLX90392 is not set
|
||||||
|
# CONFIG_PKG_USING_MLX90397 is not set
|
||||||
|
# CONFIG_PKG_USING_MS5611 is not set
|
||||||
|
# CONFIG_PKG_USING_MAX31865 is not set
|
||||||
|
# CONFIG_PKG_USING_VL53L0X is not set
|
||||||
|
# CONFIG_PKG_USING_INA260 is not set
|
||||||
|
# CONFIG_PKG_USING_MAX30102 is not set
|
||||||
|
# CONFIG_PKG_USING_INA226 is not set
|
||||||
|
# CONFIG_PKG_USING_LIS2DH12 is not set
|
||||||
|
# CONFIG_PKG_USING_HS300X is not set
|
||||||
|
# CONFIG_PKG_USING_ZMOD4410 is not set
|
||||||
|
# CONFIG_PKG_USING_ISL29035 is not set
|
||||||
|
# CONFIG_PKG_USING_MMC3680KJ is not set
|
||||||
|
# CONFIG_PKG_USING_QMP6989 is not set
|
||||||
|
# CONFIG_PKG_USING_BALANCE is not set
|
||||||
# CONFIG_PKG_USING_SHT2X is not set
|
# CONFIG_PKG_USING_SHT2X is not set
|
||||||
# CONFIG_PKG_USING_SHT3X is not set
|
# CONFIG_PKG_USING_SHT3X is not set
|
||||||
|
# CONFIG_PKG_USING_AD7746 is not set
|
||||||
# CONFIG_PKG_USING_ADT74XX is not set
|
# CONFIG_PKG_USING_ADT74XX is not set
|
||||||
|
# CONFIG_PKG_USING_MAX17048 is not set
|
||||||
# CONFIG_PKG_USING_AS7341 is not set
|
# CONFIG_PKG_USING_AS7341 is not set
|
||||||
|
# CONFIG_PKG_USING_CW2015 is not set
|
||||||
|
# CONFIG_PKG_USING_ICM20608 is not set
|
||||||
|
# CONFIG_PKG_USING_PAJ7620 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# touch drivers
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_GT9147 is not set
|
||||||
|
# CONFIG_PKG_USING_GT1151 is not set
|
||||||
|
# CONFIG_PKG_USING_GT917S is not set
|
||||||
|
# CONFIG_PKG_USING_GT911 is not set
|
||||||
|
# CONFIG_PKG_USING_FT6206 is not set
|
||||||
|
# CONFIG_PKG_USING_FT5426 is not set
|
||||||
|
# CONFIG_PKG_USING_FT6236 is not set
|
||||||
|
# CONFIG_PKG_USING_XPT2046_TOUCH is not set
|
||||||
|
# CONFIG_PKG_USING_REALTEK_AMEBA is not set
|
||||||
# CONFIG_PKG_USING_STM32_SDIO is not set
|
# CONFIG_PKG_USING_STM32_SDIO is not set
|
||||||
# CONFIG_PKG_USING_ESP_IDF 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_BUTTON is not set
|
||||||
# CONFIG_PKG_USING_PCF8574 is not set
|
# CONFIG_PKG_USING_PCF8574 is not set
|
||||||
# CONFIG_PKG_USING_SX12XX is not set
|
# CONFIG_PKG_USING_SX12XX is not set
|
||||||
@@ -562,12 +644,9 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_AGILE_LED is not set
|
# CONFIG_PKG_USING_AGILE_LED is not set
|
||||||
# CONFIG_PKG_USING_AT24CXX is not set
|
# CONFIG_PKG_USING_AT24CXX is not set
|
||||||
# CONFIG_PKG_USING_MOTIONDRIVER2RTT 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_PCA9685 is not set
|
||||||
# CONFIG_PKG_USING_I2C_TOOLS is not set
|
# CONFIG_PKG_USING_I2C_TOOLS is not set
|
||||||
# CONFIG_PKG_USING_NRF24L01 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_RPLIDAR is not set
|
||||||
# CONFIG_PKG_USING_AS608 is not set
|
# CONFIG_PKG_USING_AS608 is not set
|
||||||
# CONFIG_PKG_USING_RC522 is not set
|
# CONFIG_PKG_USING_RC522 is not set
|
||||||
@@ -582,7 +661,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_CAN_YMODEM is not set
|
# CONFIG_PKG_USING_CAN_YMODEM is not set
|
||||||
# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
|
# CONFIG_PKG_USING_LORA_RADIO_DRIVER is not set
|
||||||
# CONFIG_PKG_USING_QLED 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_AGILE_CONSOLE is not set
|
||||||
# CONFIG_PKG_USING_LD3320 is not set
|
# CONFIG_PKG_USING_LD3320 is not set
|
||||||
# CONFIG_PKG_USING_WK2124 is not set
|
# CONFIG_PKG_USING_WK2124 is not set
|
||||||
@@ -613,10 +691,11 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_BL_MCU_SDK is not set
|
# CONFIG_PKG_USING_BL_MCU_SDK is not set
|
||||||
# CONFIG_PKG_USING_SOFT_SERIAL is not set
|
# CONFIG_PKG_USING_SOFT_SERIAL is not set
|
||||||
# CONFIG_PKG_USING_MB85RS16 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_RFM300 is not set
|
||||||
# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
|
# CONFIG_PKG_USING_IO_INPUT_FILTER is not set
|
||||||
# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
|
# CONFIG_PKG_USING_RASPBERRYPI_PICO_SDK is not set
|
||||||
|
# CONFIG_PKG_USING_LRF_NV7LIDAR is not set
|
||||||
|
# CONFIG_PKG_USING_FINGERPRINT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# AI packages
|
# AI packages
|
||||||
@@ -631,6 +710,12 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_QUEST is not set
|
# CONFIG_PKG_USING_QUEST is not set
|
||||||
# CONFIG_PKG_USING_NAXOS is not set
|
# CONFIG_PKG_USING_NAXOS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Signal Processing and Control Algorithm Packages
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_FIRE_PID_CURVE is not set
|
||||||
|
# CONFIG_PKG_USING_UKAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# miscellaneous packages
|
# miscellaneous packages
|
||||||
#
|
#
|
||||||
@@ -682,7 +767,6 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_VI is not set
|
# CONFIG_PKG_USING_VI is not set
|
||||||
# CONFIG_PKG_USING_KI is not set
|
# CONFIG_PKG_USING_KI is not set
|
||||||
# CONFIG_PKG_USING_ARMv7M_DWT 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_CRCLIB is not set
|
||||||
# CONFIG_PKG_USING_LWGPS is not set
|
# CONFIG_PKG_USING_LWGPS is not set
|
||||||
# CONFIG_PKG_USING_STATE_MACHINE is not set
|
# CONFIG_PKG_USING_STATE_MACHINE is not set
|
||||||
@@ -693,27 +777,165 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_SLCAN2RTT is not set
|
# CONFIG_PKG_USING_SLCAN2RTT is not set
|
||||||
# CONFIG_PKG_USING_SOEM is not set
|
# CONFIG_PKG_USING_SOEM is not set
|
||||||
# CONFIG_PKG_USING_QPARAM is not set
|
# CONFIG_PKG_USING_QPARAM is not set
|
||||||
|
# CONFIG_PKG_USING_CorevMCU_CLI is not set
|
||||||
|
# CONFIG_PKG_USING_GET_IRQ_PRIORITY is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Arduino libraries
|
# Arduino libraries
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_RTDUINO is not set
|
# CONFIG_PKG_USING_RTDUINO is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Projects
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_MATLAB_SUPPORT is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Sensors
|
# Sensors
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
|
# CONFIG_PKG_USING_ARDUINO_SENSOR_DEVICE_DRIVERS 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_DHT_SENSOR 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
|
# CONFIG_PKG_USING_ARDUINO_CAPACITIVESENSOR is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL375 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L0X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL53L1X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSOR is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VL6180X is not set
|
||||||
|
# CONFIG_PKG_USING_ADAFRUIT_MAX31855 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31865 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX31856 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX6675 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90614 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS1 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AHTX0 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM9DS0 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP280 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADT7410 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME680 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9808 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4728 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA219 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR390 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL345 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DHT is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP9600 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM6DS is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO055 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MAX1704X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMC56X3 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90393 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90395 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ICM20X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_DPS310 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTS221 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT4X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHT31 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADXL343 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BME280 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS726X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AMG88XX is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2320 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AM2315 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LTR329_LTR303 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP085_UNIFIED is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP183_UNIFIED is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BMP3XX is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MS8607 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3MDL is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MLX90640 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MMA8451 is not set
|
||||||
|
# CONFIG_PKG_USING_ADAFRUIT_MSA301 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL115A2 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BNO08X_RVC is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS2MDL is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303DLH_MAG is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LC709203F is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CAP1188 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_CCS811 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_NAU7802 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS331 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS2X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LPS35HW is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LSM303_ACCEL is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_LIS3DH is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8591 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPL3115A2 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPR121 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPRLS is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MPU6050 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCT2075 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PM25AQI is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_EMC2101 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXAS21002C is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SCD30 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_FXOS8700 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HMC5883_UNIFIED is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP30 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP006 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TLA202X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCS34725 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI7021 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI1145 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SGP40 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SHTC3 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HDC1000 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU21DF is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AS7341 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_HTU31D is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SENSORLAB is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_INA260 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP007_LIBRARY is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_L3GD20 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TMP117 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSC2007 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2561 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TSL2591_LIBRARY is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VCNL4040 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6070 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML6075 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_VEML7700 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_LIS3DHTR is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_DHT is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL335 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_ADXL345 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_BME280 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP280 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_H3LIS331DL is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_MMA7660 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_TSL2561 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_PAJ7620 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_VL53L0X is not set
|
||||||
|
# CONFIG_PKG_USING_SEEED_ITG3200 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_SHT31 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_HP20X is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_DRV2605L is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_BBM150 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_HMC5883L is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_LSM303DLH is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_TCS3414CS is not set
|
||||||
|
# CONFIG_PKG_USING_SEEED_MP503 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_BMP085 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_HIGHTEMP is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_VEML6070 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_SI1145 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_SHT35 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_AT42QT1070 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_LSM6DS3 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_HDC1000 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_HM3301 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_MCP9600 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_LTC2941 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_LDC1612 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Display
|
# Display
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
|
# CONFIG_PKG_USING_ARDUINO_U8G2 is not set
|
||||||
|
# CONFIG_PKG_USING_SEEED_TM1637 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Timing
|
# Timing
|
||||||
@@ -721,10 +943,47 @@ CONFIG_ULOG_BACKEND_USING_CONSOLE=y
|
|||||||
# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
|
# CONFIG_PKG_USING_ARDUINO_MSTIMER2 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Projects
|
# Data Processing
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_KALMANFILTER is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ARDUINOJSON is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Data Storage
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Communication
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PN532 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_SI4713 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Device Control
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCF8574 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_PCA9685 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_SEEED_PCF85063TP is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Other
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Signal IO
|
||||||
|
#
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BUSIO is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_TCA8418 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP23017 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_ADS1X15 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_AW9523 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP3008 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_MCP4725 is not set
|
||||||
|
# CONFIG_PKG_USING_ARDUINO_ADAFRUIT_BD3491FS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Uncategorized
|
||||||
#
|
#
|
||||||
# CONFIG_PKG_USING_ARDUINO_ULTRASOUND_RADAR is not set
|
|
||||||
# CONFIG_PKG_USING_ARDUINO_SENSOR_KIT is not set
|
|
||||||
CONFIG_SOC_FAMILY_STM32=y
|
CONFIG_SOC_FAMILY_STM32=y
|
||||||
CONFIG_SOC_SERIES_STM32F4=y
|
CONFIG_SOC_SERIES_STM32F4=y
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,6 @@
|
|||||||
build
|
build
|
||||||
Debug
|
Debug
|
||||||
documentation/html
|
documentation/html
|
||||||
packages/
|
|
||||||
*~
|
*~
|
||||||
*.o
|
*.o
|
||||||
*.obj
|
*.obj
|
||||||
@@ -40,3 +39,4 @@ RTE/
|
|||||||
settings/
|
settings/
|
||||||
*.uvguix*
|
*.uvguix*
|
||||||
cconfig.h
|
cconfig.h
|
||||||
|
packages/packages.dbsqlite
|
||||||
|
|||||||
@@ -116,10 +116,60 @@ rt_err_t port_rx_ind(rt_device_t dev, rt_size_t size)
|
|||||||
|
|
||||||
#define RT_BUF_SIZE (1024)
|
#define RT_BUF_SIZE (1024)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 固件格式:
|
||||||
|
*
|
||||||
|
* 作用 & 说明
|
||||||
|
* - 记录固件对应硬件 & 版本信息
|
||||||
|
* - 简便起见,不包含校验信息
|
||||||
|
*
|
||||||
|
* index len desc
|
||||||
|
* 0 4 'XYFC'
|
||||||
|
* 4 4 固件信息长度
|
||||||
|
* 8 N 固件信息 ('类型'-'版本')
|
||||||
|
* 8+N M 固件数据
|
||||||
|
*/
|
||||||
|
static const char FIXED_HEAD[] = {'X', 'Y', 'F', 'C'};
|
||||||
|
extern const char IAP_BIN_PREFIX[];
|
||||||
|
|
||||||
|
static int _check_head(const rt_uint8_t *buf, rt_size_t len)
|
||||||
|
{
|
||||||
|
if (len < 8)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < sizeof(FIXED_HEAD); i++)
|
||||||
|
{
|
||||||
|
if (FIXED_HEAD[i] != buf[i])
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_uint32_t real = *((const rt_uint32_t *)&buf[4]);
|
||||||
|
rt_uint32_t want = rt_strlen(IAP_BIN_PREFIX);
|
||||||
|
if (real <= want || len - 8 < real)
|
||||||
|
{
|
||||||
|
return -3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < want; i++)
|
||||||
|
{
|
||||||
|
if (IAP_BIN_PREFIX[i] != buf[8 + i])
|
||||||
|
{
|
||||||
|
return -4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return real + 8;
|
||||||
|
}
|
||||||
|
|
||||||
struct custom_ctx {
|
struct custom_ctx {
|
||||||
struct rym_ctx parent;
|
struct rym_ctx parent;
|
||||||
int32_t file_size;
|
int32_t file_size;
|
||||||
int32_t w_index;
|
int32_t w_index;
|
||||||
|
int32_t recevied_head;
|
||||||
const struct fal_partition *flash;
|
const struct fal_partition *flash;
|
||||||
rt_uint8_t ck_buffer[RT_BUF_SIZE];
|
rt_uint8_t ck_buffer[RT_BUF_SIZE];
|
||||||
};
|
};
|
||||||
@@ -167,11 +217,8 @@ static enum rym_code _rym_recv_begin(
|
|||||||
return RYM_CODE_CAN;
|
return RYM_CODE_CAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fal_partition_erase(cctx->flash, 0, cctx->file_size) < 0)
|
|
||||||
{
|
|
||||||
return RYM_CODE_CAN;
|
|
||||||
}
|
|
||||||
cctx->w_index = 0;
|
cctx->w_index = 0;
|
||||||
|
cctx->recevied_head = 0;
|
||||||
|
|
||||||
return RYM_CODE_ACK;
|
return RYM_CODE_ACK;
|
||||||
}
|
}
|
||||||
@@ -185,6 +232,23 @@ static enum rym_code _rym_recv_data(
|
|||||||
RT_ASSERT(cctx);
|
RT_ASSERT(cctx);
|
||||||
RT_ASSERT(len <= RT_BUF_SIZE);
|
RT_ASSERT(len <= RT_BUF_SIZE);
|
||||||
|
|
||||||
|
int offset = 0;
|
||||||
|
if (cctx->recevied_head == 0)
|
||||||
|
{
|
||||||
|
offset = _check_head(buf, len);
|
||||||
|
if (offset < 0)
|
||||||
|
{
|
||||||
|
return RYM_ERR_FILE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fal_partition_erase(cctx->flash, 0, cctx->file_size) < 0)
|
||||||
|
{
|
||||||
|
return RYM_CODE_CAN;
|
||||||
|
}
|
||||||
|
|
||||||
|
cctx->recevied_head = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (cctx->w_index >= cctx->file_size)
|
if (cctx->w_index >= cctx->file_size)
|
||||||
{
|
{
|
||||||
return RYM_CODE_ACK;
|
return RYM_CODE_ACK;
|
||||||
@@ -195,22 +259,22 @@ static enum rym_code _rym_recv_data(
|
|||||||
len = cctx->file_size - cctx->w_index;
|
len = cctx->file_size - cctx->w_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fal_partition_write(cctx->flash, cctx->w_index, buf, len) <= 0)
|
if (fal_partition_write(cctx->flash, cctx->w_index, &buf[offset], len - offset) <= 0)
|
||||||
{
|
{
|
||||||
return RYM_CODE_CAN;
|
return RYM_CODE_CAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fal_partition_read(cctx->flash, cctx->w_index, cctx->ck_buffer, len) <= 0)
|
if (fal_partition_read(cctx->flash, cctx->w_index, cctx->ck_buffer, len - offset) <= 0)
|
||||||
{
|
{
|
||||||
return RYM_CODE_CAN;
|
return RYM_CODE_CAN;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < len; i++)
|
for (int i = 0; i < len - offset; i++)
|
||||||
{
|
{
|
||||||
if (cctx->ck_buffer[i] != buf[i])
|
if (cctx->ck_buffer[i] != buf[i + offset])
|
||||||
return RYM_CODE_CAN;
|
return RYM_CODE_CAN;
|
||||||
}
|
}
|
||||||
cctx->w_index += len;
|
cctx->w_index += len - offset;
|
||||||
|
|
||||||
return RYM_CODE_ACK;
|
return RYM_CODE_ACK;
|
||||||
}
|
}
|
||||||
@@ -309,6 +373,8 @@ int iap_main_entry(void)
|
|||||||
return _iap_entry(RT_TRUE);
|
return _iap_entry(RT_TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "shell.h"
|
||||||
|
|
||||||
static int _iap_entry(rt_bool_t is_boot)
|
static int _iap_entry(rt_bool_t is_boot)
|
||||||
{
|
{
|
||||||
if (IapAppAddr && is_boot)
|
if (IapAppAddr && is_boot)
|
||||||
@@ -316,6 +382,11 @@ static int _iap_entry(rt_bool_t is_boot)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((!IapAppAddr) && is_boot)
|
||||||
|
{
|
||||||
|
finsh_set_prompt("msh (IAP)");
|
||||||
|
}
|
||||||
|
|
||||||
rt_err_t err = RT_EOK;
|
rt_err_t err = RT_EOK;
|
||||||
struct custom_ctx *ctx = RT_NULL;
|
struct custom_ctx *ctx = RT_NULL;
|
||||||
rt_device_t console = rt_console_get_device();
|
rt_device_t console = rt_console_get_device();
|
||||||
|
|||||||
@@ -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')
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"path": "/packages/system/enhanced-kservice/rt_vsnprintf_full",
|
||||||
|
"ver": "latest",
|
||||||
|
"name": "RT_VSNPRINTF_FULL"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# rt_vsnprintf 完整功能版本
|
||||||
|
|
||||||
|
在RT-Thread的kservice.c源码中的这些函数的实现是为了满足RT-Thread内核的自持能力,即在不依赖标准C库的情况下,RT-Thread核心代码也可以正常运行,因此rt_kprintf、rt_sprintf、rt_snprintf、rt_vsnprintf这类打印函数(或者称之为rt_kprintf家族函数)仅仅满足内核的使用需求,不会实现完整的、和标准C库一致的功能,以减少ROM占用。但是,很多社区小伙伴希望rt_kprintf家族函数可以支持上更多的功能(例如打印浮点数据等等)。因此,本软件包实现了该功能。
|
||||||
|
|
||||||
|
本软件包实现了rt_kprintf家族函数的全功能版本,因为rt_kprintf家族函数的核心功能都是调用rt_vsnprintf函数,因此只需要重新实现rt_vsnprintf函数即可。本软件包基于开源项目[printf](https://github.com/eyalroz/printf)重新实现了rt_vsnprintf,在4.1.0以及以上的RT-Thread版本中,只需要安装本软件包即可。若RT-Thread低于4.1.0版本,需要手动将kservice.c内的rt_vsnprintf函数注释掉,再安装本软件包。
|
||||||
|
|
||||||
|
## 接管标准C库的printf家族函数(仅支持4.1.0及以上版本)
|
||||||
|
本软件包有三个功能宏开关,是否允许本软件包接管printf、sprintf以及snprintf函数,默认为yes,即接管。
|
||||||
|
也就是说,安装本软件包后,即便没有使能libc(RT_USING_LIBC),你可以正常的使用printf、sprintf以及snprintf函数,当你调用这三个函数时,会自动被rt_kprintf、rt_sprintf、rt_snprintf函数接管。你可以正常使用printf家族函数的所有功能。
|
||||||
|
|
||||||
|
```c
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
printf("hello world\n");
|
||||||
|
```
|
||||||
|
|
||||||
|
## ROM占用
|
||||||
|
GCC下占用8.6KB, Keil下占用8KB。远小于开启标准C库的ROM占用。
|
||||||
|
|
||||||
|
## 如何添加该软件包
|
||||||
|
|
||||||
|
```
|
||||||
|
RT-Thread online packages
|
||||||
|
system packages --->
|
||||||
|
enhanced kernel services --->
|
||||||
|
[*] rt_vsnprintf_full: fully functional version of rt_vsnprintf --->
|
||||||
|
Version (latest) --->
|
||||||
|
```
|
||||||
|
|
||||||
|
- 使用 `RT-Thread Studio` 打开 `RT-Thread Settings`, 点击添加软件包,输入关键字 `printf`, 添加 `rt_vsnprintf_full` 软件包,保存
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
- 软件包目录下多出了一个 `rt_vsnprintf_full-latest` 包
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
- 打开 rt_vsnprintf.c,发现其中也实现了 rt_vsnprintf
|
||||||
|
|
||||||
|
```c
|
||||||
|
rt_int32_t rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args)
|
||||||
|
{
|
||||||
|
return __vsnprintf(out_buffer, buf, size, fmt, args);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- 注释掉 kservice.c 中的 rt_vsnprintf **(只针对4.1.0版本以下)**
|
||||||
|
|
||||||
|
- 重新编译并运行 `rt_kprintf ` 和 `LOG_I`, 浮点数打印正常
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 维护
|
||||||
|
|
||||||
|
[Meco Man](https://github.com/mysterywolf)
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
from building import *
|
||||||
|
|
||||||
|
src = ['rt_vsnprintf.c']
|
||||||
|
CPPDEFINES = []
|
||||||
|
|
||||||
|
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_SPRINTF'):
|
||||||
|
CPPDEFINES += ['sprintf=rt_sprintf']
|
||||||
|
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_SNPRINTF'):
|
||||||
|
CPPDEFINES += ['snprintf=rt_snprintf']
|
||||||
|
if GetDepend('RT_VSNPRINTF_FULL_REPLACING_PRINTF'):
|
||||||
|
CPPDEFINES += ['printf=rt_kprintf']
|
||||||
|
|
||||||
|
group = DefineGroup('rt_kprintf', src, depend = ['PKG_USING_RT_VSNPRINTF_FULL'], CPPDEFINES = CPPDEFINES)
|
||||||
|
Return('group')
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 36 KiB |
File diff suppressed because it is too large
Load Diff
+52
-32
@@ -303,8 +303,8 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</PathWithFileName>
|
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</PathWithFileName>
|
||||||
<FilenameWithoutPath>cxx_Semaphore.cpp</FilenameWithoutPath>
|
<FilenameWithoutPath>cxx_Mutex.cpp</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
@@ -315,20 +315,20 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</PathWithFileName>
|
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Semaphore.cpp</PathWithFileName>
|
||||||
<FilenameWithoutPath>cxx_Thread.cpp</FilenameWithoutPath>
|
<FilenameWithoutPath>cxx_Semaphore.cpp</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>11</FileNumber>
|
<FileNumber>11</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>8</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt_init.c</PathWithFileName>
|
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</PathWithFileName>
|
||||||
<FilenameWithoutPath>cxx_crt_init.c</FilenameWithoutPath>
|
<FilenameWithoutPath>cxx_Thread.cpp</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
@@ -347,12 +347,12 @@
|
|||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>13</FileNumber>
|
<FileNumber>13</FileNumber>
|
||||||
<FileType>8</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</PathWithFileName>
|
<PathWithFileName>rt-thread\components\libc\cplusplus\cxx_crt_init.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>cxx_Mutex.cpp</FilenameWithoutPath>
|
<FilenameWithoutPath>cxx_crt_init.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
@@ -683,8 +683,8 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\fal\src\fal.c</PathWithFileName>
|
<PathWithFileName>rt-thread\components\fal\src\fal_partition.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>fal.c</FilenameWithoutPath>
|
<FilenameWithoutPath>fal_partition.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
@@ -695,23 +695,23 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\fal\src\fal_flash.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>fal_flash.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>6</GroupNumber>
|
|
||||||
<FileNumber>40</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>rt-thread\components\fal\src\fal_rtt.c</PathWithFileName>
|
<PathWithFileName>rt-thread\components\fal\src\fal_rtt.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>fal_rtt.c</FilenameWithoutPath>
|
<FilenameWithoutPath>fal_rtt.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>6</GroupNumber>
|
||||||
|
<FileNumber>40</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>rt-thread\components\fal\src\fal.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>fal.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>41</FileNumber>
|
<FileNumber>41</FileNumber>
|
||||||
@@ -719,8 +719,8 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\fal\src\fal_partition.c</PathWithFileName>
|
<PathWithFileName>rt-thread\components\fal\src\fal_flash.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>fal_partition.c</FilenameWithoutPath>
|
<FilenameWithoutPath>fal_flash.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
@@ -784,7 +784,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>IAP</GroupName>
|
<GroupName>IAP</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -1251,7 +1251,7 @@
|
|||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Utilities</GroupName>
|
<GroupName>rt_kprintf</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
@@ -1263,14 +1263,34 @@
|
|||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>packages\rt_vsnprintf_full-latest\rt_vsnprintf.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>rt_vsnprintf.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
</Group>
|
||||||
|
|
||||||
|
<Group>
|
||||||
|
<GroupName>Utilities</GroupName>
|
||||||
|
<tvExp>1</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<cbSel>0</cbSel>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>12</GroupNumber>
|
||||||
|
<FileNumber>84</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>rt-thread\components\utilities\ulog\backend\console_be.c</PathWithFileName>
|
<PathWithFileName>rt-thread\components\utilities\ulog\backend\console_be.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>console_be.c</FilenameWithoutPath>
|
<FilenameWithoutPath>console_be.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>11</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>84</FileNumber>
|
<FileNumber>85</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
@@ -1281,8 +1301,8 @@
|
|||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>11</GroupNumber>
|
<GroupNumber>12</GroupNumber>
|
||||||
<FileNumber>85</FileNumber>
|
<FileNumber>86</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
|||||||
+29
-19
@@ -82,7 +82,7 @@
|
|||||||
<AfterMake>
|
<AfterMake>
|
||||||
<RunUserProg1>1</RunUserProg1>
|
<RunUserProg1>1</RunUserProg1>
|
||||||
<RunUserProg2>0</RunUserProg2>
|
<RunUserProg2>0</RunUserProg2>
|
||||||
<UserProg1Name>move_lib.bat</UserProg1Name>
|
<UserProg1Name>E:\xyfc\413\work\stm32f413\move_lib.bat</UserProg1Name>
|
||||||
<UserProg2Name></UserProg2Name>
|
<UserProg2Name></UserProg2Name>
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
@@ -428,6 +428,11 @@
|
|||||||
<Group>
|
<Group>
|
||||||
<GroupName>CPlusPlus</GroupName>
|
<GroupName>CPlusPlus</GroupName>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>cxx_Mutex.cpp</FileName>
|
||||||
|
<FileType>8</FileType>
|
||||||
|
<FilePath>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</FilePath>
|
||||||
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<FileName>cxx_Semaphore.cpp</FileName>
|
<FileName>cxx_Semaphore.cpp</FileName>
|
||||||
<FileType>8</FileType>
|
<FileType>8</FileType>
|
||||||
@@ -438,20 +443,15 @@
|
|||||||
<FileType>8</FileType>
|
<FileType>8</FileType>
|
||||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</FilePath>
|
<FilePath>rt-thread\components\libc\cplusplus\cxx_Thread.cpp</FilePath>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
|
||||||
<FileName>cxx_crt_init.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
<File>
|
||||||
<FileName>cxx_crt.cpp</FileName>
|
<FileName>cxx_crt.cpp</FileName>
|
||||||
<FileType>8</FileType>
|
<FileType>8</FileType>
|
||||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
|
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt.cpp</FilePath>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<FileName>cxx_Mutex.cpp</FileName>
|
<FileName>cxx_crt_init.c</FileName>
|
||||||
<FileType>8</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>rt-thread\components\libc\cplusplus\cxx_Mutex.cpp</FilePath>
|
<FilePath>rt-thread\components\libc\cplusplus\cxx_crt_init.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
@@ -593,6 +593,16 @@
|
|||||||
<Group>
|
<Group>
|
||||||
<GroupName>Fal</GroupName>
|
<GroupName>Fal</GroupName>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>fal_partition.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>rt-thread\components\fal\src\fal_partition.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>fal_rtt.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>rt-thread\components\fal\src\fal_rtt.c</FilePath>
|
||||||
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<FileName>fal.c</FileName>
|
<FileName>fal.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
@@ -603,16 +613,6 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>rt-thread\components\fal\src\fal_flash.c</FilePath>
|
<FilePath>rt-thread\components\fal\src\fal_flash.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
|
||||||
<FileName>fal_rtt.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>rt-thread\components\fal\src\fal_rtt.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>fal_partition.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>rt-thread\components\fal\src\fal_partition.c</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
@@ -840,6 +840,16 @@
|
|||||||
</File>
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Group>
|
||||||
|
<GroupName>rt_kprintf</GroupName>
|
||||||
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>rt_vsnprintf.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>packages\rt_vsnprintf_full-latest\rt_vsnprintf.c</FilePath>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Utilities</GroupName>
|
<GroupName>Utilities</GroupName>
|
||||||
<Files>
|
<Files>
|
||||||
|
|||||||
@@ -645,501 +645,6 @@ void rt_show_version(void)
|
|||||||
}
|
}
|
||||||
RTM_EXPORT(rt_show_version);
|
RTM_EXPORT(rt_show_version);
|
||||||
|
|
||||||
/* private function */
|
|
||||||
#define _ISDIGIT(c) ((unsigned)((c) - '0') < 10)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function will duplicate a string.
|
|
||||||
*
|
|
||||||
* @param n is the string to be duplicated.
|
|
||||||
*
|
|
||||||
* @param base is support divide instructions value.
|
|
||||||
*
|
|
||||||
* @return the duplicated string pointer.
|
|
||||||
*/
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
rt_inline int divide(long long *n, int base)
|
|
||||||
#else
|
|
||||||
rt_inline int divide(long *n, int base)
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
{
|
|
||||||
int res;
|
|
||||||
|
|
||||||
/* optimized for processor which does not support divide instructions. */
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
res = (int)(((unsigned long long)*n) % base);
|
|
||||||
*n = (long long)(((unsigned long long)*n) / base);
|
|
||||||
#else
|
|
||||||
res = (int)(((unsigned long)*n) % base);
|
|
||||||
*n = (long)(((unsigned long)*n) / base);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
rt_inline int skip_atoi(const char **s)
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
while (_ISDIGIT(**s))
|
|
||||||
i = i * 10 + *((*s)++) - '0';
|
|
||||||
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ZEROPAD (1 << 0) /* pad with zero */
|
|
||||||
#define SIGN (1 << 1) /* unsigned/signed long */
|
|
||||||
#define PLUS (1 << 2) /* show plus */
|
|
||||||
#define SPACE (1 << 3) /* space if plus */
|
|
||||||
#define LEFT (1 << 4) /* left justified */
|
|
||||||
#define SPECIAL (1 << 5) /* 0x */
|
|
||||||
#define LARGE (1 << 6) /* use 'ABCDEF' instead of 'abcdef' */
|
|
||||||
|
|
||||||
static char *print_number(char *buf,
|
|
||||||
char *end,
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
long long num,
|
|
||||||
#else
|
|
||||||
long num,
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
int base,
|
|
||||||
int s,
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
int precision,
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
int type)
|
|
||||||
{
|
|
||||||
char c, sign;
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
char tmp[64];
|
|
||||||
#else
|
|
||||||
char tmp[32];
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
int precision_bak = precision;
|
|
||||||
const char *digits;
|
|
||||||
static const char small_digits[] = "0123456789abcdef";
|
|
||||||
static const char large_digits[] = "0123456789ABCDEF";
|
|
||||||
int i, size;
|
|
||||||
|
|
||||||
size = s;
|
|
||||||
|
|
||||||
digits = (type & LARGE) ? large_digits : small_digits;
|
|
||||||
if (type & LEFT)
|
|
||||||
type &= ~ZEROPAD;
|
|
||||||
|
|
||||||
c = (type & ZEROPAD) ? '0' : ' ';
|
|
||||||
|
|
||||||
/* get sign */
|
|
||||||
sign = 0;
|
|
||||||
if (type & SIGN)
|
|
||||||
{
|
|
||||||
if (num < 0)
|
|
||||||
{
|
|
||||||
sign = '-';
|
|
||||||
num = -num;
|
|
||||||
}
|
|
||||||
else if (type & PLUS)
|
|
||||||
sign = '+';
|
|
||||||
else if (type & SPACE)
|
|
||||||
sign = ' ';
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RT_PRINTF_SPECIAL
|
|
||||||
if (type & SPECIAL)
|
|
||||||
{
|
|
||||||
if (base == 2 || base == 16)
|
|
||||||
size -= 2;
|
|
||||||
else if (base == 8)
|
|
||||||
size--;
|
|
||||||
}
|
|
||||||
#endif /* RT_PRINTF_SPECIAL */
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
if (num == 0)
|
|
||||||
tmp[i++] = '0';
|
|
||||||
else
|
|
||||||
{
|
|
||||||
while (num != 0)
|
|
||||||
tmp[i++] = digits[divide(&num, base)];
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
if (i > precision)
|
|
||||||
precision = i;
|
|
||||||
size -= precision;
|
|
||||||
#else
|
|
||||||
size -= i;
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
|
|
||||||
if (!(type & (ZEROPAD | LEFT)))
|
|
||||||
{
|
|
||||||
if ((sign) && (size > 0))
|
|
||||||
size--;
|
|
||||||
|
|
||||||
while (size-- > 0)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = ' ';
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sign)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
{
|
|
||||||
*buf = sign;
|
|
||||||
}
|
|
||||||
-- size;
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RT_PRINTF_SPECIAL
|
|
||||||
if (type & SPECIAL)
|
|
||||||
{
|
|
||||||
if (base == 2)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = '0';
|
|
||||||
++ buf;
|
|
||||||
if (buf < end)
|
|
||||||
*buf = 'b';
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
else if (base == 8)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = '0';
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
else if (base == 16)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = '0';
|
|
||||||
++ buf;
|
|
||||||
if (buf < end)
|
|
||||||
{
|
|
||||||
*buf = type & LARGE ? 'X' : 'x';
|
|
||||||
}
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif /* RT_PRINTF_SPECIAL */
|
|
||||||
|
|
||||||
/* no align to the left */
|
|
||||||
if (!(type & LEFT))
|
|
||||||
{
|
|
||||||
while (size-- > 0)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = c;
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
while (i < precision--)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = '0';
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
|
|
||||||
/* put number in the temporary buffer */
|
|
||||||
while (i-- > 0 && (precision_bak != 0))
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = tmp[i];
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (size-- > 0)
|
|
||||||
{
|
|
||||||
if (buf < end)
|
|
||||||
*buf = ' ';
|
|
||||||
++ buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function will fill a formatted string to buffer.
|
|
||||||
*
|
|
||||||
* @param buf is the buffer to save formatted string.
|
|
||||||
*
|
|
||||||
* @param size is the size of buffer.
|
|
||||||
*
|
|
||||||
* @param fmt is the format parameters.
|
|
||||||
*
|
|
||||||
* @param args is a list of variable parameters.
|
|
||||||
*
|
|
||||||
* @return The number of characters actually written to buffer.
|
|
||||||
*/
|
|
||||||
RT_WEAK int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args)
|
|
||||||
{
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
unsigned long long num;
|
|
||||||
#else
|
|
||||||
rt_uint32_t num;
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
int i, len;
|
|
||||||
char *str, *end, c;
|
|
||||||
const char *s;
|
|
||||||
|
|
||||||
rt_uint8_t base; /* the base of number */
|
|
||||||
rt_uint8_t flags; /* flags to print number */
|
|
||||||
rt_uint8_t qualifier; /* 'h', 'l', or 'L' for integer fields */
|
|
||||||
rt_int32_t field_width; /* width of output field */
|
|
||||||
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
int precision; /* min. # of digits for integers and max for a string */
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
|
|
||||||
str = buf;
|
|
||||||
end = buf + size;
|
|
||||||
|
|
||||||
/* Make sure end is always >= buf */
|
|
||||||
if (end < buf)
|
|
||||||
{
|
|
||||||
end = ((char *) - 1);
|
|
||||||
size = end - buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (; *fmt ; ++fmt)
|
|
||||||
{
|
|
||||||
if (*fmt != '%')
|
|
||||||
{
|
|
||||||
if (str < end)
|
|
||||||
*str = *fmt;
|
|
||||||
++ str;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* process flags */
|
|
||||||
flags = 0;
|
|
||||||
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* skips the first '%' also */
|
|
||||||
++ fmt;
|
|
||||||
if (*fmt == '-') flags |= LEFT;
|
|
||||||
else if (*fmt == '+') flags |= PLUS;
|
|
||||||
else if (*fmt == ' ') flags |= SPACE;
|
|
||||||
else if (*fmt == '#') flags |= SPECIAL;
|
|
||||||
else if (*fmt == '0') flags |= ZEROPAD;
|
|
||||||
else break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get field width */
|
|
||||||
field_width = -1;
|
|
||||||
if (_ISDIGIT(*fmt)) field_width = skip_atoi(&fmt);
|
|
||||||
else if (*fmt == '*')
|
|
||||||
{
|
|
||||||
++ fmt;
|
|
||||||
/* it's the next argument */
|
|
||||||
field_width = va_arg(args, int);
|
|
||||||
if (field_width < 0)
|
|
||||||
{
|
|
||||||
field_width = -field_width;
|
|
||||||
flags |= LEFT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
/* get the precision */
|
|
||||||
precision = -1;
|
|
||||||
if (*fmt == '.')
|
|
||||||
{
|
|
||||||
++ fmt;
|
|
||||||
if (_ISDIGIT(*fmt)) precision = skip_atoi(&fmt);
|
|
||||||
else if (*fmt == '*')
|
|
||||||
{
|
|
||||||
++ fmt;
|
|
||||||
/* it's the next argument */
|
|
||||||
precision = va_arg(args, int);
|
|
||||||
}
|
|
||||||
if (precision < 0) precision = 0;
|
|
||||||
}
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
/* get the conversion qualifier */
|
|
||||||
qualifier = 0;
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L')
|
|
||||||
#else
|
|
||||||
if (*fmt == 'h' || *fmt == 'l')
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
{
|
|
||||||
qualifier = *fmt;
|
|
||||||
++ fmt;
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
if (qualifier == 'l' && *fmt == 'l')
|
|
||||||
{
|
|
||||||
qualifier = 'L';
|
|
||||||
++ fmt;
|
|
||||||
}
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the default base */
|
|
||||||
base = 10;
|
|
||||||
|
|
||||||
switch (*fmt)
|
|
||||||
{
|
|
||||||
case 'c':
|
|
||||||
if (!(flags & LEFT))
|
|
||||||
{
|
|
||||||
while (--field_width > 0)
|
|
||||||
{
|
|
||||||
if (str < end) *str = ' ';
|
|
||||||
++ str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get character */
|
|
||||||
c = (rt_uint8_t)va_arg(args, int);
|
|
||||||
if (str < end) *str = c;
|
|
||||||
++ str;
|
|
||||||
|
|
||||||
/* put width */
|
|
||||||
while (--field_width > 0)
|
|
||||||
{
|
|
||||||
if (str < end) *str = ' ';
|
|
||||||
++ str;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
|
|
||||||
case 's':
|
|
||||||
s = va_arg(args, char *);
|
|
||||||
if (!s) s = "(NULL)";
|
|
||||||
|
|
||||||
for (len = 0; (len != field_width) && (s[len] != '\0'); len++);
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
if (precision > 0 && len > precision) len = precision;
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
|
|
||||||
if (!(flags & LEFT))
|
|
||||||
{
|
|
||||||
while (len < field_width--)
|
|
||||||
{
|
|
||||||
if (str < end) *str = ' ';
|
|
||||||
++ str;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < len; ++i)
|
|
||||||
{
|
|
||||||
if (str < end) *str = *s;
|
|
||||||
++ str;
|
|
||||||
++ s;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (len < field_width--)
|
|
||||||
{
|
|
||||||
if (str < end) *str = ' ';
|
|
||||||
++ str;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
|
|
||||||
case 'p':
|
|
||||||
if (field_width == -1)
|
|
||||||
{
|
|
||||||
field_width = sizeof(void *) << 1;
|
|
||||||
flags |= ZEROPAD;
|
|
||||||
}
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
str = print_number(str, end,
|
|
||||||
(long)va_arg(args, void *),
|
|
||||||
16, field_width, precision, flags);
|
|
||||||
#else
|
|
||||||
str = print_number(str, end,
|
|
||||||
(long)va_arg(args, void *),
|
|
||||||
16, field_width, flags);
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
continue;
|
|
||||||
|
|
||||||
case '%':
|
|
||||||
if (str < end) *str = '%';
|
|
||||||
++ str;
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* integer number formats - set up the flags and "break" */
|
|
||||||
case 'b':
|
|
||||||
base = 2;
|
|
||||||
break;
|
|
||||||
case 'o':
|
|
||||||
base = 8;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'X':
|
|
||||||
flags |= LARGE;
|
|
||||||
case 'x':
|
|
||||||
base = 16;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'd':
|
|
||||||
case 'i':
|
|
||||||
flags |= SIGN;
|
|
||||||
case 'u':
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
if (str < end) *str = '%';
|
|
||||||
++ str;
|
|
||||||
|
|
||||||
if (*fmt)
|
|
||||||
{
|
|
||||||
if (str < end) *str = *fmt;
|
|
||||||
++ str;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
-- fmt;
|
|
||||||
}
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RT_KPRINTF_USING_LONGLONG
|
|
||||||
if (qualifier == 'L') num = va_arg(args, long long);
|
|
||||||
else if (qualifier == 'l')
|
|
||||||
#else
|
|
||||||
if (qualifier == 'l')
|
|
||||||
#endif /* RT_KPRINTF_USING_LONGLONG */
|
|
||||||
{
|
|
||||||
num = va_arg(args, rt_uint32_t);
|
|
||||||
if (flags & SIGN) num = (rt_int32_t)num;
|
|
||||||
}
|
|
||||||
else if (qualifier == 'h')
|
|
||||||
{
|
|
||||||
num = (rt_uint16_t)va_arg(args, int);
|
|
||||||
if (flags & SIGN) num = (rt_int16_t)num;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
num = va_arg(args, rt_uint32_t);
|
|
||||||
if (flags & SIGN) num = (rt_int32_t)num;
|
|
||||||
}
|
|
||||||
#ifdef RT_PRINTF_PRECISION
|
|
||||||
str = print_number(str, end, num, base, field_width, precision, flags);
|
|
||||||
#else
|
|
||||||
str = print_number(str, end, num, base, field_width, flags);
|
|
||||||
#endif /* RT_PRINTF_PRECISION */
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size > 0)
|
|
||||||
{
|
|
||||||
if (str < end) *str = '\0';
|
|
||||||
else
|
|
||||||
{
|
|
||||||
end[-1] = '\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the trailing null byte doesn't count towards the total
|
|
||||||
* ++str;
|
|
||||||
*/
|
|
||||||
return str - buf;
|
|
||||||
}
|
|
||||||
RTM_EXPORT(rt_vsnprintf);
|
RTM_EXPORT(rt_vsnprintf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+31
-1
@@ -124,6 +124,7 @@
|
|||||||
|
|
||||||
/* log format */
|
/* log format */
|
||||||
|
|
||||||
|
#define ULOG_OUTPUT_FLOAT
|
||||||
#define ULOG_USING_COLOR
|
#define ULOG_USING_COLOR
|
||||||
#define ULOG_OUTPUT_TIME
|
#define ULOG_OUTPUT_TIME
|
||||||
#define ULOG_OUTPUT_LEVEL
|
#define ULOG_OUTPUT_LEVEL
|
||||||
@@ -175,6 +176,8 @@
|
|||||||
|
|
||||||
/* enhanced kernel services */
|
/* enhanced kernel services */
|
||||||
|
|
||||||
|
#define PKG_USING_RT_VSNPRINTF_FULL
|
||||||
|
#define PKG_USING_RT_VSNPRINTF_FULL_LATEST_VERSION
|
||||||
|
|
||||||
/* acceleration: Assembly language or algorithmic acceleration packages */
|
/* acceleration: Assembly language or algorithmic acceleration packages */
|
||||||
|
|
||||||
@@ -187,6 +190,11 @@
|
|||||||
|
|
||||||
/* peripheral libraries and drivers */
|
/* peripheral libraries and drivers */
|
||||||
|
|
||||||
|
/* sensors drivers */
|
||||||
|
|
||||||
|
|
||||||
|
/* touch drivers */
|
||||||
|
|
||||||
|
|
||||||
/* Kendryte SDK */
|
/* Kendryte SDK */
|
||||||
|
|
||||||
@@ -194,6 +202,9 @@
|
|||||||
/* AI packages */
|
/* AI packages */
|
||||||
|
|
||||||
|
|
||||||
|
/* Signal Processing and Control Algorithm Packages */
|
||||||
|
|
||||||
|
|
||||||
/* miscellaneous packages */
|
/* miscellaneous packages */
|
||||||
|
|
||||||
/* project laboratory */
|
/* project laboratory */
|
||||||
@@ -207,6 +218,9 @@
|
|||||||
/* Arduino libraries */
|
/* Arduino libraries */
|
||||||
|
|
||||||
|
|
||||||
|
/* Projects */
|
||||||
|
|
||||||
|
|
||||||
/* Sensors */
|
/* Sensors */
|
||||||
|
|
||||||
|
|
||||||
@@ -216,7 +230,23 @@
|
|||||||
/* Timing */
|
/* Timing */
|
||||||
|
|
||||||
|
|
||||||
/* Projects */
|
/* Data Processing */
|
||||||
|
|
||||||
|
|
||||||
|
/* Data Storage */
|
||||||
|
|
||||||
|
/* Communication */
|
||||||
|
|
||||||
|
|
||||||
|
/* Device Control */
|
||||||
|
|
||||||
|
|
||||||
|
/* Other */
|
||||||
|
|
||||||
|
/* Signal IO */
|
||||||
|
|
||||||
|
|
||||||
|
/* Uncategorized */
|
||||||
|
|
||||||
#define SOC_FAMILY_STM32
|
#define SOC_FAMILY_STM32
|
||||||
#define SOC_SERIES_STM32F4
|
#define SOC_SERIES_STM32F4
|
||||||
|
|||||||
Reference in New Issue
Block a user