以下是我們?cè)陂_(kāi)發(fā)過(guò)程中所使用的軟件: Windows: CCS 3.3 DSP程序編譯環(huán)境 TDS560USB 仿真器驅(qū)動(dòng) VMWare5.0 虛擬機(jī)軟件 Source Insight 3.5 軟件工程編輯工具 Tera Term 串口控制軟件 DVFlasher 串口flash燒寫工具 UltraEdit-32 文本編輯工具
Linux: dvsdk1.3 ARM交叉編譯工具鏈 GCC3.2.2 編譯器 VI 文本編輯工具
同時(shí),在linux下需要啟動(dòng)如下服務(wù): samba 通過(guò)網(wǎng)絡(luò)提供與windows共享文件功能 nfs 通過(guò)網(wǎng)絡(luò)給Davinci板卡提供根文件系統(tǒng) tftp 通過(guò)網(wǎng)絡(luò)下載文件至Davinci板卡 dhcp 動(dòng)態(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, 編譯庫(kù),生成x64P,由ARM端可執(zhí)行程序調(diào)用運(yùn)行 5, 編譯uboot并燒寫進(jìn)flash,燒寫內(nèi)核及根文件系統(tǒng)
三、搭建linux環(huán)境 安裝虛擬機(jī)與linux時(shí)請(qǐng)參考文檔《虛擬機(jī)軟件Vmware Workstation 5.0使用指南.doc》,需要注意幾點(diǎn): 1, 分配硬盤空間時(shí),至少需要12G; 2, 物理內(nèi)存推薦256M以上,安裝linux時(shí),swap空間大小加上物理內(nèi)存大小必須超過(guò)600M; 3, 安裝linux時(shí),可以使用光盤安裝,也可以使用硬盤上的ISO映象文件進(jìn)行安裝;與不用虛擬機(jī)在物理硬盤上安裝的過(guò)程是一樣的;在安裝好linux后,需要安裝VMware Tools。
ifconfig eth0 192.168.1.81 netmask 255.255.255.0 然后,Linux與Windows就可以互相ping通了。
四、安裝ARM程序的編譯環(huán)境
1. 安裝了RedHat Linux 9.0或其他較新linux版本,且安裝時(shí)應(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ù)字,表示版本號(hào),我們當(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ì)說(shuō)明以上這些文件如何安裝:
1、安裝ARM交叉編譯環(huán)境
(1)搭建MontaVista Linux開(kāi)發(fā)環(huán)境 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 運(yùn)行時(shí)會(huì)詢問(wèn)存放目錄,推薦為 /opt/mv_pro_4.0.1 。 以上3個(gè)命令生成3個(gè)壓縮包,先確認(rèn)生成的3個(gè)壓縮包: host $ cd /opt/mv_pro_4.0.1 host $ ls 有如下3個(gè)壓縮文件: 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 會(huì)生成一個(gè)目錄/opt/dvsdk_1_30_00_40, host $ ./xdc_setuplinux_#_#_#_#.bin host $ ./bios_setuplinux_5_#_#_#.bin 運(yùn)行時(shí)會(huì)詢問(wèn)存放目錄,指定為 /opt/dvsdk_1_30_00_40 。 在/opt/dvsdk_1_30_00_40下新建一個(gè)目錄,名為cg6x_6_0_15 執(zhí)行如下命令: host $ ./TI-C6x-CGT-v#.#.#.#.bin 運(yùn)行時(shí)會(huì)詢問(wèn)存放目錄,指定為 /opt/dvsdk_1_30_00_40/ cg6x_6_0_15 。 到這一步,所需要的工具鏈就安裝完成。下一步是進(jìn)行適當(dāng)?shù)穆窂脚渲谩?nbsp; (3)dvsdk工具鏈的路徑配置 對(duì)應(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程序編譯處,需要改動(dòng)相應(yīng)的CGTOOLS_C64X宏如下: CGTOOLS_C64X = $(DVSDK_INSTALL_DIR)/cg6x_6_0_15 至此,就可以進(jìn)行ARM端程序的編譯了。
2、系統(tǒng)配置 在進(jìn)行程序開(kāi)發(fā)調(diào)試時(shí),我們采用NFS與tftp等網(wǎng)絡(luò)通信方式共享Linux服務(wù)器中的資源,用于嵌入式Linux進(jìn)行訪問(wèn)、改寫。 本部分主要介紹包括NFS,DHCP服務(wù),samba服務(wù)以及DVEVM板部分參數(shù)的配置。 (1)設(shè)置NFS [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鍵進(jìn)入輸入狀態(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,請(qǐng)不要執(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接此運(yùn)行 bin dev home lib misc opt root tmp var boot etc initrd lost+found mnt proc sbin usr [root@DavinciServer root]# mkdir /tftpboot如果上面沒(méi)有目錄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)成功啟動(dò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ù)器 在vi的界面下按i鍵進(jìn)入輸入狀態(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ù) rpm -q samba 如果安裝了,會(huì)顯示版本號(hào)。如果沒(méi)有安裝,插入Linux安裝光盤,輸入下面命令: rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba* 2,samba配置 Samba是用來(lái)實(shí)現(xiàn)SMB(Server Messages Block)協(xié)議的一種軟件,是一套讓Unix/Linux系統(tǒng)能夠應(yīng)用Microsoft網(wǎng)絡(luò)通信協(xié)議的軟件,它可以和運(yùn)行Windows 98、Windows 2000等操作系統(tǒng)的計(jì)算機(jī)實(shí)現(xiàn)文件共享和打印機(jī)共享服務(wù)。 通過(guò)配置Samba服務(wù)器,可以提供Windows客戶機(jī)來(lái)訪問(wèn)Linux系統(tǒng)上共享的資源,也能夠在Linux上通過(guò)SMB協(xié)議訪問(wèn)Windows系統(tǒng)上的共享資源。
一、訪問(wèn)Samba服務(wù)器配置工具 要訪問(wèn)Samba服務(wù)器配置工具,只須依次單擊“主菜單→系統(tǒng)設(shè)置→服務(wù)器設(shè)置→Samba服務(wù)器”,即可打開(kāi)Samba服務(wù)器配置窗口。 小提示: 1.必須以root用戶身份才可以對(duì)Samba服務(wù)器進(jìn)行配置。 二、進(jìn)行服務(wù)器設(shè)置 這里首先要對(duì)Samba服務(wù)器的基本設(shè)置和安全選項(xiàng)進(jìn)行配置,單擊配置窗口上的“首選項(xiàng)→服務(wù)器設(shè)置”,即可打開(kāi)服務(wù)器設(shè)置對(duì)話框)。 1)基本設(shè)置
A. 驗(yàn)證模式:如果Windows主機(jī)不是位于NT域里,此處應(yīng)該選擇“共享”驗(yàn)證模式,這樣只有在連接Samba服務(wù)器上的指定共享時(shí)才要求輸入用戶名、密碼; 三、添加共享目錄 接下來(lái)是添加共享目錄,單擊Samba配置窗口工具欄上的“增加”按鈕,即可打開(kāi)一個(gè)添加共享對(duì)話框。 1)在該對(duì)話框上的“基本”標(biāo)簽頁(yè)上,指定要共享的目錄為某個(gè)存在的目錄,例如可以指定/tmp,再指定該目錄的基本權(quán)限是只讀還是讀/寫。 2)在“訪問(wèn)”標(biāo)簽頁(yè)上,可以指定允許所有用戶訪問(wèn)、或者只允許某些用戶訪問(wèn)。 四、從Windows訪問(wèn)Samba服務(wù)器 好了,現(xiàn)在萬(wàn)事俱備、只欠東風(fēng),只須啟動(dòng)Samba服務(wù)即可。打開(kāi)一個(gè)終端窗口,鍵入“/sbin/service smb start”命令,即可出現(xiàn)以下提示信息,表示Samba服務(wù)已經(jīng)啟動(dòng): # /sbin/service smb start 接下來(lái)的事情就簡(jiǎn)單了,在Windows里打開(kāi)“網(wǎng)上鄰居”,就可以看到我們剛才設(shè)置的Samba服務(wù)器了。當(dāng)然,我們?cè)谖募A的地址欄里直接輸入 \\192.168.1.81 能更快的訪問(wèn)到剛才共享出來(lái)的內(nèi)容。
(4)設(shè)置DVEVM 我們使用串口軟件Tera Term與Davinci板連接,設(shè)置波特率為115200,無(wú)校驗(yàn),1個(gè)停止位,無(wú)流控。設(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秒倒計(jì)時(shí)內(nèi)按任意鍵,進(jìn)入命令模式。下面輸入命令進(jìn)行配置,在uBoot下輸入出錯(cuò)只能用backspace刪除,而不能用左右鍵移動(dòng)光標(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
說(shuō)明:此配置設(shè)置波特率為115200,采用動(dòng)態(tài)分配IP,內(nèi)核從Linux服務(wù)器使用tftp協(xié)議下載uImage,根文件系統(tǒng)從Linux服務(wù)器使用NFS方式訪問(wèn)共享路徑/root/armfs,這樣的配置適合程序的調(diào)試運(yùn)行。這些部分的設(shè)置都是可以改動(dòng)的,具體參見(jiàn)《DVEVM Getting Started Guide.pdf》,關(guān)于uboot的命令使用,請(qǐng)參考《U-Boot命令 emLinuxARM.pdf》。
(5)編譯調(diào)試工具框圖
五、安裝DSP程序的編譯環(huán)境 1、安裝CCS3.3 1,解壓并安裝Code_Composer_Studio_v3.3_Build_3.3.38.2.zip 一般使用默認(rèn)的配置即可,但是要注意在選擇仿真芯片類型時(shí),必須同時(shí)選上C6000、OMAP,以及TMS470系列,這是由于需要同時(shí)支持DSP與ARM的仿真運(yùn)行。 2,運(yùn)行CCS_v3.3_SR5_3.3.54.1.exe,采用默認(rèn)的配置即可。
2、安裝TDS560USB驅(qū)動(dòng)
(1)安裝TDS560USB驅(qū)動(dòng)時(shí)注意事項(xiàng)
為發(fā)揮TDS560USB 仿真器的性能,主機(jī)應(yīng)具備USB2.0接口。如果沒(méi)有USB2.0的接口,最好使用PCI-USB2.0 or PCMCIA-USB2.0轉(zhuǎn)接卡。
請(qǐng)不要帶電拔插JTAG電纜。
在移動(dòng)和搬運(yùn)TDS560USB系統(tǒng)時(shí),請(qǐng)注意TDS560 POD上的線纜不能負(fù)重,否則內(nèi)部電纜容易損壞。
(2)USB設(shè)備驅(qū)動(dòng)程序安裝
然后將電源與TDS560USB仿真器相連,此時(shí)POWER燈亮,READY閃爍。
按照Windows 的“發(fā)現(xiàn)新硬件”提示指定 WintechDigital TDS560USB設(shè)備驅(qū)動(dòng)程序所在的目錄。在產(chǎn)品安裝光盤的drivers目錄下 (Win98/SE 是在 drivers\win98_me, Win2000/XP是drivers\win2k_xp )。 設(shè)備驅(qū)動(dòng)安裝完成后,Windows將在設(shè)備列表中列出TDS560USB Emulator for Windows 98 或TDS560USB Emulator for Windows 2000/XP/2003。
注:
如果找不到這個(gè)設(shè)備,請(qǐng)檢查硬件的連接是否正確。
如果誤把TDS560USB Emulator for Windows 98驅(qū)動(dòng)程序安裝到Windows 2000/XP/2003系統(tǒng)中,請(qǐng)?jiān)谠O(shè)備管理器中對(duì)該設(shè)備使用“更新驅(qū)動(dòng)程序”功能。
(3)安裝TDS560USB仿真器工具軟件
軟件安裝完成后,可以在桌面上看到 “WintechDigital ” 快捷方式圖標(biāo),同時(shí)在CCS目錄下建立“TDS560USB”目錄。 如果需要更換CCS,請(qǐng)重新運(yùn)行Setup.exe卸載TDS560USB仿真器工具軟件,并再次運(yùn)行Setup.exe,選定新的DSP及新的CCS路徑。 3、進(jìn)行CCS setup 首先要注意: CCS的版本需要是3.2版本或更高版本; 設(shè)置前必須已經(jīng)運(yùn)行過(guò)TDS560USB 仿真器光盤所附帶的支持工具setup.exe 。
1.CCS Setup啟動(dòng)后,選擇”Create Board”,雙擊 WintechDigital TDS560USB Emulator. 2. 設(shè)置連接名稱:TDS560USB Davinci 3. 不用作任何改動(dòng),直接完成。 4.選擇TDS560USB Davinci ,并在中欄雙擊或拖ICEPICK_C到左欄中 5.在彈出窗口中設(shè)置CPU的個(gè)數(shù)為2 6.點(diǎn)擊next 跳過(guò)。 7.設(shè)置Subpath name 和端口號(hào),名字隨便取,但是端口號(hào)ARM必須為16,DSP為18。 8.以上步驟完成后,選擇左欄的ARM9 9.在中間欄拖ARM9 CPU到左欄中,掃描鏈中的ARM9處理器。 10.設(shè)置ARM9處理器的GEL 文件 此處需要選中隨板提供的 DaVinciEVM_arm.gel 文件 11.開(kāi)始設(shè)置DSPC64+,在左欄中選中\(zhòng)dSPC64,然后把中間欄的C6400PLUS拖到左欄的DSPC64中 12.設(shè)置C64PLUS處理器的GEL文件。 此處需要選中隨板提供的 DaVinciEVM_dsp.gel 文件 13.到此,設(shè)置工作完成,存儲(chǔ)并退出CCS Setup 。
4、運(yùn)行CCS
CCS及驅(qū)動(dòng)都安裝完成之后,在CCS運(yùn)行前,最好先運(yùn)行一下 “桌面 \wintechdigital\ RESET TDS560USB”,如果復(fù)位正常,則運(yùn)行CCS進(jìn)行實(shí)時(shí)仿真,如果不能正常復(fù)位,請(qǐng)拔下仿真器電源和USB電纜,重新連接硬件,并檢查硬件連接和軟件安裝是否正確。
六、程序編譯
下面以視頻編解碼V1.2版本的編譯為例,來(lái)說(shuō)明調(diào)試程序操作步驟。
V1.2版本中有5部分,分別是:
解碼算法 : VidDec_lib 編碼算法 : VidEnc_lib 編譯x64P環(huán)境 : video_copy ARM運(yùn)行程序 : videoloop 運(yùn)行目錄 : loop
VidDec_lib 與VidEnc_lib目錄推薦放在CCS安裝路徑下的MyProjects目錄下,我的存放路徑為:C:\CCStudio_v3.3\MyProjects 。 video_copy、videoloop與loop目錄都存放在Linux服務(wù)器下,loop目錄必須存放在NFS所共享的、Davinci板卡可以訪問(wèn)的根文件系統(tǒng)內(nèi),而video_copy與videoloop目錄沒(méi)有存放路徑的限制,推薦將這兩個(gè)目錄存放在同一路徑下。 1、在Windows上編譯DSP端運(yùn)行庫(kù) 啟動(dòng)CCS,在CCS中分別編譯視頻解碼工程VidDec_lib及視頻編碼工程VidEnc_lib,得到所生成的庫(kù)文件VidDec_lib.lib及VidEnc_lib.lib。 2、在Linux中編譯DSP可執(zhí)行程序 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來(lái)實(shí)現(xiàn)以上兩次改名復(fù)制。
在linux環(huán)境下的video_copy\servers\video_copy目錄下先執(zhí)行 make clean 然后執(zhí)行 make 生成DSP端的可執(zhí)行文件video_copy.x64P;并且將video_copy.x64P拷貝至運(yùn)行目錄loop中。以上的video_copy.x64P生成并拷貝至運(yùn)行目錄可以使用同目錄下的mkall腳本執(zhí)行文件來(lái)實(shí)現(xiàn)。(腳本是為了簡(jiǎn)化調(diào)試步驟而使用的,大家自己寫出就是了)
3、在Linux中編譯ARM可執(zhí)行程序 這一步的make及拷貝也可以使用同目錄下的mkall腳本文件來(lái)執(zhí)行。 4、啟動(dòng)板卡,執(zhí)行程序
以上的2、3、4步使用mkall腳本文件需要注意: IP地址與路徑必須與實(shí)際情況匹配,特別是在程序版本升級(jí)及Linux服務(wù)器更換時(shí)。 編譯x64P時(shí),注意要先 make clean 。 七、脫機(jī)運(yùn)行 在程序調(diào)試成功,并且版本穩(wěn)定之后,我們需要嵌入式Linux脫離服務(wù)器的支持,單獨(dú)運(yùn)行起來(lái)。這時(shí),需要有完整的Linux操作系統(tǒng)各部分,包括 BootLoader,內(nèi)核,根文件系統(tǒng)這三部分。 Davinci板卡采用的BootLoader是uboot,內(nèi)核提供了源文件,編譯即可得到,根文件系統(tǒng)我們分別使用過(guò)ramdisk及yaffs2這兩種方式。 Davinci板卡采用的存儲(chǔ)介質(zhì)是Flash,根據(jù)功能差異分為Nor Flash與Nand Flash兩種。 脫機(jī)運(yùn)行前需要將uboot、內(nèi)核及根文件系統(tǒng)燒寫到Flash中,然后在uboot中進(jìn)行相應(yīng)的配置。
Davinci的一般啟動(dòng)過(guò)程如下: Rbl->[ubl->] uboot->uImage->rootfs->用戶程序 在Nor flash上的啟動(dòng)過(guò)程: 首先運(yùn)行芯片中的Rbl,然后啟動(dòng)flash上的uboot,加載uImage,使用rootfs,運(yùn)行用戶可執(zhí)行程序。 在Nand flash上的啟動(dòng)過(guò)程: 首先運(yùn)行芯片中的Rbl,然后ubl,再啟動(dòng)uboot,加載uImage,使用rootfs,運(yùn)行用戶可執(zhí)行程序。
下面以運(yùn)行在Nor flash上的ramdisk文件系統(tǒng)為例說(shuō)明。下面提到的Flash,如果沒(méi)有指定為Nand Flash,則Flash就指的是Nor Flash。
1,燒寫uboot 依次輸入如下命令: make clobber make davinci_config make ARCH=arm 就生成了可執(zhí)行文件 u-boot.bin 。 (2)燒寫uboot 注意: 在連接仿真器及串口線,撥動(dòng)S3開(kāi)關(guān),切換J4跳線時(shí),必須要在斷電情況下操作。
仿真器燒寫: 將Davinci板卡斷電, 將DM6446開(kāi)發(fā)板上的S3開(kāi)關(guān)撥到全部為ON,在J4跳線處選上Nor Flash,連接仿真器; 將Davinci板卡上電, 打開(kāi)CCS(需要設(shè)置CCS為仿真模式),在菜單中選擇 File-- Load Program ,找到Flash的燒寫程序flashwrite.out ,然后運(yùn)行,根據(jù)提示分別輸入uboot文件名u-boot.bin,及偏移地址0,等燒寫完畢即可; 將Davinci板卡斷電, 將S3切換到Nor Flash啟動(dòng),即撥為1011111111,運(yùn)行串口控制軟件Tera Term ,選擇COM1口,設(shè)置波特率為115200; 將Davinci板卡上電, 在Tera Term窗口會(huì)有uboot的啟動(dòng)信息顯示。
串口燒寫: 由于dvflasher運(yùn)行需要 .net FrameWork 2.0,所以先安裝這個(gè)程序。 將Davinci板卡斷電, 將DM6446開(kāi)發(fā)板上的S3開(kāi)關(guān)撥到全部為ON,在J4跳線處選上Nor Flash,用串口線連接PC主機(jī)與Davinci板卡; 將Davinci板卡上電, 在主機(jī)上運(yùn)行命令行,在命令行輸入命令:dvflasher -r u-boot.bin,等燒寫完畢; 將Davinci板卡斷電, 將S3切換到Nor Flash啟動(dòng),即撥為1011111111,運(yùn)行串口控制軟件Tera Term ,選擇COM1口,設(shè)置波特率為115200; 將Davinci板卡上電, 在Tera Term窗口會(huì)有uboot的啟動(dòng)信息顯示。
串口燒寫nand flash: 將Davinci板卡斷電, 將DM6446開(kāi)發(fā)板上的S3開(kāi)關(guān)撥到:1101111111,在J4跳線處選上Nand Flash CS2,用串口線連接PC主機(jī)與Davinci板卡; 將Davinci板卡上電, 在主機(jī)上運(yùn)行命令行,在命令行輸入命令:dvflasher -fnandbin u-boot_nand.bin,等燒寫完畢; 將Davinci板卡斷電, 將S3切換為Nand Flash啟動(dòng),即撥為全部為OFF,運(yùn)行串口控制軟件Tera Term ,選擇COM1口,設(shè)置波特率為115200; 將Davinci板卡上電, 在Tera Term窗口會(huì)有uboot的啟動(dòng)信息顯示。 2,燒寫Linux內(nèi)核 在Linux 內(nèi)核中,包括了:進(jìn)程管理、定時(shí)器、中斷管理、內(nèi)存管理、模塊管理、虛擬文件系統(tǒng)接口、文件系統(tǒng)管理、設(shè)備驅(qū)動(dòng)程序、進(jìn)程間通信、網(wǎng)絡(luò)管理、系統(tǒng)啟動(dòng)等操作系統(tǒng)功能的實(shí)現(xiàn)。 (1)編譯Linux內(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é)請(qǐng)參考《Building a Small Embedded Linux Kernel Example spraah2.pdf》。 (2)燒寫Linux內(nèi)核 a,將內(nèi)核文件uImage復(fù)制到Linux服務(wù)器的 /tftpboot/ 目錄下, b,連接PC與Davinci板卡,需要連接串口線及網(wǎng)線,在連接串口線時(shí)需要將Davinci板卡斷電。 c,啟動(dòng)運(yùn)行串口控制軟件Tera Term d,將Davinci板卡上電,在Tera Term窗口中按下任意鍵,進(jìn)入輸入命令狀態(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)核文件進(jìn)Nor Flash中了。 最后,在正式啟動(dòng)板卡時(shí)要讀取flash上的內(nèi)核文件,還需要設(shè)置環(huán)境變量為從flash啟動(dòng),使用如下命令設(shè)置即可: setenv bootcmd ‘bootm 0x2100000’ 3,燒寫根文件系統(tǒng) 根文件系統(tǒng)有多種格式,例如romfs、ramfs、jffs2、yaffs2等,我們以ramfs為例說(shuō)明編譯及燒寫過(guò)程。 (1)制作ramdisk a,開(kāi)辟一塊硬盤空間,這里定為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 a,將ramdisk.gz復(fù)制到Linux服務(wù)器的 /tftpboot/ 目錄下; b,連接PC與Davinci板卡,需要連接串口線及網(wǎng)線,在連接串口線時(shí)需要將Davinci板卡斷電; c,啟動(dòng)運(yùn)行串口控制軟件Tera Term; d,將Davinci板卡上電,在Tera Term窗口中按下任意鍵,進(jìn)入輸入命令狀態(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)進(jìn)Nor Flash中了。 最后,在正式啟動(dòng)板卡時(shí)要讀取flash上的根文件系統(tǒng),還需要設(shè)置環(huán)境變量為從flash讀取,使用如下兩個(gè)命令設(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 第一個(gè)命令中主要相關(guān)部分是cp.b 0x2300000 0x85000000 0x600000 ,作用是在Davinci板卡啟動(dòng)時(shí)拷貝根文件系統(tǒng)至內(nèi)存中; 第一個(gè)命令中主要相關(guān)部分是root=/dev/ram0 rw initrd=0x85000000,14M ,作用是設(shè)置Davinci板卡啟動(dòng)時(shí)采用ramdisk根文件系統(tǒng)。 轉(zhuǎn)自新浪博客,如有侵權(quán),請(qǐng)告知,會(huì)在第一時(shí)間刪除。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/ufo995/archive/2009/12/12/4993672.aspx |
|
來(lái)自: 春華_秋實(shí) > 《視頻監(jiān)控》