《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 嵌入式處理器基于SPI引導(dǎo)的RAM自檢探討
嵌入式處理器基于SPI引導(dǎo)的RAM自檢探討
2015年微型機(jī)與應(yīng)用第22期
高傳發(fā),孫振華,任華鋒
(許繼電氣有限公司 技術(shù)中心,河南 許昌 461000)
摘要: 介紹了嵌入式處理器在使用基于SPI引導(dǎo)方式時(shí),如何檢查DDR內(nèi)存,以提高系統(tǒng)的可靠性。對(duì)系統(tǒng)的引導(dǎo)過(guò)程,包括片內(nèi)ROM運(yùn)行、片內(nèi)RAM運(yùn)行、DDR內(nèi)存運(yùn)行,進(jìn)行了詳細(xì)的介紹。對(duì)各階段引導(dǎo)程序數(shù)據(jù)格式的處理進(jìn)行細(xì)致的分析,并對(duì)生產(chǎn)實(shí)用化進(jìn)行了實(shí)例驗(yàn)證。
Abstract:
Key words :

  摘  要: 介紹了嵌入式處理器在使用基于SPI引導(dǎo)方式時(shí),如何檢查DDR內(nèi)存,以提高系統(tǒng)的可靠性。對(duì)系統(tǒng)的引導(dǎo)過(guò)程,包括片內(nèi)ROM運(yùn)行、片內(nèi)RAM運(yùn)行、DDR內(nèi)存運(yùn)行,進(jìn)行了詳細(xì)的介紹。對(duì)各階段引導(dǎo)程序數(shù)據(jù)格式的處理進(jìn)行細(xì)致的分析,并對(duì)生產(chǎn)實(shí)用化進(jìn)行了實(shí)例驗(yàn)證。

  關(guān)鍵詞: SPI引導(dǎo);內(nèi)存自檢系統(tǒng)可靠性;引導(dǎo)過(guò)程

0 引言

  隨著全球網(wǎng)絡(luò)進(jìn)一步擴(kuò)展到新終端設(shè)備和以前未連接的行業(yè)中,網(wǎng)絡(luò)安全對(duì)消費(fèi)者、企業(yè)和其他機(jī)構(gòu)變得越來(lái)越重要。人們?cè)絹?lái)越需要性能安全、價(jià)格便宜的裝置設(shè)備。為了降低成本,往往需要簡(jiǎn)化電路設(shè)計(jì)。例如,采用SPI方式引導(dǎo)硬件,使用SPI Flash作為存儲(chǔ)媒介,減少總線的布線,是簡(jiǎn)化硬件電路的較好的方法[1]。但采用SPI方式引導(dǎo)硬件,需要將程序引導(dǎo)到DDR內(nèi)存中,同時(shí)又需要對(duì)DDR內(nèi)存進(jìn)行檢查,這就出現(xiàn)了矛盾[2]。

1 基于SPI的硬件引導(dǎo)

  本文以一個(gè)實(shí)例,對(duì)嵌入式處理器基于SPI引導(dǎo)硬件時(shí)如何進(jìn)行RAM檢查進(jìn)行詳細(xì)的介紹。圖1是嵌入式處理器使用SPI引導(dǎo)的硬件框圖。在圖1中,硬件引導(dǎo)程序和系統(tǒng)程序放在SPI Flash中,在上電引導(dǎo)后,系統(tǒng)程序會(huì)被搬移到DDR空間,在DDR空間運(yùn)行起來(lái)。

001.jpg

  現(xiàn)在以U-Boot硬件引導(dǎo)程序?yàn)槔榻B以SPI引導(dǎo)模式引導(dǎo)系統(tǒng)硬件的情況。U-Boot是德國(guó)DENX小組的開發(fā)用于多種嵌入式CPU的Bootloader程序,可以支持多種嵌入操作系統(tǒng)和多種處理器[3]。

  編譯的U-Boot程序,往往是運(yùn)行在NOR Flash或DDR中的。但在基于SPI引導(dǎo)時(shí),需要先從SPI Flash往片內(nèi)RAM里運(yùn)行一段程序,將DDR內(nèi)存檢查一遍,然后再將U-Boot引導(dǎo)到DDR內(nèi)存中去運(yùn)行,如圖2所示。

