Page 1 of 1

【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 17:02
by Daan

您好,现在遇到了个问题。
我再自定义.c文件里面定义了一个全局变量,然后我在main.c和xiaozhi.c分别读这个全局变量,但是读出来打印会一样的。
所以请问这个代码架构是怎么样的,是不是UI下面.c比如xiaozhi.c和主程序是数据隔离的?
如图:
不是很理解这个架构,能否详细说一下?


Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 17:02
by Daan

还有就是如果隔离,编译器应该提示报错呀~


Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 17:24
by 愚者千虑必有一得

目前T5的硬件架构是:
三核:cp0(单独固件,跑tuyaos)、cp1(单独固件,跑语音相关算法、lvgl),cp2暂时没用。目前cp0和cp1的固件是分别编译,独立运行的。编译、链接过程中没问题,但是运行过程中的需要自己通过核间通信做同步。

这个架构正在做改造,未来:
三核:cp0(固定固件,无需开发,跑wifi、ble等),cp1+cp2 SMP(一个固件),目前已经在内部测试验证中。


Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 18:02
by Daan

好的,感谢。现在toy的demo中,只有cp1到cp1的IPC通信函数。能否给我一个CP1到CP0的的通信函数(就是ui反馈到dp上报)的示例?


Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 18:06
by 愚者千虑必有一得

以eyes屏幕刷新为例:
cp0发:OPERATE_RET tuya_ai_display_msg(char *msg, int len, TY_DISPLAY_TYPE_E display_tp);
cp1收:void tuya_eyes_app(TY_DISPLAY_MSG_T *msg)

其他带屏幕的示例中也有个tuya_xx_app


Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 18:09
by Daan

不好意思打错了。 是CP1发,CP0收的函数。


Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 18:19
by 愚者千虑必有一得

cp1发,cp0收,你可以参考audio_dump.c的代码,cp1上串口收到命令,发生给cp0来播放指定音频,TKL_IPC_TYPE_AUDIO_TEST是IPC类型,如果你要新增,你可以参考这个来加:

Code: Select all

// send audio test event to cpu0
extern TKL_IPC_HANDLE __ipc_handle[2];
void _audio_test_event(uint32_t event, uint32_t type, uint32_t freq)
{
    struct ipc_msg_s send_msg = {0}; 
    send_msg.type   = TKL_IPC_TYPE_AUDIO_TEST;
    send_msg.buf32[0] = event; 
    send_msg.buf32[1] = type;
    send_msg.buf32[2] = freq;

tkl_ipc_send(__ipc_handle[0], (UINT8_T *)&send_msg, sizeof(send_msg));
return;
}

Re: 【求助】关于T5代码架构和全局变量定义的问题的

Posted: 2025年 Jul 8日 18:19
by Daan

好的 十分感谢~