am5728 ipc开发总结

一. 概述

        1. 什么是IPC : ti ipc全称为 Inter-Processor Communication,即核间通信,与 linux 中的概念不同,ti 的ipc是用在不同 cpu间通信的软件包;而linux ipc指的是进程间通信。

        2. ipc启动过程:AM5728 有两个Cortex A15,两个C66x DSP和两个ARM M4核。 A15通常运行HLOS,例如Linux / QNX / Android,DSP和M4运行RTOS。 在启动过程中,U-Boot 启动系统内核加载A15。A15来启动DSP和M4内核;启动过程如下

        3. ipc软件框架:在linux内核启动DSP/M4时,需要两个关键驱动程序:remoteproc和 rpmsg,如下图所示, remoteproc 用来找到具体的cpu从核,rpmsg用来建立核间通信

二. 编译 ti ipc examples 和 执行examples的方法(主要介绍 linux端编译方法:)

        1. 在 linux SDK目录中 Rules.make 中添加如下

                export TI_RTOS_PATH=<RTOS_SDK_INSTALL_DIR> export IPC_INSTALL_PATH=<RTOS_SDK_IPC_DIR>

        2. 在 linux SDK顶层目录执行 make ti-ipc-linux 和 make ti-ipc-linux-examples

                在 processor_sdk_rtos_xx 目录 执行 source ./setupenv.sh 和 make ipc_bios

        3. 编译出的可执行程序目录:

                arm端: ipc_xx/examples/<device>/ex_xx/host/bin/debug/app_host

                dsp端:ipc_xx/examples/<device>/ex_xx/dspx/bin/debug/xx.xe66

                ipu端(M4):ipc_xx/examples/<device>/ex_xx/ipux/bin/debug/xx.xem4

        4. 将编译出的可执行程序拷贝到 5728的根文件系统中,dsp端的可执行程序,会链接到

/lib/firmware 目录下,名称为 dra7-dsp1-fw.xe66 dra7-dsp2-fw.xe66。(ipu同理)

        5. 将dsp的链接文件删除,重新链接。此处以 dsp1为例

                rm /lib/firmware/dra7-dsp1-fw.xe66

                ln -s /home/root/server_dsp1.xe66 /lib/firmware/dra7-dsp1-fw.xe66

        6. 重新绑定dsp,来执行ipc demo

                cd /sys/bus/platform/drivers/omap-rproc/

                echo 40800000.dsp > unbind

                echo 40800000.dsp > bind

                成功启动的打印信息如下:

 

注:1. 编译时,linux 和 RTOS 的SDK版本号一定要对应,不然编译会出现稀奇古怪的错误

        2. 查看dsp程序打印的方法:cat /sys/kernel/debug/remoteproc/remoteproc1/trace0

        3. 增加linux 端打印的方法:export IPC_DEBUG=x (x代表打印等级,可为0,1,2)

三. ipc 底层移植方法

        1. 编译linux内核和uboot。其中有两个关键的驱动程序需要选中,且编译成模块(M)

        2. 使用buildroot构建根文件系统。

        2. 安装内核和uboot。

                sudo make linux_install

                sudo make u-boot_install

        3. 进入ipc_xx目录,安装ipc库。

                make install prefix=<target filesystem>/usr

        4. 将ipc 可执行程序拷贝到根文件系统。

                a. 将app_host 和 server_dsp1.xe66拷贝到文件系统

                b. 在/lib目录下,创建文件夹 mkdir firmware

                c. 链接 dsp程序。ln -s /home/server_dsp1.xe66 /lib/firmware/dra7-dsp1-fw.xe66

        5. 执行ipc守护进程 lad_dra7xx。在目录 /usr/bin/lad_dra7xx

注:1. 在安装uboot时,尽量不要复制粘贴uboot 来替换,会导致uboot起不来

        2. 构建文件系统时,有个 dl 离线包,在 make xxx_defconfig 完成后,将自己的离线包替换生成的离线包,避免再次下载

        3. lad_dra7xx,为ipc执行时的守护进程。如果不执行此程序,ipc就无法执行。

关于lad细节,可以参照 IPC_Install_Guide 和 http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_IPC.html?highlight=lad

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值