目錄 一、達(dá)芬奇(DaVinci)技術(shù)介紹
1、TMS320DM6446的結(jié)構(gòu)特點
2、達(dá)芬奇技術(shù)及其芯片的應(yīng)用和開發(fā)前景
二、Davinci調(diào)試環(huán)境搭建的幾大步
1、Davinci調(diào)試環(huán)境搭建所需軟件
2、Davinci調(diào)試環(huán)境搭建及使用總體步驟
三、搭建linux環(huán)境
四、安裝ARM程序的編譯環(huán)境
1、安裝ARM交叉編譯環(huán)境
(1)搭建MontaVista Linux開發(fā)環(huán)境
(2)安裝dvsdk工具鏈
(3)dvsdk工具鏈的路徑配置
2、系統(tǒng)配置
(1)設(shè)置NFS
(2)設(shè)置DHCP服務(wù)器
(3)配置samba服務(wù)
(4)設(shè)置DVEVM
(5)編譯調(diào)試工具框圖
五、安裝DSP程序的編譯環(huán)境
1、安裝CCS3.3
2、安裝TDS560USB驅(qū)動
(1)安裝TDS560USB驅(qū)動時注意事項
(2)USB設(shè)備驅(qū)動程序安裝
(3)安裝TDS560USB仿真器工具軟件
3、進(jìn)行CCS setup
4、運行CCS
六、程序編譯
1、在Windows上編譯DSP端運行庫
2、在Linux中編譯DSP可執(zhí)行程序
3、在Linux中編譯ARM可執(zhí)行程序
4、啟動板卡,執(zhí)行程序
六、脫機運行
1,燒寫uboot
(1)編譯uboot
(2)燒寫uboot
2,燒寫Linux內(nèi)核
(1)編譯Linux內(nèi)核
(2)燒寫Linux內(nèi)核
3,燒寫根文件系統(tǒng)
(1)制作ramdisk
(2)燒寫ramdisk
(DaVinci)技術(shù)介紹
面對日新月異的多媒體標(biāo)準(zhǔn)與應(yīng)用,德州儀器公司提供了基于達(dá)芬奇(DaVinci)技術(shù)及其產(chǎn)品(如TMS320DM6446)的解決方案,以簡化數(shù)字視頻創(chuàng)新。包括基于數(shù)字信號處理器(DSP)的片上系統(tǒng)(SoC)以及多媒體編解碼器、應(yīng)用編程接口(API)、框架與開發(fā)工具等。
達(dá)芬奇技術(shù)由達(dá)芬奇處理器、達(dá)芬奇軟件、達(dá)芬奇開發(fā)工具和達(dá)芬奇技術(shù)支持系統(tǒng)等組件優(yōu)化構(gòu)成。其中,達(dá)芬奇處理器基于業(yè)界最高性能的DSP平臺-TI TMS320C6000,利用了TI最新的C64x+ DSP內(nèi)核。達(dá)芬奇處理器包含基于可擴(kuò)展、可編程DSP的SoC(可從DSP與ARM內(nèi)核進(jìn)行定制),同時還包含優(yōu)化的加速器與外設(shè),以全方位滿足各種數(shù)字視頻終端設(shè)備對價格、性能以及功能等多方面的需求。
運行于達(dá)芬奇處理器之上的達(dá)芬奇軟件充分利用芯片資源。其內(nèi)置于可配置的框架內(nèi),通過流行操作系統(tǒng)內(nèi)部已公布的API提供,以實現(xiàn)快速的軟件實施。
達(dá)芬奇技術(shù)為各種應(yīng)用領(lǐng)域及設(shè)計提供一系列工具與套件,其中包括:低成本入門工具、完整的開發(fā)套件以及參考設(shè)計,以加速OEM廠商的設(shè)計與開發(fā)進(jìn)程。ARM/DSP集成開發(fā)環(huán)境(IDE)、操作系統(tǒng)工具以及DSP工具使開發(fā)人員能夠在熟悉的環(huán)境中編程,同時還能獲得達(dá)芬奇技術(shù)的優(yōu)勢。TMS320DM6446芯片就是達(dá)芬奇(DaVinci)技術(shù)的杰出代表。
、TMS320DM6446的結(jié)構(gòu)特點
TMS320DM6446的結(jié)構(gòu)圖如圖1所示。
結(jié)構(gòu)特點
(1)高性能。采用低功耗、高性能的32位TMS320C64x內(nèi)核和ARM926EJ-S內(nèi)核,工作頻率分別高達(dá)594MHz和297MHz;支持多媒體處理技術(shù),采用的是TMS320C64x DSP內(nèi)核,增強了對視頻和音頻的解碼能力。
(2)低功耗。多電源管理模式,雙內(nèi)核電壓供給為1.6V;ARM926EJ-S內(nèi)核具有16KB指令和8KB數(shù)據(jù)Cache,TMS320C64x DSP內(nèi)核具有32KB程序RAM/Cache、80KB數(shù)據(jù)RAM/Cache及64KB未定義RAM/Cache;支持3.3V或1.8V的I/O接口和存儲器接口。
(3)專用的視頻圖像處理器和視頻處理子系統(tǒng)。專用的視頻圖像處理器用于對視頻數(shù)據(jù)處理;視頻處理子系統(tǒng)包括1個視頻前端輸入接口和1個視頻末端輸出接口,視頻前端輸入接口用于接收外部傳感器或視頻譯碼器等圖像,視頻末端輸出接口輸出圖像到SDTV、LCD、HDTV等顯示屏上。
(4)存儲容量。有256MB的32位DDR2 SDRAM存儲空間,128MB的16位FLASH存儲空間。
(5)眾多的外設(shè)。64通道增強型DMA控制器;串行端口(3個UARTs、 、SPI、音頻串口);3個64位通用定時器;10/100M以太網(wǎng);USB2.0端口;3個PWM端口;多達(dá)71個通用I/O口;支持MMC/SD/CF卡等。
(6)時鐘控制。時鐘源:27MHz系統(tǒng)振蕩器;24MHzUSB振蕩器。
ARM926EJ-S內(nèi)核
ARM926EJ-S內(nèi)核是采用管道化流水線的32位RISC處理器,同時配備Thumb擴(kuò)展。它能夠處理32位或16位的指令和8位、16位、32位的數(shù)據(jù)。它通過使用協(xié)處理器CP15和保護(hù)模塊使體系結(jié)構(gòu)得到增強,并提供數(shù)據(jù)和程序內(nèi)存管理單元(MMU)。
MMU具有兩個64項的轉(zhuǎn)換旁路緩存器(TLB)用于指令和數(shù)據(jù)流,每項均可映射存儲器的段、大頁和小頁。為了保證內(nèi)核周期的存取指令和數(shù)據(jù),提供了獨立的16K字節(jié)指令Cache和8K字節(jié)數(shù)據(jù)Cache,指令和數(shù)據(jù)Cache都是通過VIVT四路連接。另外,還提供一個寫緩沖用于提升內(nèi)核性能,其緩沖數(shù)據(jù)容量高達(dá)17字。
TMS320C64x DSP內(nèi)核
TMS320C64x DSP內(nèi)核構(gòu)建在VelociTI.2體系結(jié)構(gòu)的基礎(chǔ)上,是VelociTI.2體系結(jié)構(gòu)的進(jìn)一步增強,以其C64x內(nèi)核的先進(jìn)超長指令字(VLIW)結(jié)構(gòu),獲得當(dāng)前應(yīng)用設(shè)備所需要的極高性能。
在結(jié)構(gòu)上其特點為:1)C64x片內(nèi)有2個數(shù)據(jù)通道、8個功能單元和2個一般目的寄存器文件(A和B)。而8個功能單元和2個寄存器文件又分成了相同的兩組,每組占用一個數(shù)據(jù)通道。兩個數(shù)據(jù)通道之間包含有兩個數(shù)據(jù)交叉通路。2)C64xDSP采用超長指令字(VLIW),即在每個時鐘周期最高可提供8條32位指令,總字長為256位的指令包同時分配到8個并行處理單元。在594MHz的時鐘頻率下,當(dāng)片內(nèi)8個處理單元同時運行時,其最大處理能力可以達(dá)到4800MIPS。3)C64x DSP具有雙16bit擴(kuò)充功能,芯片能在一個周期內(nèi)完成雙16位的乘法、加減法、比較、移位等操作。C64x通過把DSP運算壓縮在較少的周期里,加速通信和圖像應(yīng)用。在增強并行性的擴(kuò)展中,四組8位/兩組16位指令允許每秒進(jìn)行約90億次8位乘法上累加周期(MAC)運算。
系統(tǒng)控制功能
TMS320DM6446微處理器的系統(tǒng)控制模塊提供了看門狗(WT)、中斷控制器、電源管理控制器、復(fù)位控制器及2個片上振蕩器。
視頻處理子系統(tǒng)(VPSS)
TMS320DM6446中的視頻處理子系統(tǒng)有兩個接口,分別為用于視頻輸入的視頻前端輸入(VPFF)接口和用于圖像輸出的視頻末端輸出(VPBE)接口。
視頻前端輸入(VPFE)接口由1個CCD控制器(CCDC)、1個預(yù)處理器、柱狀模塊、自動曝光/白平衡/聚焦模塊(H3A)和寄存器組成。CCD控制器可以與視頻解碼器、CMOS傳感器或電荷耦合裝置連接;預(yù)處理器是一個實時的圖形處理器,它把CMOS或CCD得到的原始圖形從RGB(三原色)轉(zhuǎn)變?yōu)閅UV4:2:0編碼;柱狀模塊和H3A模塊則提供原始圖形信息。
視頻末端輸出(VPBE)接口由1個在線視頻顯示處理器(OSD)和1個視頻編碼器組成。在線視頻顯示處理器既能夠顯示兩組獨立的視頻窗口或兩組獨立的OSD窗口,還可以以1個視頻窗口、1個OSD窗口和1個屬性窗口的形式顯示。視頻解碼器以54MHz進(jìn)行D/A轉(zhuǎn)換,可以提供NTSC/PAL、S等格式的視頻或音頻輸出。
電源管理
TMS320DM6446有三種電源管理模式:備用電源模式、低功耗運行模式和正常運行模式。備用電源模式下運行的功耗是最低的,DSP核和視頻處理器子系統(tǒng)都不運行,除了通用I/O、UART和PWM運行以外,其他的外設(shè)都不運行,而且只有27MHz時鐘工作。低功耗模式下,僅僅運行一些ARM的基本功能,DSP核和視頻處理器子系統(tǒng)也都不運行,除了通用I/O、UART、PWM、SPI和定時器運行以外,其他的外設(shè)都不運行,而且也是只有27MHz時鐘工作。正常運行模式下,除了所有的模塊和外設(shè)都可以運行外,兩個時鐘也正常運行。
外部存儲器接口
在TMS320DM6446中有與幾種形式的外部存儲器接口:異步EMIFA(NOR Flash、SDRAM)、NARD Flash以及CF卡等。異步EMIFA包括1個8位或16位數(shù)據(jù)線,1個24位地址總線,4個專用片選線,支持的存儲接口有NAND、ATA/CF、主機端接口。NAND接口包括的存儲類型有NAND卡、SM卡和xD卡。DDR2存儲控制器用于與16位或32位的DDR2 SDRAM連接。DDR2 SDRAM在達(dá)芬奇(DaVinci)技術(shù)中有很重要的作用,它可以用來緩沖視頻輸入圖形數(shù)據(jù),作為OSD的緩沖器,存儲ARM和DSP代碼等。
外圍控制模塊
TMS320DM6446有3個64位通用定時器和3個PWM模塊。其中定時器0和1具有32位通用定時器模式,定時器2具有WD模式以及產(chǎn)生ARM和DSP中斷,產(chǎn)生EDMA同步事件。而PWM模塊既可以作周期性記數(shù),也可以作重復(fù)記數(shù)。
TMS320DM6446微處理器有64個獨立的通道高級DMA控制器。DMA控制器用于可響應(yīng)內(nèi)部和外部設(shè)備的請求。在MPU TI926(ARM926EJ-S)運行條件下,完成外部寄存器/內(nèi)部寄存器和外部設(shè)備之間的數(shù)據(jù)傳輸。DMA的設(shè)置取決于MPU TI926(ARM926EJ-S)內(nèi)核。
GPIO外設(shè)控制器可以配置通用管腳為輸入或輸出。當(dāng)配置為輸出管腳時,寫內(nèi)部寄存器可以控制輸出管腳的狀態(tài)。當(dāng)配置為輸入管腳時,可以通過讀內(nèi)部寄存器的狀態(tài)位知輸入的狀態(tài)。此外,GPIO外設(shè)可以產(chǎn)生CPU中斷和DMA事件。GPIO管腳以16個為一列,它支持的功能如下:54個1.8V GPIO管腳和17個3.3V GPIO管腳;從O列開始每列有8個GPIO[0:7]中斷,可以在上升沿或下降沿觸發(fā)中斷等。
TMS320DM6446支持多種串行接口:(1)3個UART接口,其中UART2具有的功能是:對于接收器和發(fā)送器的FIFO有16個字節(jié)的存儲空間,DMA既可以接收數(shù)據(jù)也可以發(fā)送數(shù)據(jù),在自動控制時可編程自動發(fā)送請求和自動清除請求,還具有內(nèi)部診斷功能。(2)SPI外設(shè),它提供一個可編程長度寄存器,通過3或4線接口與其他SPI設(shè)備連接。(3) 接口,可以與遵守總線2.1規(guī)約的其設(shè)備連接。在模式下通過2條串行總線可以發(fā)送/接收8位數(shù)據(jù)。(4)音頻串行接口(ASP),ASP模塊具有的功能為:全雙工通信,直接與媒體數(shù)字信號編解碼器、A/D、D/A等連接。
此外,還有USB2.0接口,USB2.0具有以下特點:作為外設(shè)時可達(dá)到高速480Mb/s和全速12Mb/s傳輸,作為主機時可以進(jìn)行高速、全速和低速傳輸,與標(biāo)準(zhǔn)的UTMI+ PHY接口連接,F(xiàn)IFO中還有4K可編程RAM。
以太網(wǎng)控制器(EMAC)模塊在網(wǎng)絡(luò)與芯片間提供一個接口,支持10M/100M以太網(wǎng)的訪問,支持硬件流控制和QOS。
數(shù)據(jù)輸入/輸出管理(MDIO)模塊是用于管理與芯片相連的PHY設(shè)備。主機軟件使用MDIO模塊配置每個PHY對應(yīng)EMAC的參數(shù),找回對應(yīng)結(jié)果,以便于在EMAC模塊配置所需的參數(shù)。
、達(dá)芬奇技術(shù)及其芯片的應(yīng)用和開發(fā)前景
由于達(dá)芬奇技術(shù)成功實現(xiàn)數(shù)字視頻需要四大要素的最新進(jìn)步,即:處理器、開發(fā)工具、軟件以及系統(tǒng)專業(yè)技術(shù),因此達(dá)芬奇技術(shù)為數(shù)字視頻的當(dāng)前變革打下基礎(chǔ)。
顯著降低系統(tǒng)成本
達(dá)芬奇技術(shù)利用數(shù)字信號處理與集成電路專業(yè)技術(shù)來提供高度集成的片上系統(tǒng)(SoC),集成了可編程數(shù)字信號處理器(DSP)內(nèi)核、ARM處理器、視頻加速協(xié)處理器、存儲器、I/O帶寬、平衡的內(nèi)部互連以及專用外設(shè)組合,使硬件材料清單成本降低了50%。
集成代碼的數(shù)字視頻子系統(tǒng)的 硬件和軟件
為了真正意義上地讓開發(fā)人員克服最初的障礙并且加快產(chǎn)品上市進(jìn)程,完整的達(dá)芬奇軟件架構(gòu)涵蓋低級的OS驅(qū)動程序乃至應(yīng)用API,使開發(fā)人員無需投入過多力量編寫及優(yōu)化編解碼器或進(jìn)行DSP編程,即能夠?qū)崿F(xiàn)數(shù)字視頻功能,從而使開發(fā)人員能夠?qū)⒕械介_發(fā)可最大化附加值的產(chǎn)品上來。例如,在過去開發(fā)電子器件時,即使是最基本的功能,工程師們也需要進(jìn)行柵極布局;而現(xiàn)在開發(fā)人員不再需要了解其視頻應(yīng)用中實施具體CODEC引擎(如:MPEG-2、H.263、WMA9)的細(xì)節(jié),開發(fā)人員無需修改上層應(yīng)用代碼即可以使用理想CODEC的API,顯著簡化視頻CODEC處理的具體低層次細(xì)節(jié),使開發(fā)人員可以立足于開發(fā)的功能性。
通過提供可隨時投產(chǎn)的軟件,如硬件驅(qū)動器、人工優(yōu)化的CODEC、以及用于管理網(wǎng)絡(luò)中音頻/視頻同步和數(shù)據(jù)流的應(yīng)用代碼的整體組合,達(dá)芬奇技術(shù)使開發(fā)人員無需了解如何編程DSP即可實現(xiàn)一流的視頻功能。
開放式的平臺開發(fā)
數(shù)字視頻系統(tǒng)的復(fù)雜性主要歸因于開發(fā)人員必須創(chuàng)建和管理的眾多組件。達(dá)芬奇技術(shù)通過提供開放式平臺來降低系統(tǒng)復(fù)雜性-在該平臺之上,TI及其第三方合作伙伴已經(jīng)開發(fā)和集成了構(gòu)成數(shù)字視頻系統(tǒng)所需要的各種組件。 達(dá)芬奇技術(shù)提供的開放式開發(fā)平臺同時也擴(kuò)展到了應(yīng)用程序。達(dá)芬奇軟件初始將支持Linux,將來會陸續(xù)支持其他操作系統(tǒng)。Linux支持的內(nèi)容包括外設(shè)驅(qū)動器、實時應(yīng)用管理、應(yīng)用級API以及可隨時投產(chǎn)的代碼。
調(diào)試環(huán)境搭建的幾大步
、Davinci調(diào)試環(huán)境搭建所需軟件
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并燒寫進(jìn)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映象文件進(jìn)行安裝;與不用虛擬機在物理硬盤上安裝的過程是一樣的;在安裝好linux后,需要安裝VMware Tools。
注意:由于后面需要與Windows之間進(jìn)行通訊,我們的虛擬機網(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通了。
程序的編譯環(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-CGTEVAL-v6.0.15.1.bin
xdc_setuplinux_3_00_02_14.bin
下面詳細(xì)說明以上這些文件如何安裝:
、安裝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 。
到這一步,所需要的工具鏈就安裝完成。下一步是進(jìn)行適當(dāng)?shù)穆窂脚渲谩?div style="height:15px;">
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
至此,就可以進(jìn)行ARM端程序的編譯了。
、系統(tǒng)配置
嵌入式系統(tǒng)由于對成本、體積、功耗等方面的要求,一般不能安裝發(fā)行版的Linux系統(tǒng)。所以Davinci系統(tǒng)也需要相應(yīng)的開發(fā)環(huán)境,來進(jìn)行程序的開發(fā)調(diào)試。
在進(jìn)行程序開發(fā)調(diào)試時,我們采用NFS與tftp等網(wǎng)絡(luò)通信方式共享Linux服務(wù)器中的資源,用于嵌入式Linux進(jìn)行訪問、改寫。
本部分主要介紹包括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鍵進(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,請不要執(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 Evaluation 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鍵進(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
)配置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ù)器進(jìn)行配置。
2.也可以在終端窗口輸入redhat-config-samba命令打開配置窗口。
二、進(jìn)行服務(wù)器設(shè)置
這里首先要對Samba服務(wù)器的基本設(shè)置和安全選項進(jìn)行配置,單擊配置窗口上的“首選項→服務(wù)器設(shè)置”,即可打開服務(wù)器設(shè)置對話框)。
1)基本設(shè)置
在對話框的“基本”標(biāo)簽頁,我們可以指定Linux主機所在的工作組名稱,需要注意的是,此處的工作組名稱不一定非得與Windows主機所在的工作組名稱一致。
2)安全設(shè)置
現(xiàn)在就進(jì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)然,我們在文件夾的地址欄里直接輸入 能更快的訪問到剛才共享出來的內(nèi)容。
4)設(shè)置DVEVM
此處的設(shè)置,我們假定正確的uboot已經(jīng)燒寫在Flash上,如果需要燒寫uboot,請參照第六部分的“燒寫uboot”內(nèi)容進(jìn)行操作。
我們使用串口軟件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)按任意鍵,進(jìn)入命令模式。下面輸入命令進(jìn)行配置,在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》。
下圖為常見調(diào)試框圖,在Windows端通過samba服務(wù)訪問Linux中的源代碼,用Soure Insight進(jìn)行編輯,在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的幫助文檔也是十分全面。
、安裝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)的配置即可。
、安裝TDS560USB驅(qū)動
安裝TDS560USB驅(qū)動與ccs設(shè)置都需要仔細(xì)操作,一步操作錯誤就會導(dǎo)致最后使用不起來。
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路徑。
、進(jìn)行CCS setup
在DAVINCI 板卡上使用TDS560USB仿真器時進(jìn)行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 。
、運行CCS
以上步驟完成后,先斷開仿真器電源,將TDS560USB POD上的JTAG電纜與目標(biāo)板JTAG接口相連,然后打開目標(biāo)板電源,接通仿真器電源,運行CCS。觀察兩個指示燈,如果READY燈和BUSY燈輪流閃爍,表示TDS560USB正常工作,否則請斷開TDS560USB仿真器的電源,拔下USB線纜,重新檢查前面的硬件連接和軟件安裝、設(shè)置是否正確。
CCS及驅(qū)動都安裝完成之后,在CCS運行前,最好先運行一下 “桌面 \wintechdigital\ RESET TDS560USB”,如果復(fù)位正常,則運行CCS進(jìn)行實時仿真,如果不能正常復(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目錄沒有存放路徑的限制,推薦將這兩個目錄存放在同一路徑下。
、在Windows上編譯DSP端運行庫
由于只是編譯,并不需要仿真器的參與,以下CCS編譯時仿真器都不是必須的。在調(diào)試的過程中,才會需要用到仿真器。
啟動CCS,在CCS中分別編譯視頻解碼工程VidDec_lib及視頻編碼工程VidEnc_lib,得到所生成的庫文件VidDec_lib.lib及VidEnc_lib.lib。
、在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)試步驟而使用的,大家自己寫出就是了)
、在Linux中編譯ARM可執(zhí)行程序
在linux環(huán)境下進(jìn)入videoloop工程,運行make,生成ARM端可執(zhí)行程序videoloop,將videoloop拷貝至運行目錄loop中。
這一步的make及拷貝也可以使用同目錄下的mkall腳本文件來執(zhí)行。
、啟動板卡,執(zhí)行程序
啟動板卡,使用root登錄,然后進(jìn)入運行目錄loop中。首先運行裝載模塊程序loadmodules.sh,然后運行ARM端可執(zhí)行程序videoloop。在運行過程中,videoloop會根據(jù)需要調(diào)用DSP端的視頻解碼算法程序及視頻編碼算法程序。
以上的2、3、4步使用mkall腳本文件需要注意:
IP地址與路徑必須與實際情況匹配,特別是在程序版本升級及Linux服務(wù)器更換時。
編譯x64P時,注意要先 make clean 。
七、
一般在進(jìn)行程序調(diào)試時,我們采用NFS與tftp等網(wǎng)絡(luò)通信方式共享Linux服務(wù)器中的資源,用于嵌入式Linux進(jìn)行訪問、改寫。
在程序調(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中進(jìn)行相應(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。
,燒寫uboot
)編譯uboot
目前我們使用uboot1.1.4 ,在Linux下,進(jìn)入uboot1.1.4目錄,
依次輸入如下命令:
make clobber
make davinci_config
make ARCH=arm
就生成了可執(zhí)行文件 u-boot.bin 。
)燒寫uboot
將uboot燒寫進(jìn)Flash,有兩種方法:一是使用JTAG頭連接仿真器,使用仿真器燒寫;二是使用串口進(jìn)行燒寫。
注意:
在連接仿真器及串口線,撥動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的啟動信息顯示。
,燒寫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)核中,包括了:進(jìn)程管理、定時器、中斷管理、內(nèi)存管理、模塊管理、虛擬文件系統(tǒng)接口、文件系統(tǒng)管理、設(shè)備驅(qū)動程序、進(jìn)程間通信、網(wǎng)絡(luò)管理、系統(tǒng)啟動等操作系統(tǒng)功能的實現(xiàn)。
)編譯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》。
)燒寫Linux內(nèi)核
從Linux服務(wù)器下載內(nèi)核映象文件并燒寫進(jìn)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窗口中按下任意鍵,進(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中了。
最后,在正式啟動板卡時要讀取flash上的內(nèi)核文件,還需要設(shè)置環(huán)境變量為從flash啟動,使用如下命令設(shè)置即可:
setenv bootcmd ‘bootm 0x2100000’
,燒寫根文件系統(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為例說明編譯及燒寫過程。
)制作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
)燒寫ramdisk
從Linux服務(wù)器下載ramdisk.gz文件并燒寫進(jìn)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窗口中按下任意鍵,進(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中了。
最后,在正式啟動板卡時要讀取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)。