• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      嵌入式Linux系統(tǒng)在S3C2410上的移植實現

      2008-04-26 03:32:16趙瑞娟李敬兆
      關鍵詞:嵌入式操作系統(tǒng)移植

      趙瑞娟 李敬兆

      摘 要: 首先對嵌入式Linux操作系統(tǒng)內核和S3C2410處理器進行了簡單介紹,在此基礎上,對 系統(tǒng)引導程序進行了設計,重點介紹了將Linux移植到S3C2410處理器的步驟和方法,并對移 植過程的關鍵部分進行了詳細闡述。編譯生成的內核在嵌入式系統(tǒng)中運行穩(wěn)定,結果證明方 法可行,對于開發(fā)其它嵌入式系統(tǒng)具有參考意義。

      關鍵詞:嵌入式操作系統(tǒng);移植;Linux;S3C2410

      中圖分類號: TP368.1 文獻標識碼:A 文章編號:1672-1098(2008)03-0073-04

      1 Linux內核和實驗系統(tǒng)簡介

      嵌入式操作系統(tǒng)作為大多數嵌入式應用系統(tǒng)的軟件平臺,它管理著系統(tǒng)的資源,為應用 軟件提供各種必要的服務。在嵌入式應用系統(tǒng)中使用嵌入式操作系統(tǒng),已是大勢所趨。目前 嵌入式操作系統(tǒng)的種類繁多,但Linux以其源代碼開放和可移植性強等特點,被廣泛使用。 本文將介紹如何將內核版本為2.4.18的Linux移植到基于ARM920T的S3C2410處理器上。

      1.1 Linux操作系統(tǒng)內核

      Linux操作系統(tǒng)主要由內核、shell、文件結構組成,其中內核是靈魂,負責整個系統(tǒng)的 內存管理、進程調度和文件管理。Linux內核與大部分UNIX內核一樣是單內核體系結構的, 能夠根據需要定制內核映像的尺寸,具有很大靈活性,不需要重新編譯內核和引導就能檢驗 新的內核組件,這個特性對于嵌入式而言是非常有好處的,方便用戶構筑自己的個人內核。 Linux內核有五個主要的子系統(tǒng)組成:進程調度、內存管理、虛擬文件系統(tǒng)、網絡接口和進 程間通信。

      本文將對內核版本為2.4.18的Linux進行移植,其內核代碼分布如圖1所示。

      (1) /arch目錄包含了目前Linux支持的硬件結構——如i386、alpha、arm等的內核代碼;

      (2) /drives目錄包含了內核中所有的設備驅動程序;

      (3) /fs目錄包含了所有的文件系統(tǒng)的代碼;

      (4) /include目錄包含了建立內核代碼所需要的大部分庫文件,這個模塊利用其它模塊重建 內核;

      (5) /init目錄包含了內核的初始化代碼,內核從此處運行;

      (6) /ipc目錄包含了進程間通信代碼;

      (7) /kernel子目錄包含了主內核代碼;

      (8) /mm目錄包含所有獨立于CPU體系結構的內存管理代碼;

      (9) /net目錄包含了和網絡相關的代碼,如ipv4、ipv6等。

      一般在每個目錄下都有一個.depend文件和一個Makefile文件,這兩個文件都是編譯時使用 的輔助文件。

      1.2 S3C2410處理器

      S3C2410是SAMSUNG公司基于ARM920T處理器內核開發(fā)的一款16/32位嵌入式處理器,運行 頻率高達200多MHz,具有MMU和高速緩存等豐富片上資源,可以廣泛用于PDA、internet設備 和手持式設備。其片上集成的功能主要包括以下幾個方面:

      (1) 1.8V ARM 內核,3.3V存儲器,3.3V外部I/O, 具有16kB指令緩存/16kB數據緩存和MMU 的微處理器;

      (2) 外部存儲控制器(SDRAM 控制和片選邏輯);

      (3) LCD控制器(支持上到4k色的STN和256k色的TFT), I通道LCD專 用DMA;

      (4) 具有外部請求引腳的4通道DMA;

      (5) 3通道UART, 2通道SPI;

      (6) 1通道IIC總線控制器,1通道US總線控制器;

      (7) 1.0版本的SD主機接口和兼容的2-11版本的Multi-Media卡協(xié)議;

      (8) 2端口 USB 主機,1端口 USB 設備(USB1.1);

      (9) 4通道PWM定時器,1通道內部定時器;

      (10) 看門狗電路;

      (11) 117個通用I/O口,24通道外部中斷源;

      (12) 電源控制:常規(guī)、緩慢、空閑和斷電模式;

      (13) 8通道10位ADC和觸摸屏接口;

      (14) 具有日歷功能的實時時鐘RTC;

      (15) 具有鎖相環(huán)的片上時鐘發(fā)生器。

      2 將Linux移植到S3C2410

      2.1 移植思路

      首先要為Linux設計一個BootLoader,通過BootLoader來初始化硬件,引導Linux運行。 Bootloader設計可以在ads中實現。然后,針對硬件環(huán)境和設計的 BootLoader修改Linux內 核。接下來,在Linux操作系統(tǒng)下建立交叉編譯環(huán)境。最后,配置、編譯、連接Linu x,下 載編譯得到的映像文件到Flash,通過BootLoader 來啟動嵌入式操作系統(tǒng)Linux。

      2.2 Boot Loader的設計

      引導加載程序通常稱為Boot Loader,就是在操作系統(tǒng)內核運行之前運行的一段小程序 。通過這段小程序,初始化硬件設備、建立內存空間的映射圖,從而建立適當的系統(tǒng)軟硬件 環(huán)境,為調用操作系統(tǒng)內核做好準備。

      本系統(tǒng)Boot Loader的第一階段主要完成基本的硬件初始化,用匯編語言實現:①關閉w atchdog,屏蔽所有中斷;②設置處理器時鐘和工作頻率,CPU工作頻率為200 M Hz;③初始化外部寄存器;④初始化堆棧指針SP;⑤拷貝Boot Loader的第二階段到RAM空間 中,使用一個 跳轉語句跳轉到第二階段的main入口函數。在完成以上操作后就為main函數的運行建立起了 一個基本的環(huán)境。

      第二階段用C語言完成:①通用I/O口的設置;②完成內存映射初始化和內存管理單元初 始化:men璤map璤init(); mmu璤init(); 這兩個函數在/arch/s3c2410/mmu.c中;③初 始化mtd設備:mtd璤dev璤init();這個函數在/drivers/mtd/maps/s3c2410璤flash.c中 ;④拷貝flash中的kernel映像和根文件系統(tǒng)映像到RAM空間中;⑤跳轉到內核的第 一條指令 處。跳轉時需要滿足下列條件:R0為0;R1為機器類型ID;禁止中斷(IRQ和FIQ);C PU設置 為SVC模式(SVC是供操作系統(tǒng)使用的一種保護模式);關閉MMU;關閉數據Cache。至此Boot Loader的任務結束。

      2.3 Linux內核的修改

      假定內核代碼放在/usr/src/Linux-2.4.18目錄下

      (1) 打開根目錄下的Makefile文件 此文件用來指定編譯規(guī)則,例如哪些需要編譯,哪些 需要先編譯。

      指定目標平臺:Arch=arm;

      指定交叉編譯器:添加CROSS璤COMPILE=arm-linux-。

      (2) 打開/arch/arm目錄下的Makefile文件 啟動代碼的產生需要通過此文件,由于2.4內 核還沒有對S3C2410的支持,在此添加如下代碼:

      ifeq((CONFIG璤ARCH璤S3C2410),y)

      TEXTADDR=0xC0008000

      MACHINE=s3c2410

      Endif

      TEXTADDR是內核的最終運行地址,該位置一般在RAM區(qū)起始地址偏移0x8000處(RAM起始地址 到偏移0x8000之間的32KB空間中存放一些全局數據結構如啟動參數、內存頁表等信息)。

      猜你喜歡
      嵌入式操作系統(tǒng)移植
      典型實時嵌入式操作系統(tǒng)應用分析
      電子測試(2018年23期)2018-12-29 11:11:30
      基于FreeRTOS系統(tǒng)和LwIP協(xié)議棧的網絡通訊
      西方音樂元素在二胡演奏中的移植
      “移植”瘦人糞便能減肥?
      基于嵌入式操作系統(tǒng)的工業(yè)采集板設計
      應用服務型人才培養(yǎng)體系下的嵌入式操作系統(tǒng)教學改革探索
      計算機嵌入式操作系統(tǒng)研究
      巩义市| 体育| 集贤县| 五莲县| 石家庄市| 宜黄县| 阿克陶县| 长泰县| 永德县| 罗定市| 大方县| 申扎县| 沁源县| 新宁县| 新邵县| 商丘市| 兴和县| 格尔木市| 遂川县| 仪陇县| 沧源| 屏南县| 会同县| 阿城市| 天峨县| 克什克腾旗| 盐边县| 千阳县| 吉林省| 内乡县| 曲麻莱县| 和顺县| 涟水县| 蒙城县| 齐齐哈尔市| 吉首市| 崇明县| 治多县| 卓资县| 舞钢市| 铜梁县|