Davinci的程序分DSP程序及ARM程序,DSP程序我們在CCS中編輯和編譯,ARM程序在Source Insight中編輯,在Linux中的dvsdk1.3工具鏈下編譯。
以下是我們在開發(fā)過程中所使用的軟件:
Windows:
CCS 3.3 DSP程序編譯環(huán)境
TDS560USB 仿真器驅(qū)動
VMWare5.0 虛擬機軟件
Source Insight 3.5 軟件工程編輯工具
Tera Term 串口控制軟件
DVFlasher 串口flash燒寫工具
UltraEdit-32 文本編輯工具
Linux:
dvsdk1.3 ARM交叉編譯工具鏈
GCC3.2.2 編譯器
VI 文本編輯工具
同時,在linux下需要啟動如下服務(wù):
samba 通過網(wǎng)絡(luò)提供與windows共享文件功能
nfs 通過網(wǎng)絡(luò)給Davinci板卡提供根文件系統(tǒng)
tftp 通過網(wǎng)絡(luò)下載文件至Davinci板卡
dhcp 動態(tài)分配IP
二、Davinci調(diào)試環(huán)境搭建及使用總體步驟
Davinci調(diào)試環(huán)境搭建及使用可以分成5大步:
1, 搭建linux環(huán)境
2, 安裝arm編譯環(huán)境
3, 搭建CCS環(huán)境
4, 編譯庫,生成x64P,由ARM端可執(zhí)行程序調(diào)用運行
5, 編譯uboot并燒寫進flash,燒寫內(nèi)核及根文件系統(tǒng)
三、搭建linux環(huán)境
安裝linux操作系統(tǒng),可以在物理硬盤上直接安裝,也可以采用在Windows的虛擬機上安裝,方法并不唯一,我們采用的是在Windows的虛擬機上安裝。同樣,本文提到的許多方法都不是唯一的實現(xiàn)方式,而只是我們所采用的那一種方法。
安裝虛擬機與linux時請參考文檔《虛擬機軟件Vmware Workstation 5.0使用指南.doc》,需要注意幾點:
1, 分配硬盤空間時,至少需要12G;
2, 物理內(nèi)存推薦256M以上,安裝linux時,swap空間大小加上物理內(nèi)存大小必須超過600M;
3, 安裝linux時,可以使用光盤安裝,也可以使用硬盤上的ISO映象文件進行安裝;與不用虛擬機在物理硬盤上安裝的過程是一樣的;在安裝好linux后,需要安裝VMware Tools。
注意:由于后面需要與Windows之間進行通訊,我們的虛擬機網(wǎng)絡(luò)采用網(wǎng)橋的方式,將虛擬機中l(wèi)inux的IP配置成與主機Windows同一網(wǎng)段,例如,Windows的IP為192.168.1.80,我們可以指定Linux的IP為192.168.1.81,在命令行輸入如下命令:
ifconfig eth0 192.168.1.81 netmask 255.255.255.0
然后,Linux與Windows就可以互相ping通了。
四、安裝ARM程序的編譯環(huán)境
要執(zhí)行本步驟,系統(tǒng)需要滿足如下條件:
1. 安裝了RedHat Linux 9.0或其他較新linux版本,且安裝時應(yīng)選擇了下列組件:
a) Editors包中的vi
b) Network servers包中的dhcp
2. Redhat Linux 服務(wù)器的IP地址為192.168.1.81、子網(wǎng)掩碼為255.255.255.0
3. 知道root用戶的密碼。
安裝arm編譯環(huán)境需要以下的工具包:
mvl_4_0_1_demo_sys_setuplinux.bin
mvl_4_0_1_demo_target_setuplinux.bin
mvl_4_0_1_demo_lsp_setuplinux_#_#_#_#.bin
dvsdk_setuplinux_#_#_#_#.bin
xdc_setuplinux_#_#_#_#.bin
bios_setuplinux_#_#_#_#.bin
TI-C6x-CGT-v#.#.#.#.bin
其中的#代替數(shù)字,表示版本號,我們當(dāng)前使用的版本具體如下:
mvl_4_0_1_demo_sys_setuplinux.bin
mvl_4_0_1_demo_target_setuplinux.bin
mvl_4_0_1_demo_lsp_setuplinux_01_20_00_014.bin
dvsdk_setuplinux_1_30_00_40.bin
bios_setuplinux_5_33_03.bin
TI-C6x-CGT-v6.0.15.1.bin
xdc_setuplinux_3_00_02_14.bin
下面詳細(xì)說明以上這些文件如何安裝:
1、安裝ARM交叉編譯環(huán)境
啟動RedHat Linux服務(wù)器,到出現(xiàn)登錄畫面時,使用root用戶登錄,
(1)搭建MontaVista Linux開發(fā)環(huán)境
直接運行前3個文件,根據(jù)提示操作即可。命令如下:
host $ ./mvl_4_0_1_demo_sys_setuplinux.bin
host $ ./mvl_4_0_1_demo_target_setuplinux.bin
host $ ./mvl_4_0_1_demo_lsp_setuplinux_#_#_#_#.bin
運行時會詢問存放目錄,推薦為 /opt/mv_pro_4.0.1 。
以上3個命令生成3個壓縮包,先確認(rèn)生成的3個壓縮包:
host $ cd /opt/mv_pro_4.0.1
host $ ls
有如下3個壓縮文件:
mvltools4.0.1-no-target.tar.gz
mvl4.0.1-target_path.tar.gz
DaVinciLSP-#_#_#_#.tar.gz
分別解壓,使用下面命令:
host $ tar zxf mvltools4.0.1-no-target.tar.gz
host $ tar zxf mvl4.0.1-target_path.tar.gz
host $ tar zxf DaVinciLSP-#_#_#_#.tar.gz
這樣就創(chuàng)建了新目錄 /opt/mv_pro_4.0.1/montavista/ ,其中存放了內(nèi)核源碼、根文件系統(tǒng)、Arm-gcc編譯器等。
(2)安裝dvsdk工具鏈
運行如下命令:
host $ ./dvsdk_setuplinux_#_#_#_#.bin
會生成一個目錄/opt/dvsdk_1_30_00_40,
host $ ./xdc_setuplinux_#_#_#_#.bin
host $ ./bios_setuplinux_5_#_#_#.bin
運行時會詢問存放目錄,指定為 /opt/dvsdk_1_30_00_40 。
在/opt/dvsdk_1_30_00_40下新建一個目錄,名為cg6x_6_0_15
執(zhí)行如下命令:
host $ ./TI-C6x-CGT-v#.#.#.#.bin
運行時會詢問存放目錄,指定為 /opt/dvsdk_1_30_00_40/ cg6x_6_0_15 。
到這一步,所需要的工具鏈就安裝完成。下一步是進行適當(dāng)?shù)穆窂脚渲谩?nbsp;
(3)dvsdk工具鏈的路徑配置
/opt/dvsdk_1_30_00_40路徑下有一個重要的配置文件:Rules.make,由于剛才另外在dvsdk目錄下安裝了三個工具,在Rules.make需要有相應(yīng)的更改。
對應(yīng)XDC_INSTALL_DIR宏及BIOS_INSTALL_DIR宏,需要改成如下值:
XDC_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/xdc_3_00_02
BIOS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/bios_5_33_03
在需要使用到DSP程序編譯處,需要改動相應(yīng)的CGTOOLS_C64X宏如下:
CGTOOLS_C64X = $(DVSDK_INSTALL_DIR)/cg6x_6_0_15
至此,就可以進行ARM端程序的編譯了。
2、系統(tǒng)配置
嵌入式系統(tǒng)由于對成本、體積、功耗等方面的要求,一般不能安裝發(fā)行版的Linux系統(tǒng)。所以Davinci系統(tǒng)也需要相應(yīng)的開發(fā)環(huán)境,來進行程序的開發(fā)調(diào)試。
在進行程序開發(fā)調(diào)試時,我們采用NFS與tftp等網(wǎng)絡(luò)通信方式共享Linux服務(wù)器中的資源,用于嵌入式Linux進行訪問、改寫。
本部分主要介紹包括NFS,DHCP服務(wù),samba服務(wù)以及DVEVM板部分參數(shù)的配置。
(1)設(shè)置NFS
[davinci@DavinciServer davinci]$ cd /root
[davinci@DavinciServer davinci]$ mkdir -p armfs
[davinci@DavinciServer davinci]$ cd /root/armfs/
[root@DavinciServer filesys]# cp -a 下面一行內(nèi)容緊跟在-a后,有一空格 /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/target/* .
[root@DavinciServer filesys]# vi /etc/exports
在vi的界面下按i鍵進入輸入狀態(tài),輸入如下內(nèi)容:
/root/armfs/ *(rw,sync,no_root_squash)
按Esc鍵退出輸入狀態(tài),按:鍵(即Shift+;)鍵,鍵入命令wq?,退回到命令行提示符下。
[root@DavinciServer filesys]# /usr/sbin/exportfs -a
[root@DavinciServer filesys]# /sbin/chkconfig --level 12345 nfs on
[root@DavinciServer filesys]# /sbin/service nfs restart
Shutting down NFS mountd: [FAILED]
Shutting down NFS daemon: [FAILED]
Shutting down NFS quotas: [FAILED]
Shutting down NFS services: [ OK ]
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
[root@DavinciServer filesys]# rpm -q tftp-server
package tftp-servere is not installed 如果顯示這樣的內(nèi)容則未安裝tftp-server;如顯示為tftp-server-#.##-#的格式則已經(jīng)安裝tftp-server,請不要執(zhí)行帶下劃線的內(nèi)容。
[root@DavinciServer filesys]# eject放入RedHat Linux 9.0 Disk 3
[root@DavinciServer filesys]# mount /dev/cdrom
[root@DavinciServer filesys]# cd /mnt/cdrom/
[root@DavinciServer cdrom]# cd RedHat/RPMS/
[root@DavinciServer RPMS]# rpm -ivh tftp-server-0.32-4.i386.rpm
warning: tftp-server-0.32-4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100%]
1:tftp-server ########################################### [100%]
[root@DavinciServer RPMS]# cd
[root@DavinciServer root]# eject放入TDS6446EVM配套光盤DaVinci Digital Video uation Kit Disk
[root@DavinciServer root]# mount /dev/cdrom
[root@DavinciServer root]# ls /如果安裝了tftp-server接此運行
bin dev home lib misc opt root tmp var
boot etc initrd lost+found mnt proc sbin usr
[root@DavinciServer root]# mkdir /tftpboot如果上面沒有目錄tftpboot則創(chuàng)建之
[root@DavinciServer root]# cd /tftpboot
[root@DavinciServer tftpboot]# mkdir DVEVM
[root@DavinciServer tftpboot]# cp /mnt/cdrom/uImage DVEVM
[root@DavinciServer tftpboot]# /sbin/chkconfig tftp on
[root@DavinciServer tftpboot]# /sbin/chkconfig --list
xinetd based services:
chargen-udp: off
rsync: off
chargen: off
daytime-udp: off
daytime: off
echo-udp: off
echo: off
services: off
servers: off
time-udp: off
time: off
cups-lpd: off
sgi_fam: on
rexec: off
rlogin: on
rsh: on
telnet: on
tftp: on on表示tftp服務(wù)已經(jīng)成功啟動
[root@RedHatServer root]# exit
[davinci@RedHatServer filesys]# cd /home/davinci/workdir/filesys/opt
[davinci@RedHatServer opt]# tar zxf /mnt/cdrom/examples.tar.gz
(2)設(shè)置DHCP服務(wù)器
[root@DavinciServer opt]# vi /etc/dhcpd.conf
在vi的界面下按i鍵進入輸入狀態(tài),輸入如下內(nèi)容:
ddns-update-style interim;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
subnet 192.168.1.0 netmask 255.255.255.0
{
range 192.168.1.100 192.168.1.253;
default-lease-time 1800;
max-lease-time 28800;
}
按Esc鍵退出輸入狀態(tài),按:鍵(即Shift+;)鍵,鍵入命令wq,退回到命令行提示符下。
[root@RedHatServer opt]# /sbin/service dhcpd restart
Shutting down dhcpd: [FAILED]
Starting dhcpd: [ OK ]
[root@RedHatServer opt]# /sbin/chkconfig --level 12345 dhcpd on
(3)配置samba服務(wù)
1,查看機器上是否安裝了samba服務(wù),輸入下面命令:
rpm -q samba
如果安裝了,會顯示版本號。如果沒有安裝,插入Linux安裝光盤,輸入下面命令:
rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba*
2,samba配置
Samba是用來實現(xiàn)SMB(Server Messages Block)協(xié)議的一種軟件,是一套讓Unix/Linux系統(tǒng)能夠應(yīng)用Microsoft網(wǎng)絡(luò)通信協(xié)議的軟件,它可以和運行Windows 98、Windows 2000等操作系統(tǒng)的計算機實現(xiàn)文件共享和打印機共享服務(wù)。
通過配置Samba服務(wù)器,可以提供Windows客戶機來訪問Linux系統(tǒng)上共享的資源,也能夠在Linux上通過SMB協(xié)議訪問Windows系統(tǒng)上的共享資源。
一、訪問Samba服務(wù)器配置工具
要訪問Samba服務(wù)器配置工具,只須依次單擊“主菜單→系統(tǒng)設(shè)置→服務(wù)器設(shè)置→Samba服務(wù)器”,即可打開Samba服務(wù)器配置窗口。
小提示:
1.必須以root用戶身份才可以對Samba服務(wù)器進行配置。
2.也可以在終端窗口輸入redhat-config-samba命令打開配置窗口。
二、進行服務(wù)器設(shè)置
這里首先要對Samba服務(wù)器的基本設(shè)置和安全選項進行配置,單擊配置窗口上的“首選項→服務(wù)器設(shè)置”,即可打開服務(wù)器設(shè)置對話框)。
1)基本設(shè)置
在對話框的“基本”標(biāo)簽頁,我們可以指定Linux主機所在的工作組名稱,需要注意的是,此處的工作組名稱不一定非得與Windows主機所在的工作組名稱一致。
2)安全設(shè)置
現(xiàn)在就進行Samba服務(wù)器安全設(shè)置,這里一共有四個選項,分別介紹如下:
A. 驗證模式:如果Windows主機不是位于NT域里,此處應(yīng)該選擇“共享”驗證模式,這樣只有在連接Samba服務(wù)器上的指定共享時才要求輸入用戶名、密碼;
B. 驗證服務(wù)器:對于“共享”驗證模式,無須啟用此項設(shè)置;
C. 加密口令:應(yīng)該選擇“是”,這樣可以防止黑客用嗅探器截獲密碼明文;
D.來賓賬號:當(dāng)來賓用戶要登錄入 Samba服務(wù)器時,他們必須被映射到服務(wù)器上的某個有效用戶。選擇系統(tǒng)上的現(xiàn)存用戶名之一作為來賓Samba賬號。當(dāng)用戶使用來賓賬號登錄入Samba服務(wù)器,他們擁有和這個用戶相同的權(quán)限。
三、添加共享目錄
接下來是添加共享目錄,單擊Samba配置窗口工具欄上的“增加”按鈕,即可打開一個添加共享對話框。
1)在該對話框上的“基本”標(biāo)簽頁上,指定要共享的目錄為某個存在的目錄,例如可以指定/tmp,再指定該目錄的基本權(quán)限是只讀還是讀/寫。
2)在“訪問”標(biāo)簽頁上,可以指定允許所有用戶訪問、或者只允許某些用戶訪問。
四、從Windows訪問Samba服務(wù)器
好了,現(xiàn)在萬事俱備、只欠東風(fēng),只須啟動Samba服務(wù)即可。打開一個終端窗口,鍵入“/sbin/service smb start”命令,即可出現(xiàn)以下提示信息,表示Samba服務(wù)已經(jīng)啟動:
# /sbin/service smb start
啟動SMB 服務(wù) [確定]
啟動NMB 服務(wù) [確定]
接下來的事情就簡單了,在Windows里打開“網(wǎng)上鄰居”,就可以看到我們剛才設(shè)置的Samba服務(wù)器了。當(dāng)然,我們在文件夾的地址欄里直接輸入 \\192.168.1.81 能更快的訪問到剛才共享出來的內(nèi)容。
(4)設(shè)置DVEVM
此處的設(shè)置,我們假定正確的uboot已經(jīng)燒寫在Flash上,如果需要燒寫uboot,請參照第六部分的“燒寫uboot”內(nèi)容進行操作。
我們使用串口軟件Tera Term與Davinci板連接,設(shè)置波特率為115200,無校驗,1個停止位,無流控。設(shè)置好串口軟件后,將Davinci板上電,出現(xiàn)如下信息:
U-Boot 1.1.3 (Jun 15 2006 - 17:43:55)
U-Boot code: 81080000 -> 81096A0C BSS: -> 8109F31C
RAM Configuration:
Bank #0: 80000000 256 MB
ARM Clock :- 243MZ
DDR Clock :- 162MZ
MY AMD Flash: 16 MB
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 0
在3秒倒計時內(nèi)按任意鍵,進入命令模式。下面輸入命令進行配置,在uBoot下輸入出錯只能用backspace刪除,而不能用左右鍵移動光標(biāo)。
DaVinci EVM # setenv ethaddr 00:0e:99:02:51:46
DaVinci EVM # setenv ipaddr dhcp
DaVinci EVM # setenv nfshost 192.168.1.81
DaVinci EVM # setenv bootfile uImage
DaVinci EVM # setenv rootpath /root/armfs
DaVinci EVM # setenv fileaddr 80700000
DaVinci EVM # setenv gatewayip 192.168.1.81
DaVinci EVM # setenv serverip 192.168.1.81
DaVinci EVM # setenv bootcmd 'dhcp;bootm'
DaVinci EVM # setenv netmask 255.255.255.0v
DaVinci EVM # setenv bootargs console=ttyS0,115200n8 noinitrd rw ip=dhcp root=/dev/nfs nfsroot=$(nfshost):$(rootpath),nolock mem=120M與上同行
DaVinci EVM # printenv 看設(shè)置的內(nèi)容是否一致
……………………………… 省略了相關(guān)顯示
DaVinci EVM # saveenv
Saving Environment to Flash...
Un-Protected 1 sectors
Erasing Flash...
Erasing sector 4 ... done.
Erase Operation Completed.
Erased 1 sectors
Writing to Flash...-done
Protected 1 sectors
將系統(tǒng)斷電后,重新上電,等到出現(xiàn)
…………………… 省略內(nèi)容若干 ……………………
192.168.1.?? login:root
root@192.168.1.?? # cd /root/loop
root@192.168.1.?? # ./loadmodules.sh
……………………省略內(nèi)容若干
root@192.168.1.?? # ./videoloop
說明:此配置設(shè)置波特率為115200,采用動態(tài)分配IP,內(nèi)核從Linux服務(wù)器使用tftp協(xié)議下載uImage,根文件系統(tǒng)從Linux服務(wù)器使用NFS方式訪問共享路徑/root/armfs,這樣的配置適合程序的調(diào)試運行。這些部分的設(shè)置都是可以改動的,具體參見《DVEVM Getting Started Guide.pdf》,關(guān)于uboot的命令使用,請參考《U-Boot命令 emLinuxARM.pdf》。
(5)編譯調(diào)試工具框圖
下圖為常見調(diào)試框圖,在Windows端通過samba服務(wù)訪問Linux中的源代碼,用Soure Insight進行編輯,在Linux中的dvsdk1.3工具鏈中編譯,將生成應(yīng)用程序放在NFS所共享的目錄下,供Davinci板卡訪問。我們通過串口控制軟件Tera Term來查看與改變Davinci板卡的運行狀態(tài)。
五、安裝DSP程序的編譯環(huán)境
TI公司提供了高效的C編譯器和集成開發(fā)環(huán)境Code Composer Studio ,可以方便的編譯調(diào)試DSP程序,同時CCS的幫助文檔也是十分全面。
1、安裝CCS3.3
這部分安裝比較簡單,詳細(xì)指導(dǎo)參見TI公司的CCS安裝指南,可分成兩部分:
1,解壓并安裝Code_Composer_Studio_v3.3_Build_3.3.38.2.zip
一般使用默認(rèn)的配置即可,但是要注意在選擇仿真芯片類型時,必須同時選上C6000、OMAP,以及TMS470系列,這是由于需要同時支持DSP與ARM的仿真運行。
2,運行CCS_v3.3_SR5_3.3.54.1.exe,采用默認(rèn)的配置即可。
2、安裝TDS560USB驅(qū)動
安裝TDS560USB驅(qū)動與ccs設(shè)置都需要仔細(xì)操作,一步操作錯誤就會導(dǎo)致最后使用不起來。
(1)安裝TDS560USB驅(qū)動時注意事項
請注意正確連接14針的JTAG電纜,該電纜接錯可能會導(dǎo)致仿真器或目標(biāo)系統(tǒng)永久損壞;仿真器14孔插頭的第六孔已經(jīng)封閉,目標(biāo)系統(tǒng)JTAG 14針插針的第六針應(yīng)該拔掉。如果不能確定接插件的連接方向,請與您的經(jīng)銷商聯(lián)系或查詢我們的網(wǎng)站中的相關(guān)信息。
為發(fā)揮TDS560USB 仿真器的性能,主機應(yīng)具備USB2.0接口。如果沒有USB2.0的接口,最好使用PCI-USB2.0 or PCMCIA-USB2.0轉(zhuǎn)接卡。
請不要帶電拔插JTAG電纜。
在移動和搬運TDS560USB系統(tǒng)時,請注意TDS560 POD上的線纜不能負(fù)重,否則內(nèi)部電纜容易損壞。
(2)USB設(shè)備驅(qū)動程序安裝
將TDS560USB仿真器與目標(biāo)板連接、計算機相連。
然后將電源與TDS560USB仿真器相連,此時POWER燈亮,READY閃爍。
按照Windows 的“發(fā)現(xiàn)新硬件”提示指定 WintechDigital TDS560USB設(shè)備驅(qū)動程序所在的目錄。在產(chǎn)品安裝光盤的drivers目錄下 (Win98/SE 是在 drivers\win98_me, Win2000/XP是drivers\win2k_xp )。
設(shè)備驅(qū)動安裝完成后,Windows將在設(shè)備列表中列出TDS560USB Emulator for Windows 98 或TDS560USB Emulator for Windows 2000/XP/2003。
注:
如果找不到這個設(shè)備,請檢查硬件的連接是否正確。
如果誤把TDS560USB Emulator for Windows 98驅(qū)動程序安裝到Windows 2000/XP/2003系統(tǒng)中,請在設(shè)備管理器中對該設(shè)備使用“更新驅(qū)動程序”功能。
(3)安裝TDS560USB仿真器工具軟件
在安裝TDS560USB仿真器工具軟件之前,請確認(rèn)CCS已經(jīng)安裝,否則仿真器無法工作。運行產(chǎn)品安裝光盤根目錄下的Setup.exe。根據(jù)您的需要選擇DSP類型,再選定相應(yīng)的CCS目錄。我們是選上了C6000,OMAP,Others DSPs。
軟件安裝完成后,可以在桌面上看到 “WintechDigital ” 快捷方式圖標(biāo),同時在CCS目錄下建立“TDS560USB”目錄。
如果需要更換CCS,請重新運行Setup.exe卸載TDS560USB仿真器工具軟件,并再次運行Setup.exe,選定新的DSP及新的CCS路徑。
3、進行CCS setup
在DAVINCI 板卡上使用TDS560USB仿真器時進行CCS Setup 設(shè)置的步驟如下:
首先要注意:
CCS的版本需要是3.2版本或更高版本;
設(shè)置前必須已經(jīng)運行過TDS560USB 仿真器光盤所附帶的支持工具setup.exe 。
1.CCS Setup啟動后,選擇”Create Board”,雙擊 WintechDigital TDS560USB Emulator.
2. 設(shè)置連接名稱:TDS560USB Davinci
3. 不用作任何改動,直接完成。
4.選擇TDS560USB Davinci ,并在中欄雙擊或拖ICEPICK_C到左欄中
5.在彈出窗口中設(shè)置CPU的個數(shù)為2
6.點擊next 跳過。
7.設(shè)置Subpath name 和端口號,名字隨便取,但是端口號ARM必須為16,DSP為18。
8.以上步驟完成后,選擇左欄的ARM9
9.在中間欄拖ARM9 CPU到左欄中,掃描鏈中的ARM9處理器。
10.設(shè)置ARM9處理器的GEL 文件
此處需要選中隨板提供的 DaVinciEVM_arm.gel 文件
11.開始設(shè)置DSPC64+,在左欄中選中\(zhòng)dSPC64,然后把中間欄的C6400PLUS拖到左欄的DSPC64中
12.設(shè)置C64PLUS處理器的GEL文件。
此處需要選中隨板提供的 DaVinciEVM_dsp.gel 文件
13.到此,設(shè)置工作完成,存儲并退出CCS Setup 。
4、運行CCS
以上步驟完成后,先斷開仿真器電源,將TDS560USB POD上的JTAG電纜與目標(biāo)板JTAG接口相連,然后打開目標(biāo)板電源,接通仿真器電源,運行CCS。觀察兩個指示燈,如果READY燈和BUSY燈輪流閃爍,表示TDS560USB正常工作,否則請斷開TDS560USB仿真器的電源,拔下USB線纜,重新檢查前面的硬件連接和軟件安裝、設(shè)置是否正確。
CCS及驅(qū)動都安裝完成之后,在CCS運行前,最好先運行一下 “桌面 \wintechdigital\ RESET TDS560USB”,如果復(fù)位正常,則運行CCS進行實時仿真,如果不能正常復(fù)位,請拔下仿真器電源和USB電纜,重新連接硬件,并檢查硬件連接和軟件安裝是否正確。
六、程序編譯
Davinci的程序分DSP程序及ARM程序,DSP程序我們在CCS中編輯和編譯,ARM程序在Source Insight中編輯,在Linux中的dvsdk1.3工具鏈下編譯。
下面以視頻編解碼V1.2版本的編譯為例,來說明調(diào)試程序操作步驟。
V1.2版本中有5部分,分別是:
解碼算法 : VidDec_lib
編碼算法 : VidEnc_lib
編譯x64P環(huán)境 : video_copy
ARM運行程序 : videoloop
運行目錄 : loop
VidDec_lib 與VidEnc_lib目錄推薦放在CCS安裝路徑下的MyProjects目錄下,我的存放路徑為:C:\CCStudio_v3.3\MyProjects 。
video_copy、videoloop與loop目錄都存放在Linux服務(wù)器下,loop目錄必須存放在NFS所共享的、Davinci板卡可以訪問的根文件系統(tǒng)內(nèi),而video_copy與videoloop目錄沒有存放路徑的限制,推薦將這兩個目錄存放在同一路徑下。
1、在Windows上編譯DSP端運行庫
由于只是編譯,并不需要仿真器的參與,以下CCS編譯時仿真器都不是必須的。在調(diào)試的過程中,才會需要用到仿真器。
啟動CCS,在CCS中分別編譯視頻解碼工程VidDec_lib及視頻編碼工程VidEnc_lib,得到所生成的庫文件VidDec_lib.lib及VidEnc_lib.lib。
2、在Linux中編譯DSP可執(zhí)行程序
將在CCS中編譯的VidDec_lib.lib改名復(fù)制為
video_copy\codecs\viddec_copy\lib\viddec_copy.a64P ,
將在CCS中編譯的VidEnc_lib.lib復(fù)制為
video_copy\codecs\videnc_copy\lib\videnc_copy.a64P。
也可以使用VidDec_lib.lib及VidEnc_lib.lib同目錄下的批處理文件copylib.bat來實現(xiàn)以上兩次改名復(fù)制。
在linux環(huán)境下的video_copy\servers\video_copy目錄下先執(zhí)行
make clean
然后執(zhí)行
make
生成DSP端的可執(zhí)行文件video_copy.x64P;并且將video_copy.x64P拷貝至運行目錄loop中。以上的video_copy.x64P生成并拷貝至運行目錄可以使用同目錄下的mkall腳本執(zhí)行文件來實現(xiàn)。(腳本是為了簡化調(diào)試步驟而使用的,大家自己寫出就是了)
3、在Linux中編譯ARM可執(zhí)行程序
在linux環(huán)境下進入videoloop工程,運行make,生成ARM端可執(zhí)行程序videoloop,將videoloop拷貝至運行目錄loop中。
這一步的make及拷貝也可以使用同目錄下的mkall腳本文件來執(zhí)行。
4、啟動板卡,執(zhí)行程序
啟動板卡,使用root登錄,然后進入運行目錄loop中。首先運行裝載模塊程序loadmodules.sh,然后運行ARM端可執(zhí)行程序videoloop。在運行過程中,videoloop會根據(jù)需要調(diào)用DSP端的視頻解碼算法程序及視頻編碼算法程序。
以上的2、3、4步使用mkall腳本文件需要注意:
IP地址與路徑必須與實際情況匹配,特別是在程序版本升級及Linux服務(wù)器更換時。
編譯x64P時,注意要先 make clean 。
七、脫機運行
一般在進行程序調(diào)試時,我們采用NFS與tftp等網(wǎng)絡(luò)通信方式共享Linux服務(wù)器中的資源,用于嵌入式Linux進行訪問、改寫。
在程序調(diào)試成功,并且版本穩(wěn)定之后,我們需要嵌入式Linux脫離服務(wù)器的支持,單獨運行起來。這時,需要有完整的Linux操作系統(tǒng)各部分,包括 BootLoader,內(nèi)核,根文件系統(tǒng)這三部分。
Davinci板卡采用的BootLoader是uboot,內(nèi)核提供了源文件,編譯即可得到,根文件系統(tǒng)我們分別使用過ramdisk及yaffs2這兩種方式。
Davinci板卡采用的存儲介質(zhì)是Flash,根據(jù)功能差異分為Nor Flash與Nand Flash兩種。
脫機運行前需要將uboot、內(nèi)核及根文件系統(tǒng)燒寫到Flash中,然后在uboot中進行相應(yīng)的配置。
Davinci的一般啟動過程如下:
Rbl->[ubl->] uboot->uImage->rootfs->用戶程序
在Nor flash上的啟動過程:
首先運行芯片中的Rbl,然后啟動flash上的uboot,加載uImage,使用rootfs,運行用戶可執(zhí)行程序。
在Nand flash上的啟動過程:
首先運行芯片中的Rbl,然后ubl,再啟動uboot,加載uImage,使用rootfs,運行用戶可執(zhí)行程序。
下面以運行在Nor flash上的ramdisk文件系統(tǒng)為例說明。下面提到的Flash,如果沒有指定為Nand Flash,則Flash就指的是Nor Flash。
1,燒寫uboot
(1)編譯uboot
目前我們使用uboot1.1.4 ,在Linux下,進入uboot1.1.4目錄,
依次輸入如下命令:
make clobber
make davinci_config
make ARCH=arm
就生成了可執(zhí)行文件 u-boot.bin 。
(2)燒寫uboot
將uboot燒寫進Flash,有兩種方法:一是使用JTAG頭連接仿真器,使用仿真器燒寫;二是使用串口進行燒寫。
注意:
在連接仿真器及串口線,撥動S3開關(guān),切換J4跳線時,必須要在斷電情況下操作。
仿真器燒寫:
將Davinci板卡斷電,
將DM6446開發(fā)板上的S3開關(guān)撥到全部為ON,在J4跳線處選上Nor Flash,連接仿真器;
將Davinci板卡上電,
打開CCS(需要設(shè)置CCS為仿真模式),在菜單中選擇 File-- Load Program ,找到Flash的燒寫程序flashwrite.out ,然后運行,根據(jù)提示分別輸入uboot文件名u-boot.bin,及偏移地址0,等燒寫完畢即可;
將Davinci板卡斷電,
將S3切換到Nor Flash啟動,即撥為1011111111,運行串口控制軟件Tera Term ,選擇COM1口,設(shè)置波特率為115200;
將Davinci板卡上電,
在Tera Term窗口會有uboot的啟動信息顯示。
串口燒寫:
由于dvflasher運行需要 .net FrameWork 2.0,所以先安裝這個程序。
將Davinci板卡斷電,
將DM6446開發(fā)板上的S3開關(guān)撥到全部為ON,在J4跳線處選上Nor Flash,用串口線連接PC主機與Davinci板卡;
將Davinci板卡上電,
在主機上運行命令行,在命令行輸入命令:dvflasher -r u-boot.bin,等燒寫完畢;
將Davinci板卡斷電,
將S3切換到Nor Flash啟動,即撥為1011111111,運行串口控制軟件Tera Term ,選擇COM1口,設(shè)置波特率為115200;
將Davinci板卡上電,
在Tera Term窗口會有uboot的啟動信息顯示。
串口燒寫nand flash:
將Davinci板卡斷電,
將DM6446開發(fā)板上的S3開關(guān)撥到:1101111111,在J4跳線處選上Nand Flash CS2,用串口線連接PC主機與Davinci板卡;
將Davinci板卡上電,
在主機上運行命令行,在命令行輸入命令:dvflasher -fnandbin u-boot_nand.bin,等燒寫完畢;
將Davinci板卡斷電,
將S3切換為Nand Flash啟動,即撥為全部為OFF,運行串口控制軟件Tera Term ,選擇COM1口,設(shè)置波特率為115200;
將Davinci板卡上電,
在Tera Term窗口會有uboot的啟動信息顯示。
2,燒寫Linux內(nèi)核
內(nèi)核指的是一個提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng)。
在Linux 內(nèi)核中,包括了:進程管理、定時器、中斷管理、內(nèi)存管理、模塊管理、虛擬文件系統(tǒng)接口、文件系統(tǒng)管理、設(shè)備驅(qū)動程序、進程間通信、網(wǎng)絡(luò)管理、系統(tǒng)啟動等操作系統(tǒng)功能的實現(xiàn)。
(1)編譯Linux內(nèi)核
當(dāng)板卡硬件有改動,或需要增加某些底層功能時,需要改動內(nèi)核模塊,可以使用如下命令來更改內(nèi)核模塊的配置:
make menuconfig
生成的配置文件保存在
mv_pro_4.0\montavista\pro\devkit\lsp\ti-davinci\arch\arm\defconfig
然后在:
mv_pro_4.0\montavista\pro\devkit\lsp\ti-davinci
目錄下輸入如下命令:
make ARCH=arm CROSS_COMPILE=arm_v5t_le- davinci_dm644x_defconfig
make ARCH=arm CROSS_COMPILE=arm_v5t_le- checksetconfig
make ARCH=arm CROSS_COMPILE=arm_v5t_le- uImage
cp arch/arm/boot/uImage /tftpboot/uImage
chmod a+r /tftpboot/uImage
就可以編譯出新的內(nèi)核。
更多的細(xì)節(jié)請參考《Building a Small Embedded Linux Kernel Example spraah2.pdf》。
(2)燒寫Linux內(nèi)核
從Linux服務(wù)器下載內(nèi)核映象文件并燒寫進Davinci板卡的Nor Flash中,我們使用板卡上的uboot,通過tftp協(xié)議,從Linux服務(wù)器上下載編譯好的內(nèi)核,過程如下:
a,將內(nèi)核文件uImage復(fù)制到Linux服務(wù)器的 /tftpboot/ 目錄下,
b,連接PC與Davinci板卡,需要連接串口線及網(wǎng)線,在連接串口線時需要將Davinci板卡斷電。
c,啟動運行串口控制軟件Tera Term
d,將Davinci板卡上電,在Tera Term窗口中按下任意鍵,進入輸入命令狀態(tài)
e,依次輸入如下命令:
tftpboot 0x80080000 uImage //從tftp服務(wù)器拷貝至內(nèi)存中
erase 0x2100000 22fffff //擦除2M的空間
cp.b 0x80080000 0x2100000 0x200000 //從內(nèi)存拷貝至Flash中
等待命令執(zhí)行完畢,就成功燒寫內(nèi)核文件進Nor Flash中了。
最后,在正式啟動板卡時要讀取flash上的內(nèi)核文件,還需要設(shè)置環(huán)境變量為從flash啟動,使用如下命令設(shè)置即可:
setenv bootcmd ‘bootm 0x2100000’
3,燒寫根文件系統(tǒng)
Linux引導(dǎo)啟動時,默認(rèn)使用的文件系統(tǒng)是根文件系統(tǒng)。其中一般都包括這樣一些子目錄:
etc, dev, usr, usr/bin, bin, var等。
etc目錄主要含有一些系統(tǒng)配置文件;dev含有設(shè)備特殊文件,用于使用文件操作語句操作設(shè)備;usr存放庫函數(shù)、手冊和其它一些文件。bin存放執(zhí)行程序;var用于存放系統(tǒng)運行時可變的數(shù)據(jù)或者是日志等信息。
根文件系統(tǒng)有多種格式,例如romfs、ramfs、jffs2、yaffs2等,我們以ramfs為例說明編譯及燒寫過程。
(1)制作ramdisk
在Linux服務(wù)器中制作ramdisk過程如下:
a,開辟一塊硬盤空間,這里定為14M,名字為ramrootfs,并格式化為ext2文件系統(tǒng):
dd if=/dev/zero of=ramrootfs bs=1k count=14336
mke2fs -F -m 0 -i 2000 ramrootfs
b,把虛擬盤掛載到目錄ramfs:
mount -o loop -t ext2 ramrootfs ramfs
c,復(fù)制所需根文件系統(tǒng)內(nèi)容至ramfs中
d,使用nfs方式調(diào)試,確認(rèn)文件系統(tǒng)可用。
e,跳到ramfs目錄外,卸載ramfs,并壓縮文件系統(tǒng)映象:
umount ramfs
cat ramrootfs | gzip -9 > ramdisk.gz
(2)燒寫ramdisk
從Linux服務(wù)器下載ramdisk.gz文件并燒寫進Davinci板卡的Nor Flash中, 我們使用板卡上的uboot,通過tftp協(xié)議,從Linux服務(wù)器上下載壓縮好的ramdisk.gz,過程如下:
a,將ramdisk.gz復(fù)制到Linux服務(wù)器的 /tftpboot/ 目錄下;
b,連接PC與Davinci板卡,需要連接串口線及網(wǎng)線,在連接串口線時需要將Davinci板卡斷電;
c,啟動運行串口控制軟件Tera Term;
d,將Davinci板卡上電,在Tera Term窗口中按下任意鍵,進入輸入命令狀態(tài);
e,依次輸入如下命令:
tftpboot 0x80080000 ramdisk.gz //從tftp服務(wù)器拷貝至內(nèi)存中
erase 0x2300000 0x28fffff //擦除6M的空間
cp.b 0x80080000 0x2300000 0x600000 //從內(nèi)存拷貝至Flash中
等待命令執(zhí)行完畢,就成功燒寫ramdisk根文件系統(tǒng)進Nor Flash中了。
最后,在正式啟動板卡時要讀取flash上的根文件系統(tǒng),還需要設(shè)置環(huán)境變量為從flash讀取,使用如下兩個命令設(shè)置即可:
setenv bootcmd 'cp.b 0x2300000 0x85000000 0x600000; bootm 0x2100000'
setenv bootargs console=ttyS0,57600n8 video=dm64xxfb:interface=composite:mode=pal ip=192.168.1.82::192.168.1.1 root=/dev/ram0 rw initrd=0x85000000,14M mem=112M
第一個命令中主要相關(guān)部分是cp.b 0x2300000 0x85000000 0x600000 ,作用是在Davinci板卡啟動時拷貝根文件系統(tǒng)至內(nèi)存中;
第一個命令中主要相關(guān)部分是root=/dev/ram0 rw initrd=0x85000000,14M ,作用是設(shè)置Davinci板卡啟動時采用ramdisk根文件系統(tǒng)。
轉(zhuǎn)自新浪博客,如有侵權(quán),請告知,會在第一時間刪除。
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/ufo995/archive/2009/12/12/4993672.aspx