[i=s] 本帖最后由 江文卓 于 2026-3-11 11:47 编辑 [/i]
问题描述
我使用make编译了基于Ubuntu 20.04 的 Linux 子系统环境下安信可科技 WB2系列(基于BL602芯片): aipi-palchatv1 源码,烧录自己生成的散装固件后,模组完全没反应(不说话、LED 不亮)。但当我把 main.c 中与点灯无关的代码全部注释掉,只保留最基本的 GPIO 初始化和 LED 任务时,LED 能正常闪烁,证明编译和烧录本身是成功的。
源代码我是按照这个命令执行下载的 git clone https://gitee.com/Ai-Thinker-Open/aipi-palchatv1.git
注意:烧录了完整镜像固件AiPi-PalChatV1uart-mcpWWXHv3.020260106.bin后模组可以正常说话,我没有改过的源代码烧录后模组也没反应____,简单说就是就是烧录下载的官方固件无论是FW1.9 2.8 3.0都有语音,烧录克隆的工程没反应,烧录克隆的工程不但没声音,在原基础上加了点灯代码也不亮,程序可能哪里是卡住了
关键代码(简化版,能亮灯):
void led_task(void *pvParameters) {
bl_gpio_enable_output(SPK_GPIO_LED,0,0);
uint8_t led_status = 0;
while(1) {
bl_gpio_output_set(SPK_GPIO_LED, led_status);
led_status = !led_status;
vTaskDelay(300);
}
}
void main() {
bl_sys_init();
bl_gpio_enable_output(SPK_GPIO_LED,0,0);
xTaskCreate(led_task, "led_task", 1024, NULL, 15, NULL);
// 没有其他初始化,LED 正常闪烁
}
源工程代码main.c部分+点灯代码:
void led_task(void *pvParameters)
{
bl_gpio_enable_output(SPK_GPIO_LED,0,0);
uint8_t led_status = 0;
while (1)
{
bl_gpio_output_set(SPK_GPIO_LED, led_status);
printf("[%s()-%d]led_status:%d\r\n", __func__, __LINE__, led_status);
led_status = !led_status;
vTaskDelay(300);
}
}
void main()
{
bl_sys_init();
// printf("************************fw_version:%s*********************************\r\n",fw_version);
// printf("************************compile time:%s %s*********************************\r\n",__DATE__,__TIME__);
easyflash_init();
ef_get_u8(_printf_key, &printf_enble);
ef_get_u32(uart_baudrate_key, &uart_baudrate);
ef_get_u8(config_led_key, &config_led);
if (uart_baudrate != 0)
{
bl_uart_setbaud(0, uart_baudrate);
}
else
{
// bl_uart_init(0, 12, 11, 0, 0, 115200);
bl_uart_setbaud(0, 115200);
}
activeInfo.server = WEB_SERVER;
activeInfo.portStr = WEB_PORT;
activeInfo.url = DEFAULT_WS_URL;
activeInfo.ws_url = WEB_URL;
xiaozhi_init(&activeInfo);
print_boot_info();
extern int xiaozhi_bl602_cli_init(void);
xiaozhi_bl602_cli_init();
extern int customize_at_cli_init(void);
customize_at_cli_init();
get_xiaozhi_info();
// 客制化ota配置,需要根据实际情况修改,如果不设置则使用安信可默认配置
// wifi_g_customize_ota_cfg=malloc(sizeof(customize_ota_cfg_t));
// wifi_g_customize_ota_cfg->host="aithinker.oss-cn-beijing.aliyuncs.com";
// wifi_g_customize_ota_cfg->port=80;
// wifi_g_customize_ota_cfg->resource="/wifi_ota.bin";
// vb6824_g_customize_ota_cfg=malloc(sizeof(customize_ota_cfg_t));
// vb6824_g_customize_ota_cfg->host="aithinker.oss-cn-beijing.aliyuncs.com";
// vb6824_g_customize_ota_cfg->port=80;
// vb6824_g_customize_ota_cfg->resource="/vb6824_ota.bin";
bl_gpio_enable_output(SPK_GPIO_LED,0,0);
xTaskCreate(uart_ota_task, (char *)"uart_ota_task", 1024, vb6824_g_customize_ota_cfg, 15, &vb6824_module_ota_task_handle);
xTaskCreate(proc_main_entry, (char *)"main_entry", 1024 * 2 + 512, NULL, 15, NULL);
xTaskCreate(http_ota_task, (char *)"http_ota_task", 1024, wifi_g_customize_ota_cfg, 15, &wifi_module_ota_task_handle);
xTaskCreate(led_task, (char *)"led_task", 1024, NULL, 15, NULL);
// xTaskCreate(free_heap_size_task, (char *)"free_heap_size_task", 256, &fw_version, 3, NULL);
puts("[OS] Starting TCP/IP Stack...\r\n");
tcpip_init(NULL, NULL);
// free(wifi_g_customize_ota_cfg);
// free(vb6824_g_customize_ota_cfg);
key_scan();
}