




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
dsp+arm+fpga三核主板方案领导者目录1实例编译22实例演示33实例解析63.1实例程序结构解析63.2实例sys/bios应用程序解析73.3实例linux应用程序解析131 实例编译光盘中demo/syslink/ex10_led实例实现了利用mcsdk的syslink组件在arm端控制dsp端来操作开发板外设led执行跑马灯程序。本实例是基于ex03_notify增加dsp控制led功能。先按照广州创龙omapl138开发板的用户手册基于omapl138的多核软件开发组件-mcsdk开发教程.pdf安装mcsdk,配置、编译和安装syslink。然后将ex10_led文件夹拷贝到虚拟机/home/tl/ti/syslink_2_21_01_05/examples目录下(该路径不可随意放置,否者无法包含到syslink里面的头文件),然后进入ex10_led目录,如下图所示:图1执行“sudo make clean”清除编译生成文件,执行“sudo make”命令重新编译该例程,如下图所示:图2图3在该目录的dsp/bin/debug/目录下生成.xe674格式文件server_dsp.xe674,如下图所示:图4在该目录的host/bin/debug/目录下生成linux端可执行程序app_host,如下图所示:图52 实例演示执行此实例双核通信需要4个文件,syslink.ko、slaveloader、server_dsp.xe674和app_host。按照基于omapl138的多核软件开发组件-mcsdk开发教程.pdf教程完成syslink编译和安装后,syslink.ko和slaveloader将位于开发板文件系统如下位置:syslink.ko:/lib/modules/3.3.0/kernel/drivers/dsp/syslink.koslaveloader:开发板任意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拷贝到开发板同一个目录下,例如开发板的根目录:图6进入开发板的linux文件系统后,执行如下命令安装双核通信驱动:targert#insmod /lib/modules/3.3.0/kernel/drivers/dsp/syslink.ko trace=1 tracefailure=1图7然后执行“./run.sh”命令,观察发现led会先闪烁两次,再依次点亮所有led,接着依次熄灭所有led。target#./run.sh图8使用“cat run.sh”命令可以查看到run.sh脚本中的内容是:图9以下为脚本内容的解释:./slaveloader startup dsp server_dsp.xe674:加载sys/bios应用程序和启动dsp核。./app_host dsp:启动arm端linux应用程序。./slaveloader shutdown dsp:关闭dsp核。3 实例解析3.1 实例程序结构解析在ex10_led目录中运行“tree -l 3”命令,可以看到实例程序目录的结构如下图所示:图10dsp:sys/bios源代码。host:arm端linux应用程序。shared:arm和dsp内存共享相关。products.mak:makefile调用的配置文件,用于识别编译的头文件和库文件路径。3.2 实例sys/bios应用程序解析dsp/main_dsp.c中创建了smain任务,smain任务会先执行server_init(),如下图所示:图11server_init()在dsp/server.c中定义,server.c是最常修改的sys/bios文件。此实例在server.c中增加了led控制函数led_init(),如下图所示:图12dsp/server.c中的led_init()函数实现了led对应的gpio的基本配置。在初始化配置时让4个led连续闪烁2次,如下图所示:图13led对应的gpio相关寄存器定义如下图所示:图14sys/bios的smain任务完成后会执行dsp/server.c中的server_create()函数。如下图所示:图15server_create()函数在dsp/server.c中定义,代码如下图所示:图16server_create()函数会注册notify事件。当arm端notify事件注册时,dsp会触发server_notifycb函数,接着执行dsp/server.c中的server_exec()函数。如下图所示: 图17server_exec()函数在dsp/server.c中定义,该函数轮询等待arm端发来的命令,其中server_waitforevent()是一种信号量等待方式,当arm端有命令传送过来时会解除等待,然后解析arm端传入的命令,解析命令代码如下图所示:图18从上图可以看出,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的命令,代码如下:图19可以看出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_pay
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论