-
Notifications
You must be signed in to change notification settings - Fork 12
unihiker K10编译失败 #20
Description
检测到编译错误: Error during build: text section exceeds available space in board
Error during build: text section exceeds available space in board
`#include <Arduino.h>
#include <WiFi.h>
#include <driver/spi_common.h>
#include <esp_heap_caps.h>
#include "ai_vox_engine.h"
#include "ai_vox_observer.h"
#include "audio_input_device_sph0645.h"
#include "i2s_std_audio_output_device.h"
#include <esp_lcd_panel_io.h>
#include <esp_lcd_panel_ops.h>
#include <esp_lcd_panel_vendor.h>
#include "display.h"
#define WIFI_SSID "test"
#define WIFI_PASSWORD "12345678"
auto g_observer = std::make_shared<ai_vox::Observer>();
constexpr gpio_num_t kMicPinBclk = GPIO_NUM_0;
constexpr gpio_num_t kMicPinWs = GPIO_NUM_0;
constexpr gpio_num_t kMicPinDin = GPIO_NUM_0;
constexpr gpio_num_t kSpeakerPinBclk = GPIO_NUM_0;
constexpr gpio_num_t kSpeakerPinWs = GPIO_NUM_0;
constexpr gpio_num_t kSpeakerPinDout = GPIO_NUM_0;
constexpr gpio_num_t kTriggerPin = GPIO_NUM_0;
auto audio_input_device = std::make_shared(kMicPinBclk, kMicPinWs, kMicPinDin);
auto audio_output_device = std::make_shared<ai_vox::I2sStdAudioOutputDevice>(kSpeakerPinBclk, kSpeakerPinWs, kSpeakerPinDout);
constexpr gpio_num_t kDisplayBacklightPin = GPIO_NUM_0;
constexpr gpio_num_t kDisplayMosiPin = GPIO_NUM_0;
constexpr gpio_num_t kDisplayClkPin = GPIO_NUM_0;
constexpr gpio_num_t kDisplayDcPin = GPIO_NUM_0;
constexpr gpio_num_t kDisplayRstPin = GPIO_NUM_0;
constexpr gpio_num_t kDisplayCsPin = GPIO_NUM_0;
constexpr auto kDisplaySpiMode = 0;
constexpr uint32_t kDisplayWidth = 240;
constexpr uint32_t kDisplayHeight = 240;
constexpr bool kDisplayMirrorX = false;
constexpr bool kDisplayMirrorY = false;
constexpr bool kDisplayInvertColor = true;
constexpr bool kDisplaySwapXY = false;
constexpr auto kDisplayRgbElementOrder = LCD_RGB_ELEMENT_ORDER_RGB;
std::unique_ptr g_display;
void InitDisplay() {
pinMode(kDisplayBacklightPin, OUTPUT);
analogWrite(kDisplayBacklightPin, 255);
spi_bus_config_t buscfg{
.mosi_io_num = kDisplayMosiPin,
.miso_io_num = GPIO_NUM_NC,
.sclk_io_num = kDisplayClkPin,
.quadwp_io_num = GPIO_NUM_NC,
.quadhd_io_num = GPIO_NUM_NC,
.max_transfer_sz = kDisplayWidth * kDisplayHeight * sizeof(uint16_t),
};
ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO));
esp_lcd_panel_io_handle_t panel_io = nullptr;
esp_lcd_panel_handle_t panel = nullptr;
// 液晶屏控制IO初始化
ESP_LOGD(TAG, "Install panel IO");
esp_lcd_panel_io_spi_config_t io_config = {};
io_config.cs_gpio_num = kDisplayCsPin;
io_config.dc_gpio_num = kDisplayDcPin;
io_config.spi_mode = kDisplaySpiMode;
io_config.pclk_hz = 40 * 1000 * 1000;
io_config.trans_queue_depth = 10;
io_config.lcd_cmd_bits = 8;
io_config.lcd_param_bits = 8;
ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io));
// 初始化液晶屏驱动芯片
ESP_LOGD(TAG, "Install LCD driver");
esp_lcd_panel_dev_config_t panel_config = {};
panel_config.reset_gpio_num = kDisplayRstPin;
panel_config.rgb_ele_order = kDisplayRgbElementOrder;
panel_config.bits_per_pixel = 16;
ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel));
esp_lcd_panel_reset(panel);
esp_lcd_panel_init(panel);
esp_lcd_panel_invert_color(panel, kDisplayInvertColor);
esp_lcd_panel_swap_xy(panel, kDisplaySwapXY);
esp_lcd_panel_mirror(panel, kDisplayMirrorX, kDisplayMirrorY);
g_display = std::make_unique(panel_io, panel, kDisplayWidth, kDisplayHeight, 0, 0, kDisplayMirrorX, kDisplayMirrorY, kDisplaySwapXY);
g_display->Start();
}
void setup() {
WiFi.useStaticBuffers(true);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
Serial.begin(115200);
auto& ai_vox_engine = ai_vox::Engine::GetInstance();
ai_vox_engine.SetObserver(g_observer);
ai_vox_engine.SetTrigger(kTriggerPin);
ai_vox_engine.Start(audio_input_device, audio_output_device);
InitDisplay();
}
void loop() {
}`