新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MPC8250的嵌入式Linux系統開發

        基于MPC8250的嵌入式Linux系統開發

        作者: 時間:2007-08-08 來源:網絡 收藏
        引 言

          我們了某型飛機外場維護的一個網絡終端通訊平臺,其硬件核心采用Motorola公司的PowerPC處理器,軟件方面采用linux作為操作,實現了飛機外場維護與飛機故障診斷的安全、快速通信。這個系統平臺具有體積小、功耗低、性能高等特點。

        構架與系統硬件平臺簡介

          PowerPC是較早開始支持的處理器之一。PowerPC處理器芯片PowerQUICC(Quad Integrated CommunicationsController)II 結構,是面向高性能、低功耗、小體積的通信設備而的處理器。其內部集成了一個高性能G2 內核、一個靈活的系統集成單元SIU和許多控制領域的常用外圍通信組件(組成通信處理模塊CPM,CommunicationsProcessor Module),可用于許多方面,尤其是在通訊和網絡系統方面。G2內核頻率在150-200MHz之間,CPM、PCI最高頻率為133MHz,外部頻率為66MHz,可同時處理高達

        128個全雙工時分復用邏輯通道。

          根據目標系統的不同,系統硬件平臺可以引出所需的MPC8250的外部通訊接口。我們的系統提供了8M的flash用于存放內核鏡像文件、文件系統、應用程序和備份數據,64MSDRAM用作內存,521KB 的flash用于存放啟動代碼,此外還有RS232串口、10/100M以太網口以及JTAG支持等。

        MPC8250的嵌入式linux系統

        編譯環境的定制

          通常主機與目標板的CPU都不相同,需要進行交叉編譯。能夠進行交叉編譯的工具很多,一般使用GNU C,它包括gcc、g++編譯器,glibc、newlib 等C庫,binutils 以及其他一系列開發工具。不同的開發平臺需要不同的交叉編譯工具。這里我們選擇德國denx軟件中心提供的一套用于PowerPC嵌入式linux移植的開發編譯環境ELDK3.0(Embedded DevelopmentKit)。

          在主機上安裝完畢后,修改bash_profile配置文件的路徑和交叉編譯環境,具體如下:

          PATH=$PATH:$HOME /bin:/opt/afeu/usr/bin:/opt/afeu/bin:/usr/bin

          CROSS_COMPILE=ppc_82xx

          EXPORT PATH CROSS_COMPILE

        目標系統資源分配

          嵌入式linux系統一般沒有硬盤設備,存儲空間十分有限。這就要求在移植之前,需要對系統硬件地址精心分配,充分合理地利用。根據前面介紹的系統硬件平臺,這里給出目標設備的地址分配,如表1所示。

        表1 目標設備的地址分配

        目標設備的地址分配

        調試環境的建立

          在嵌入式系統中一般沒有顯示器等輸出設備,不利于在目標系統上進行調試。為了調試目標系統,我們通過JTAG仿真器BDI2000來跟蹤調試目標機上的代碼。其調試環境如圖1所示。

        系統調試環境

        圖1 系統調試環境

          其中網卡1#和目標機直接相連,用來下載內核鏡像,NFS文件共享等。網卡2#連接到BDI2000上,再通過JTAG口連接到目標機上。串口用于命令傳輸、接收返回信息等。

        Linux系統引導模塊U-Boot

          U-BOOT是denx軟件中心依照GPL(General PubliCLicense)發布的系統引導模塊,支持多種處理器,如ARM系列、PowerPC系列、MIPS 系列、X86系列等。編譯U-BOOT-1.1.0后生成可執行文件,然后根據自己的目標系統修改編輯U-BOOT包下的文件,進行移植(這里需要說明的是,由于找不到MPC8250的支持包,而它和TQM8260內核相差不大,所以下面采用8260ads 的支持包,同樣兼容)如:

          修改目標系統配置文件./include/configs/MPC8260ADS.h中的寄存器值、SDRAM 控制器參數、串口參數等;

          修改目標板定義文件./board/mpc8260ads/mpc8260ads.C中的I/O 端口定義;

          修改BCSR 等;

          U-Boot在引導Linux內核啟動時,向內核傳遞了一個命令行,內核根據這個命令行的參數來對系統進行相應設置。在linux內核啟動時,必須要掛載一個根文件系統。根文件系統可以通過網絡文件系統NFS 和本地文件系統LFS兩種方式提供。

          (1)通過NFS引導Linux系統

          通過NFS 引導Linux,其bootargs設置如下:
        bootargs設置

        (2)通過LFS引導linux系統

          通過LFS引導linux,可將bootargs設置如下:

          setenv bootargs root="/dev/mtdblock1" rw

          ip=24.86.246.216: 24.86.246.100: 24.86.246.100: 255.255. 255.0:afeu: eth1: off

        內核裁減與移植

          (1)Linux內核裁減:嵌入式系統存儲單元十分有限,精簡內核顯得尤為重要。內核裁減主要是去掉無用模塊,增加所需模塊,使之更符合目標系統。這主要包括平臺類型(platformsupport)的選擇,我們選擇TQM8260;Memory Technology Device(MTD)選擇內核對MTD和Flash的支持;Networking options選擇內核對網絡的支持;file systems 選擇內核對文件系統的支持;MPC8260CPMoptions用于配置目標系統的一些通信設備。

          裁減完內核后需要對其重新進行編譯,方法與通用linux編譯基本無異,限于篇幅,不再贅述。

          (2)Linux內核移植:內核移植源碼主要分部在Linux/include/arch/ppC下。根據目標系統,對與_res 變量相關的參數進行調試跟蹤修改,其修改的關鍵代碼如下:

          對于arch/ppc/8260_io/commproc.c,改宏定義為:#defineBRG_INT_CLK(16 * 1000000);

          在arch/ppc/8260_io/uart.C中設置波特率:bd->bi_baudrate=9600;

          在arch/ppc/kernel/m8260_setup.C中設置總線頻率:bininfo->bi_busfreq=66;

          設置arch/ppc/kernel/m8260_setup.C中的系統重啟地址為:

          startaddr=0xeff00100;

          此外,還需要修改MTD 設置,主要是修改drivers/mtd/maps/tqm8260.c文件中的分區定義(和目標系統地址分配有關)和目標系統的Flash 的配置,使其滿足自己系統的要求。關于8M Flash的分區會在文件系統中敘述。

          修改完內核源碼,反復調試無誤后,鏡像內核文件,并使用U-Boot通過tftp將內核鏡像文件下載到目標板上。重新引導后,目標板linux即可成功啟動。

        文件系統

          (1)文件系統的分類:根據物理位置文件系統一般可分為網絡文件系統NFS和本地文件系統LFS。NFS 對于目標系統

        的要求一般不大,只需要提供網絡接口傳送文件;而LFS 對目標系統卻要求苛刻,一般需要大容量的flash。在嵌入式系統中,NFS主要用來對LFS 進行調整,即先在主機上將文件系統做好,通過NFS 掛載,調試用戶系統。通過NFS 和LFS兩種方式引導linux系統的方法前面已有介紹,這里不再贅述。

          Linux支持的文件系統格式主要有CRAMFS(CompressedROMFile System)和JFFS(Journalling Flash File System)。其中前者是只讀的,在啟動時裝載較快,可用來存儲動態連接庫、應用程序、初始化腳本等;后者可進行讀寫操作,其第2個版本即JFFS2,還較好地解決了諸如Flash 的空間、使用壽命和垃圾回收問題。

          (2)Flash分區:對CRAMFS和JFFS兩種文件系統的上述分析,可以將flash劃分為只讀區和可讀寫區,這既有利于linux系統的正常啟動,又利于文件的數據保護。其分區如表2所示。

          EDLK3.0提供的文件系統較大,而且很多對目標系統都沒有用,需要對其進一步進行裁減。裁減之后需要完善文件系統,以最大可能地符合目標系統。最后需要將裁減完善后的文件系統掛載為根文件系統。

        表2 flash 空間分配

        flash 空間分配

        結 論

          基于PowerPC處理器MPC8250嵌入式linux系統充分發揮了linux對網絡和MPC8250等設備的強大支持功能。與傳統的人工查閱故障診斷手冊相比,該系統可與飛機故障診斷系統進行實時通訊,有利于故障的快速查詢、維修方案的快速選定。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临猗县| 大安市| 石景山区| 仁寿县| 江陵县| 金乡县| 青海省| 射洪县| 长乐市| 正安县| 红桥区| 鄂尔多斯市| 攀枝花市| 阿图什市| 清苑县| 乐都县| 黄平县| 武宣县| 浠水县| 高淳县| 昔阳县| 房产| 道真| 重庆市| 上饶市| 中超| 枝江市| 珲春市| 且末县| 赣榆县| 那曲县| 张家口市| 温宿县| 方正县| 柳州市| 贵阳市| 八宿县| 阿克陶县| 金坛市| 克东县| 和林格尔县|