《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于S3C2410A的嵌入式系統(tǒng)的U-Boot移植
基于S3C2410A的嵌入式系統(tǒng)的U-Boot移植
摘要: ARM嵌入式處理器已被廣泛應用于消費電子產品、無線通信、網絡通信和工業(yè)控制等領域。其中,ARM9的芯片更是以其低價格、低功耗、高性能在手持設備中占據(jù)著重要市場。在嵌入式操作系統(tǒng)中,Linux,Vxworks,WinCE三足鼎立,其中Linux由于其開源性、穩(wěn)定性、安全性、可裁減性更是一支獨放。在嵌入式系統(tǒng)中,如何實現(xiàn)在ARM9平臺下Linux操作系統(tǒng)的引導工作是嵌入式技術開發(fā)的重要環(huán)節(jié)。
Abstract:
Key words :

 

      ARM嵌入式處理器已被廣泛應用于消費電子產品、無線通信、網絡通信和工業(yè)控制等領域。其中,ARM9的芯片更是以其低價格、低功耗、高性能在手持設備中占據(jù)著重要市場。在嵌入式操作系統(tǒng)中,Linux,Vxworks,WinCE三足鼎立,其中Linux由于其開源性、穩(wěn)定性、安全性、可裁減性更是一支獨放。在嵌入式系統(tǒng)中,如何實現(xiàn)在ARM9平臺下Linux操作系統(tǒng)的引導工作是嵌入式技術開發(fā)的重要環(huán)節(jié)。

  1 嵌入式系統(tǒng)的軟件組成

  1.1 系統(tǒng)的軟件組成

  嵌入式的軟件系統(tǒng)主要由Bootloader、操作系統(tǒng)、文件系統(tǒng)、應用程序等組成。其中,Bootloader是介于硬件和操作系統(tǒng)之間的一層,其作用就好像PC機中的BIOS。系統(tǒng)加電運行后,由系統(tǒng)自動加載。通過這段程序,可以初始化硬件設備,建立內存空間的映射圖,從而將系統(tǒng)的硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調用操作系統(tǒng)內核準備好環(huán)境。對于一個嵌入式系統(tǒng),通常BootLoader是依賴于硬件而實現(xiàn)的。對于不同類型的嵌入式芯片、不同的操作系統(tǒng)和外圍接口都需要重新移植、修改和編譯Bootloader。

  1.2 U-Boot分析

  嵌入式Linux系統(tǒng)中常用的Bootloader引導程序有U-Boot,redboot,blob和vivi等,其中U-Boot遵循GPL條款的開放源碼項目,功能最為強大;U-Boot對PowerPC系列處理器支持最豐富,同時還支持MIPS,x86,ARM,Nios,XScale等諸多常用系列的處理器;U-Boot引導程序分為Stage 1和Stage 2兩大部分,Stage 1中主要包括設備初始化、中斷設置、時鐘設置和存儲器初始化等工作,并且采用匯編語言實現(xiàn),而一些通用功能大多采用C語言實現(xiàn),放在Stage 2中。

  2 U-Boot的啟動分析

  Stage 1的代碼在CPU/arm920t/start.s中定義,它包括從系統(tǒng)上電后在0x00000000地址開始執(zhí)行的部分。這部分代碼系統(tǒng)啟動后,從NAND FLASH自動加載到SDRAM中,它包括對S3C2410A中寄存器的初始化和將U-Boot的Stage 2代碼從FLASH拷貝到SDRAM。Stage 2的起始地址是在Stage1代碼中指定的。被復制到SDRAM后,就從第一階段跳到這個入口地址,開始執(zhí)行剩余部分代碼。第二階段主要是對內存的分配,對NAND FLASH以及對外圍設備的初始化,其代碼在lib-arm/board.C中。啟動的流程分析如圖1所示。

  (1)跳轉到C語言程序之后,首先定義初始化函數(shù)表,程序在lib-arm/board.e中,如下所示:

  (2)初始化FLASH設備和顯示FLASH設備信息;

  (3)初始化系統(tǒng)內存分配函數(shù);

  (4)如果目標系統(tǒng)擁有NAND設備,則初始化NAND設備;

  (5)初始化顯示設備;

  (6)初始化網絡設備,填寫IP地址、MAC地址等信息;

  (7)開啟中斷處理;

  (8)進入命令循環(huán),接收用戶從串口的命令輸入。

  3 U-Boot的移植方法

  本文選用交叉編譯環(huán)境arm-linux-gcc-2.95.3,選用U-Boot-1.1.4版本作為移植平臺。為了使U-Boot支持新的開發(fā)板,一種簡便的做法是在U-Boot已經支持的開發(fā)板中選擇一種與目標板接近的,在其基礎上進行修改。這里選用的是smdk2410的配置。

  3.1 修改cpu/arm920t/start.S文件

  Start.s是采用匯編語言編寫的U-Boot程序入口代碼,完成對底層硬件的初始化,其中有一個很重要的功能是從NAND FLASH中把Stage 2階段的代碼復制到SDRAM中。在此階段,涉及到對NANDFLASH的讀操作,在U-Boot中,沒有對NANDFLASH讀操作的驅動,采用以下方法實現(xiàn):

  通過調用board/smdk2410/nand_read.C中的nand_read_11函數(shù)將Stage 2階段的代碼復制到ram中。

  3.2 修改board/smdk2410目錄下文件

 

  (1)增加對NANDFLASH的讀驅動nand_read.c

  (2)在smdk2410.C文件中添加對NANDFLASH初始化的程序

  在此主要是對主板的GPIO的一些設置,并加上對NANDFLASH初始化程序。

  (3)在該目錄下的Makefile文件中添加nand_read.C文件的編譯

  OBJS:=smdk24 10.o FLASH.o nand_read.o

  3.3 在include文件中設置NAND FLASH硬件參數(shù)

  在/linux/mtd/nand_ids.h中設置參數(shù):

  3.4 編譯與運行

  配置好以后,進入U-Boot主目錄,重新編譯U-Boot代碼,運行命令:

  (1)查看交叉編譯器的版本號

  ARM-linux-gcc-v

  (2)清除生成的連接

  Make distclean

  (3)編譯make smdk2410_config

  (4)make CROSS-COMPILE=arm-linux-編譯成功后,將生成三個文件:

  u-boot:ELF格式的文件,可以被大多數(shù)Debug程序識別。

  u-boot.bin:二進制bin文件,純碎的U-Boot二進制執(zhí)行代碼,不保存ELF格式和調試信息。這個文件用于燒到用戶的開發(fā)板中。

  u-boot.srec:Motorola S-Record格式,可以通過串口下載到開發(fā)板中。

  將得到的u-boot.bin文件借助于FLASH芯片燒寫工具,通過JTAG口下載到目標板后,檢查U-Boot能否正常工作。如果能從串口輸出正確的啟動信息,就表明移植基本成功。

  4 結 語

  目前筆者移植的U-Boot已經能穩(wěn)定地運行在開發(fā)板上。U-Boot引導程序是嵌入式Linux系統(tǒng)軟件開發(fā)中的一個重要環(huán)節(jié)。在此通過分析U-Boot的代碼結構和啟動過程,并針對開發(fā)板系統(tǒng)的硬件資源,通過分析與調試,實現(xiàn)了U-Boot的移植,并且能夠引導嵌入式Linux內核和文件系統(tǒng),為今后進一步開發(fā)奠定了堅實的基礎。

