999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于S3C2410的啟動代碼的研究

2008-12-31 00:00:00
電腦知識與技術 2008年27期

摘要:描述了將啟動代碼移植到基于S3C2410處理器目標板上的方法與過程。首先介紹了目標平臺和Linux,接著介紹了交叉編譯環(huán)境的建立原理,著重介紹了BootLoader的架構和功能,給出了啟動代碼vivi的配置和編譯過程。

關鍵詞:嵌入式;S3C2410;Linux;交叉編譯;啟動代碼vivi

中圖分類號:TP338文獻標識碼:A文章編號:1009-3044(2008)27-1876-03

The Research of Startup-code Based on the Processor of S3C2410

XIONG Jie, WEI Yong

(Yangtze University, Electronic Information Institute, Jingzhou 434023, China)

Abstract: This paper introduces the method and procedure of making startup-code onto the target board based on the processor of S3C2410. Fist it says the target board and Linux, then describesthe theory of the cross compiler,focusing on the framework and functionality of Bootloader , introduces the config of vivi and the proces of compiler.

Key words: embedded; s3c2410; linux; cross compiler; vivi

1 引言

嵌入式系統(tǒng)就是以應用為中心、以計算機技術為基礎,采用可剪裁軟硬件,適用于對功能、可靠性、成本、體積、功耗等嚴格要標的專用計算機系統(tǒng)。ARM嵌入式芯片是一種高性能、低功功耗的RISC芯片。

Linux是開放源代碼的,操作系統(tǒng)的一切對用戶來說都是透明的;現(xiàn)在人們需要的是一個便宜、成熟并且提供高端嵌入式系統(tǒng)所必需特性的操作系統(tǒng),嵌入式Linux操作系統(tǒng)以價格低廉、功能強大又易于移植而被廣泛采用,成為新興的力量,所以眾多廠家紛紛轉向了嵌入式Linux。

2 開發(fā)環(huán)境

本文中使用的目標平臺S3C2410是SamSung公司使用ARM920T處理器內(nèi)核開發(fā)的一款嵌入式處理器。該芯片包括有16KB一體化的Cache/MMU,這一特性使開發(fā)人員能夠?qū)inux移植到基于該處理器的目標系統(tǒng)中。

文中使用的Linux開發(fā)環(huán)境是cygnus solutions公司開發(fā)的cygwin, cygwin是一個在Windows平臺上運行的Unix模擬環(huán)境,它對于學習Unix/Linux操作環(huán)境,或者從Unix到Windows的應用程序移植,或者進行某些特殊的開發(fā)工作,尤其是使用gnu工具集在Windows上進行嵌入式系統(tǒng)開發(fā),非常有用。

3 交叉編譯環(huán)境的建立

基于Linux操作系統(tǒng)的應用開發(fā)環(huán)境一般是由目標系統(tǒng)硬件(開發(fā)板)和宿主機所構成。目標硬件開發(fā)板用于運行操作系統(tǒng)和系統(tǒng)應用軟件,而目標板所用到的操作系統(tǒng)的內(nèi)核編譯、應用程序的開發(fā)和高度則需要通過宿主機來完成(所以稱為交叉編譯)。雙方之間一般通過串口,并口或以太網(wǎng)接口。在宿主機上建立ARM的交叉編譯環(huán)境,主要用到的開發(fā)工具包括三個部分:binutils、gcc、glibc。其中,binutils是二進制文件的處理工具;gcc是編譯工具;glibc是鏈接和運行庫。所有需要用到的工具既可以下載源碼自行編譯,也可以直接下載已經(jīng)編譯好的二進制工具。

4 Bootloader的架構和功能實現(xiàn)

4.1Bootloader介紹

在嵌入式系統(tǒng)中,BootLoader的作用與PC機上的BIOS類似,通過BootLoader可以完成對系統(tǒng)板上的主要部件進行初始化.其主要完成的功能:

1)初始化CPU的主頻、SDRAM、中斷、串口等硬件;2)啟動Linux內(nèi)核并提供一個RAMDISK; 3)通過串口下載內(nèi)核或RAMDISK到目標板上;4)將修改過的內(nèi)核或RAMDISK寫入到FLASH內(nèi);5)為用戶提供一個命令接口。

