精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數字視頻播放機的嵌入式操作系統平臺的搭建和解決方案

電子設計 ? 來源:微計算機信息 ? 作者:錢焱鑫 , 楊宇航 ? 2021-03-17 11:31 ? 次閱讀

數字視頻播放設備在近幾年的發展十分迅速,種類繁多。傳統的視頻播放設備(如DVD播放機)的軟件系統一般都是一簡單的控制環系統,沒有操作系統,功能擴展和升級受到限制。本課題研究的便攜式數字視頻播放設備構建于嵌入式32位PowerPC405 CPU之上,運行Linux操作系統,以大容量的硬盤作為存儲介質,具有網絡功能。PowerPC405是IBM公司推出的一款專門針對嵌入式應用的RISC處理器,應用十分廣泛。嵌入式Linux作為一種開源的操作系統軟件,具有免費、支持眾多CPU、可裁減、支持網絡、豐富的軟件資源等特點。利用嵌入式Linux來構建數字視頻播放系統的軟件平臺使得該播放機成本低,易于升級和管理,支持多種接口USB,從而使得視頻節目交換方便等優勢,代表了該種設備未來發展的一個方向。本文主要探討了構建應用于數字視頻播放機的嵌入式Linux系統的bootloader、Linux內核移植的主要過程和可能碰到的問題,給出了相應的解決方案。

1 數字視頻播放系統框圖

數字視頻播放機的嵌入式操作系統平臺的搭建和解決方案

(圖1-1 碼流播放系統硬件框圖)

圖1-1為本播放機的系統框圖,其核心控制系統為基于PowerPC405的嵌入式Linux,通過其上的應用程序來把數據存儲系統里的節目經過一定處理后搬移到碼流控制系統里的FPGA里,由FPGA完成解密后送給解碼系統,經過解碼系統解壓縮后輸出RGB信號給顯示設備來顯示。其中我們要關注的就是核心控制系統里嵌入式Linux系統的搭建。

播放機的嵌入式Linux系統的層次結構如圖1-2,硬件上電后,CPU的程序指針首先指向一個特定的存儲器地址,該地址處一般存放著bootloader,bootloader在初始化完CPU以及內存等設備后,把Linux內核從一般ROM設備里搬移解壓到內存里,然后程序指針跳轉到內核在內存里的開始位置處,由Linux內核來繼續完成剩下的系統引導工作。內核在重新初始化完系統后,就加載根文件系統,運行用戶應用程序。整個嵌入式Linux系統平臺的構建過程可以參照系統的啟動過程,主要要做的工作有構建bootloader、Linux內核、根文件系統這幾個部分。

(圖1-2 軟件系統層次結構圖)

2 嵌入式Linux系統平臺搭建的準備

要搭建嵌入式Linux系統平臺,首先要準備好跨平臺開發工具鏈。它運行于本地主機上,編譯鏈接生成的二進制可執行程序能夠運行于開發板的CPU及操作系統上。構建這樣一個主要包括編譯器gcc,鏈接器ld,C庫glibc等的工具鏈的方法有很多種,可以去相關網站下載源代碼手工編譯,而最便捷的方法則為利用完善的已編譯好開發包,如德國denx公司的ELDK開發包,使用方法參見。

3 bootloader與Kernel的選擇

準備好了開發工具鏈之后,就可以開始嵌入式Linux系統的開發,首先是bootloader的選擇。

3.1 bootloader的選擇

一般的PC機啟動后先是進入BIOS,通過BIOS進行一定的系統初始化后,再引導操作系統如Windows或Linux等,而一般嵌入式系統里沒有BIOS,但也需要實現類似功能的模塊,這就是bootloader(引導裝載器),其主要的功能是初始化CPU、內存等硬件設備,以及導入操作系統。Bootloader種類很多,如blob、lilo、grub、U-BOOT等。目前在嵌入式領域用得最廣泛的是denx公司的免費開源軟件U-BOOT,它支持PowerPC、ARM、MIPS、x86等多種CPU,超過100種開發板,源碼結構清晰,移植容易,開發文檔豐富,用戶在使用中可能碰到的問題一般都能夠很快被解決。因此,我們選用U-BOOT做為開發板的bootloader。

