DSP+ARM多核异构开发环境SYSLINK搭建OMAPL138
DSP+ARM多核异构开发环境搭建OMAPL138
注意: 环境为Ubuntu 12.04 只能是这个环境。我甚至在Ubuntu16.04上面安装了VMware,然后,在装了一个Ubuntu 12.04 x86版本。
导语与感想
OMAPL138属于多核异构平台(DSP+ARM),多核通信是多核异构平台的精髓部分,目前市面上流行的还有ZYNQ平台(FPGA+ARM),同样通信机理复杂。德州仪器OMAPL138和Davinci使用一样的多核通信机理。
这个机制相当复杂,又要懂Linux,又要会调试DSP,又要熟练掌握ARM的嵌入式Linux,又要抓住多核通信机制,实在让人抓狂。DSP端使用CCS,用JTAG口进行仿真,ARM端使用终端GDB命令进行动态调试配合调试输出完成多核通信的开发。
好吧,步入正题了,准备好以下的素材(不要被吓到)
一定要对于文件、编译器有个很好的管理,杜绝东一块西一块,左一个文件,又一个文件,否则到时候自己蒙了。本人习惯在自己用户的文件夹创建opt文件夹(用于安装非root权限运行的软件),script文件夹(用于处理一些脚本文件)、work(待交叉编译的源代码文件)、setup(安装、压缩包文件)、workspace(编程工程文件路径)、lib(第三方库文件夹)
搭建前准备素材
- CGT_组件:ti_cgt_c6000_7.3.0.tar.gz
- 多核通信组件:mcsdk_1_01_00_02_setuplinux.bin
- C6000的Starterware库:OMAPL138_StarterWare_1_10_04_01-Linux-x86-Install
- Qt图形界面库:qwt-6.1.0.tar.bz2
- DSP BIOS组件:bios_5_41_10_36.tar.gz
- dsplink组件:dsplink_linux_1_65_00_03.tar.gz
- Qt源文件:qt-everywhere-opensource-src-4.8.3.tar.gz
- DSP编译工具链:xdctools_3_22_01_21.tar.gz
- CCS的Linux版本:ccs 5.5 for Linux
- 内核源文件:linux-3.3.tar.bz2
- arm-linux交叉编译工具链:arm-2009q1-161-arm-none-eabi.bin
以上这些文件,全部存在~/setup文件下
环境前提
- Ubuntu版本为12.04,(不要尝试新版,OMAPL停更了,组件最新支持到ubuntu12.04)
- 配置好交叉编译环境
- Linux3.3内核编译正确
- Qte编译正确
- CCS的Linux版本安装好
编译Linux3.3内核
参考我的博客:(基于OMAPL:Linux3.3内核的编译)[https://www.cnblogs.com/sigma0/p/9149041.html]
编译正确Qt
Qt版本使用的是Qt4,Qt5还没有实验,等着实验完Qt5会过来更新。
参考我的博客:(Linux编译Qt4的环境_OMAPL138
)[https://www.cnblogs.com/sigma0/p/8168313.html]
最后我之前设定的Qt make install的路径室/opt/qt-arm-4.8.3 (后面会用到)
编译QWT组件
qwt 全称是"Qt Widgets for Technical Applications",是一个基于 LGPL 版权协议的开源
项目,可生成各种统计图。QWT的编译需要基于上一章节编译QT,编译出的qmake编译器
解压qwt
准备qwt-6.1.0.tar.bz2文件,解压到~/work路径下:
tar -xvf qwt-6.1.0.tar.bz2 -C ~/work
配置QWT编译环境(使用创龙公司)
需要修改两个地方:
- 在"qwt-6.1.0/qwtconfig.pri"文件第 100 行 QwtOpenGL 和 119 行 QwtDesigner 前面增加。符号"#",表示注释掉此两行,因为此例程没有使用 QwtOpenGL 和 QwtDesigner。如下图所示:
- 修改 QWT_INSTALL_PREFIX 最后QWT输出路径。


在 qwt 目录下执行以下命令产生 Makefile 编译文件:
/opt/qt-arm-4.8.3/bin/qmake
ls 如果有Makefile文件则表示配置成功。
编译QWT和安装
在 qwt 根目录下执行以下命令编译 qwt 组件源码:
make -j4 启动4个线程编译
编译完成后:
在 qwt 根目录下执行以下命令安装 qwt 组件:
sudo make install
该组件会解压到QWT_INSTALL_PREFIX指定的路径中:/opt/qwt-6.1.0
将库发送到开发板(HOST)端
将"/opt/qwt-6.1.0/lib"下的所有文件拷贝到开发板文件系统"/usr/lib"目录下,用SD卡也可以,用scp命令也可以。
安装CCS
安装过程请参考我发在贴吧上的教程:我这里用的是CCS5.5版本,大同小异 (在LINUX(ubuntu)系统下装CCSv6方法)[https://tieba.baidu.com/p/3698761357]
注意路径安装到 /opt/ti下
安装StarterWare库
执行:sudo ./OMAPL138_StarterWare_1_10_04_01-Linux-x86-Install
安装路径为: /opt/ti下
安装配置MCSDK
MCSDK是多核通信组件。
安装MCSDK
准备好mcsdk_1_01_00_02_setuplinux.bin,注意路径安装到/opt/ti下,完全安装就好。
sudo ./mcsdk_1_01_00_02_setuplinux.bin
配置MCSDK
进入"mcsdk_1_01_00_02"目录下,启动 MCSDK 设置脚本,根据不同主机设置,进行tftp、nfs、U-Boot 等配置。在设置之前,务必保证虚拟机网络畅通。
cd /opt/ti/mcsdk_1_01_00_02/
sudo ./setup.sh
- 问你NFS目标地址安装在哪里,直接回车
- 问你是否是root权限启动的配置,直接回车
- 创建EXEC_DIR等等环境变量,回车
- 问tftp路径直接回车
- 串口部分,我们用的室CH340所以是/dev/ttyUSB0
- 问ip,输入omapl138板子的ip地址
- 问你Linux Kernal位置,我的在SD卡
- 问你root file system的位置,我的在SD卡
- 问nfs文件系统启动方式启动方式,直接回车
- 启动tftp下载内核镜像,n
- installing linux devkit Y
- 最后看到TI SDK SETUP COMPLETED配置已经完成。

SYSLINK的配置和安装
cd /opt/ti/syslink_2_21_01_05
进入该路径下,打开配置文件:
sudo vim products.mak
要改的内容在下面
DEVICE = OMAPL1XX
SDK = NONE
EXEC_DIR = /media/delvis/rootfs // host root文件系统路径 可以在SD卡上(需要挂载),也可以暂时存储到你电脑临时文件夹上,到时候拷贝到SD卡上
DEPOT = /opt/ti // MCSDK 安装路径
接下来配置的如图所示:

配置完成后保存退出。
编译syslink源代码
编译 syslink 之前,先将以下两个宏定义添加到 syslink 中的 Omapl1xxIpcInt.c、omapl1xx_phy_shmem.c、omapl1xxpwr.c 文件开头,否则编译会出错。
(1) /opt/ti/syslink_2_21_01_05/packages/ti/syslink/ipc/hlos/knl/notifyDrivers/arch/omapl1xx/Omapl1xxIpcInt.c
(2) /opt/ti/syslink_2_21_01_05/packages/ti/syslink/family/hlos/knl/omapl1xx/omapl1xxdsp/Linux/omapl1xx_phy_shmem.c
(3) /opt/ti/syslink_2_21_01_05/packages/ti/syslink/family/hlos/knl/omapl1xx/omapl1xxdsp/omapl1xxpwr.c
- Omapl1xxIpcInt.c 文件,修改在头处添加文件
#undef __ASM_ARCH_HARDWARE_H
#include <mach/hardware.h>
- omapl1xx_phy_shmem.c文件,修改在头文件处添加
#undef __ASM_ARCH_HARDWARE_H
#include <mach/hardware.h>
- omapl1xxpwr.c 文件,修改在头文件处添加
#undef __ASM_ARCH_HARDWARE_H
#include <mach/hardware.h>
编译syslink
cd /opt/ti/syslink_2_21_01_05
make syslink
编译syslink示例
make samples
安装syslink驱动程序
sudo make install
返回到在setup.sh配置syslink的时候指定的rootfs目录,ls lib/modules/3.3.0/kernel/drivers/dsp/
可以看到在文件系统"lib/modules/3.3.0/kernel/drivers/dsp/"目录下有 syslink 驱动程序syslink.ko 文件和文件系统根目录下有"ex**_##"的示例程序。
就配合环境成功了。
参考文献
[1]创龙公司,基于 OMAPL138 的多核软件开发组件 MCSDK 开发入门
[2]创龙公司,OMAPL138基于SYSLINK的双核例程
DSP+ARM多核异构开发环境SYSLINK搭建OMAPL138的更多相关文章
- paper 136:ARM ADS集成开发环境的使用(新版)
[转载]:http://blog.csdn.net/yhmhappy2006/article/details/1673203 ARM ADS集成开发环境的使用 在这里,将介绍ARM开发软件ADS(AR ...
- Linux设备驱动开发环境的搭建(转)
经过两周的摸索,终于对Linux设备驱动开发有了个初步的认识,下面对Linux设备驱动开发环境的搭建做个小结,以方便自己以后查询,同时也能给同道的初学者一点帮助. 刚接触Linux设备驱动时,初学者往 ...
- windows下STM32开发环境的搭建
一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...
- 新唐的开发环境的搭建,驱动以及BSP
https://www.keil.com/demo/eval/arm.htm#DOWNLOAD1,MDK-ARM的IDE集成开发环境:mdk512.exehttp://www.keil.com/fid ...
- 嵌入式Qt开发环境的搭建详解
一.嵌入式Qt开发环境的搭建前奏 1.下载arm-linux-gcc-4.4.3-20100728.tar.gz 2.下载qt-everywhere-opensource-src-4.8.5.tar. ...
- arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)
arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...
- 总结:Mac前端开发环境的搭建(配置)
新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...
- Idea开发环境中搭建Maven并且使用Maven打包部署程序
1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...
- Linux学习心得之 Linux下命令行Android开发环境的搭建
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...
随机推荐
- 任务六:通过HTML及CSS模拟报纸排版
任务目的 深入掌握CSS中的字体.背景.颜色等属性的设置 进一步练习CSS布局 任务描述 参考 PDS设计稿(点击下载),实现页面开发,要求实现效果与 样例(点击查看) 基本一致 页面中的各字体大小, ...
- C++中char*与wchar_t*之间的转换
http://blog.163.com/tianshi_17th/blog/static/4856418920085209414977/ 关于C++中的char*与wchar_t*这两种类型的相互转换 ...
- 关于String s = new String("xyz");创建了几个字符串对象?的问题
引用自这位朋友:http://blog.sina.com.cn/s/blog_6a6b14100100zn6r.html 首先让我们了解几个概念: 栈:由JVM分配区域,用于保存线程执行的动作和数据引 ...
- asyncio标准库6 Threads & Subprocess
Threads import asyncio def compute_pi(digits): # implementation return 3.14 async def main(loop): di ...
- C#设计模式之代理模式(一)
原文地址:http://blog.csdn.net/lovelion/article/details/8227953 代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时 ...
- JavaScript递归深度问题
递归是有限的东西: function fact(num) { if (num <= 1) { return 1; } else { return fact(num - 1); } } 测试结果是 ...
- 【Spring实战】—— 7 复杂集合类型的注入
之前讲解了Spring的基本类型和bean引用的注入,接下来学习一下复杂集合类型的注入,例如:List.Set.Map等. 对于程序员来说,掌握多种语言是基本的技能. 我们这里做了一个小例子,程序员们 ...
- python入门23 pymssql模块(python连接sql server增删改数据 )
增删改数据必须connect.commit()才会生效 回滚函数 connect.rollback() 连接数据库 ''' dinghanhua sql server增删改 ''' import py ...
- 20150103 海南铁汉vs哈尔滨毅腾
本文首发于『懂球帝』 这一场球赛虽然极其普通,在各位懂球帝面前或许不值得一提,但它极具历史意义,因为这是海南第一个职业联赛队伍的首场正式比赛,同时也是海南铁汉队第一次在正式比赛中与球迷们见面. 稍做一 ...
- LA 4254 贪心
题意:有 n 个工作,他的允许的工作时间是 [l,r] ,工作量是 v ,求CPU最速度的最小值. 分析: 可能太久没有做题了,竟然脑子反应好慢的.还是很容易想到二分,但是二分怎么转移呢? 可以看出, ...