日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度解讀S3C2410A的嵌入式系統(tǒng)的U-Boot移植

電子工程師 ? 來(lái)源:現(xiàn)代電子技術(shù) ? 作者:丁小俊 ? 2021-05-05 17:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

0 引 言

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

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

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

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

1.2 U-Boot分析

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

2 U-Boot的啟動(dòng)分析

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

pIYBAGB1aliAESuvAABYoeFqfI8363.png

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

o4YBAGB1amqAaI7xAACXumMCR_0447.png

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

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

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

(5)初始化顯示設(shè)備;

(6)初始化網(wǎng)絡(luò)設(shè)備,填寫(xiě)IP地址、MAC地址等信息;

(7)開(kāi)啟中斷處理;

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

3 U-Boot的移植方法

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

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

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

pIYBAGB1apuAdZ9dAABqd2lZsyg313.png

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

3.2 修改board/smdk2410目錄下文件

(1)增加對(duì)NANDFLASH的讀驅(qū)動(dòng)nand_read.c

o4YBAGB1asiAPKbKAADjA2rQaSI613.png

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

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

o4YBAGB1awKAP5VmAAB0Cdw32VA388.png

pIYBAGB1axSAf55yAADhJCx3cEQ657.png

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

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

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

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

pIYBAGB1a0iAV6JYAAAyIvA0qbc179.png

3.4 編譯與運(yùn)行

配置好以后,進(jìn)入U(xiǎn)-Boot主目錄,重新編譯U-Boot代碼,運(yùn)行命令:

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

arm-linux-gcc-v

(2)清除生成的連接

Make distclean

(3)編譯make smdk2410_config

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

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

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

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

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

