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