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的雙核例程