【正文】
各張子圖與主圖及各張子圖之間是通過(guò)輸入輸出端口或 者 網(wǎng)絡(luò)標(biāo)號(hào)建立起電氣連接 。比對(duì)出所追蹤對(duì)象的行為模式與預(yù)設(shè)的多項(xiàng)安全規(guī)則,若發(fā)現(xiàn)違規(guī)現(xiàn)象,立刻通過(guò)網(wǎng)絡(luò)發(fā)出報(bào)警信息,同時(shí)把信息記錄在中心報(bào)警管理服務(wù)器上。 26 當(dāng)視頻線程等待從 VPSS 前端來(lái)的下一幀數(shù)據(jù)時(shí),寫線程將已經(jīng)編碼的幀寫給Linux 文件系統(tǒng)。當(dāng)運(yùn)行在 DSP 上的視頻編碼器將采集緩存器里的數(shù)據(jù)編碼到 I/O 緩存器,后者就使用 FifoUtil_put()發(fā)送給寫線程,用標(biāo)準(zhǔn)的 I/O 調(diào)用 fwrite(),寫給 Linux文件系統(tǒng)。同時(shí),顯示線程使用 memcpy(),復(fù)制采集的原始數(shù)據(jù)緩存 器到 FBDev 顯示幀緩 存器, 視頻線程 則在 DSP 上調(diào)用VIDENC_process(),對(duì)同樣的采集數(shù)據(jù)緩存器編碼,到提取 I/O 緩存器。要顯示正在處理的視頻幀,使用 FifoUtil_put(),將該采集緩存器的指針發(fā)送給顯示線程。圖中關(guān)于交互的說(shuō)明,是從視頻線程的角度出發(fā)的。 F i f o U t i l _ p u t ( ) 。 F i f o U t i l _ p u t ( ) 。 如圖 所示: 1 .檢 測(cè) 視 頻 標(biāo) 準(zhǔn) i o c t l ( F B I O _ G E T S T D )2 . 解 析 命 令 變 量 p a r s e A r g s ( )3 .初 始 化 C o d e c E n g i n e C R E u n t i m e _ i n i t ( )4 .啟 動(dòng) C o d e c E n g i n e 跟 蹤 薄 記 T r a c e U t i l _ s t a r t ( )5 .打 開 R e n d e z v o u s 項(xiàng) 目 R e n d e z v o u s _ o p e n ( )6 .建 立 視 頻 線 程 p t h r e a d _ c r e a t e ( )7 .建 立 話 語(yǔ) 線 程 p t h r e a d _ c r e a t e ( )8 .調(diào) 用 控 制 線 程 c t r l T h r F x n ( )去 控 制 線 程 圖 主線程流程 25 視頻線程從視頻采集驅(qū)動(dòng)器辟出一個(gè)幀緩存器,并用視頻編碼算法對(duì)其編碼;用一個(gè)顯示線程來(lái) “預(yù)覽 ”要編碼的數(shù)據(jù),并用另一個(gè)寫線程將已經(jīng)編碼的幀寫入 linux 文件系統(tǒng)。 控制線程用于用戶界面,使用公用程 序庫(kù) msp430lib 來(lái)選擇 msp430 處理器,控制 davinci 板上的 IR界面。用來(lái)同步線程初始化的 Rendezvous 目標(biāo)打開,然后根據(jù)命令行所傳遞的參數(shù),簡(jiǎn)歷處理線程。 軟件設(shè)計(jì) 視頻采集的主程序包括 5 個(gè) POSIX 線程:主線程、視頻線 程、顯示線程、寫線程以及語(yǔ)音線程,如圖 所示: 主 線 程寫 線 程語(yǔ) 音 線 程控 制 線 程視 頻 線 程顯 示 線 程M S P 43 0 + I RH D D o r N F SM S P 43 0 + I RM S P 43 0 + I RH D D o r N F SM S P 43 0 + I R 圖 編碼線程 主線程的工作是執(zhí)行必須的初始化任務(wù),解析用戶在命令行所提供的參數(shù),根據(jù)命令行所提供的參數(shù)值,設(shè)置線程的環(huán)境變量。 NFS 文件系統(tǒng)的配置也用默認(rèn)的,直接編譯就可以了。上面已經(jīng)介紹有關(guān)去掉 ATA 和 TIEVM RTC 設(shè)備,接著我們對(duì)文件系統(tǒng) 進(jìn)行裁減,如下圖。 source arch/arm/machx/Kconfig make menuconfig 進(jìn)入熟悉的 kernel配置界面: 圖 內(nèi)核編輯界面 去掉 ATA DRIVER;由于本人的開發(fā)板沒有 NOR FLASH,也沒有 ATA 硬盤之類的東西,這一點(diǎn)和 TI EVM 板不一樣,所以我們先把設(shè)備驅(qū)動(dòng)里的 ATA選項(xiàng)去掉 。 。 從第 355 行開始到 399 行,全部注釋掉: source arch/arm/machclps711x/Kconfig source arch/arm/machep93xx/Kconfig 。 config ARCH_OMAP bool TI OMAP help 21 Support for TI39。 修改 fs/hostfs/Makefile 因?yàn)閯h除 um 和 asmum, 當(dāng)使用 make distclean 操作的時(shí)候會(huì)出現(xiàn)問(wèn)題 , 所以把 : include arch/um/scripts/ 注釋掉。39。 then \ cat .mvl_cross_pile。 \ else \ echo $(SUBARCH)。如果有 linux 內(nèi)核編譯出來(lái)并使用 UBOOT tool目錄下的 mkimage 工具生成uImage,在 UBOOT 命令行下: UBoot tftp 80008000 uImage UBoot bootm 80008000 Booting kernel from Legacy Image at 80008000 ... Image Name: Image Type: ARM Linux Kernel Image (unpressed) 19 Data Size: 1509948 Bytes = MB Load Address: 80008000 Entry Point: 80008040 Verifying Checksum ... OK XIP Kernel Image ... OK Starting kernel ... Unpressing Linux...................................................................................................... done, booting the kernel. 內(nèi)核移植 TI DAVINCI 使用最新的內(nèi)核是 montavista ,安裝 TI 提供的工具包 ,先在工作目錄下建立 的目錄,進(jìn)入改目錄, /home/user/dm6446/, COPY 內(nèi)核源代碼到本目錄下,命令如下: cp –r /opt/\pro/devkit/lsp/tidavinci/* . 頂層 Makefile 修改 在 172 行,即 make CROSS_COMPILE=ia64linux下面,加入: ARCH = arm CROSS_COMPILE = arm_v5t_le 把下面: ARCH := $(shell if [ f .mvl_target_cpu ]。) \ d $ $ 這里這樣做的目的,生成的 可以被上篇介紹的 UBL 給 BOOT 起來(lái),而 可以被 TI 提供的 和 軟件方式( soft boot)啟動(dòng)起來(lái),便于生產(chǎn)和測(cè)試。 $(VERSION_FILE) | \ sed e 39。 d $ $ a $(TEXT_BASE) e 0 \ n $(shell sed n e 39。) \ n 39。) \ 18 e 0x$(shell grep T _start $(TOPDIR)/ | awk 39。 修改頂層 makefile: 在 144 行:把 CROSS_COMPILE = armlinux改為 CROSS_COMPILE = arm_v5t_le 在 282 行:把 ALL += $(obj) $(obj) $(obj) $(U_BOOT_NAND) $(U_BOOT_ONENAND),改為 ALL += $(obj) $(obj) $(obj) $(U_BOOT_NAND) $(U_BOOT_ONENAND) ,就是后面添加 在 308 行: ./tools/mkimage A $(ARCH) T firmware C none \后面,添加和注銷以下代碼: a 0x$(shell grep T _start $(TOPDIR)/ | awk 39??梢钥紤]使用 uboot 作為 updater,因?yàn)?uboot 執(zhí)行期間OS/Driver/GUI 都還沒載入,所以可以 update 完直接開機(jī)。 Internal RAM 只有 16kb,但 UBL目前有 14kb, uboot則是 96~115kb不等,所以想要把 uboot結(jié)合 UBL放進(jìn) internal RAM 有困難。 4)BOOTCFG=0x03, UART boot mode, Host 通過(guò) serial port 將 UBL 載入。 2) BOOTCFG=0x00, NAND boot mode, 從 internal ROM 執(zhí)行 RBL, RBL將 UBL 從 NAND 載入 internal RAM, UBL 將 uboot 從 NAND 載入 DDR, uboot將 uImage 載入 DDR,執(zhí)行權(quán)交給 OS。對(duì)應(yīng) XDC_INSTALL_DIR 宏及 BIOS_INSTALL_DIR 宏,需要改成如下值: XDC_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/xdctools_3_10_03 BIOS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/bios_5_33_06 在需要使用到 DSP 程序編譯處 , 需要改動(dòng)相應(yīng)的 CODEGEN_INSTALL_DIR 宏如下 : CODEGEN_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/cg6x_6_0_23 3) 安裝 Codec Servers Codec Servers 就是提供 ARM 端調(diào)用 DSP 端算法的一個(gè)服務(wù)機(jī)制 , 使用以下命令安裝 DM6446 的 Codec Servers 到 /home/user/dvsdk_2_00_00_22 下 , host $ ./dm6446_codecs_setuplinux____.bin 第四步 : 設(shè)置 TFTP SERVER 第 五步 : 設(shè)置 NFS 第六步 : 設(shè)置 GCC 交叉編譯環(huán)境 以普通用戶 login, vi 編輯 ~/.bashrc 文件 , 添加 PATH=/opt/:/opt/montavista/pro/bin:/opt/:$PATH 保存退出,然后使用以下命令生效,或者退出系統(tǒng)再登陸也可以。 TI 建議用戶使用 su 命令切換到用戶賬號(hào)的權(quán)限下安裝 dvsdk,其在root 下安裝也沒問(wèn)題。 以上兩個(gè)開發(fā)包是最基本的,至于下面要安裝的 TI 自己的 dvsdk,沒有它也可以照樣開發(fā) DM6446,因?yàn)?DSP 算法開發(fā)也可以使用常用的方法生成 *.bin 文件,放到根文件系統(tǒng),當(dāng)做一個(gè)應(yīng)用文件 boot 起來(lái)也是可以的,那是后話。 1) 搭建 montavista linux 環(huán)境 按以下命令安裝 GCC(arm_v5t_le)交叉編譯工具,安裝過(guò)程按照提示操作,運(yùn)行時(shí)會(huì)提示安裝目錄的選擇,建議 /opt/; host $ ./ host $ ./ 執(zhí)行上面的命令后,會(huì)在 /opt/mvltools5_0_. 和 DaVinciLSP____. 的文件, “”表示版本。 嵌入式系統(tǒng)搭建與驅(qū)動(dòng)開發(fā) 用 VMware Workstation 安裝 RedHat Enterprise Linux Server 5,一定要選擇安裝圖形界面的。 V I D E O [ 0 : 7 ]P C L KV S Y N CH S Y N CS D AS C LV I D E I [ 1 0 : 1 7 ]P C L KV DH D1 2 C _ D A T A1 2 C _ C L KD M 6 4 4 6S N 7 4 A V C B 1 6 4 2 4 5T V P 5 1 4 6P C F 8 5 7 4 圖 TVP5146 與 DM6446 的連接 PCB 設(shè)計(jì) 本設(shè)計(jì)考慮到成本問(wèn)題,采用了偶數(shù)層電路板的設(shè)計(jì)方案,其中多層 PCB布層分析如表 : 表 PCB 板層分析 層 層數(shù) 1 2 3 4 5 6 7 8 性能分析 6 層 S1 G S2 S3 P S4 差 8 層 S1 G S2 S3 G P S4 S5 差 6 層 S1 S2 G P S3 S4 一般 8 層 S1 G S2 G P S3 G S4 好 注: S 表示信號(hào)層、 G 表示地層、 P 表示電源層 14 在布線過(guò)程中,應(yīng)當(dāng)特別注意各種干擾,如時(shí)鐘電路與高頻電路的干擾和輻射,應(yīng)將這兩部分電路獨(dú)立安排,遠(yuǎn)離敏感電路。從模擬視頻輸入口輸入的模擬信號(hào)在TVP5146內(nèi)部經(jīng)過(guò)鉗位、抗混疊濾波、 A/D轉(zhuǎn)換、 YUV分離電路之后 ,最后再轉(zhuǎn)換成 , 輸入到