根據不同的開發板,flash的大小以及型號不同,內存的大小不一樣,啟動方式的不同等使得利用U-BOOT時需要做一些相應的修改,以適應用戶自己的開發板,具體移植方法及常見問題可參見。

3.2 Linux內核的移植

bootloader初始化完系統硬件后,把Linux內核從外部存儲介質中導入內存里,然后,就將控制權交給Linux內核,由內核來繼續完成系統的引導工作。

如果內核里沒有支持用戶所使用的開發板,那么用戶就需要自己手工修改Linux的內核,做一些相關的移植工作,要關注的是對開發板的硬件外設部分的處理,包括內核對板子硬件基本信息的處理,板上硬件設備的初始化、中斷的分配等。

開發板級別的Linux內核移植最方便的方法是利用內核里已有的且與用戶使用的硬件平臺最接近的開發板為模板,在此基礎上再做修改。我們使用的開發板與IBM walnut開發板類似,主要的外設包括硬盤、USB設備等都是利用PCI總線接口轉接(PCI轉IDE,PCI轉USB),所以內核的移植工作主要有兩部分, 一為bootloader和內核之間板子硬件信息的傳遞,二為PCI外設的初始化。

3.2.1 U-BOOT與Linux內核的配合

U-BOOT在初始化完硬件設備后,把內核裝入內存,然后程序指針跳轉到內核所在位置處的同時,會傳遞一些參數給內核來使用,其中就包括有board_info數據結構,內容包括板子的CPU主頻、SDRAM和flash大小、ip地址、MAC地址等,Linux會利用這些參數來初始化系統。但Linux內核與U-BOOT的開發并不是同一個組織,要修改Linux內核的相關部分來匹配U-BOOT傳遞過來的數據,對于我們所使用的PowerPC,U-BOOT是利用五個通用寄存器(r3,r4,r5,r6,r7)來傳遞參數,我們需要修改通過r3寄存器傳遞過來的board_info數據結構(定義在Linux內核里arch/ppc/platforms/cs2000.h),使之與U-BOOT源代碼里u-boot-1.1.1/include/asm-ppc/u-boot.h里定義的bd_info數據結構內容一致,這樣內核才不會對U-BOOT傳遞過來的board_info數據結構進行錯誤解讀。

3.2.2 PCI外設初始化部分的修改

Linux內核初始化PCI部分的主要過程為:掃描整個PCI總線,找到連接在總線上的所有設備,根據各PCI設備配置空間寄存器的信息,給各PCI設備統籌分配I/O空間,memory空間,以及IRQ中斷號。對于x86平臺,這部分工作其實已經在BIOS部分做過,Linux內核只需調用BIOS生成的配置即可,但對于我們嵌入式Linux系統,沒有BIOS,這部分工作Linux內核要自己做。而對于各個不同的開發板,需要補充到標準的PCI初始化代碼里的內容有兩部分,一為PCI設備配置空間寄存器的訪問方式,另一為PCI中斷的配置。

根據PCI的協議規范,訪問某PCI設備配置空間的方法為先使能該設備的IDSEL管腳,才可以讀寫該設備的配置寄存器組。但PCI規范并沒有定義IDSEL管腳的連接方法,所以根據各開發板PCI從設備的IDSEL管腳硬件連線方法的不同,訪問PCI設備配置空間的方法也不同。

(圖3-1)PCI設備IDSEL管腳的兩種接法

