<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于TMS320DM365的網(wǎng)絡(luò )攝像機底層軟件應用

基于TMS320DM365的網(wǎng)絡(luò )攝像機底層軟件應用

作者: 時(shí)間:2012-08-11 來(lái)源:網(wǎng)絡(luò ) 收藏
r>e.JPG


這種ARM和DSP分開(kāi)的軟件結構,使得整個(gè)Davinci框架下的系統的軟件開(kāi)發(fā)被分成了四個(gè)部分:圖像算法開(kāi)發(fā)、Codec Server集成開(kāi)發(fā)、CodecEngine集成開(kāi)發(fā)和應用程序開(kāi)發(fā)?;A的圖像算法可以通過(guò)TI提供的CCS開(kāi)發(fā)工具,圖像的編碼算法被存儲為.lib的庫文件。而Codec Server的開(kāi)發(fā)是調用一系列的.lib算法庫,實(shí)現各種庫文件的對ARM部分的接口。Ciodec Engine是開(kāi)發(fā)調用Codec Server的Stuh和Skelet on,完善整個(gè)圖像處理功能的調用,而面向廠(chǎng)商或是使用者的應用程序的開(kāi)發(fā),只需要針對不同應用情況編譯基于Linux的應用程序,其中圖像處理算法等內容,作為黑箱供這些使用者調用。

3
3.1 Linux系統內核
Linux系統內核使用的linux-2.6.32,相較于之前的版本增添了虛擬化內存、改進(jìn)了文件系統、支持低傳輸延遲時(shí)間模式、內存控制器支持softlimits、支持S+Core架構、支持Intel Moorestown及其新的固件接口、支持運行時(shí)電源管理、以及新的驅動(dòng)。常用的LINUX操作系RADHAT Enterprise 6,ubuntu-10.04.debian 6.穩定版本,這些都是使用linux-2.6.32內核。Linux-2.632作為ARM部分所使用的基層操作系統,在TI上也有提供,不過(guò)所提供的是一個(gè)非常寬泛的、適用于多種DaVinci框架內核產(chǎn)品的一個(gè)完整內核,無(wú)論是功能還是驅動(dòng)都非常完善,但是缺點(diǎn)是啟動(dòng)時(shí)間長(cháng)、容量大,所以我們必須存原有的TI系統內核的基礎上進(jìn)行一定的修改。整個(gè)修改基于Linux操作系統運行。
第一步是系統內核的精簡(jiǎn)開(kāi)始。整個(gè)精簡(jiǎn)過(guò)程主要是在內核文件中刪除自己不需要使用東西,如平臺信息、芯片信息和驅動(dòng)等,并且在Kconfig和Makefile里面將刪除信息屏蔽。首先完成在內核系統中平臺信息和芯片信息的文件刪減,然后通過(guò)Makefile文件重新修改編譯方法,經(jīng)過(guò)重新編譯以后,內核的精簡(jiǎn)已經(jīng)完成,在Linux環(huán)境中使用tar jcf或tar zcf壓縮的Linux內核,整個(gè)內核的大小下降到了51M,相當于原來(lái)尺寸的二分之一。當然可以化簡(jiǎn)的還可以包括了include和driver里面的一些不需要使用的驅動(dòng),但是由于大小并不是很大,所以這里也就沒(méi)有去除。
第二步開(kāi)始內核系統的配置。因為之前已經(jīng)修改了內核系統文件的內容,選項即使都已經(jīng)按照默認的方式配置完畢,但是存細部還需要一定的修改,使用make linux_config進(jìn)入內核配置界面。首先需要修改的是“General setup”內的晶振,將原本27000000所表示27MHz時(shí)鐘參數,改為硬件使用的24MHz時(shí)鐘。然后在“Device Drivers”中配置NAND flash的大小、分塊信息;USB的驅動(dòng)設置一般設定為主機用于,識別U盤(pán)等其他USB設備;在選擇視頻傳輸的方式的時(shí)候,需要選擇以太網(wǎng)絡(luò )的“10M or 100M Ethernet MAC support”傳輸方式:并且開(kāi)啟I2C和串口功能等。
第三步檢測核對程序內核,確保底層功能程序與硬件設備的匹配。最重要的machdavinci\dm365.c,內部都是管腳定義包括了I/O口的
復用。sound\soc\codecs有tlv320aicxx.c等音頻芯片驅動(dòng):soc\davinci里有PCM、I2S等驅動(dòng)。完成所有檢測核對之后,用make指令編輯linux內核,生產(chǎn)一個(gè)bin文件,燒錄到DM365處理器中,即可運行系統內核。
3.2 啟動(dòng)程序
Bootloader是嵌入式系統啟動(dòng)之后加載的第一段程序,也就是俗稱(chēng)的啟動(dòng)程序,這段代碼一般用于初始化處理芯片,映射內存空間,完成系統基本硬件設置,為之后的操作系統內核提供運行環(huán)境及。所以這段程序的長(cháng)度和運行時(shí)間都非常短,但對于整個(gè)系統來(lái)說(shuō)是非常重要的。文中使用u-boot作為Bootloader程序,作為一種通用程序,它支持多種體系結構的處理器。其功能涵蓋了flash燒寫(xiě)、操作系統內核啟動(dòng)等功能。整個(gè)u-boot的軟件流程如圖6所示。