4.2 BootLoader啟動流程

BootLoader的實現(xiàn)除了依賴于CPU的體系統(tǒng)機構,還依賴于目標板的設置,本系統(tǒng)的BootLoader引導程序分為stage1和stage2兩個階段。依賴于CPU的體系機構的代碼,比如設備初始化等,放在stage1中,采用ARM匯編語言來實現(xiàn),這樣可以達到短小精悍的目的。Stage2用C語言來實現(xiàn),可以實現(xiàn)復雜的功能,同時代碼具有更好的可讀性和可移植性。

4.3BootLoader具體在S3C2410實現(xiàn)

常用的BootLoader有以下幾種:VIVI、Blob、U-BOOT等,本文著重介紹VIVI的移植過程。VIVI是由韓國MiZi公司開發(fā)的一種BootLoader,適合于ARM9處理器。VIVI兩種工作模式,即啟動加載和下載模式。

為了使移植工作更加快捷,本文選擇vivi-20030929版本。它不僅提供對ARM-920T內(nèi)核的支持,而且直接提供了對于S3C2410x的板級支持,這使移植工作量相對減少。

4.3.1 配置及編譯vivi

1)vivi中與軟件相關的修改(vivi/Makefile):

vivi作為Linux系統(tǒng)的啟動代碼,所以在編譯配置時需要用到函數(shù)庫,包括交叉編譯庫和頭文件,交叉編譯開關選項設置,還包括Linux內(nèi)核代碼中的庫和頭文件,所以通常需要修改vivi工程管理文件Makefile。

首先從網(wǎng)站http://www.mizi.com下載vivi-20030929.tar.bz2源代碼,對于本文使用的EduKit2410,需要對下面幾處進行修改:

交叉編譯器庫和頭文件:

① 修改原Makefile文件中有關編譯器路徑設置:

CROSS_COMPILE=/opt/host/armv4l/bin/armv4l-unknown-linux-

修改為CROSS_COMPIEL=/usr/bin/arm-linux-

② 修改增加鏈接時使用的標準庫文件路徑設置:

新增ARM_C_LIBS=/usr/arm-linux/lib

ARM_GCC_LIBS = /opt/host/armv4l/lib/gcc-lib/armv4l-unknown-linux/2.95.2

修改為 ARM_GCC_LIBS = /usr/lib/gcc-lib/armv4l-unknown-linux/2.95.3

③ 增加編譯時頭文件搜索路徑設置:

LIBC_INCLUDE_DIR= /usr/arm-linux/include

Linux內(nèi)核包含文件

修改Linux頭文件所在路徑:

LINUX_INCLUDE_DIR=/opt/host/armv4l/include/

修改為:

LINUX_INCLUDE_DIR= /usr/local/src/edukit2410/kernel/include

編譯開關選項

修改鏈接開關選項設置:

CLIBS = -L$(ARM_GCC_LIBS) –lgcc –lc

修改為:

CLIBS = -L$(ARM_C_LIBS) -L$(ARM_GCC_LIBS) -lgcc -lc

4.3.2 vivi中與硬件相關的初始化(vivi/arch/s3c2410)

與具體運行在哪一個處理器平臺上相關的文件都存放在vivi/arch/目錄下,本系統(tǒng)中使用S3C2410X對應的目錄為S3C2410。其中head.S文件是vivi啟動配置代碼,加電復位運行的代碼就是從這里開始的。由于該文件中對處理器的配置均用外部定義常數(shù)或宏來實現(xiàn),所以針對不同的平臺,只要是S3C2410X處理器,幾乎不用修改,只要修改外部定義的初始值即可。這部分初始值都在vivi/include/platform/smdk2410.h文件中定義,包括處理器時鐘、存儲器初始化、通用IO口初始化以及vivi初始配置等等。

4.3.3 編譯、燒寫vivi映像

$>cd/usr/local/src/edukit-2410/vivi 注:進入vivi文件夾

$>make clean 注:清除舊的編譯結果

$>make menuconfig注:在配置時,本系統(tǒng)中選擇的是smdk-amd即Nor Flash中燒寫

