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

Davinci平臺下大頁面NAND Flash上的系統構建問題

2011-01-22 03:35:42唐建兵吳仲光
網絡安全與數據管理 2011年2期
關鍵詞:頁面嵌入式程序

唐建兵,吳仲光,肖 煬

(四川大學 計算機學院,四川 成都 610065)

Davinci平臺下大頁面NAND Flash上的系統構建問題

唐建兵,吳仲光,肖 煬

(四川大學 計算機學院,四川 成都 610065)

以TI公司新一代Davinci TMS320DM6446嵌入式處理器為例,詳細描述了在NAND Flash上構建嵌入式Linux操作系統的一般方法。結合Sumsang公司的K9K8G08U0A大頁面NAND Flash,給出了引導程序的移植、燒寫的具體設計及實現過程,提供基于大頁面NAND Flash作為唯一外部存儲設備的穩定、可靠的解決方案 。為新一代Davinci系列處理器的配置、使用提供了參考。

Davinci;NAND Flash;大頁面;引導程序;Linux

達芬奇(Davinci)系列嵌入式處理器是 TI公司的具有高速處理能力的新一代嵌入式設備[1],它同時具備了DSP和精簡指令級計算機技術的優點。它集成了一個高性能的DSP核心與一個ARM9內核,被廣泛應用于嵌入式圖片、視頻處理中[2]。在 Davinci平臺下,通常以ARM核為基礎構建嵌入式操作系統,但是目前經常采用一片NOR Flash加上一片NAND Flash作為外部存儲設備,并且通常都是 256 B/頁或者 512 B/頁的小頁面 NAND Flash,本文旨在只以一片2 KB/頁的大頁面NAND Flash(Samsung K9K8G08U0A)作為外部存儲設備、Davinci TMS-320DM6446作為處理器的硬件結構下,闡述構建穩定可靠的系統需要解決的問題。

1 問題概述

EMIF是用來連接Flash、SRAM等多種存儲設備的外設端口。TMS320DM6446的EMIF端口支持每路32 MB總共4路可尋址的片選空間,支持8 bit以及16 bit的數據總線寬度,具有可編程的建立、選通以及保持時間,還具備NAND Flash ECC校驗數據生成功能等[5],因此可以方便靈活地與外部NAND Flash芯片通信。在本文的硬件系統中,即采用TMS320DM6446的EMIF的CS2空間與Samsung K9K8G08U0A NAND Flash相連。

由于本系統只有一片NAND Flash作為外部的存儲設備,因此所有的引導程序、操作系統內核以及根文件系統均需要存儲在這上面,系統也就需要從NAND Flash啟動。TMS320DM6446具有多種啟動方式,具體由哪種方式啟動,由系統復位時引腳 BTSEL[1:0]電平決定,當BTSEL[1:0]被置為“01”時,TMS320DM6446 的 ARM 核從EMIFA的EM_CS2存儲空間開始執行(地址為0x0200 0000),這種情況下EMIF連接的是具有線性地址的非易失存儲器,通常是 NOR Flash。 當 BTSEL[1:0]不為“01”時,TMS-320DM6446內部的 ROM BOOT LOADER(簡稱 RBL)開始運行,RBL再根據BTSEL[1:0]的不同值決定從何處加載用戶的引導程序 UBL(USER BOOT LOADER)。當BTSEL[1:0]為“00”時,RBL將從連接到 EMIF的 CS2空間的NAND Flash中加載UBL。由于RBL的加載過程是將UBL拷貝到ARM的內部RAM中,因此對于UBL的大小限制在14 KB以內,但是在嵌入式環境常用的U-BOOT、ViVi等的大小都遠超過這個限制,因此需要多級加載,一級引導程序主要做系統的初始化,然后將二級引導程序(在本系統中采用U-BOOT,本文后面提到的UBL均指一級引導程序)從NAND Flash中讀取到RAM中,然后啟動它,由U-BOOT負責操作系統的引導[4]。于是整個NAND Flash上系統構建的關鍵問題包括如何移植UBL,以使其能夠正常初始化系統,正常加載二級引導程序U-BOOT到RAM中,U-BOOT的移植使其滿足大頁面NAND Flash的讀寫要求以及裸機時引導程序的燒寫。

2 UBL移植

UBL為TI公司提供的對于Davinci系列處理器通過內部的ROM BOOT LOADER啟動時的一級引導程序。其工作流程如圖1所示。

圖1 UBL流程圖

UBL的移植主要針對本系統中硬件板的結構修改系統初始化過程以及增加對Samsung K9K8G08U0A NAND Flash的支持,以下分別闡述。