002.jpg

2 SPI引導(dǎo)采用的數(shù)據(jù)格式

  在TI公司的DSP及ARM處理器,飛思卡爾公司POWERPC及ARM處理器,都支持基于SPI的引導(dǎo)模式。在這些處理器的片內(nèi)ROM都包含基本的SPI引導(dǎo)驅(qū)動(dòng)程序。本文以飛思卡爾公司的QorIQ P1010處理器為例介紹其引導(dǎo)過(guò)程。P1010片內(nèi)的SPI驅(qū)動(dòng)程序能夠把SPI接口Flash中的程序拷貝到DDR內(nèi)存或片內(nèi)RAM中。不過(guò),在拷貝之前,需要先對(duì)DDR控制器或片內(nèi)RAM進(jìn)行配置。這就需要定義一個(gè)特定的數(shù)據(jù)結(jié)構(gòu),完成引導(dǎo)程序所需要的環(huán)境配置。對(duì)于不同的處理器,生產(chǎn)廠家定義的引導(dǎo)數(shù)據(jù)結(jié)構(gòu)是不同的。

  在P1010處理器完成復(fù)位序列后,通過(guò)選擇使用處理器片內(nèi)ROM的SPI引導(dǎo)配置程序,而后處理器內(nèi)核開始運(yùn)行該片內(nèi)ROM程序,配置SPI控制器,并與外部的SPI Flash通信,將程序拷貝出來(lái)并跳到指定的位置運(yùn)行[4]。SPI引導(dǎo)采用的數(shù)據(jù)格式如表1所示。

003.jpg

  在表1中,配置字(Control Words)由配置32 bit地址/數(shù)據(jù)對(duì)組成,主要用在配置就地訪問(wèn)窗口(LAW)和目標(biāo)內(nèi)存控制器的寄存器。配置地址域有兩種模式,當(dāng)最低位為0時(shí),配置地址域高30 bit代表的是地址,此時(shí)配置數(shù)據(jù)寫入此地址。當(dāng)最低位為1時(shí),配置地址域高30 bit代表的是指令,此時(shí)配置數(shù)據(jù)寫入此地址。這樣的結(jié)構(gòu)讓用戶可以方便地配置4 B對(duì)齊的內(nèi)存,完成控制指令操作,或定義程序配置階段的結(jié)束[5]。配置地址域的數(shù)據(jù)格式如表2所示。

004.jpg

  在表2中,當(dāng)CNT(最低位)=0時(shí),則高30 bit用作要寫入數(shù)據(jù)的地址,配置數(shù)據(jù)包含要寫入的數(shù)據(jù)。

  當(dāng)CNT=1時(shí),則高30 bit用作控制指令。

  當(dāng)EC=1時(shí),代表配置階段結(jié)束指令。

  當(dāng)DLY=1時(shí),代表延時(shí)一定時(shí)間指令。

  當(dāng)CF=1時(shí),代表更改SPI頻率的指令。

  CNT表示地址模式與指令模式的切換。

  當(dāng)處理器內(nèi)核開始拷貝程序時(shí),先判斷0X40位置的標(biāo)志是否正確,如果正確,先根據(jù)配置的地址/數(shù)據(jù)對(duì)的個(gè)數(shù)N來(lái)配置一些外圍寄存器,然后從0X50處指示的Flash地址搬移用戶代碼數(shù)據(jù)到0X58指示的地址。搬移完成后,從0X60指示的地址開始運(yùn)行。將片內(nèi)運(yùn)行的這一段程序叫TPL程序。