$>make 注:編譯

編譯完成后生成名為vivi的文件,用英蓓特公司提供的Embest Online Flash Programmer軟件,本系統(tǒng)中make menuconfig 時選擇配置文件為SMDK2410-AMD,編譯輸出的映像文件為Nor Flash上運行,需要燒寫到系統(tǒng)核心子板上的2MB Nor Flash中的第1到第5個扇區(qū)中,如圖1所示。

4.3.4 實驗結果

燒寫vivi后,然后用上面的軟件燒寫內(nèi)核鏡像文件,開發(fā)箱通過串口與PC機相連,在PC上打開Windows自帶的超級終端,然后再次啟動開發(fā)箱電源,在超級終端上如果觀察到下面如圖2所示的字符串,則表示vivi燒寫成功。

圖2 結果分析

5 結束語

總之,在ARM程序設計中,啟動代碼是至關重要的。它是Linux內(nèi)核移植,文件系統(tǒng)移植的基礎。本文通過介紹啟動代碼,詳細講述了一種快速、簡單、通用性強的ARM9啟動代碼的編寫。

參考文獻:

[1] 田澤.ARM9嵌入式Linux開發(fā)實驗與實踐[M].北京:北京航空航天大學出版社, 2006.

[2] 徐英慧,馬忠梅.ARM9嵌入式系統(tǒng)設計-基于S3C2410與Linux[M].北京:北京航空航天大學出版社,2007.

[3] 楊宗德.嵌入式ARM系統(tǒng)原理與實例開發(fā)[M].北京:北京大學出版社,2007.

主站蜘蛛池模板: a欧美在线| 在线看国产精品| 成人第一页| 视频一区视频二区中文精品| 欧美在线综合视频| 国产永久在线观看| 18禁黄无遮挡网站| 欧美五月婷婷| 久久久久人妻一区精品| 亚洲精品色AV无码看| 中文字幕永久在线观看| 99热6这里只有精品| 58av国产精品| 久久婷婷六月| 日韩在线2020专区| 国产又爽又黄无遮挡免费观看| 毛片网站在线看| 欧美日韩v| 国产h视频在线观看视频| 国产在线麻豆波多野结衣| 久久综合色天堂av| 欧美成人综合在线| 91小视频在线| 2020国产在线视精品在| 综合网天天| 九九久久精品免费观看| 一本大道无码日韩精品影视| a天堂视频| 国产va在线观看| 免费一级毛片在线观看| 国产99视频精品免费观看9e| 玩两个丰满老熟女久久网| 操美女免费网站| 亚洲一区二区约美女探花| 欧美国产在线一区| 青青极品在线| 亚洲区欧美区| 欧美性天天| 国产精品色婷婷在线观看| 88av在线看| 国产亚洲精品自在久久不卡| 91精品免费久久久| 欧美日韩免费观看| 5388国产亚洲欧美在线观看| 丝袜美女被出水视频一区| 国产精品天干天干在线观看| 国产精品lululu在线观看| 亚洲AV无码乱码在线观看裸奔| 欧美精品1区| 精品国产乱码久久久久久一区二区| 日韩精品毛片| 亚洲人成网址| 亚洲精品第一在线观看视频| 中国一级特黄视频| 在线亚洲精品福利网址导航| 欧美午夜网| 亚洲AV无码久久精品色欲| 国产99在线观看| 日韩欧美在线观看| www.狠狠| 欧美成人综合视频| 日韩美女福利视频| 久热99这里只有精品视频6| 老司机精品99在线播放| 永久免费精品视频| 91精品最新国内在线播放| 亚洲人在线| 亚洲swag精品自拍一区| 九九九精品成人免费视频7| 日本人又色又爽的视频| 国产精品尹人在线观看| 精品福利视频网| 国产av一码二码三码无码| 久久精品嫩草研究院| 91探花国产综合在线精品| 国产91全国探花系列在线播放| 日韩AV手机在线观看蜜芽| 欧美爱爱网| 欧美一道本| 丁香婷婷激情网| 亚洲精品国产综合99久久夜夜嗨| 熟妇丰满人妻|