搜索
bottom↓
回复: 0

OMAPL138基于SYSLINK的双核通信LED实例

[复制链接]

出0入0汤圆

发表于 2014-7-15 17:00:32 | 显示全部楼层 |阅读模式
1、实例编译

本实例实现了利用MCSDK的SYSLINK组件在ARM端控制DSP端来操作开发板外设LED执行跑马灯程序。

编译此实例。



2、实例演示

       执行此实例双核通信需要4个文件,syslink.ko、slaveloader、server_dsp.xe674和app_host。

syslink.ko:/lib/modules/3.3.0/kernel/drivers/dsp/syslink.ko

slaveloader:开发板任意example的debug目录中,如/ex03_notify/debug/slaveloader。

以下为各个文件的作用:

syslink.ko:双核通信驱动。

slaveloader:用于ARM端启动DSP并加载.xe674格式的SYS/BIOS文件,例如server_dsp.xe674。

server_dsp.xe674:DSP端应用程序。在此实例中,增加的DSP端控制LED流水灯功能的代码镜像就是server_dsp.xe674。

app_host:ARM端应用程序。

       将以上编译出来的slaveloader、server_dsp.xe674、app_host和ex10_led中的run.sh拷贝到开发板同一个目录下,例如开发板的根目录:


进入开发板的Linux文件系统后,执行如下命令安装双核通信驱动:

Targert#      insmod /lib/modules/3.3.0/kernel/drivers/dsp/syslink.koTRACE=1 TRACEFAILURE=1

       然后执行“./run.sh”命令,观察发现LED会先闪烁两次,再依次点亮所有LED,接着依次熄灭所有LED。

Target#        ./run.sh

       使用“cat run.sh”命令可以查看到run.sh脚本中的内容是:

以下为脚本内容的解释:

./slaveloaderstartup DSP server_dsp.xe674:加载SYS/BIOS应用程序和启动DSP核。

./app_hostDSP:启动ARM端Linux应用程序。

./slaveloadershutdown DSP:关闭DSP核。



3、实例解析

3.1 实例程序结构解析

       在ex10_led目录中运行“tree -L 3”命令,可以看到实例程序目录的结构。

dsp:SYS/BIOS源代码。

host:ARM端Linux应用程序。

shared:ARM和DSP内存共享相关。

products.mak:makefile调用的配置文件,用于识别编译的头文件和库文件路径。



3.2 实例SYS/BIOS 应用程序解析

       dsp/main_dsp.c中创建了smain任务,smain任务会先执行Server_init()

       Server_init()在dsp/Server.c中定义,Server.c是最常修改的SYS/BIOS文件。此实例在Server.c中增加了LED控制函数led_init(),

       dsp/Server.c中的led_init()函数实现了LED对应的GPIO的基本配置。在初始化配置时让4个LED连续闪烁2次

       LED对应的GPIO相关寄存器定义如下图所示:



       SYS/BIOS的smain任务完成后会执行dsp/Server.c中的Server_create()函数。



       Server_create()函数在dsp/Server.c中定义



       Server_create()函数会注册notify事件。当ARM端notify事件注册时,DSP会触发Server_notifyCB函数,接着执行dsp/Server.c中的Server_exec()函数。

       Server_exec()函数在dsp/Server.c中定义,该函数轮询等待ARM端发来的命令,其中Server_waitForEvent()是一种信号量等待方式,当ARM端有命令传送过来时会解除等待,然后解析ARM端传入的命令。



       ARM传到DSP并解析出来的是num和event两个变量。APP_CMD_ON_PAYLOAD将在下一章节解释。

3.3 实例Linux 应用程序解析

       host/main_host.c功能和dsp/main_dsp.c类似,它初始化SYSLINK,然后执行host/App.c中的App_create()函数注册notify事件,等待DSP端创建notify事件后,接着执行host/App.c中App_exec()函数。ARM端在App_exec()函数中向DSP发送控制LED的命令。



       可以看出ARM端发送给DSP的命令有8个,分别是依次点亮4个LED,再依次熄灭4个LED。APP_CMD_ON_PAYLOAD和APP_CMD_OFF_PAYLOAD分别表示控制LED亮和灭,x分别为4个LED编号。控制状态和编号需要DSP端解析。所以APP_CMD_ON_PAYLOAD和APP_CMD_OFF_PAYLOAD是共享数据,其宏定义存放在shared/AppCommon.h中。



       APP_CMD_ON_PAYLOAD和APP_CMD_OFF_PAYLOAD宏是用户根据实际情况在shared/AppCommon.h中修改或者添加的,ARM端和DSP端都会使用到。



详细文档请查阅广州创龙的使用手册:

http://pan.baidu.com/s/1c0hCAg4?qq-pf-to=pcqq.c2c

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 18:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表