一、核间通信原理
1、双系统之间进行交互主要有以下三种方式:
ipcm:用于双系统之间数据传输、信令交互;
virt_tty:虚拟终端功能,用于在Linux端调试Liteos;
sharefs:共享文件系统。
2、这里我们主要使用的是IPCM,IPCM(内部处理器通信消息)是一种在多核处理器间利用共享内存进行通信的方法。它通过mmap()或ioremap()映射内存,实现信号数据交换。驱动层负责映射共享内存、状态保存及握手过程。连接建立时,会检查对端CPU状态,创建handle以确保稳定通信。此外,还包括内核线程、定时器、VFS接口以及资源管理和连接的握手建立与断开。
3、过程原理:
发送端:初始化->命令解析->发送命令->接收应答->去初始化
接收端:接收端事先通IpcmRegister()函数向IPCM注册一个回调函数,当收到对应事件ID的时候,就会执行回调函数callback()
4、打印调试:
cd/komod
virt_tty
由于硬件资源限制,设备只有一个debug串口在Linux端部署,因此在代码调试阶段无法使用这个debug口查看liteos端的打印信息。所以可以在Linux端使用虚拟串口功能来调试Liteos端。
在Linux端需要安装驱动hi_virt-tty.ko,并且在需要使用虚拟串口时候,使用指令virt-tty,然后就可以在终端上调试Liteos端的信息。