如圖3-1所示,對于一般接法的(a)圖,PCI從設備的IDSEL管腳是通過一電阻串聯到PCI總線的地址線AD[11-31]中某一根,這樣可通過在訪問PCI總線的地址期內往AD[11-31]這些地址線一個個的置高電平,如果讀回來的配置寄存器數據有效,說明該地址線連了某設備的IDSEL,若無效,說明未連接。而我們開發板則采用了圖3-1里面的(b)接法,把PCI從設備的IDSEL管腳與CPU的一個GPIO端口相連,這樣就可以通過控制GPIO來靈活的控制PCI總線上某設備的使能或者失效。在我們這種硬件連接下,訪問PCI從設備配置空間時,需要先置該設備IDSEL管腳所連接的GPIO為高,再讀寫配置寄存器組。所以,對于我們這種開發板,需要在一般的讀取配置寄存器空間的源碼里(arch/ppc/kernel/indirect_pci.c),讀寫配置寄存器之前,插入下列代碼:

switch (dev_function)

{

case PCI_DEV1: set_gpio1_high(); //置相應的GPIO為高

case PCI_DEV2: set_gpio2_high();

default:break;

}

另外一項需要修改的PCI初始化代碼是有關PCI設備的中斷號分配。對于沒有BIOS的嵌入式Linux,PCI設備中斷號分配是由內核根據板子的硬件連線來決定的。一般嵌入式設備不需要中斷路徑互連器,直接把插槽的/INT管腳與CPU的IRQ線相連。連接方法有很多種,如把一個插槽的四個中斷腳都連到一個IRQ上,由操作系統來控制中斷的復用關系,也可以一個PCI中斷管腳只連一個IRQ線。所以PCI IRQ的分配這部分Linux代碼要根據各開發板實際的中斷連接方法來修改。

在我們的開發板里,每個PCI的/INT管腳都連接到一單獨的IRQ線上,根據這種連接關系,我們從軟件上可以構造出下面這樣一張表:

/* arch/ppc/platforms/our_board_name.c:ppc405_map_irq ()*/

static char pci_irq_table[] =

/* PCI /INT PIN->INTLINE

* A B C D */

{

{28,

; 29, 30, 30}, /* IDSEL 1 - PCI 插槽 1 */

{31, 31, 31, 31}, /* IDSEL 2 - PCI 插槽2 */

};

上表描述的PCI插槽1的/INT A中斷的號是28,而這個28號中斷的由來是該槽的/INT A與CPU的28號中斷的IRQ線相連了。把所有PCI插槽的中斷線與CPU IRQ線的連接關系填入表中,就可以通過內核里標準的PCI初始化代碼正確分配各PCI設備的中斷號了。當然,在板子的IRQ初始化部分(arch/ppc/platforms/our_board_name.c:board_setup_irq())還要正確設置這些分配了的中斷線的觸發方式,極性等。

Linux內核的移植牽涉到很多硬件的知識,對開發板的硬件原理圖有比較清楚的認識可以對移植工作有事半功倍的效果。

結束語

有了bootloader,內核,再利用Busybox來構建一個簡單的根文件系統后,這個嵌入式Linux系統平臺就已經搭建完畢,用前述過程所搭建的嵌入式Linux系統平臺體積小,功能強,運行穩定,對于像數字視頻播放機這種需要長期工作運行的設備而言非常適合,而且升級性強,對于未來的一些應用需求,可以通過開發板上的PCI、USB、Ethernet等接口進行擴展,可以說是為以后設備的進一步功能增強奠定了堅實的基礎。本論文的創新點在于將傳統的視頻播放設備的簡單控制系統升級為嵌入式Linux系統,并對嵌入式Linux系統的構建和移植作了詳細探討,特別是根據PCI設備的新連接方法提出了一種新的初始化算法,具有很強的應用價值。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5044

    文章

    18810

    瀏覽量

    298410
  • 操作系統
    +關注

    關注

    37

    文章

    6543

    瀏覽量

    122725
  • 播放機
    +關注

    關注

    0

    文章

    23

    瀏覽量

    22280