此內容為AET網站原創(chuàng),未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
一区二区av在线| 午夜精品一区二区三区四区| 国产精品v亚洲精品v日韩精品| 久久综合伊人77777蜜臀| 欧美在线日韩| 亚洲欧美中文日韩v在线观看| aⅴ色国产欧美| 亚洲免费av网站| 亚洲精品乱码久久久久久久久| 久久精品国产清高在天天线 | 欧美伊人久久大香线蕉综合69| 亚洲图片激情小说| 一区二区三区国产精华| 亚洲免费久久| 一区二区日韩精品| 亚洲一区二区黄色| 亚洲一区二区欧美日韩| 亚洲一区二区三区在线视频| 亚洲午夜激情免费视频| 亚洲一区二区伦理| 午夜精品久久久| 久久福利影视| 老司机精品视频一区二区三区| 麻豆视频一区二区| 欧美久久久久中文字幕| 欧美日韩色婷婷| 国产精品老女人精品视频| 国产乱码精品一区二区三区忘忧草| 国产精品综合久久久| 国产亚洲精品久| 精品电影在线观看| 亚洲精品乱码久久久久久| 欧美日韩免费高清| 国产精品激情偷乱一区二区∴| 国产精品视频导航| 国产亚洲一区二区三区在线播放 | 亚洲伦理一区| 亚洲免费在线电影| 久久精品免费播放| 亚洲免费成人| 午夜精品久久久久久久| 久久久久久久久久久久久久一区| 老司机免费视频一区二区| 欧美日韩激情网| 国产日韩欧美电影在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲啪啪91| 亚洲午夜激情网站| 亚洲电影免费观看高清完整版| 日韩视频精品在线观看| 亚洲欧美日韩国产| 久久综合色天天久久综合图片| 欧美日韩爆操| 国产伦精品一区二区三区照片91 | 亚洲一区二区精品视频| 亚洲第一在线视频| 宅男精品视频| 久久综合福利| 国产精品久久久久久久久久ktv| 国产一区二区精品在线观看| 亚洲国内高清视频| 性色av一区二区三区红粉影视| 亚洲精品视频一区二区三区| 亚洲欧美综合另类中字| 欧美成人按摩| 国产亚洲欧美一区二区| 亚洲久久在线| 欧美一区二区三区免费在线看| 亚洲美女视频| 久久久久久久网| 国产精品国产三级国产a| 黄色成人在线免费| 亚洲视频免费看| 91久久国产综合久久91精品网站| 亚洲综合精品一区二区| 欧美**字幕| 亚洲一区二区精品| 伊人久久男人天堂| 亚洲小视频在线| 99国内精品久久| 久久久www成人免费无遮挡大片| 欧美日韩情趣电影| 亚洲高清成人| 午夜老司机精品| 久久精品国产在热久久 | 91久久国产综合久久91精品网站| 午夜精品国产精品大乳美女| 一本色道久久综合亚洲91 | 欧美成人亚洲成人| 国产日韩欧美一区在线 | 亚洲经典在线看| 久久精品电影| 亚洲精品自在在线观看| 久久久精品免费视频| 国产精品国产亚洲精品看不卡15 | 欧美一区二区女人| 欧美日韩一区二区在线| 在线观看视频一区二区| 午夜精品亚洲| 亚洲尤物视频在线| 欧美伦理a级免费电影| 影音先锋日韩资源| 欧美在线|欧美| 欧美专区在线| 国产精品网站在线播放| 艳妇臀荡乳欲伦亚洲一区| 亚洲毛片网站| 欧美成人性网| 亚洲第一免费播放区| 亚洲福利在线视频| 久久久久久午夜| 国产亚洲欧美日韩美女| 欧美亚洲免费高清在线观看| 中文成人激情娱乐网| 欧美精品一区二区视频| 亚洲国产成人精品女人久久久| 久久精品导航| 久久欧美中文字幕| 亚洲精品国产拍免费91在线| 一区二区三区你懂的| 日韩午夜激情电影| 欧美极品aⅴ影院| 亚洲激情专区| 日韩小视频在线观看| 欧美国产视频日韩| 亚洲黄一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 玖玖玖免费嫩草在线影院一区| 黑人极品videos精品欧美裸| 欧美与黑人午夜性猛交久久久| 久久精品30| 黄网站免费久久| 久久成人一区二区| 久久久五月天| 永久免费精品影视网站| 亚洲国产日韩欧美| 欧美91视频| 亚洲精品人人| 亚洲小说欧美另类社区| 国产精品日韩在线播放| 亚洲欧美在线另类| 久久精品视频在线看| 好吊成人免视频| 亚洲破处大片| 欧美日韩精品三区| 亚洲视频axxx| 欧美影院一区| 尤妮丝一区二区裸体视频| 亚洲精品在线观| 欧美日韩午夜在线| 亚洲一区二区三区四区在线观看 | 在线观看欧美黄色| 日韩一区二区久久| 欧美午夜精品理论片a级按摩 | 一区二区三区精密机械公司 | 老司机精品导航| 亚洲日本免费电影| 亚洲一区三区视频在线观看 | 中文日韩在线| 日韩亚洲欧美在线观看| 欧美视频免费在线| 欧美一级夜夜爽| 欧美成人精品一区二区三区| 亚洲精品一区二区三| 亚洲欧美激情视频| 欧美四级伦理在线| 久久电影一区| 欧美久久一级| 亚洲欧美一区在线| 免费中文日韩| 中文成人激情娱乐网| 久久精品日韩欧美| 91久久综合亚洲鲁鲁五月天| 亚洲午夜免费视频| 国产一区二区精品丝袜| 一本高清dvd不卡在线观看| 国产精品伦一区| 亚洲国产精品成人综合| 欧美涩涩视频| 久久国产福利国产秒拍| 欧美日韩精品久久久| 午夜在线观看欧美| 欧美韩日一区| 先锋亚洲精品| 欧美日韩在线观看一区二区三区| 欧美一区二区三区在线播放| 欧美极品在线观看| 欧美一级在线视频| 欧美日韩国产bt| 久久国产综合精品| 欧美午夜影院| 亚洲精品日韩在线| 国产欧美婷婷中文| 一区二区三区免费观看| 国产视频在线观看一区| 一本色道久久88亚洲综合88| 国产一区二区三区观看| 亚洲视频第一页| 狠狠色狠狠色综合日日五| 亚洲欧美中文字幕|