f.JPG


整個(gè)u-boot的啟動(dòng)過(guò)程可以分為三個(gè)階段。首先在flash中啟動(dòng)代碼,設置異常的入口地址和異常處理函數、配置系統主頻、I/O寄存器初始化、初始化存儲空間,然后將之后的程序加載到RAM中,起始地址設定,并在RAM中運行,設置硬件系統結構類(lèi)型、啟動(dòng)參數地址、打開(kāi)芯片外圍設備的使能端、設置內核參數、復制鏡像文件和設置入口函數。最后運行嵌入式系統內核鏡像。
將u-boot系列文件導入攝像機后開(kāi)啟電源,通過(guò)RS232串口,可以讀取系統的啟動(dòng)信息。整個(gè)啟動(dòng)過(guò)程可以分為三個(gè)不同階段。第一階段首先u-boot驅動(dòng)先確定啟動(dòng)的ubl版本和啟動(dòng)方式,檢測Flash和總線(xiàn)狀態(tài),一般傳統的啟動(dòng)方式為NANDFlash啟動(dòng)。第二階段確認RAM等基本傳輸硬件狀態(tài),檢測時(shí)鐘信號,接下來(lái)開(kāi)始將Flash中的u-boot啟動(dòng)程序轉入RAM中。最后一階段檢測所有的硬件信息,并將這些信息傳給Linux內核,然后運行Linux內核,當硬件信息有錯誤時(shí),會(huì )跳出錯誤報告。所檢測的硬件信息主要有:CPU內核和狀態(tài)、PLL狀態(tài)、RAM存儲器、TCP網(wǎng)絡(luò )協(xié)議、I/O口等。這一步驟結束后,系統地控制權將完全轉交給Linux。啟動(dòng)一系列內核文件后,會(huì )出現Linux的用戶(hù)登錄界面。
完成所有硬件檢測和驅動(dòng)安裝以后,高清的所有硬件都開(kāi)始工作,并且擁有最基本的功能,能夠傳輸模擬視頻信號,并且可以登錄網(wǎng)絡(luò ),自動(dòng)獲得IP地址。但是通過(guò)游覽器進(jìn)行圖像的獲取,需要進(jìn)一步燒錄應用程序。同時(shí),還可以通過(guò)串口實(shí)時(shí)地設置攝像機內Linux內核的設置。
3.3 驅動(dòng)程序移植
驅動(dòng)程序是硬件運行功能實(shí)現的基礎。由于所設計的DM365配有USB等多功能通用硬件接口,所以即使是成品之后,處于擴展的原因,新硬件的添加也會(huì )非常頻繁,這里就必須讓設備驅動(dòng)也更新。這里我們想使用一個(gè)最簡(jiǎn)便的GPIO驅動(dòng)程序來(lái)作為一個(gè)驅動(dòng)程序移植的范例。
驅動(dòng)移植的一個(gè)整體流程,是將針對某一硬件功能的驅動(dòng)軟件加入Linux嵌入式調用的特殊語(yǔ)句,并且存放在內核操作系統特定的存放位置,修改內核配置文件,使這個(gè)驅動(dòng)能被調用。完成這些修改之后,就能在應用程序層面使用這個(gè)硬件設備了。
首先是對CPIO驅動(dòng)源碼的修改和放置,GPIO是嵌入式系統最簡(jiǎn)單、最常用的資源了,比如點(diǎn)亮LED,控制蜂嗚器,輸出高低電平,檢測按鍵,等等。GPIO分輸入和輸出,在linux-2.6.32內核中,本來(lái)就有有關(guān)GPIO的最底層的寄存器驅動(dòng),所以不用另外新建驅動(dòng)程序,其位置是在\arch\arm\mach-dayrinci目錄下的gpio.c,這個(gè)是寄存器級的驅動(dòng),與一般單片機MCU一樣,GPIO的設置都是通過(guò)特殊寄存器的數值決定的。據DM365的芯片DATASHEET,DM365的CPIO分為3組BANK,BANK01組包括GPIO0~GPIO31,BANK23組包括GPIO32~GPIO63,BANK45組包括GPIO64~GPIO70,由于硬件資源的原因,DM365并不是GPIO管腳就是純粹的GPIO腳,GPIO管腳和其他一些標準接口復用相同的引腳,比如SPI和GPIO復用,I2C和CPIO復用等,到底是使用CPIO還是其他接口,在初始化的時(shí)候,都需要對PINMUX0和PINMUX1兩個(gè)寄存器進(jìn)行設置,而這兩個(gè)寄存器的設置則在\arch\arm\mach-davrinci目錄下mux_cfg.c和對應的mux.h里,當然如果只是用一些只作為I/O功能的管腳,則不需要對著(zhù)兩個(gè)寄存器進(jìn)行設置相較于單片機對于I/O口的設置,DM365的GPIO驅動(dòng)多了一些嵌入式系統特有的功能語(yǔ)句。比如:需要定義一個(gè)設備名稱(chēng)用于程序內部的調用,#define DEVICE_NAME“dm365_gpios” /*定義設備驅動(dòng)的名字,或設備節點(diǎn)名稱(chēng)*/并且定義驅動(dòng)文件的API,在Linux系統當中,所有設備都可以當做文件進(jìn)行操作。
static const struct file_operations
davinci_dm365_gpio_fileops={
.owner=THIS_MODULE,
.open=davinci_dm365_gpio_open,
.ioctl=davinci_dm365_gpio_ioctl,
};
定義內核初始化的函數功能,這一部分是ARM最基礎的IO口這幾方法,這里就不進(jìn)行詳細介紹。
完整這些內容后,這個(gè)GPIO的驅動(dòng)程序就可以被Linux系統內核調用了。之后修改內核文件的設置,修改Kconfig文件,加入一段GPIO設置,說(shuō)明GPIO驅動(dòng)功能等。存makefile文件的128行,加入語(yǔ)句:ohi-$(DAVINCI_DM365_GPIOS)+=dm365_gpios.o,輸出之前驅動(dòng)軟件的.o ut文件,這樣整個(gè)內核配置完成。之后這個(gè)I/O口的驅動(dòng)程序就可以在應用程序中利用語(yǔ)句:fd=open(“/dev/dm365_gpios”,0);來(lái)運行。
這里使用了一個(gè)較為簡(jiǎn)單常見(jiàn)的GPIO驅動(dòng)來(lái)舉例,是為了更簡(jiǎn)單地描述整個(gè)Linux嵌入式系統驅動(dòng)軟件的移植過(guò)程。對于其他更為專(zhuān)業(yè)的硬件驅動(dòng),如usb設備、



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>