3 片內(nèi)RAM運(yùn)行的TPL程序

  P1010包含256 KB的L2CACHE,也可以當(dāng)片內(nèi)RAM使用。要檢查DDR內(nèi)存,要先在片內(nèi)RAM里運(yùn)行一小段TPL程序。這一段程序是對(duì)基于DDR引導(dǎo)程序U-Boot的一個(gè)裁剪,主要完成內(nèi)核的配置,初始化串口終端,初始化DDR內(nèi)存控制器,然后檢查DDR內(nèi)存[6]。在這里不需要設(shè)置U-Boot的環(huán)境變量,不需要配置以太網(wǎng)等其他的外圍器件。編譯后的TPL目標(biāo)文件為uboot-tpl.bin。

  TPL程序的編譯按RAM引導(dǎo)的方式處理。程序的開始地址設(shè)為:0xc0030000~0xc0038800。現(xiàn)在需要對(duì)編譯后的uboot-tpl.bin進(jìn)行格式處理,在其前面加上SPI引導(dǎo)的可以識(shí)別的數(shù)據(jù)表頭,如表3所示。

005.jpg

  表3是按照表1(SPI引導(dǎo)模式的數(shù)據(jù)結(jié)構(gòu))和表2(配置地址域的數(shù)據(jù)格式)完成的一個(gè)SPI引導(dǎo)配置實(shí)例。在這個(gè)實(shí)例中,將L2CACHE設(shè)為片內(nèi)RAM,開始地址設(shè)為0xc0000000。這一部分空間在處理器內(nèi)核引導(dǎo)時(shí)已經(jīng)通過(guò)TLB映射,可以直接使用。

  對(duì)TPL進(jìn)行數(shù)據(jù)格式化存放,要用到一個(gè)工具,即boot_format,它可以將基于HEX的文件和基于BIN格式的文件合并到一起。這是一個(gè)飛思卡爾BSP里帶的數(shù)據(jù)格式化工具。采用以下命令:

  ./boot_format cfg_sram_p1010.dat uboot-tpl.bin-spi uboot_tpl_spi.bin

  合并后的文件為uboot_tpl_spi.bin。

  在cfg_sram_p1010.dat文件里,TPL程序存放在SPI Flash的0X400開始的地址。處理器先對(duì)片內(nèi)RAM進(jìn)行配置初始化,然后將TPL程序從0X400引導(dǎo)到0xc0030000開始的地址,并從0xc0030000開始運(yùn)行。這時(shí),處理器對(duì)DDR控制器進(jìn)行配置,并對(duì)DDR空間進(jìn)行自檢。

4 DDR的自檢及U-BOOT的運(yùn)行

  DDR RAM的自檢可以采用寫入特定數(shù)據(jù)(例如0x55,0xAA),然后回讀比較來(lái)檢查的方式;也可以通過(guò)檢查行列地址數(shù)據(jù)線來(lái)檢查。相關(guān)文檔很多,這里就不介紹了。

  當(dāng)檢查完DDR內(nèi)存后,就可以引導(dǎo)并運(yùn)行U-Boot程序了。U-Boot程序按RAM引導(dǎo)的方式編譯。程序起始地址設(shè)為0X11000000。編譯后的文件為uboot.bin。但在實(shí)際中需要將兩個(gè)單獨(dú)的BIN文件合并成一個(gè)文件,以方便生產(chǎn)和產(chǎn)品實(shí)用化。當(dāng)uboot.bin與uboot_tpl_spi.bin合為的一個(gè)文件uboot_spi.bin時(shí),uboot_tpl_spi.bin放在前面,uboot.bin程序放在后面,如表4所示。

006.jpg

  在表4中,處理器在運(yùn)行TPL時(shí),將U-Boot從SPI Flash的0X10000地址引導(dǎo)到DDR3的0X11000000開始的地址(代碼數(shù)據(jù)總長(zhǎng)度0x40000),而后跳運(yùn)行入口地址(0X1103f000),運(yùn)行U-Boot程序。這時(shí),整個(gè)硬件系統(tǒng)引導(dǎo)起來(lái)了。操作系統(tǒng)可以通過(guò)U-Boot運(yùn)行起來(lái)。

5 結(jié)論

  嵌入式處理器在使用SPI引導(dǎo)硬件時(shí),先通過(guò)片內(nèi)RAM運(yùn)行一段程序,對(duì)DDR內(nèi)存進(jìn)行自檢,而后再將U-Boot程序及環(huán)境變量引導(dǎo)到DDR空間[7],把硬件系統(tǒng)引導(dǎo)起來(lái)。通過(guò)實(shí)例化的應(yīng)用,證明這在高性價(jià)比的嵌入式應(yīng)用中是一個(gè)不錯(cuò)的選擇,不僅能提高系統(tǒng)的可靠性,而且簡(jiǎn)單易行。

