基于OMAPL138+FPGA核心板多核软件开发组件MCSDK开发入门(上)
本文测试板卡为创龙科技 SOM-TL138F 是一款基于 TI OMAP-L138(定点/浮点 DSP C674x + ARM9)+ 紫光同创 Logos/Xilinx Spartan-6 低功耗 FPGA 处理器设计的工业级核心板。核心板内部OMAP-L138 与 Logos/Spartan-6 通过 uPP、EMIFA、I2C 通信总线连接,并通过工业级 B2B连接器引出网口、EMIFA、SATA、USB、LCD 等接口。
核心板经过专业的 PCB Layout 和高低温测试验证,稳定可靠,可满足各种工业应用环境。用户使用核心板进行二次开发时,仅需专注上层运用,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研
MCSDK介绍
德州仪器(TI)2013年11月推出基于低功耗OMAP-L138 DSP + ARM9处理器的多核软件开发组件——MCSDK(Multicore Software Development Kits),帮助开发人员缩短开发时间,实现针对TI TMS320C6000高性能数字信号处理器(DSP)的扩展。为工业、通信、电信以及医疗市场开发各种应用的客户现在无需转移其它软件平台,便可升级至高性能器件。
TI MCSDK提供高度优化的特定平台基础驱动器捆绑包,可实现基于TI器件的开发。此外,MCSDK还可为实现便捷编程提供定义明确的应用编程接口,支持未来向更高性能的TI多核平台的移植,因此开发人员无需从头设计通用层。MCSDK不仅可帮助开发人员评估特定器件开发平台的软硬件功能,而且还可帮助他们快速开发多核应用。此外,它还有助于应用在统一平台上使用SYS/BIOS或Linux。MCSDK的各内核通常还可指定运行Linux应用,作为控制平台,而其它内核则可同时分配高性能信号处理工作。借助这种异构配置的高灵活性,软件开发人员可在TI多核处理器上实施全面解决方案。在TI OMAP-L138应用实例中,内部ARM9处理器可分配嵌入式Linux等高级操作系统执行复杂的IO协议栈处理,而TMS320C674x DSP则可运行TI RTOS(上述SYS/BIOS)实时处理任务。
TI DSP业务经理Ramesh Kumar指出:“能为OMAP-L138处理器提供MCSDK我们深感振奋。新老客户都将受益,包括在整个TI C6000 DSP中可使用相同的软件、支持编程高效率、加速产品上市进程以及更高的投资回报等。”
有了MCSDK,开发人员可获得各种优化型DSP库,包括数学库、数字信号处理库、影像视频处理库、电信库以及语音视频编解码器等,并可从中获益。此外,TI OMAP-L138处理器还具有应用优化型特性与外设的独特组合,包括以太网、USB、SATA、视频端口接口(VPIF)以及uPP等。
MCSDK软件安装
先按照软件安装文档安装Linux版本CCS,搭建好TFTP、NFS开发环境。然后在产品资料"Tools\Linux\"目录中找到"
mcsdk_1_01_00_02_setuplinux.bin"安装文件,先将其拷贝至共享目录,然后安装MCSDK。
Host# cp /mnt/hgfs/shareVM/mcsdk_1_01_00_02_setuplinux.bin /home/tl/ti/
Host# cd /home/tl/ti
Host# ./mcsdk_1_01_00_02_setuplinux.bin
图 1
弹出如下界面,点击Next。
图 2
弹出如下界面,点击Next。
图 3
安装路经选择默认,即"/home/tl/ti",确保此路径为CCS的安装路径,如不同,请修改为一致,然后点击Next。
图 4
弹出如下界面,点击Next。
图 5
弹出如下界面,开始安装MCSDK。
图 6
等待如下界面出现,点击Finish完成安装。
图 7
设置MCSDK开发环境参数
执行如下命令,设置CCS权限。
Host# sudo chmod -R 777 /home/tl/ti/ccsv5
图 8
进入mcsdk_1_01_00_02安装目录下,启动MCSDK设置脚本。请务必保证虚拟机网络畅通,根据不同主机设置,进行TFTP、NFS、U-Boot等配置。由于我司已单独提供U-Boot、内核、文件系统,不使用MCSDK的U-Boot、内核、文件系统,因此如下三者的相关设置可以忽视。
Host# cd /home/tl/ti/mcsdk_1_01_00_02/
Host# sudo ./setup.sh
图 9
按Enter键将MCSDK的文件系统安装至默认路经,出现如下界面:
图 10
按Enter键,出现如下界面:
图 11
按Enter键将MCSDK的Linux内核镜像安装至默认路径,出现如下界面:
图 12
按Enter键设置可以进行NFS访问,出现如下界面:
图 13
按Enter键设置TFTP服务器下载目录为默认路径(/tftpboot),出现如下界面:
图 14
按Enter键,出现如下界面:
图 15
按Enter键设置串口为默认设置,出现如下界面:
图 16
按Enter键设置默认的U-Boot、TFTP网络变量,出现如下界面:
图 17
按Enter键变量中设置为默认的NFS启动方式,出现如下界面:
图 18
按Enter键设置为默认的NFS文件系统启动方式,出现如下界面:
图 19
按Enter键设置启动时TFTP下载的为默认内核镜像,出现如下界面:
图 20
输入:n,然后按Enter键,出现如下界面:
图 21
输入:Y,然后按Enter键,出现如下界面:
图 22
最后看到"TISDK setup completed!",说明设置已经完成。
备注:如果期间提示,需要安装缺失的组件,根据提示,按"y"安装即可。
syslink配置、编译、安装
安装MCSDK时,会自动将syslink安装在相同的目录下,下文将介绍syslink配置、编译和示例演示。在开始syslink编译之前,请确保以下几点:
- 已安装arm-none-linux- gnueabi-gcc-4.3.3交叉编译工具链。
- 内核源码已正确编译。
- 文件系统源码正确解压在Ubuntu虚拟机。
配置syslink
进入"
/home/tl/ti/syslink_2_21_01_05",打开配置文件products.mak。
Host# cd /home/tl/ti/syslink_2_21_01_05
Host# gedit products.mak
图 23
修改如下地方:
备注:由于配置容易出错,已将配置文件products.mak放在产品资料Shell目录下,可以将此文件覆盖"
/home/tl/ti/syslink_2_21_01_05/products.mak",然后再根据实际情况修改即可。
- DEVICE = _your_device_
改为 DEVICE = OMAPL1XX //表示编译OMAPL138
图 24
- SDK = _your_sdk_
改为 SDK = NONE //SDK类型为NONE
图25
- EXEC_DIR = _your_filesys_
改为 EXEC_DIR =
/home/tl/omapl138/demo-rootfs //syslink驱动和演示程序安装路径,一般设置为NFS或者SD卡的文件系统
图26
- DEPOT = _your_depot_folder_
改为 DEPOT = /home/tl/ti //MCSDK的安装路径
图 27
编译syslink源码
编译syslink之前,先将以下两个宏定义添加至syslink中的Omapl1xxIpcInt.c、omapl1xx_phy_shmem.c、omapl1xxpwr.c文件开头,否则编译会出错。
#undef __ASM_ARCH_HARDWARE_H
#include <mach/hardware.h>
- 修改Omapl1xxIpcInt.c
执行以下命令修改:
Host# cd /home/tl/ti/syslink_2_21_01_05/packages/ti/syslink
Host# gedit ipc/hlos/knl/notifyDrivers/arch/omapl1xx/Omapl1xxIpcInt.c
图 29
图 30
添加内容后,保存退出。
- 修改omapl1xx_phy_shmem.c
在当前路径下,执行以下命令:
Host# gedit family/hlos/knl/omapl1xx/omapl1xxdsp/Linux/omapl1xx_phy_shmem.c
图 31
图 32
添加内容后,保存退出。
- 修改omapl1xxpwr.c
在当前路径下,执行以下命令:
Host# gedit family/hlos/knl/omapl1xx/omapl1xxdsp/omapl1xxpwr.c
图 33
图 34
添加内容后,保存退出。
执行以下命令编译syslink:
Host# cd /home/tl/ti/syslink_2_21_01_05
Host# sudo make syslink
图 35
编译成功如下图所示:
图 36
编译syslink示例程序
在当前目录,执行以下命令:
Host# sudo make samples
图 37
编译成功如下图所示:
图 38
至此,整个syslink编译完成。
syslink示例程序演示
安装syslink驱动和示例程序至文件系统
在syslink源码目录下,执行以下命令将syslink驱动和示例程序安装至文件系统:
Host# sudo make install
图 39
安装成功如下图所示:
图 40
执行以下命令查看是否已经安装syslink驱动和示例程序。
Host# cd /home/tl/omapl138/demo-rootfs/
Host# ls
Host# ls lib/modules/3.3.0/kernel/drivers/dsp/
图 41
可以看到在文件系统"
lib/modules/3.3.0/kernel/drivers/dsp/"目录下有syslink驱动程序syslink.ko文件,以及文件系统根目录下有"ex**_##"的示例程序。
运行syslink示例程序
我司提供的U-Boot会根据当前CPU型号和内存大小自动产生推荐的内存分配参数,并将此参数赋值给mem_args变量,U-Boot默认使用mem_args变量值启动系统,下表为部分举例:
表 1
CPU型号 |
内存大小 |
mem_args变量值 |
备注 |
OMAP-L138 |
128MByte |
mem=32M@0xc0000000 mem=64M@0xc4000000 |
DSP使用32MByte; ARM使用96MByte; |
OMAP-L138 |
256Myte |
mem=32M@0xc0000000 mem=192M@0xc4000000 |
DSP使用32MByte; ARM使用224MByte; |
将syslink的示例程序demo-rootfs文件夹拷贝至评估板中,启动评估板,进入文件系统的"
demo-rootfs/lib/modules/3.3.0/kernel/drivers/dsp/"路径下,执行命令安装syslink驱动:
Target# modprobe syslink
图 42
进入demo-rootfs目录,运行syslink示例程序。
Target# cd /home/root/demo-rootfs/
Target# ./runall.sh
成功运行如下图所示:
图 43
图 44
syslink示例程序解析
每个示例目录中有readme.txt和run.sh文件说明如何使用示例,而在评估板中运行runall.sh是运行了所有的syslink示例程。
Slaveloader
在OMAPL138的ARM Linux操作系统中,syslink提供了slaveloader组件去加载、启动、停止DSP处理器,实现了对DSP核的管理。同时也是使用slaveloader组件去运行syslink示例程序。
运行"slaveloader"组件有四个参数:
参数1:startup|shutdown|all|powerup|load|start|stop|unload|powerdown|list
参数2:Core name //远程处理器名称,一般是DSP
参数3:File path //可执行文件路径,当参数2为"startup/load/all"时必填
参数4:map-file //map文件,当远程处理器MMU功能开启时必填
运行命令格式如下图所示:
图 45
可以通过各个syslink示例目录下的run.sh脚本查看使用slaveloader运行示例程序的具体方法。下图是各个示例的功能简介:
图 46
备注:在单独运行各个示例程序前,务必先安装syslink驱动,安装命令:
Target# insmod /lib/modules/3.3.0/kernel/drivers/dsp/syslink.ko TRACE=1 TRACEFAILURE=1
ex01_helloworld
示例名字:helloworld
功能说明:GPP(ARM)端注册一个来自DSP端的简单一次性通知事件。
参考英文资料:
图 47
运行命令:
Target# cd demo-rootfs/ex01_helloworld/debug/
Target# ls
Target# ./run.sh
成功运行提示如下图:
图 48
基于OMAPL138+FPGA核心板多核软件开发组件MCSDK开发入门(上)的更多相关文章
- 【iCore3应用】基于iCore3双核心板的编码器应用实例
简介 本硬件电路方案是针对集电极开路输出的编码器设计的.隔离前电压为5V,同时5V也是编码器的驱动电压,由外部供电:隔离后电压为3.3V,由核心板提供.隔离芯片采用3通道ADUM1300隔离芯片.因为 ...
- 基于CC1606 FPGA评估板移植iCamera程序小结
iCamera作为柴草电子经典的摄像头开发工具,其强大的摄像头调试功能,深受广大网友喜爱,支持市面上各种摄像头. 目前现有的应用板卡支持:CC1601(CP601A). CC1602(CP601B) ...
- arm + fpga 核心板
- .NET6: 开发基于WPF的摩登三维工业软件 (7)
做为一个摩登的工业软件,提供可编程的脚本能力是必不可少的能力.脚本既可以方便用户进行二次开发,也对方便对程序进行自动化测试.本文将结合AnyCAD对Python脚本支持的能力和WPF快速开发带脚本编辑 ...
- iOS组件化开发· 什么是组件化
越来越多公司,开始了组件化,你还要等到什么时候...... 说到开发模式,我们最熟知的开发模式 MVC 或者最近比较热门的MVVM.但是我今天说的组件化的开发,其实MVC不是一类的.它其实是····· ...
- 基于xilinx Zynq UltraScale MPSoC平台的核心板及开发板介绍-米尔科技
近日,米尔科技推出国内首款基于xilinx Zynq UltraScale+MPSoC 平台的核心板及开发板.其优势主要有:采用16纳米制程,相比Znyq7000系列每瓦性能提升5倍,且单芯片融合4核 ...
- STM32 USB开发(三) 基于F105RBT6核心板开发的自定义HID收发(FS)
硬件设计 该核心板的USB插口有两个,一个是用于USB Slave的,可以用来做HID设备,把模拟STM32模拟为U盘等:另一个是USB Host设备,可以对插上的U盘的数据进行读写. 图中J2是Mi ...
- 高性能嵌入式核心板新标杆!米尔推出基于NXP i.MX8M处理器的MYC-JX8MX核心板
随着嵌入式及物联网技术的飞速发展,高性能计算的嵌入式板卡已经成为智能产品的基础硬件平台.为响应行业应用和满足客户需求,米尔电子推出基于NXP公司i.MX8M系列芯片的开发平台MYD-JX8MX系列开发 ...
- 202-基于TI DSP TMS320C6678、Xilinx K7 FPGA XC72K325T的高速数据处理核心板
基于TI DSP TMS320C6678.Xilinx K7 FPGA XC72K325T的高速数据处理核心板 一.板卡概述 该DSP+FPGA高速信号采集处理板由我公司自主研发,包含一片TI DSP ...
- 说说硬件中核心板的作用和优缺点,基于i.MX8M Mini核心处理器平台
核心板,顾名思义,即硬件构成中关键的器件和电路打包封装的一块电子主板,具有布线复杂.多层.高频信号干扰.器件密度高等特性,大多数核心板集成了处理器.内存.存储器.电源管理和引脚,通过引脚与配套基板连接 ...
随机推荐
- 钉消息Markdown语法
支持的Markdown语法 1 标题 2 # 一级标题 3 ## 二级标题 4 ### 三级标题 5 #### 四级标题 6 ##### 五级标题 7 ###### 六级标题 8 9 引用 10 &g ...
- 6、Samba 文件共享服务
1.Samba 服务基础 SMB(Server Message Block),服务消息块 CIFS(Common Internet File System),通用互联网文件系统 Samba 项目:ht ...
- NumPy 数组切片及数据类型介绍
NumPy 数组切片 NumPy 数组切片用于从数组中提取子集.它类似于 Python 中的列表切片,但支持多维数组. 一维数组切片 要从一维数组中提取子集,可以使用方括号 [] 并指定切片.切片由起 ...
- Splashtop调查显示:居家办公生产效率更高
抱歉,本文又是个吃瓜新闻.不得不发,你懂得~ 端午节要到了,应该请大家赛龙舟,吃粽子来着. 研究表明,即使文字顺序打乱,读者都还是能毫无障碍地读懂一篇文章.或许,大家只是一目十行的看一下主要关键词就可 ...
- pageoffice 5.x升级到pageoffice 6.x的关键步骤
Vue+Springboot前后端分离项目 将后端Springboot项目中pom.xml文件中对于pageoffice的jar引用升级成6.0版本,以maven中央仓库(https://mvnrep ...
- grpc使用nginx代理配置
参考:https://www.nginx.com/blog/nginx-1-13-10-grpc/ 重点是标记红色的部分 http { log_format main '$remote_addr - ...
- PStorm 安装与破解
官方下载地址: https://www.jetbrains.com/zh-cn/phpstorm/promo/?utm_source=baidu&utm_medium=cpc&utm_ ...
- IDEA使用——常用配置
一. 设置鼠标悬停代码提示 二. 设置Ctrl+滚乱调整字体大小 三. 设置自动导包(不设置自动导包,我们也可以通过Alt+Enter进行手动导包) 四. 设置显示行号和方法间分隔符 五. 设置代码提 ...
- Android 12(S) ALooper AHandler AMessage(一)
卧榻之侧岂容他人酣睡,到现在ALooper AHandler AMessage的工作原理一直都没搞懂,很慌!看他们的路径都在libstagefright/foundation下,作为一个foundat ...
- github加速与添加ssh密钥
part1-github加速 此处推荐Fetch GitHub Hosts,文章的中间位置有手动添加dns的内容,十分完备,此处不赘述.不知道是不是我家网络抽风,总是得代理才能进githubQAQ难受 ...