2.1 系統初始化

2.1.1 設置CPU、DDR工作頻率

TMS320DM6446具有兩路PLL,其中PLL1通過分頻供系統的主時鐘及大部分外設的時鐘,PLL2供DDR2使用。DSP 時鐘頻率為SYSCLK1=27 MHz×(PLL1_PLLM+1),使用固定一分頻,本系統中DSP工作在正常頻率594 MHz,因此需設置PLL1_PLLM=21,即設置寄存器0x1C4 0910為21。

本系統使用兩片K4T1G164QQ-HCE6 DDR2 SDRAM作為系統內存,該芯片為DDR2 667芯片,時鐘頻率為333 MHz。TMS320DM6446中 DDR2使用 PLL2的 PLLDIV2分頻作為時鐘頻率,計算公式為(27 MHz×(PLL2_PLLM+1))/(PLL2_PLLDIV2→RATIO+1)。因此設置PLL2_PLLM=23,PLL2_PLLDIV2→RATIO=1,PLL2_PLLDIV2 的第 15 位為分頻允許位,應置為 1,所以 PLL2_PLLDIV2為0x8001,即寄存器 0x1C4 0D10=23,0x1C4 0D1C=0x8001。

2.1.2 配置EMIF接口

根據Samsung K9K8G08U0A NAND Flash的讀、寫時序要求,TMS320DM6446的 EMIF用于與 NAND Flash連接時,配置寄存器各字段值需滿足如下要求:

其中tSU是EMIF數據建立時間,取值5 ns,tH數據保持時間取 0,EMFI時鐘為系統 6分頻,所以 tcyc=1/(27×(21+1)/6)≈10 ns,根據 EMIF連接 NAND的取值要求,設置EMIF CS2的配置寄存器值為0x842429c。

2.2 支持Samsung K9K8G08U0A NAND Flash

UBL通過數據結構struct_NAND_DEV_STRUCT_來表示一個型號的 NAND Flash,具有 devID、numBlocks、pagesPerBlock、bytesPerPage幾個字段。通過 struct_NAND_DEV_STRUCT_類型的數組gNandDevInfo[]來記錄所有支持的NAND Flash。UBL在從NAND Flash讀取數據之前,首先通過讀取設備號命令0x90得到NAND Flash的設備號,然后從數組gNandDevInfo[]中查找具有相同設備號的記錄,從而得到NAND Flash的詳細信息,以確定NAND Flash的讀方式。

因此,需要 UBL支持特定的 NAND Flash,只需要將其信息添加到數組gNandDevInfo[]中即可。本系統中用到的 Samsung K9K8G08U0A NAND Flash設備號為 0xD3,具有8 192個存儲塊,每個塊具有64個頁面,每頁具有2 048 B數據存儲區域以及64 B的Spare區域,在數組gNandDevInfo[]中添加{0xD3,8192,64,2048+64}即可。

3 U-BOOT移植

本系統中使用的U-BOOT引導程序由TI公司提供的支持Davinci平臺以及NAND Flash啟動的U-BOOT1.1.3移植而來。

3.1 NAND Flash讀寫時序

U-BOOT1.1.3不支持 2 KB/page的大頁面 Flash,因此移植過程主要是增加NAND Flash的讀寫、擦除。2 KB頁面NAND Flash與普通讀寫擦除最主要的區別在于地址構成不同,本系統中用到的Samsung K9K8G08U0A NAND Flash總共存儲空間 1 GB=230,每頁大小為 2 KB=211,因此總的地址長度 30 bit,從 A0~A29,頁地址長度為11 bit,從 A0~A10,本系統采用 8 bit的地址數據寬度連接NAND Flash,頁地址和塊地址需要分不同的地址周期,因此NAND的地址需要5個周期送出,前兩個周期為頁地址,依次為地址的 A0~A7、A8~A10,后三個周期為塊地址,依次為地址的 A11~A18、A19~A26、A27~A29,頁地址和塊地址的最后一個周期不足8位,不足的高位均為 0。

Samsung K9K8G08U0A的讀過程如下:寫0x00命令、分5個周期寫地址、寫0x30命令、讀數據、根據讀出的數據生成ECC校驗數據、生成的ECC數據與讀出的ECC數據比對以確定數據是否有誤以及能否校正。

寫過程如下:寫0x80命令、分5個地址周期寫地址、送出數據(包括ECC校驗數據)、寫 0x10命令、讀取狀態直到busy信號無效、檢查是否出現寫錯誤。