參考文獻(xiàn)

  [1] 張偉棟,趙紅.基于PowerPC8640處理器的通用處理模塊設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2015,34(6):32-34.

  [2] 李相國(guó),楊樹元.基于PowerPC處理器SMP系統(tǒng)的U-Boot移植[J].微計(jì)算機(jī)應(yīng)用,2008,29(9):95-99.

  [3] 王齊.Linux PowerPC詳解:核心篇[M].北京:機(jī)械工業(yè)出版社,2007.

  [4] 李宗海,陳蜀宇,李海偉.嵌入式Linux系統(tǒng)在ARM平臺(tái)上的構(gòu)建[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(10):153-157.

  [5] Freescale Semiconductor, Inc. Booting from On-Chip ROM (eSDHC or eSPI) [EB/OL]. (2012-6-1)[2014-4-18].http://cache.freescale.com/files/32bit/doc/ app_note/AN3659.pdf.

  [6] 鄧國(guó)榮,劉厚欽.基于NOR Flash的OMAPL138雙核系統(tǒng)自舉引導(dǎo)啟動(dòng)實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(2):19-26.

  [7] 鄒洋,李琳皓,梁峰.Nucleus操作系統(tǒng)在ARM11上的移植研究與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2014,40(9):10-13.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美视频第二页| 狠狠色狠色综合曰曰| 亚洲视频一区在线| 亚洲欧洲一区二区三区在线观看| 亚洲欧美日韩一区二区三区在线| 99pao成人国产永久免费视频| 亚洲欧洲综合另类| 亚洲国产精品成人久久综合一区 | 日韩视频一区二区在线观看| 91久久综合亚洲鲁鲁五月天| 亚洲福利视频网| 在线日本欧美| 亚洲国产精品第一区二区三区| 在线观看国产精品淫| 伊伊综合在线| 亚洲国产精品嫩草影院| 亚洲国产午夜| 亚洲精品综合精品自拍| 日韩视频不卡| 亚洲视频每日更新| 亚洲影院色无极综合| 亚洲欧美日韩精品在线| 亚洲欧美日韩网| 欧美一区二区三区在线观看视频 | 久久aⅴ国产欧美74aaa| 欧美一区二区三区四区夜夜大片 | 国产日韩一区欧美| 国产在线国偷精品产拍免费yy| 国产亚洲综合精品| 国内揄拍国内精品久久| 精品51国产黑色丝袜高跟鞋| 亚洲成人影音| 91久久精品国产| 亚洲免费高清视频| 亚洲特级毛片| 午夜精品一区二区三区电影天堂 | 亚洲国产福利在线| 99re视频这里只有精品| 亚洲一区不卡| 久久精品中文字幕一区二区三区| 毛片av中文字幕一区二区| 欧美黄色成人网| 欧美调教vk| 国产偷国产偷精品高清尤物| 激情综合自拍| 亚洲开发第一视频在线播放| 亚洲午夜视频在线| 久久成人一区二区| 亚洲精选视频在线| 亚洲欧美在线视频观看| 久久视频在线视频| 欧美日本三级| 国产视频在线观看一区二区三区| 亚洲国产成人精品女人久久久 | 亚洲中无吗在线| 亚洲大胆av| 亚洲午夜精品久久久久久app| 欧美亚洲综合网| 老司机aⅴ在线精品导航| 欧美日本韩国在线| 国产精品揄拍500视频| 136国产福利精品导航网址应用| 一本色道久久综合狠狠躁篇怎么玩 | 国产精品毛片一区二区三区| 国产在线视频不卡二| 亚洲精选91| 亚欧成人在线| 亚洲午夜日本在线观看| 久久免费午夜影院| 欧美三级在线视频| 精品88久久久久88久久久| 夜夜嗨av一区二区三区网页| 久久精品国产欧美亚洲人人爽| 一本色道久久综合亚洲精品婷婷 | 亚洲免费视频网站| 亚洲人成亚洲人成在线观看| 新片速递亚洲合集欧美合集| 欧美激情片在线观看| 国产日产欧美a一级在线| 亚洲精品在线观| 欧美中文在线视频| 亚洲淫性视频| 欧美成人日本| 国内精品视频一区| 亚洲一区二区在线看| 日韩网站在线观看| 久久手机免费观看| 国产欧美视频一区二区| 亚洲精品欧美日韩| 久久精品夜色噜噜亚洲a∨ | 亚洲国产精品悠悠久久琪琪| 午夜精品免费在线| 欧美日韩国产在线看| 精品成人国产在线观看男人呻吟| 亚洲自拍三区| 亚洲视频一区二区在线观看| 欧美高清在线观看| 一区二区在线不卡| 久久成人18免费观看| 亚洲欧美日韩精品久久久| 欧美激情bt| 亚洲国产激情| 亚洲第一在线| 久久久久久久久综合| 国产麻豆成人精品| 亚洲一区精彩视频| 亚洲午夜高清视频| 欧美日韩精品一区二区天天拍小说| 在线国产亚洲欧美| 亚洲东热激情| 久久久综合网站| 国产性天天综合网| 欧美亚洲免费电影| 久久国产精品高清| 国产欧美精品一区二区三区介绍| 亚洲丝袜av一区| 亚洲香蕉伊综合在人在线视看| 欧美区视频在线观看| 亚洲国产精品福利| 亚洲黑丝一区二区| 猛干欧美女孩| 亚洲国产欧美日韩精品| 亚洲精品视频在线| 欧美国产丝袜视频| 亚洲精品中文字| 亚洲一级片在线观看| 欧美日韩中文精品| 99视频日韩| 亚洲尤物视频在线| 国产精品美女久久久| 亚洲一区国产| 欧美在线一二三| 国产亚洲福利一区| 亚洲成人在线视频播放| 猛男gaygay欧美视频| 亚洲第一中文字幕| 亚洲乱码国产乱码精品精天堂 | 午夜精品福利一区二区蜜股av| 欧美一乱一性一交一视频| 国产日韩欧美不卡在线| 久久激情网站| 欧美成人午夜免费视在线看片 | 久久久国产午夜精品| 激情综合五月天| 亚洲精品在线视频| 欧美日韩综合不卡| 亚洲一区二区三区涩| 久久激情一区| 亚洲大片免费看| 日韩一级免费观看| 国产精品国产一区二区| 欧美一区二区日韩一区二区| 狂野欧美性猛交xxxx巴西| 亚洲国产视频一区| 亚洲与欧洲av电影| 国产欧美在线播放| 91久久精品www人人做人人爽 | 国产亚洲激情在线| 亚洲精品欧美在线| 欧美视频在线播放| 西西裸体人体做爰大胆久久久| 裸体一区二区三区| 亚洲精品国产精品国自产在线 | 免费毛片一区二区三区久久久| 亚洲欧洲在线视频| 午夜视频一区二区| 在线电影院国产精品| 亚洲一区日韩在线| 激情亚洲网站| 亚洲一区3d动漫同人无遮挡| 国产亚洲欧美一区二区三区| 亚洲精品国精品久久99热一| 国产精品国产三级国产专播品爱网 | 欧美影院久久久| 欧美精品亚洲一区二区在线播放| 国产精品99久久久久久白浆小说| 久久久久久久久久看片| 日韩视频一区二区| 久久精品人人做人人爽| 99精品欧美一区| 久久在线播放| 正在播放亚洲| 免播放器亚洲一区| 亚洲一区精品视频| 欧美国产91| 欧美一区亚洲| 欧美日韩一本到| 亚洲高清电影| 国产精品v欧美精品∨日韩| 亚洲国产精品久久久久婷婷884 | 国产欧美精品日韩| 一区二区三区四区五区精品| 狠狠干狠狠久久| 亚洲欧美春色| 亚洲日本中文字幕| 久久久人成影片一区二区三区| 亚洲图片在线观看| 欧美日韩精品一区二区| 91久久精品国产91久久| 国产区二精品视|