4 結(jié) 語(yǔ)

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5210

    文章

    20680

    瀏覽量

    337435
  • 無(wú)線通信
    +關(guān)注

    關(guān)注

    58

    文章

    5131

    瀏覽量

    147058
  • u-boot
    +關(guān)注

    關(guān)注

    0

    文章

    140

    瀏覽量

    39966
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    吃透RK3576 U-Boot.map文件!嵌入式開(kāi)發(fā)調(diào)試、性能優(yōu)化、代碼裁剪全攻略

    作為嵌入式開(kāi)發(fā)工程師,你是否曾被?U-Boot?啟動(dòng)崩潰、固件體積過(guò)大、啟動(dòng)速度慢等問(wèn)題困擾?其實(shí)答案就藏在?U-Boot?構(gòu)建過(guò)程中自動(dòng)生成的U-Boot.map文件里!這篇文章帶你
    的頭像 發(fā)表于 04-27 07:11 ?501次閱讀
    吃透RK3576 <b class='flag-5'>U-Boot</b>.map文件!<b class='flag-5'>嵌入式</b>開(kāi)發(fā)調(diào)試、性能優(yōu)化、代碼裁剪全攻略

    深度解析?RK?平臺(tái)?U-Boot?環(huán)境變量(env):原理、配置與實(shí)戰(zhàn)

    是?U-Boot?中以?“鍵值對(duì)”?形式存儲(chǔ)的配置信息,示例如下: ? bootdelay=3bootcmd=mmc
    的頭像 發(fā)表于 04-27 07:11 ?546次閱讀
    <b class='flag-5'>深度</b>解析?RK?平臺(tái)?<b class='flag-5'>U-Boot</b>?環(huán)境變量(env):原理、配置與實(shí)戰(zhàn)

    深度剖析U-Boot ADC Uclass:從架構(gòu)到實(shí)戰(zhàn)的全維度解析

    嵌入式開(kāi)發(fā)中,ADC(模數(shù)轉(zhuǎn)換)是連接模擬世界與數(shù)字系統(tǒng)的關(guān)鍵橋梁,而?U-Boot?作為嵌入式領(lǐng)域的經(jīng)典引導(dǎo)程序,其?ADC?子系統(tǒng)的設(shè)
    的頭像 發(fā)表于 04-26 07:08 ?60次閱讀
    <b class='flag-5'>深度</b>剖析<b class='flag-5'>U-Boot</b> ADC Uclass:從架構(gòu)到實(shí)戰(zhàn)的全維度解析

    S32G398 u-boot OCOTP 編程保險(xiǎn)絲僅在復(fù)位后激活是為什么?

    我需要保險(xiǎn)絲編程和驗(yàn)證(“保險(xiǎn)絲程序”和“保險(xiǎn)絲 cmp”)方面的幫助。 S32G3 保險(xiǎn)絲通過(guò) u-boot 命令行進(jìn)行編程。要更新保險(xiǎn)絲,我需要在 u-boot 中執(zhí)行“重置”。\'fuse
    發(fā)表于 04-08 06:05

    深入解析U-Boot image.c:RK平臺(tái)鏡像處理核心邏輯

    在瑞芯微(RK)平臺(tái)的嵌入式開(kāi)發(fā)中,U-Boot作為核心的啟動(dòng)加載程序,負(fù)責(zé)完成鏡像解析、校驗(yàn)、加載等關(guān)鍵流程。而image.c正是U-Boot中處理鏡像(uImage)的核心文件,尤
    的頭像 發(fā)表于 02-24 16:46 ?1855次閱讀
    深入解析<b class='flag-5'>U-Boot</b> image.<b class='flag-5'>c</b>:RK平臺(tái)鏡像處理核心邏輯

    玩轉(zhuǎn)U-Boot bdinfo:嵌入式bsp開(kāi)發(fā)者的定制、擴(kuò)展與裁剪實(shí)戰(zhàn)指南

    作為嵌入式開(kāi)發(fā)者,U-Boot 是我們調(diào)試、適配板卡的核心工具,而 bdinfo 命令更是板級(jí)信息調(diào)試的“利器”——它能直觀打印內(nèi)存布局、Flash 信息、網(wǎng)絡(luò)配置、時(shí)鐘頻率等核心參數(shù)。但原廠
    的頭像 發(fā)表于 02-24 15:26 ?863次閱讀
    玩轉(zhuǎn)<b class='flag-5'>U-Boot</b> bdinfo:<b class='flag-5'>嵌入式</b>bsp開(kāi)發(fā)者的定制、擴(kuò)展與裁剪實(shí)戰(zhàn)指南

    深入解析RK3588 U-Boot板級(jí)文件:evb_rk3588.c核心邏輯拆解

    嵌入式開(kāi)發(fā)領(lǐng)域,瑞芯微RK3588憑借超強(qiáng)的算力、豐富的接口和廣泛的場(chǎng)景適配性,成為高端邊緣計(jì)算、消費(fèi)電子項(xiàng)目的熱門(mén)選擇。而U-Boot作為嵌入式系統(tǒng)的“第一道門(mén)”,負(fù)責(zé)硬件初始化、
    的頭像 發(fā)表于 02-24 15:24 ?1004次閱讀
    深入解析RK3588 <b class='flag-5'>U-Boot</b>板級(jí)文件:evb_rk3588.<b class='flag-5'>c</b>核心邏輯拆解

    U-Boot SPL核心文件spl.c深度解析:從啟動(dòng)流程到調(diào)試優(yōu)化

    嵌入式系統(tǒng)開(kāi)發(fā)中,U-Boot 的 SPL(Secondary Program Loader)扮演著至關(guān)重要的角色,它是系統(tǒng)上電后執(zhí)行的第一個(gè)軟件組件之一,負(fù)責(zé)為后續(xù)啟動(dòng)過(guò)程鋪平道路
    的頭像 發(fā)表于 02-05 14:08 ?541次閱讀
    <b class='flag-5'>U-Boot</b> SPL核心文件spl.<b class='flag-5'>c</b><b class='flag-5'>深度</b>解析:從啟動(dòng)流程到調(diào)試優(yōu)化

    深入解析U-Boot TPL代碼:嵌入式啟動(dòng)的“第一棒”背后的秘密

    嵌入式系統(tǒng)啟動(dòng)過(guò)程中,從按下電源鍵到操作系統(tǒng)開(kāi)始運(yùn)行,中間藏著一系列精密的初始化步驟。今天我們就來(lái)拆解 Rockchip 平臺(tái) U-Boot 中的 TPL(Tiny Program
    的頭像 發(fā)表于 02-05 14:07 ?1321次閱讀
    深入解析<b class='flag-5'>U-Boot</b> TPL代碼:<b class='flag-5'>嵌入式</b>啟動(dòng)的“第一棒”背后的秘密

    深入解析U-Boot命令處理核心文件:功能、調(diào)試與開(kāi)發(fā)價(jià)值

    嵌入式系統(tǒng)開(kāi)發(fā)中,U-Boot 作為主流的引導(dǎo)加載程序,其命令處理、交互邏輯和自動(dòng)啟動(dòng)流程是核心功能模塊。本文將圍繞command.c、cli.c
    的頭像 發(fā)表于 02-03 15:44 ?1018次閱讀
    深入解析<b class='flag-5'>U-Boot</b>命令處理核心文件:功能、調(diào)試與開(kāi)發(fā)價(jià)值

    深入解析U-Boot核心文件board_f.c:知識(shí)點(diǎn)、調(diào)試要點(diǎn)與開(kāi)發(fā)價(jià)值

    嵌入式系統(tǒng)開(kāi)發(fā)中,U-Boot 作為應(yīng)用最廣泛的引導(dǎo)程序,其底層初始化邏輯直接決定了硬件啟動(dòng)的穩(wěn)定性與可靠性。
    的頭像 發(fā)表于 02-03 15:38 ?878次閱讀
    深入解析<b class='flag-5'>U-Boot</b>核心文件board_f.<b class='flag-5'>c</b>:知識(shí)點(diǎn)、調(diào)試要點(diǎn)與開(kāi)發(fā)價(jià)值

    解析Rockchip平臺(tái)U-Boot核心文件:boot_rkimg.c到底做了什么?

    嵌入式開(kāi)發(fā)中,U-Boot 作為引導(dǎo)程序的 “中流砥柱”,負(fù)責(zé)初始化硬件、加載內(nèi)核并啟動(dòng)系統(tǒng)。對(duì)于 Rockchip 平臺(tái)的設(shè)備(如常見(jiàn)的開(kāi)發(fā)板、智能終端),boot_rkimg.c
    的頭像 發(fā)表于 02-03 15:29 ?995次閱讀
    解析Rockchip平臺(tái)<b class='flag-5'>U-Boot</b>核心文件:<b class='flag-5'>boot_rkimg.c</b>到底做了什么?

    深入理解?RK3506 U-Boot?重定位:從代碼到原理

    嵌入式系統(tǒng)中,U-Boot?作為引導(dǎo)加載程序,其啟動(dòng)流程的核心環(huán)節(jié)之一就是 重定位(Relocation) 。對(duì)于?RK3506?這類(lèi)基于?ARM Cortex-A?架構(gòu)的芯片,重定
    的頭像 發(fā)表于 11-28 07:05 ?1027次閱讀
    深入理解?RK3506 <b class='flag-5'>U-Boot</b>?重定位:從代碼到原理

    飛凌嵌入式ElfBoard ELF 1板卡-uboot編譯u-boot/u-boot.bin/u-boot.imx

    u-boot文件就是編譯流程章節(jié)講的,鏈接器將鏈接各.o文件之后生成的.elf文件,該文件中包含了大量的調(diào)試信息、地址信息和注釋信息,不能被直接執(zhí)行,需要轉(zhuǎn)換成為可執(zhí)行的u-boot.bin文件,而
    發(fā)表于 05-22 11:24

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot

    上節(jié)中講到U-Boot是BootLoader的一種,U-Boot全稱(chēng)為Universal Boot Loader,即通用的BootLoader,所謂通用就是指它適用于多種嵌入式平臺(tái),包
    發(fā)表于 05-22 10:44
    霍邱县| 鄱阳县| 临潭县| 诏安县| 克拉玛依市| 克山县| 邢台县| 长子县| 徐水县| 舞阳县| 呼和浩特市| 延津县| 浦江县| 轮台县| 阿合奇县| 五河县| 原平市| 宣城市| 呼伦贝尔市| 铅山县| 巴中市| 惠来县| 如皋市| 文安县| 左云县| 宜州市| 台湾省| 乐业县| 三门县| 辽阳市| 吴忠市| 从江县| 甘肃省| 松滋市| 静海县| 砀山县| 尖扎县| 西昌市| 正镶白旗| 乌苏市| 五指山市|