DM3730开发
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?DM3730雙核開發(fā)
前言
? ? DM3730是由德州儀器(TI)推出的雙核處理器,處理器集成了高達(dá)1GHz的ARM Cortex-A8內(nèi)核及高達(dá)800MHz的具有高級數(shù)字信號處理的DSP(TMS320C64x+),并提供了豐富的外設(shè)接口(更詳細(xì)的配置說明請點擊DM3730用戶手冊下載). ARM端主要跑Linux操作系統(tǒng),DSP主要進(jìn)行數(shù)字信號高速計算,ARM和DSP之間通過DVSDK進(jìn)行通信.所以本教程主要分三部分:ARM端、DSP端和ARM與DSP的通信.
第一部分 ARM核
? ? ARM端要進(jìn)行的工作主要分為兩部分:交叉編譯和運行編譯后的程序
1.1 交叉編譯工具arm-none-linux-gnueabi-gcc的安裝
1.1.1 安裝Ubuntu
? ? Linux有不同的distribution,Ubuntu是其中一個比較優(yōu)秀的distribution,我在Ubuntu10.04和Ubuntu12.04都成功安裝了交叉編譯工具,所以建議大家安裝這兩個版本之一.Ubuntu的安裝有多種方式,其中比較常見的有wubi安裝,硬盤安裝,光盤安裝及虛擬機安裝等.本文給出Ubuntu官方網(wǎng)站,可以從官網(wǎng)上下載不同版本的Ubuntu源文件,然后從網(wǎng)上找到安裝Ubuntu的方式即可,此處不再贅述.
1.1.2 打開終端(Alt + Ctrl + t)
1.1.3?下載arm-none-linux-gnueabi-gcc安裝包
1.?將下邊命令復(fù)制到終端中:
? ?wget http://www.codesourcery.com/sgpp/lite/arm/portal/package4571/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
? ?(如下圖所示)?
??
? ?2.按鍵盤Enter鍵即可開始下載arm-none-linux-gnueabi-gcc安裝包(如下圖所示) ? ?
3. 下載完成(如下圖示)
?? ? ?
1.1.4 ?拷貝到下載后的工具包到/usr/local目錄下?
將下邊命令復(fù)制到終端中 sudo cp arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 /usr/local? (如下圖示) 按下鍵盤上Enter鍵即可將arm-none-linux-gnueabi-gcc工具包拷貝到/usr/local目錄下,這時就可以在/usr/local目錄下出現(xiàn)一個以arm開頭的壓縮包(如下圖示)
1.1.5 解壓上圖所示的文件
將下邊命令復(fù)制到終端中 sudo tar -jxvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 即可完成解壓工作(如下圖所示) 執(zhí)行以上命令后,arm-none-linux-gnueabi-gcc安裝包會被解壓到當(dāng)前目錄下的一個arm-2009q1目錄中。查看當(dāng)前工作目錄的方法是在終端中輸入 pwd 然后按Enter鍵即可 用命令ls 可以看到當(dāng)前工作目錄下有arm-2009q1這個目錄(如下圖示) 1.1.6 ??
添加交叉編譯工具路徑
關(guān)于增加PATH的知識這里不再贅述,有興趣的同學(xué)可以看看Linux鳥哥私房菜(基礎(chǔ)學(xué)習(xí)篇)上邊有比較詳細(xì)的介紹,這里只介紹傻瓜式的操作步驟(這一步很關(guān)鍵,一定要認(rèn)真按照教程一步步的做)
1.打開/etc/bash.bashrc腳本
將下邊命令復(fù)制到終端中: ?
gedit /etc/bash.bashrc然后出現(xiàn)下圖所示結(jié)果
?2.增加/usr/local/arm-2009q1/bin/目錄到PATH變量中
在gedit打開的文件的最后一行輸入下邊這個命令:
export PATH=$PATH:/usr/local/arm-2009q1/bin/ (如下圖示) 最后保存退出! 1.1.7 執(zhí)行/etc/bash.bashrc腳本 將下邊命令復(fù)制到終端中: ? source /etc/bash.bashrc
1.1.8 驗證 在終端中先輸入arm-,然后按<Tab>鍵。如果能夠自動補齊為arm-none-linux-gnueabi-,則說明安裝成功.(如下圖示) 注意:如果您的操作系統(tǒng)是64位的Ubuntu要輸入下邊命令來運行32操作系統(tǒng)上的交叉編譯工具鏈(這一步我沒有做,不保證成功) sudo apt-get install ia32-libs
至此我們已經(jīng)成功安裝上了交叉編譯環(huán)境,下邊我們將介紹一下這個交叉編譯環(huán)境的使用方法
1.2??交叉編譯工具arm-none-linux-gnueabi-gcc的使用
所謂交叉編譯就是在Linux的?arm-none-linux-gnueabi-gcc編譯器下編譯程序,在ARM端運行編譯后的可執(zhí)行程序.故接下來將分別討論在Linux和ARM上的操作方法.
1.2.1 Linux上的操作
1.首先要在當(dāng)前工作目錄下編寫純C程序(Hello World.c),這里就以經(jīng)典的hello world為例介紹Linux端的操作
#include <stdio.h>
int main (void)
{
? ? ? printf("Hello World!\n");
? ? ? return 0;
}
2. 編譯Hello World.c
在終端中輸入 ?arm-none-linux-gnueabi-gcc ?-o ?Hello ?HelloWorld.c ? (如下圖所示)
其中arm-none-linux-gnueabi-gcc為編譯器的名字,?Hello為編譯后可執(zhí)行程序的名字,?HelloWorld.c 為源程序.
然后得到可執(zhí)行程序:Hello ?(如下圖所示)
1.2.2 ?在DM3730ARM 核上的開發(fā)
?1.開發(fā)環(huán)境的快速搭建:主要分為硬件的搭建和軟件環(huán)境的搭建,這部分要在XP環(huán)境下進(jìn)行.具體的搭建過程請看我上傳的DM3730快速入門?,里邊有詳細(xì)的介紹.
2.按照上邊的文檔搭建過開發(fā)環(huán)境后,切換到root用戶,然后轉(zhuǎn)到可執(zhí)行程序所在的目錄,在命令行中直接輸入可執(zhí)行程序的名字,程序就會自動執(zhí)行.
至此DM3730在ARM端的開發(fā)已經(jīng)完成.
第二部分 ? DSP核
?2.1 CCS安裝概述
? ? ? 本項目用的是CCS4.1.2編譯器以及XDS100V2仿真器,安裝CCS4.1.2的過程可以去網(wǎng)上下載,然后一步步的安裝,需要說明的是初學(xué)者最好按照安裝程序默認(rèn)設(shè)置去安裝,路徑中不能有中文,CCS4以上的版本自帶的有XDS100V2的驅(qū)動,而CCS3需要安裝驅(qū)動.
2.2 CCS4.1.2 環(huán)境下建工程請參考CCS4.1.2建工程
? ? ? CCS4相對于CCS3及以前的版本有很大的不同,CCS4以前的版本需要自己寫cmd和GEL文件然而CCS4以上的版本不需要自己寫cmd文件,一般都是編譯器自動幫你配好的,這個可以說是一大進(jìn)步,但是編譯器的這種進(jìn)步也可能會帶來莫名其妙的錯誤.例如CCS4默認(rèn)的stack和heap的大小都是1k(0x400),但是對于需要內(nèi)存比較大的項目來說在編譯階段會報類似下圖所示的錯誤: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? 對于一般的warning我們可以置之不理,但是 如果是跟內(nèi)存有關(guān)的warning我們一定要重視,如果編譯階段出現(xiàn)這個warning的話在程序運行階段一般會 出現(xiàn)諸如TMS320C64+: Error: Illegal opcode (0002f960) at pc = 0x0002e3a4 Illegal opcode at pc = 0x0002e3a4 ??這樣的錯誤.究其原因就是因為編譯器默認(rèn)的stack和heap的大小都是1K,所以我們需要修改stack和heap的大小.方法是在C/C++project模式下右擊下邊的第一項然后選擇Build properties... (如下圖所示)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????
然后彈出一個對話框,選擇Tool Settings(如下圖所示)
點擊C6000 Linker下的Basic Option,出現(xiàn)下圖所示的內(nèi)容:
上圖所示空白處分別為stack和heap的大小,編譯器默認(rèn)是1K(0x400).你可以根據(jù)自己項目的需要自己設(shè)置大小,直到編譯時不會出現(xiàn)類似上邊的warnings.例如我的需要把stack和heap設(shè)為16M(0x1000000)才可以編譯通過.(如下圖所示)
? ?
最后點擊OK即可.
第三部分 ARM核與DSP核通信 (未完待續(xù)...)
? ??
總結(jié)
- 上一篇: 计算机b级考试试题加答案,2020年度4
- 下一篇: Ceph集群多服务器离线部署