# 编译选项参考
使用本文件的编译选项测试通过了所有sample
## 运行硬件平台
STM32f767ZI + ESP8266
## 硬件平台配置
使用了三个串口,uart2用于和at设备通讯,uart3用于下载调试代码,uart6用于打印输出debug
使用了STM32f767ZI的内置flash
## 开启功能
开启了Mqtt和Http连接云平台,设备影子,物模型 ,ota升级和tls
## 依赖软件包
* `SAL套接字抽象层`
* `AT DEVICE`
* `FinSH控制台`
* `netdev网卡抽象层`
* `FAL存储抽象层`
* `mbedtls`
rtthread配置如下:
```
#ifndef RT_CONFIG_H__
#define RT_CONFIG_H__
/* Automatically generated file; DO NOT EDIT. */
/* RT-Thread Configuration */
/* RT-Thread Kernel */
#define RT_NAME_MAX 8
#define RT_ALIGN_SIZE 4
#define RT_THREAD_PRIORITY_32
#define RT_THREAD_PRIORITY_MAX 32
#define RT_TICK_PER_SECOND 100
#define RT_USING_OVERFLOW_CHECK
#define RT_USING_HOOK
#define RT_USING_IDLE_HOOK
#define RT_IDLE_HOOK_LIST_SIZE 4
#define IDLE_THREAD_STACK_SIZE 1024
#define RT_USING_TIMER_SOFT
#define RT_TIMER_THREAD_PRIO 4
#define RT_TIMER_THREAD_STACK_SIZE 512
#define RT_DEBUG
/* Inter-Thread communication */
#define RT_USING_SEMAPHORE
#define RT_USING_MUTEX
#define RT_USING_EVENT
#define RT_USING_MAILBOX
#define RT_USING_MESSAGEQUEUE
#define RT_USING_SIGNALS
/* Memory Management */
#define RT_USING_MEMPOOL
#define RT_USING_MEMHEAP
#define RT_USING_SMALL_MEM
#define RT_USING_HEAP
/* Kernel Device Object */
#define RT_USING_DEVICE
#define RT_USING_CONSOLE
#define RT_CONSOLEBUF_SIZE 1024
#define RT_CONSOLE_DEVICE_NAME "uart6"
#define RT_VER_NUM 0x40002
#define ARCH_ARM
#define RT_USING_CPU_FFS
#define ARCH_ARM_CORTEX_M
#define ARCH_ARM_CORTEX_M7
/* RT-Thread Components */
#define RT_USING_COMPONENTS_INIT
#define RT_USING_USER_MAIN
#define RT_MAIN_THREAD_STACK_SIZE 2048
#define RT_MAIN_THREAD_PRIORITY 10
/* C++ features */
/* Command shell */
#define RT_USING_FINSH
#define FINSH_THREAD_NAME "tshell"
#define FINSH_USING_HISTORY
#define FINSH_HISTORY_LINES 5
#define FINSH_USING_SYMTAB
#define FINSH_USING_DESCRIPTION
#define FINSH_THREAD_PRIORITY 20
#define FINSH_THREAD_STACK_SIZE 4096
#define FINSH_CMD_SIZE 80
#define FINSH_USING_MSH
#define FINSH_USING_MSH_DEFAULT
#define FINSH_ARG_MAX 10
/* Device virtual file system */
#define RT_USING_DFS
#define DFS_USING_WORKDIR
#define DFS_FILESYSTEMS_MAX 2
#define DFS_FILESYSTEM_TYPES_MAX 2
#define DFS_FD_MAX 16
#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_SERIAL_USING_DMA
#define RT_SERIAL_RB_BUFSZ 1500
#define RT_USING_HWTIMER
#define RT_USING_PIN
#define RT_USING_RTC
#define RT_USING_SOFT_RTC
/* Using USB */
/* POSIX layer and C standard library */
#define RT_USING_LIBC
#define RT_USING_POSIX
/* Network */
/* Socket abstraction layer */
#define RT_USING_SAL
/* protocol stack implement */
#define SAL_USING_AT
#define SAL_USING_TLS
#define SAL_USING_POSIX
/* Network interface device */
#define RT_USING_NETDEV
#define NETDEV_IPV4 1
#define NETDEV_IPV6 0
/* light weight TCP/IP stack */
/* AT commands */
#define RT_USING_AT
#define AT_USING_CLIENT
#define AT_CLIENT_NUM_MAX 1
#define AT_USING_SOCKET
#define AT_USING_CLI
#define AT_CMD_MAX_LEN 1500
#define AT_SW_VERSION_NUM 0x10300
/* VBUS(Virtual Software BUS) */
/* Utilities */
/* RT-Thread online packages */
/* IoT - internet of things */
/* Wi-Fi */
/* Marvell WiFi */
/* Wiced WiFi */
#define PKG_USING_AT_DEVICE
#define AT_DEVICE_USING_ESP8266
#define AT_DEVICE_ESP8266_SAMPLE
#define ESP8266_SAMPLE_WIFI_SSID "wifi_ssid"
#define ESP8266_SAMPLE_WIFI_PASSWORD "wifi_password"
#define ESP8266_SAMPLE_CLIENT_NAME "uart2"
#define ESP8266_SAMPLE_RECV_BUFF_LEN 1500
#define PKG_USING_AT_DEVICE_LATEST_VERSION
#define PKG_AT_DEVICE_VER_NUM 0x99999
/* IoT Cloud */
#define PKG_USING_UCLOUD_IOT_SDK
/* Ucloud Device Config */
#define PKG_USING_UCLOUD_IOT_SDK_CONFIG
#define PKG_USING_UCLOUD_IOT_SDK_PRODUCT_SN "PRODUCT_SN"
#define PKG_USING_UCLOUD_IOT_SDK_PRODUCT_SECRET "PRODUCT_SECRET"
#define PKG_USING_UCLOUD_IOT_SDK_DEVICE_SN "DEVICE_SN"
#define PKG_USING_UCLOUD_IOT_SDK_DEVICE_SECRET "DEVICE_SECRET"
#define PKG_USING_UCLOUD_MQTT
#define PKG_USING_UCLOUD_MQTT_SAMPLE
#define PKG_USING_UCLOUD_MQTT_DYNAMIC_AUTH_SAMPLE
#define PKG_USING_UCLOUD_HTTP
#define PKG_USING_UCLOUD_HTTP_PUBLISH_SAMPLE
#define PKG_USING_UCLOUD_HTTP_UPLOAD_FILE_SAMPLE
#define PKG_USING_UCLOUD_SHADOW
#define PKG_USING_UCLOUD_SHADOW_SAMPLE
#define PKG_USING_UCLOUD_DEV_MODEL
#define PKG_USING_UCLOUD_DEV_MODEL_SAMPLE
#define PKG_USING_UCLOUD_OTA
#define PKG_USING_UCLOUD_OTA_SAMPLE
#define PKG_USING_UCLOUD_TLS
#define PKG_USING_UCLOUD_DEBUG
#define PKG_USING_UCLOUD_IOT_SDK_LATEST_VERSION
/* security packages */
#define PKG_USING_MBEDTLS
/* Select Root Certificate */
#define MBEDTLS_AES_ROM_TABLES
#define MBEDTLS_ECP_WINDOW_SIZE 2
#define MBEDTLS_SSL_MAX_CONTENT_LEN 6144
#define MBEDTLS_MPI_MAX_SIZE 1024
#define MBEDTLS_CTR_DRBG_KEYSIZE 32
#define PKG_USING_MBEDTLS_V2710
/* language packages */
/* multimedia packages */
/* tools packages */
/* system packages */
#define PKG_USING_FAL
#define FAL_DEBUG 0
#define FAL_PART_HAS_TABLE_CFG
#define PKG_USING_FAL_LATEST_VERSION
#define PKG_FAL_VER_NUM 0x99999
/* peripheral libraries and drivers */
/* miscellaneous packages */
/* samples: kernel and components samples */
#define SOC_FAMILY_STM32
#define SOC_SERIES_STM32F7
/* Hardware Drivers Config */
#define SOC_STM32F767ZI
/* Onboard Peripheral Drivers */
#define BSP_USING_USB_TO_USART
/* On-chip Peripheral Drivers */
#define BSP_USING_GPIO
#define BSP_USING_UART2
#define BSP_UART2_RX_USING_DMA
#define BSP_USING_UART6
#define BSP_USING_ON_CHIP_FLASH
#define BSP_USING_UART
#define BSP_USING_UART3
/* Board extended module Drivers */
#endif
```