大小核通信
1 编译小核配置文件
1.1 搭建基础系统
使用IConfigTool工具选择主配置文件
勾选 cmd_mcu 命令
保存配置以后,进行编译烧录。
编译命令如下:
build$ make x2000_darwin_factory_defconfig
烧录请参考 烧录方法
1.2 配置小核的功能
选择小核的Config.in文件和小核的配置文件
注意:Config.in的路径为 libmcu/Config.in
x2000_test_defconfig路径为: libmcu/configs/x2000_test_defconfig
1.3 编译小核配置
# 切换到工程小核libmcu的编译目录
cd libmcu/
# 配置编译器路径
export PATH=../tools/toolchains/mips-gcc520-glibc222/bin/:$PATH
# 编译对应的配置文件
make x2000_test_defconfig
# 编译小核(生成libmcu-bare.bin小核镜像文件)
make
# 将libmcu-bare.bin镜像文件adb到开发板的/usr/data或者tmp/可写分区
adb push libmcu-bare.bin /usr/data
2 加载小核镜像
2.1 cmd_mcu命令介绍
cmd_mcu命令介绍
# 写小核镜像
cmd_mcu write_firmware /usr/data/libmcu-bare.bin
# 加载小核镜像
cmd_mcu bootup
# 复位小核
cmd_mcu reset
# 关闭小核
cmd_mcu shutdown
# 写字符串数据
cmd_mcu write_str test123456
# 写整型数据
cmd_mcu write_data 0x01 0x02 0x03 0x04
# 往指定内存写数据
cmd_mcu write_mem 0x400 0x01 0x02 0x03
# 读取字符串数据
cmd_mcu read_str 11
# 读取整整型数据
cmd_mcu read_data 4
2.2 加载小核
# 写入小核镜像
cmd_mcu write_firmware /usr/data/libmcu-bare.bin
# 加载小核镜像
cmd_mcu bootup
# 复位小核
cmd_mcu reset
3 大小核通讯测试
应用示例路径:libmcu/vendor/vendor.c
while (1) {
while (!is_data_comming);
is_data_comming = 0;
int len = 0;
char buf[100];
int ret;
int send_len;
/* 从大核读取数据 */
while (1) {
ret = host_cpu_read(buf+len, sizeof(buf)-len);
if (!ret)
break;
len += ret;
}
printf("len: %d : ", len);
int i;
for (i = 0; i < len; i++) {
printf("%c", buf[i]);
}
printf("\n");
send_len = len;
/* 向大核写入数据 */
while (len) {
while(mcu_test_host_busy());
while (len) {
int ret = host_cpu_write(buf, len);
len -= ret;
if (!ret)
break;
}
/* 通知写入数据的长度 */
mcu_notify_host(send_len);
}
}
3.1 大核向小核写入数据
大核通过libhardware2的cmd_mcu write命令可以向小核写数据,小核通过host_cpu_read函数进行读取大核写的数据。
3.2 大核从小核读取数据
大核通过libhardware2的cmd_mcu read命令可以从小核读取数据,小核通过host_cpu_write函数向大核进行写数据。