收藏 人收藏

    評論

    相關推薦

    便攜BD播放機系統的設計

    軟件在Linux操作系統上架構而成,包括設備驅動、中間件和應用層。采用模塊化的設計理念,根據系統功能將系統進行劃分成不同層次和不同模塊來進行實現。不同任務的運行通過啟動不同的進程來控制。便攜
    發表于 07-11 21:42

    嵌入式開發從入門到精通視頻教程(第十季)-數字視頻與H264...

    感謝大家對RE.ER嵌入式學院前幾季已發布視頻教程的贊譽和認可,本次我們再次發布嵌入式開發從入門到精通視頻教程的第10季:數字視頻壓縮與H2
    發表于 05-18 23:25

    嵌入式視頻監控系統有什么功能?

    監控技術正在逐步取代模擬監控技術,廣泛應用于各行各業。嵌入式系統以體積小、實時性強、性價比高、穩定性好等特點在社會的各個領域中得到了廣泛應用。筆者設計的一種嵌入式系統,以WinCE
    發表于 10-18 08:26

    如何構建嵌入式數字視頻播放系統軟件平臺

    本文主要探討了構建應用于數字視頻播放機嵌入式Linux系統的bootloader、Linux內核移植的主要過程和可能碰到的問題,給出了相應的解決方
    發表于 06-04 06:24

    嵌入式數字視頻播放系統軟件平臺的構建

    嵌入式數字視頻播放系統軟件平臺的構建:本文介紹了powerpc405上利用嵌入式linux來構建
    發表于 04-02 10:59 ?24次下載

    嵌入式數字視頻播放系統軟件平臺的構建

    本文介紹了在PowerPC405 上利用嵌入式Linux 來構建數字視頻播放系統軟件平臺的過程,探討了
    發表于 06-01 15:13 ?3次下載

    嵌入式數字視頻監控系統的數據存儲策略

    在基于 vxWorks 的嵌入式數字視頻監控系統中實現了先進的存儲策略,克服了dosFs 文件系統自身的缺陷與不足,滿足了實際應用的要求。關鍵詞:
    發表于 09-02 10:26 ?23次下載

    嵌入式數字視頻播放系統軟件平臺的構建

    數字視頻播放設備在近幾年的發展十分迅速,種類繁多。傳統的視頻播放設備(如DVD播放機)的軟件系統
    發表于 10-22 10:43 ?11次下載

    基于SOPC的數字視頻監控系統設計

    設計了基于片上可編程系統(SOPC)的嵌入式數字視頻監控系統的實現方案。利用Altera 公司最新的SOPC
    發表于 02-24 11:59 ?29次下載

    基于嵌入式操作系統的控制系統平臺設計

    基于嵌入式操作系統的控制系統平臺設計  1 引言   近年來,嵌入式系統在工業控制領域的應用
    發表于 12-25 17:47 ?976次閱讀
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統</b>的控制<b class='flag-5'>系統</b><b class='flag-5'>平臺</b>設計

    基于嵌入式Linux流媒體播放系統軟硬件解決方案

    系統選用TQ2440 開發板作為硬件平臺,采用嵌入式Linux 操作系統給出流媒體播放系統
    發表于 06-13 11:41 ?2743次閱讀
    基于<b class='flag-5'>嵌入式</b>Linux流媒體<b class='flag-5'>播放</b>器<b class='flag-5'>系統</b>軟硬件<b class='flag-5'>解決方案</b>

    嵌入式操作系統如何應用_嵌入式操作系統的組成

    本文首先介紹了入操作系統的特點,其次闡述了嵌入式操作系統的應用,最后介紹了嵌入式操作系統的組成
    發表于 09-01 16:36 ?3513次閱讀

    嵌入式操作系統

    是:構建一個易于編程的虛擬平臺系統資源的管理者。2、嵌入式操作系統的分類1. 按系統類型分商業化系統
    發表于 10-21 11:21 ?10次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統</b>

    嵌入式操作系統

    嵌入式操作系統一、嵌入式操作系統概述1.1 嵌入式操作系統的特點1.2
    發表于 11-03 18:36 ?46次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統</b>

    什么是嵌入式操作系統

    嵌入式操作系統通常在嵌入式系統中工作。嵌入式系統是支持機器的計算機。它在更大的機器上執行一項任
    的頭像 發表于 12-23 15:33 ?7283次閱讀
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系統</b>?