擦除過程如下:寫0x60命令、分三個地址周期寫塊地址、寫0xD0命令、讀取狀態直到busy信號無效、檢查是否出現擦除錯誤。

3.2 YAFFS2文件系統燒寫

YAFFS2鏡像燒寫與U-BOOT下普通寫NAND Flash區別在于spare區域的數據不需要程序根據數據存儲區的數據生成,spare區域的數據在制作YAFFS2鏡像時,已經由鏡像制作工具生成并寫入了鏡像文件。因此在nand命令的write中增加.yaffs2選項,當使用nand write.yaffs2命令時,直接從指定地址中讀出2 048 B/頁數據以及數據后緊跟的64 B的spare區域數據,并將其寫入NAND Flash中。

U-BOOT在Flash的讀寫過程中需要檢查壞塊情況,在開始讀寫每個塊的時候首先檢查該塊第一頁以及第二頁的spare區域的第一個數據是否為0xFF,如果不為0xFF則當前塊為壞塊,需要跳過它。

4 燒寫程序

在UBL以及U-BOOT被固化進NAND Flash之前,系統處于裸機狀態,無法正常引導操作系統,燒寫程序的作用是在裸機狀態下借助仿真器的作用,將UBL以及U-BOOT燒寫到NAND Flash正確位置的。

前面已經提到,本系統采用的Samsung K9K8G08U0A NAND Flash具有8 192個存儲塊(block)。這 8 192個塊按照如下分配其使用方式:第0塊在出廠時確保不是壞塊,用作整個NAND Flash的壞塊信息存儲;第1~3塊存儲 UBL;第 4~7塊存儲 U-BOOT;第 8塊存儲 U-BOOT環境變量;第 9~40塊存儲 Linux操作系統內核;第 41~8 191塊存儲YAFFS2文件系統。

實際中,UBL和U-BOOT都只需要占用一個存儲塊的存儲空間,由于考慮到NAND Flash可能有壞塊的存在,于是在設計燒寫程序時,為UBL增加了2個冗余塊,為U-BOOT增加了3個冗余塊,以確保系統穩定可靠地從NAND Flash上啟動。

燒寫程序是系統在沒有任何程序的裸機情況下執行的,燒寫程序需要通過仿真器加載到系統目標板的DDR2中運行。由于加載程序時系統未執行任何程序,也就沒有做任何初始化,DDR2也處于不可用狀態,系統將無法加載程序。TI的CCS集成環境提供了GEL文件來解決這一問題,在仿真器連接目標板時會自動執行GEL文件中的 OnTargetConnect()函數,在該函數中,需要對系統做初始化。

燒寫程序在被加載到內存后,即可被執行來完成UBL以及U-BOOT的燒寫,程序執行過程如圖2所示。

圖2 燒寫程序流程圖

數據寫入時需要注意UBL是由TMS320DM6446內部的ROM BOOT LOADER讀入到內部RAM中然后執行的,因此,燒寫程序對于ECC校驗數據的生成以及ECC數據在spare區域的存儲位置必須要與ROM BOOT LOADER讀取數據時的校驗方式一致。ROM BOOT LOADER采用EMIF的硬件ECC校驗,每512 B的數據產生4 B的校驗數據,并按照如下方式存儲:spare區域地址從0x00到0x3F,其中0x08-0x0B存儲第1個512 B數據的第3-0位ECC數據,0x18-0x1B存儲第2個512 B數據的第3-0位ECC數據,0x28-0x2B存儲第3個512 B數據的第3-0位ECC數據,0x38-0x3B存儲第 4個512 B數據的第3-0位ECC數據。因此,在燒寫程序中也使用EMIF硬件ECC校驗來生成校驗數據,在每次寫入數據達到512 B時,通過讀寄存器NANDF1ECC(地址為0x0200 0070)來獲得ECC值,最后在一頁數據寫入完畢后寫入到spare區域的對應位置。

在UBL以及U_BOOT成功燒寫到NAND Flash后,系統上電,U_BOOT成功執行,通過U_BOOT將Linux操作系統內核以及YAFFS2文件系統鏡像燒寫到NAND Flash,設置 U_BOOT環境變量,再次引導系統,Linux系統正常啟動。本系統中成功實現了從裸機到整個系統的構建,解決了對大頁面NAND Flash的不支持,同時考慮了NAND Flash存在的壞塊情況,系統在實際使用中運行穩定可靠。

[1]TI Corporation.TMS320DM6446 Digital Media System-on-Chip[EB/OL].[2008-03-31].http://www.ti.com/lit/gpn/tms320dm6446.

[2]TI Corporation.TMS320DM644x DMSoC ARM Subsystem Reference Guide[EB/OL].[2009-03-31].http://www.ti.com/litv/pdf/sprue14b.

[3]TI Corporation.TMS320DM644x DMSoC Asynchronous External Memory Interface(EMIF)Reference Guide[EB/OL].[2009-02-24].http://www.ti.com/litv/pdf/sprue20c.

[4]王化福,孫同景.從NAND Flash啟動嵌入式操作系統[J].可編程控制器與工廠自動化,2009(5):79-80.

[5]Samsung Corporation.K9XXG08UXA Flash Memory[S],2006.

Key issues of system construction on large page NAND Flash based on Davinci

Tang Jianbing,Wu Zhongguang,Xiao Yang

(Department of Computer,Sichuan University,Chengdu 610065,China)

Take TI′s next-generation Davinci TMS320DM6446 embedded processor as an example,the general method of build embedded Linux operating system on NAND Flash is described in detail.Combined with Samsung′s K9K8G08U0A large page NAND Flash,the specific design and implementation process of boot transplant and programming is given,stable and reliable solution based on large page NAND Flash as only external storage device is given.It provide reference for configuration and use of the new generation processors of Davinci family.

Davinci;NAND Flash;large page;Boot Loader;Linux

TP368.33

A

1674-7720(2011)02-0103-03

2010-08-19)

唐建兵,男,1986年生,在讀碩士研究生,主要研究方向:嵌入式系統、計算機網絡與通信。

吳仲光,男,1953年生,副教授,碩士,主要研究方向:光機電一體化、嵌入式系統架構、計算機網絡與通信。

肖煬,男,1982年生,碩士,主要研究方向:電路系統。

猜你喜歡
頁面嵌入式程序
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
搭建基于Qt的嵌入式開發平臺
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
Altera加入嵌入式視覺聯盟
倍福 CX8091嵌入式控制器
自動化博覽(2014年4期)2014-02-28 22:31:15
主站蜘蛛池模板: 久久狠狠色噜噜狠狠狠狠97视色| 亚洲天堂日本| 中文字幕精品一区二区三区视频| 57pao国产成视频免费播放| 亚洲天堂免费在线视频| 色婷婷视频在线| 国产欧美日韩资源在线观看| 中文字幕永久在线观看| 国产尹人香蕉综合在线电影| 国产成人喷潮在线观看| 国产va视频| 中文字幕永久在线看| 九九热精品免费视频| 亚洲国产成人在线| 免费无遮挡AV| 欧美一道本| 亚洲天堂久久| 在线永久免费观看的毛片| 欧美一区精品| 欧美中出一区二区| 国产美女在线免费观看| www.99在线观看| h视频在线观看网站| 中国特黄美女一级视频| 成人精品免费视频| 免费人成在线观看视频色| 国产成人免费手机在线观看视频| 日韩精品无码免费专网站| 亚洲无码视频一区二区三区 | 性色在线视频精品| 国产精品自拍合集| 久久免费观看视频| 高清码无在线看| 色噜噜久久| 91在线高清视频| 免费久久一级欧美特大黄| 中文字幕在线欧美| 92精品国产自产在线观看| 精品乱码久久久久久久| 熟妇人妻无乱码中文字幕真矢织江| 老司机久久99久久精品播放| 色噜噜在线观看| 亚洲婷婷丁香| 五月综合色婷婷| 亚洲人成影院在线观看| 青青青视频蜜桃一区二区| 久久久久久久蜜桃| 亚洲视频二| 91po国产在线精品免费观看| 日韩欧美中文在线| 亚洲 欧美 中文 AⅤ在线视频| 亚洲天堂网2014| 亚洲一区二区三区在线视频| 久久a毛片| 91小视频在线| 国产亚洲成AⅤ人片在线观看| 国产成人艳妇AA视频在线| 91偷拍一区| 亚洲国产一区在线观看| 成人午夜精品一级毛片| 国产三级毛片| 国产凹凸一区在线观看视频| 看看一级毛片| 国产色婷婷视频在线观看| 91成人在线免费观看| 欧美亚洲综合免费精品高清在线观看 | 国产精品毛片在线直播完整版| 永久在线播放| 71pao成人国产永久免费视频| 亚洲精品无码日韩国产不卡| 丰满人妻中出白浆| 国产成人综合在线观看| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 中文字幕中文字字幕码一二区| 免费高清毛片| 91麻豆精品国产91久久久久| 在线免费看黄的网站| 日韩小视频在线播放| 免费不卡视频| 老司机久久精品视频| 伊人久久大香线蕉综合影视| 综合亚洲色图|