版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于 Hifmcv100器的 Flash 移植指南00B02文檔版本發(fā)布日期2018-05-15所有 ©非經(jīng)本公司2016-2018。保留一切權(quán)利。市半導(dǎo)體,任何和個(gè)人不得擅自摘抄、本文檔內(nèi)容的部分或全部,并不得以任何形式。商標(biāo)、和其他商標(biāo)均為市半導(dǎo)體的商標(biāo)。本文檔提及的其他所有商標(biāo)或商標(biāo),由各自的所有人擁有。注意您的、服務(wù)或特性等應(yīng)受公司商業(yè)合同和條款的約束,本文檔中描述的全部或部分產(chǎn)品、服務(wù)或特性可能不在您的或使用范圍之內(nèi)。除非合同另有約定,公司對(duì)本文檔內(nèi)容不做任何明示或默示的或保證。由于版本升級(jí)或其他,本文檔內(nèi)容會(huì)不定期進(jìn)行更新。除非另有約定,本文檔僅作為使用指導(dǎo),本文檔中的所
2、有陳述、信息和建議不任何明示或暗示的擔(dān)保。市半導(dǎo)體市龍崗區(qū)坂田:518129地址:基地電氣生產(chǎn)中心http:/:客戶服務(wù):客戶服務(wù)傳真:sup客戶服務(wù)郵箱:基于 Hifmcv100器的 Flash 移植指南前言前言概述本文檔主要介紹如何基于HiFMCV100 驅(qū)動(dòng)新增 Flash 器件及常見問題分析。版本與本文檔相對(duì)應(yīng)的版本如下。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)i所有 ©名稱版本Hi3519V100Hi3519V101Hi3516AV200Hi3516CV300Hi3516EV100Hi3559V100Hi3556V100Hi3536CV100Hi35
3、36DV100Hi3531DV100Hi3521DV100Hi35520DV400Hi3559AV100Hi3559CV100Hi3518EV200/V201Hi3516CC200Hi3521AV100Hi3531AV100基于 Hifmcv100器的 Flash 移植指南前言讀者對(duì)象本文檔(本指南)主要適用于以下工程師:技術(shù)支持工程師軟件開發(fā)工程師 符號(hào)約定在本文中可能出現(xiàn)下列標(biāo)志,它們所代表的含義如下。修訂修訂累積了每次文檔更新的說明。最新版本的文檔包含以前所有文檔版本的更新內(nèi)容。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)ii所有 ©符號(hào)說明表示有高度潛在,
4、如果不能避免,會(huì)導(dǎo)致或嚴(yán)重。表示有中度或低度潛在,如果不能避免,可能導(dǎo)致人員輕微或中等。表示有潛在風(fēng)險(xiǎn),如果忽視這些文本,可能導(dǎo)致設(shè)備損壞、數(shù)據(jù)丟失、設(shè)備性能降低或不可預(yù)知的結(jié)果。表示能幫助您解決某個(gè)問題或節(jié)省您的時(shí)間。表示是正文的附加信息,是對(duì)正文的強(qiáng)調(diào)和補(bǔ)充。名稱版本Hi3519AV100Hi3556AV100Hi3516CV500Hi3516DV300Hi3559V200Hi3556V200基于 Hifmcv100器的 Flash 移植指南前言文檔版本 00B02 (2018-05-15)第 2 次臨時(shí)發(fā)布。新增 小節(jié) 涉及修改文檔版本 00B01 (201
5、7-10-10)第 1 次臨時(shí)發(fā)布。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)iii所有 ©基于 Hifmcv100器的 Flash 移植指南目錄目錄前言i1新Flash 器件移植11.1 導(dǎo)讀11.2 SPI Nor Flash 器件的移植11.2.1 SPI-Nor U-boot 下的移植11.2.2 SPI-Nor 內(nèi)核下的移植131.3 SPI Nand Flash 器件的移植181.3.1 相關(guān)驅(qū)動(dòng)路徑181.3.2 如何新增一顆 SPI Nand Flash181.4 并口 Nand 驅(qū)動(dòng)271.4.1 相關(guān)驅(qū)動(dòng)路徑271.4.2 并口 Nand I
6、D. 271.4.3 如何新增一顆并口 Nand 器件29常見問題整理322.1 SPI Nor Flash 3byte/4byte 啟動(dòng)和 SPI Nand Flash 1/4 線啟動(dòng)3222.2 Hiburn 顯示燒寫,但串口沒打印332.3 4bit ECC、8bit ECC 和 8bit/1k ECC、16bit/1k ECC32.7使用大容量 NAND 應(yīng)該注意的地方34為什么在 NAND 上, u-boot 保存環(huán)境變量后,系統(tǒng)無法啟動(dòng)35如何正確使用 mtd-utils 的 nandwrite寫工具35有些 Flash 器件 ID 不變工藝更新導(dǎo)致參數(shù)變化對(duì)兼
7、容性的影響36專有和市信息半導(dǎo)體00B02 (2018-05-15)iv文檔版本所有 ©基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植 1 新 Flash 器件移植1.1 導(dǎo)讀本文檔基于 HiFMCV100(Hisilicon Flash Memory Controller 以下簡(jiǎn)稱 FMC)器,提供 FLASH 器件的移植方法。FMC 集成 SPI Nor Flash、SPI Nand Flash、并口 NandFlash 三個(gè)器,部分平臺(tái)上裁剪成二合一的器,即包含 SPI Nor Flash 和 SPINand Flash 兩個(gè)器。當(dāng)選用的 SPI
8、 Nor Flash 器件的型號(hào)與 SPI Nor Flash 器件兼容性列表中型號(hào)不同時(shí),需要在 SPI Nor Flash 驅(qū)動(dòng)的 ID 列表中新增器件 ID 節(jié)點(diǎn)以及器件相關(guān)的功能函數(shù),主要包括讀寫擦類型、時(shí)鐘、ID 值、實(shí)現(xiàn)并指定器件相關(guān)的功能函數(shù)(4Byte 尋址,四線讀寫使能、復(fù)位函數(shù)等)。當(dāng)選用的 SPI Nand Flash 器件的型號(hào)與 SPI Nand Flash 器件兼容性列表中型號(hào)不同時(shí),需要在 SPI Nand Flash 驅(qū)動(dòng)的 ID 列表中新增 ID 節(jié)點(diǎn)以及器件相關(guān)的功能函數(shù),主要包括讀寫類型、時(shí)鐘大小,ID 值、實(shí)現(xiàn)并指定四線使能處理函數(shù)。當(dāng)選用的并口Nand
9、 Flash 器件的型號(hào)與并口Nand Flash 器件兼容性列表中型號(hào)不同時(shí),第一 匹配 Nand Flash 協(xié)議層提供的公共器件列表,若公共表匹配出的器件信息不滿足器件的實(shí)際情況,需要在并口 Nand Flash 驅(qū)動(dòng)的特殊器件列表中新增器件 ID 節(jié)點(diǎn)。 1.2 SPI Nor Flash 器件的移植由于 Flash 驅(qū)動(dòng)都在標(biāo)準(zhǔn)化,內(nèi)核下的 SPI Nor Flash 驅(qū)動(dòng)已經(jīng)匹配最新的標(biāo)準(zhǔn)化驅(qū)動(dòng)框架,而 u-boot 下的 SPI Nor Flash 驅(qū)動(dòng)使用的是非標(biāo)準(zhǔn)化的版本。當(dāng)前有 u-boot-2010.06 和u-boot-2016.11 兩個(gè)版本,兩者的差異主要是 u-b
10、oot-2016.11新增支持使用 4 Byte 命令大于 16MB 的 SPI Nor Flash,詳見 u-boot-2016.11下大于 16MB SPI Nor Flash 的移植小節(jié)。1.2.1 SPI-Nor U-boot 下的移植 相關(guān)驅(qū)動(dòng)路徑目前 u-boot 下的 SPI Nor Flash 驅(qū)動(dòng)使用的是沒有標(biāo)準(zhǔn)化的版本。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)1所有 ©基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植u-boot 下的路徑:drivers/mtd/spi/hifmc
11、100/非標(biāo)準(zhǔn)化 SPI NorFlash 驅(qū)動(dòng)新器件移植有關(guān)系的目錄如下表 1-1 所示。表1-1 SPI Nor Flash 器件相關(guān)的主要目錄結(jié)構(gòu) 如何新增一顆 SPI Nor Flash新移植一個(gè) SPI Nor Flash 器件,簡(jiǎn)單來說就是往 hifmc_spi_nor_ids.c 的 ID構(gòu)體中增加一個(gè) ID 節(jié)點(diǎn),如圖 1-1 所示。信息結(jié)接下來我們以 Macronix MX25U25635F 為例,詳細(xì)講述如何在 ID 表里面新增一顆 SPI Nor Flash。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)2所有 ©Hifmc100
12、 目錄/文件名描述hifmc_spi_nor_ids.cSPI Nor Flash 器件 ID 表,移植新的器件主要修改的文件,主要包含 SPI Nor Flash 器件的讀寫擦的參數(shù)和功能函數(shù)鉤子的賦值。hifmc100_spi_general.cSPI Nor Flash 驅(qū)動(dòng)大部分器件通用的功能函數(shù)代碼。包含寫使能等操作,4Byte 尋址與四線讀寫,但是只適應(yīng)部分廠商,特殊器件需要根據(jù)器件手冊(cè)增加相應(yīng)的實(shí)現(xiàn)函數(shù)hifmc100_spi_gd25q.c hifmc100_spi_micron.c hifmc100_spi_mx25l25635e.c hifmc100_spi_s25fl25
13、6s.c hifmc100_spi_w25q256fv.c部分特殊器件中的功能函數(shù)與 hifmc100_spi_general.c 中的驅(qū)動(dòng)不匹配,只能額外增加這些器件具體功能的驅(qū)動(dòng)實(shí)現(xiàn),主要是 4byte 尋址(32M 或以上容量器件),QUAD 四線讀寫,QE 位使能函數(shù)?;?Hifmcv100器的 Flash 移植指南1新 Flash 器件移植圖1-1 非標(biāo)驅(qū)動(dòng)中 SPI Nor ID信息詳解步驟 1. 查閱 MX25U25635F 的器件手冊(cè),新增 ID 節(jié)點(diǎn),在節(jié)點(diǎn)的相應(yīng)位置填 ID 信息。找到 9Fh 命令下的 ID 信息從圖中可以看出該器件有 3 個(gè) ID,分別是:0xC2、0
14、x20、0x19。獲取器件的 chip size、block size 信息步驟 2. 從器件手冊(cè)的 Features 章節(jié)中獲取器件所支持的接口類型。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)3所有 ©基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植通過表 1-2,可以匹配出 MX25U25635F 支持的接口及其對(duì)應(yīng)的驅(qū)動(dòng)中的宏定義, 如表 1-2 底色是灰色的行所示。此外,Erase 操作我們默認(rèn)匹配Block Erase 64K 命令。表1-2 SPI 接口匹配表專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15
15、)4所有 ©器件支持的接口命令字對(duì)應(yīng)的 FMC 的接口驅(qū)動(dòng)中的宏定義READ03hStandard SPIREAD_STDFAST READ0BhStandard SPIREAD_FAST2READ3BhDual-Output/Dual-Input SPIREAD_DUALDREADBBhDualI/O SPIREAD_DUAL_ADDR4READ6BhQuad-Output/Quad- Input SPIREAD_QUADQREADEBhQuad I/O SPIREAD_QUAD_ADD RPP02hStandard SPIWRITE_STDDPP(page program)A2h
16、Dual-Output/Dual-Input SPIWRITE_DUAL2PPD2hDual I/O SPIWRITE_DUAL_ADD RQPP32hQuad-Output/Quad- Input SPIWRITE_QUAD4PP38hQuad I/O SPIWRITE_QUAD_ADD RBlock Erase 4K02hStandard SPIERASE_SECTOR_4KBlock Erase 32K52hStandard SPIERASE_SECTOR_32 KBlock Erase 64KD8hStandard SPIERASE_SECTOR_64 KBlock Erase 128
17、KD8hStandard SPIERASE_SECTOR_12 8K基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植步驟 3. 確定接口的 dummy 值和工作時(shí)鐘。Dummy num 的確認(rèn)根據(jù) SPI Nor Flash 的 SPI 接口的定義的特點(diǎn),可以有以下結(jié)論。 Standard SPI STD Read 和所有 Write 及Erase 接口的 Dummy 值為 0; Dual-Output/Dual-Input SPI 和 Quad-Output/Quad-Input SPI 接口Dummy 值為1; Dual I/O SPI 和Quad I/O S
18、PI 的接口Dummy 值需要參考手冊(cè)計(jì)算: 因?yàn)橛械钠骷?dummy 的計(jì)算還要依據(jù) I/O 的驅(qū)動(dòng)能力(詳見手冊(cè) Output Driver Strength Table) 做調(diào)整,比較復(fù)雜,所以建議用戶在移植器件接口時(shí)可以適當(dāng)舍去 Dual I/O SPI(2READ/2PP)和 Quad I/O SPI(4READ/4PP)兩種接口類型。對(duì)于性能的需求不是很苛刻的場(chǎng)景,這兩種接口相對(duì)于 Dual-Output/Dual-Input SPI 和 Quad-Output/Quad-Input SPI 并有很大的性能。這里只舉例在器件默認(rèn) DC 值為 0x00 時(shí)的 dummy 值計(jì)算方法:
19、a)Dual I/O SPI Read從器件手冊(cè)中的波形圖可以看出 Dual I/O SPI Read 需要 20-23 的 4 個(gè) dummy cycle的時(shí)鐘周期,又因?yàn)榻涌谑莾删€,所以相當(dāng)于要有 8 dummy cycle bit,相當(dāng)于 1dummy cycle Byte。根據(jù)手冊(cè) dummy_num 的定義:&READ_DUAL_ADDR(1,INFINITE, 84)中 dummy 值填 1。b)Quad I/O SPI Read專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)5所有 ©器件支持的接口命令字對(duì)應(yīng)的 FMC 的接口驅(qū)動(dòng)中的宏定義Blo
20、ck Erase 256KD8hStandard SPIERASE_SECTOR_25 6K基于 Hifmcv100器的 Flash 移植指南1新 Flash 器件移植從器件手冊(cè)中的波形圖可以看出 Quad I/O SPI Read 需要 14-15 的 2 個(gè) cycle 的Performance enhance(有的廠家的器件是 M7-M0)的時(shí)鐘周期,16-19 的 4 個(gè)dummy cycle 的時(shí)鐘周期,加起來 6 個(gè) cycle。又因?yàn)榻涌谑撬木€,所以相當(dāng)于要有 24 dummy cycle bit,相當(dāng)于 3 dummy cycle Byte。根據(jù)手冊(cè) dummy_num 的定義
21、:&READ_QUAD_ADDR (3, INFINITE, 80)中 dummy 值填 3。接口工作時(shí)鐘接口&READ_QUAD_ADDR(3, INFINITE, 80)中的工作頻率是依據(jù)每個(gè)手冊(cè)里面的AC CHARACTERISTICS 表獲取。 從手冊(cè)里面可以看到器件所能支持的最高接口時(shí)鐘 84MHz/133MHz,跟以上舉例的MX25U25635F ID 節(jié)點(diǎn)的時(shí)鐘信息有出入,這是因?yàn)槟壳?FMC 對(duì)于 1.8V IO 接口時(shí)鐘最高只能支持 150MHz(也就是 75MHz),所以這里填個(gè) 80MHz,一方面是為了限制接口時(shí)鐘,一方面是為了匹配步驟 4 中的宏定義。步
22、驟 4. 當(dāng)根據(jù)上面幾個(gè)步驟填好如下圖接口的信息之后,要匹配宏定義。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)6所有 ©基于 Hifmcv100器的 Flash 移植指南1新 Flash 器件移植在 hifmc_spi_nor_ids.c 源代碼路徑開頭幾行中匹配宏定義。步驟 5. 匹配完接口信息,最后一步要匹配器件相關(guān)功能函數(shù)鉤子&spi_driver_mx25l25635e(結(jié)構(gòu)體 struct spi_drv),我們需要關(guān)注的以下幾個(gè)接口賦值:.wait_ready = spi_general_wait_ready,.write_enable =
23、spi_general_write_enable,.entry_4addr = spi_general_entry_4addr,.qe_enable = spi_mx25l25635e_qe_enable,目前驅(qū)動(dòng)中對(duì)于大部分 SPI Nor Flash 廠家的所使用的功能函數(shù)都是有匹配的,如果新增器件是表格中所列廠家的器件可以嘗試使用現(xiàn)成的,不需要額外匹配。表1-3 相關(guān)功能函數(shù)與廠家對(duì)應(yīng)表專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)7所有 ©廠家struct spi_drv 賦值源文件GigaDevice(GD)&spi_driver_gd25qhif
24、mc100_spi_gd25q.cMicron&spi_driver_micronhifmc100_spi_micron.cMXIC(Macronix)&spi_driver_mx25l25635ehifmc100_spi_mx25l25635e.cSpansion&spi_driver_s25fl256shifmc100_spi_s25fl256s.c基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植.wait_ready = spi_general_wait_ready,等待器件 ready。 通過讀器件狀態(tài)寄存器的 WIP bit 來F
25、lash 的滿足這個(gè)機(jī)制。器件是否處于空閑狀態(tài),一般所有 SPI Nor.write_enable = spi_general_write_enable,寫使能接口。 通過寫器件狀態(tài)寄存器的 WEL bit 來改變器件是否可操作,一般所有 SPI Nor Flash 的滿足這個(gè)機(jī)制。因?yàn)楦鱾€(gè)廠家對(duì)器件狀態(tài)寄存器名方法有差異,但是寄存器令字是一樣的,所以下面我們使用命令字來區(qū)分 SPI Nor Flash 的狀態(tài)寄存器:05 狀態(tài)寄存器、35 狀態(tài)寄存器和 15 狀態(tài)寄存器。如上所訴 WIP bit 和 WEL bit 基本上在所有的 SPI Nor Flash 的 05 狀態(tài)寄存器上的位置都一
26、致,都是第 0 和第 1 個(gè)bit 位置;但下面的 3Byte/4Byte 切換和 QE 使能所涉及的 35 狀態(tài)寄存器和 15 狀態(tài)寄存器不同廠家和器件存在很大的差異,所以下面將以一個(gè)專題來講解。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)8所有 ©廠家struct spi_drv 賦值源文件Winbond&spi_driver_w25q256fvhifmc100_spi_w25q256fv.c其他通用適配&spi_driver_generalhifmc100_spi_general.c基于 Hifmcv100器的 Flash 移植指南1 新 F
27、lash 器件移植-結(jié)束 3Byte/4Byte 切換和 QE 使能專題.entry_4addr = spi_general_entry_4addr 和 qe_enable = spi_mx25l25635e_qe_enable,這兩個(gè)接口內(nèi)容比較多,作為一個(gè)專題來講解。用戶在移植新的 Flash 器件時(shí),需要根據(jù)器件的具體情況來適配 3Byte/4Byte 模式切換的接口。.entry_4addr = spi_general_entry_4addr,切換器件 3Byte/4Byte 模式的接口,這個(gè)接口只有的那個(gè)器件容量大于 16MB 才會(huì)調(diào)用。一般的器件 SPI Nor Fl
28、ash 都是提供Enter 4-byte mode (EN4B)和 Exit 4-byte mode (EX4B)來實(shí)現(xiàn)器件 3Byte/4Byte 模式的切換,并通過15 狀態(tài)寄存器的 bit5 來是否切換。圖1-2 15 狀態(tài)寄存器而其他器件在切換 3Byte/4Byte 模式之間的差異總體上分為以下三類: 切換 3Byte/4Byte 模式的方式不一樣:典型的就是 Spansion(現(xiàn)在的 Cypress)的.entry_4addr = spi_s25fl256s_entry_4addr,不是通過發(fā) EN4B 和EX4B 命令來切換 3Byte/4Byte 模式的,而是通過改變 Bank
29、 Address Register 的 bit7 的值來切換。圖1-3 Bank 地址寄存器 通過命令來切換 3Byte/4Byte 模式,但是檢查是否切換的寄存器不是 15 狀態(tài)寄存器,典型的就是 Micron 的 SPI Nor Flash 的.entry_4addr =專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)9所有 ©基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植spi_micron_entry_4addr 接口是通過檢查器件的 FLAG STATUS REGISTER 的bit0 來切換 3Byte/4Byte 模式是否
30、。 不能簡(jiǎn)單通過EX4B 命令來將 4Byte 模式切換回 3Byte 模式,得通過發(fā)復(fù)位命令來切換,典型的就是 Winbond 的 W25Q256 系列器件.entry_4addr = spi_w25q256fv_entry_4addr,的接口得用直接發(fā)復(fù)位組合命令的方式來將 4Byte 模式切換回 3Byte 模式。.qe_enable = spi_mx25l25635e_qe_enable,器件四線使能的函數(shù)接口。 驅(qū)動(dòng)中是通過 CONFIG_CLOSE_SPI_8PIN_4IO 宏來打開和關(guān)閉四線接口,BVT 的很多平臺(tái)上是默認(rèn)不開放四線接口的,這是因?yàn)閷?duì)于 8 PIN 封裝的器件 I
31、O_3 和RESET 引腳是復(fù)用在一起的,我們一般默認(rèn)復(fù)用為 RESET 功能。使能器件的 QE(QUAD ENABLE)bit 的差異主要是不同廠家不同器件的 QE bit分布不一樣導(dǎo)致的。這些不一樣只能通過實(shí)際的器件手冊(cè)來分析。接下來我們以 Macronix MX25U25635F 為例詳細(xì)講解一下這個(gè)接口的函數(shù)實(shí)現(xiàn), 其他器件都是大同小異。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)10所有 ©基于 Hifmcv100器的 Flash 移植指南1新 Flash 器件移植圖1-4 Macronix MX25U25635F 4 線使能函數(shù)實(shí)現(xiàn)如果需要新增一個(gè) Q
32、E 使能接口,可以參考上面的代碼實(shí)現(xiàn),代碼流程不需要更改,需要關(guān)注的是代碼中的幾處標(biāo)識(shí): tag1:讀 QE bit 所在器件寄存器令; tag2:寫 QE bit 所在器件寄存器令; tag3:QE bit 是否設(shè)置。 u-boot-2016.11 下大于 16MB SPI Nor Flash 的移植目前使用 u-boot-2016.11 版本的平臺(tái)優(yōu)化了 HiFMCV100器,解除需要硬件接reset 管腳的限制。但對(duì)于容量大于 16MB 的器件必須要求支持 4 Byte 命令。目前,驅(qū)動(dòng)中只適配了 Winbond、Macronix(MXIC)和 Micron 三個(gè)廠家,用戶
33、若想適配其他廠家的支持 4Byte 命令的器件,在 drivers/mtd/spi/hifmc100/hifmc_spi_nor_ids.c 路徑 下,找到下面代碼段,增加相應(yīng)的 case 代碼分支。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)11所有 ©基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植如果移植的大于 16MB 的 SPI Nor Flash 器件不支持 4Byte 命令,請(qǐng)參考 “如何新增一顆 SPI Nor Flash”進(jìn)行移植,但是必須把接口限制成 2 線且硬件連 reset 引腳。如圖 1-5,
34、接下來我們還是以 Macronix MX25U25635F 為例,詳細(xì)講述如何在 ID 表里面新增一顆支持 4Byte 命令的 SPI Nor Flash。因?yàn)椴襟E 1,3,4,5 分別跟 “如何新增一顆 SPI Nor Flash”章節(jié)一樣,這里不再贅述,下面主要闡述步驟 2 的差異。圖1-5 非標(biāo)驅(qū)動(dòng)中 SPI Nor ID信息詳解NameIDsID numChip SizeBlock Size Addr Mode專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)12©所有/* MX25U25635F, 1.65-2.0V */Step 1"
35、;MX25U25635F", 0xc2, 0x25, 0x39, 3, _32M, _64K, 4,&READ_STD4B(0, INFINITE, 55),1-wire STD Read 4Byte Mode(SISO)&READ_FAST4B(1, INFINITE, 108),1-wire Fast Read 4Byte Mode(SISO) &READ_DUAL4B(1, INFINITE, 108),2-wire Dual-Output/Dual-Input Read 4Byte Mode &READ_DUAL_ADDR4B(1, INFIN
36、ITE, 108),2-wire Dual-I/O Read 4Byte Mode &READ_QUAD4B(1, INFINITE, 108),4-wire Quad-Output/Quad-Input Read 4Byte Mode &READ_QUAD_ADDR4B(3, INFINITE, 108),4-wire Quad-I/O Read 4Byte Mode0,Step 2Pagesize(unuse) Frequency&WRITE_STD4B(0, 256, 80),1-wire STD Write 4Byte Mode &WRITE_QUAD_
37、ADDR4B(0, 256, 108),4-wire Quad-I/O Write 4Byte Mode0,&ERASE_SECTOR_64K4B(0, _64K, 108),Block Erase 64KB 0,&spi_driver_mx25l25635e,static struct spi_drv spi_driver_mx25l25635e = .wait_ready = spi_general_wait_ready,Wait device ready.write_enable = spi_general_write_enable,Device Write Enable
38、.entry_4addr = spi_general_entry_4addr,Enable Quad Mode.qe_enable = spi_mx25l25635e_qe_enable,Enable 4 Byte mode;Step 5Match the macro definitionStep 4Number of bytes to beoperated for dummy_enStep 3基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植從器件手冊(cè)的 command set 章節(jié)中確認(rèn)是否支持 4Byte 命令。通過表 1-4,可以匹配出 MX25U25635
39、F 支持的接口及其對(duì)應(yīng)的驅(qū)動(dòng)中的宏定義, 如表 1-4 底色是灰色的行所示。此外,Erase 操作我們默認(rèn)匹配Block Erase 64K4B 命令。表1-4 SPI 接口匹配表1.2.2 SPI-Nor 內(nèi)核下的移植 相關(guān)驅(qū)動(dòng)路徑目前內(nèi)核下的 SPI Nor 驅(qū)動(dòng)使用的是標(biāo)準(zhǔn)化的版本。驅(qū)動(dòng)路徑:drivers/mtd/spi-nor/標(biāo)準(zhǔn)化 SPI Nor 驅(qū)動(dòng)新器件移植有關(guān)系的目錄如表 1-5 所示。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)13所有 ©器件支持的接口命令字對(duì)應(yīng)的 FMC 的接口驅(qū)動(dòng)中的宏定義READ4B13hStandard
40、 SPIREAD_STD4BFAST READ4B0ChStandard SPIREAD_FAST4B2READ4B3ChDual-Output/Dual-Input SPIREAD_DUAL4BDREAD4BBChDualI/O SPIREAD_DUAL_ADDR4B4READ4B6ChQuad-Output/Quad-Input SPIREAD_QUAD4BQREAD4BEBhQuad I/O SPIREAD_QUAD_ADDR4BPP4B12hStandard SPIWRITE_STD4B4PP4B3EhQuad I/O SPIWRITE_QUAD_ADDR4BBE4K4B Block
41、Erase 4K4B21hStandard SPIERASE_SECTOR_4K4BBE32K4B Block Erase 32K5ChStandard SPIERASE_SECTOR_324B KBE4B Block Erase 64KDChStandard SPIERASE_SECTOR_64K4B基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植表1-5 標(biāo)準(zhǔn)化 SPI Nor 器件相關(guān)的主要目錄結(jié)構(gòu) 如何新增一顆 SPI Nor Flash新移植一個(gè) SPI Nor Flash 器件,簡(jiǎn)單來說就是往 spi-nor.c 的 ID一個(gè) ID 節(jié)點(diǎn)
42、,如圖 1-6 所示。信息結(jié)構(gòu)體中增加接下來我們以 Macronix MX25U25635F 為例,詳細(xì)講述如何在 ID 表里面新增一顆 SPI Nor Flash。專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)14所有 ©Hifmc100 目錄/文件名描述spi-nor.c標(biāo)準(zhǔn)驅(qū)動(dòng)框架,定義 SPI Nor 驅(qū)動(dòng)中主要的數(shù)據(jù)結(jié)構(gòu);定義 SPI Nor 器件 id 表,移植新 SPI Nor 器件主要修改的文件;區(qū)分不同器件 3/4byte 切換及其四線使能等操作?;?Hifmcv100器的 Flash 移植指南1新 Flash 器件移植圖1-6 標(biāo)準(zhǔn)驅(qū)動(dòng)中 SP
43、I Nor ID信息示例不像 SPI Nor 的非標(biāo)準(zhǔn)化驅(qū)動(dòng),可以對(duì)同一個(gè)廠家的不同器件適配不同的接口函數(shù),標(biāo)準(zhǔn)驅(qū)動(dòng)中,只對(duì)廠家做出區(qū)分,如果同一個(gè)廠家不同的器件在接口類型的匹配上存在差異,可能需要限制接口來兼容。步驟 1. 查閱 MX25U25635F 的器件手冊(cè),新增 ID 節(jié)點(diǎn),在節(jié)點(diǎn)的相應(yīng)位置填信息;專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)15所有 ©基于 Hifmcv100器的 Flash 移植指南1新 Flash 器件移植找到 9Fh 命令下的 ID 信息:從圖中可以看出該器件有 3 個(gè) ID,分別是:0x2C、0x20、0x19。獲取器件的 ch
44、ip size、block size 信息,分別是 32MB、64KB:由于 FMC 已經(jīng)下表大部分廠家的 SPI Nor Flash 的接口類型、dummy 值、3Byte/4Byte 切換和 QE 使能做出限定。當(dāng)新增器件是下表所列出的器件時(shí),請(qǐng)直接使用廠家對(duì)于的PARAMS 宏定義。步驟 2.步驟 3.確定的工作時(shí)鐘。版本默認(rèn)發(fā)布地工作時(shí)鐘的值是經(jīng)過兼容性測(cè)試的,所以這個(gè)值不建議修改。參考器件手冊(cè)中 AC CHARACTERISTICS 表獲取器件的工作時(shí)鐘,根據(jù)實(shí)際使用的接口類型選擇相應(yīng)的時(shí)鐘:專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)16所有 ©廠家宏
45、定義ESMTPARAMS(esmt)GigaDevicePARAMS(gd)Macronix/MXICPARAMS(mxic)MicronPARAMS(micron)SpansionPARAMS(spansion)WinbondPARAMS(winbond)ParagonPARAMS(paragon)基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植由于目前兼容性列表里面的所有器件都支持 FAST READ(由 DTS 中的 m25p,fast-read 指定), 所以上圖中 READ 命令(對(duì)應(yīng) STD READ)支持的最大時(shí)鐘 50MHz 可以忽略。從器件手冊(cè)上
46、,我們可以看到,器件所能支持的最大時(shí)鐘頻率是 133MHz,但是 2READ/4READ 接口只能支持到 84MHz,由于對(duì)于該器件我們是全接口支持(通過 PARAMS(mxic)定義的接口支持),所以我們?cè)O(shè)置器件的時(shí)鐘頻率應(yīng)該取較小的 84MHz 時(shí)鐘,如下圖(路徑:drivers/mtd/spi-nor/spi-nor.c):如圖 1-7,PARAMS(mxic)全接口支持表示的是 MXIC 的器件支持 1-wire(STD 和 FAST READ)、2-wire(DUAL-OUTPUT/DUAL-INPUT 和 DUAL-I/O)、4-wire(QUAD-OUTPUT/QUAD-INPU
47、T 和 QUAD-I/O)所有接口。當(dāng) ID 節(jié)點(diǎn)中 PARAMS(mxic)參數(shù)缺省時(shí),器件的接口類型由節(jié)點(diǎn)里面的 SPI_NOR_QUAD_READ/SPI_NOR_DUAL_READ 指定。所以,當(dāng)新增器件無法全接口匹配時(shí),可以使用 SPI_NOR_QUAD_READ/SPI_NOR_DUAL_READ 指定器件的接口。圖1-7 PARAMS(mxic)釋義static const struct spi_nor_basic_flash_parameter mxic_params = .rd_modes= SNOR_RD_MODES,1- wire STD Read Mode(SISO)
48、1-wire Fast Read Mode(SISO)2- wire Dual-Output/Dual-Input Read Mode 2-wire Dual-I/O Read Mode4-wire Quad-Output/Quad-Input Read Mode 4-wire Quad-I/O Read Mode.readsSNOR_MIDX_SLOW = SNOR_OP_READ(0, 0, SPINOR_OP_READ),.readsSNOR_MIDX_1_1_1 = SNOR_OP_READ(0, 8, SPINOR_OP_READ_FAST),.readsSNOR_MIDX_1_1_
49、2 = SNOR_OP_READ(0, 8, SPINOR_OP_READ_1_1_2),.readsSNOR_MIDX_1_2_2 = SNOR_OP_READ(0, 8, SPINOR_OP_READ_1_2_2),.readsSNOR_MIDX_1_1_4 = SNOR_OP_READ(0, 8, SPINOR_OP_READ_1_1_4),.readsSNOR_MIDX_1_4_4 = SNOR_OP_READ(8, 16, SPINOR_OP_READ_1_4_4),.wr_modes= SNOR_MXIC_WR_MODES,1-wire STD Write Mode4-wire Q
50、uad-I/O Write Mode.page_programsSNOR_MIDX_1_1_1 = SPINOR_OP_PP,.page_programsSNOR_MIDX_1_4_4 = SPINOR_OP_PP_1_4_4,Block Erase 64KB.erase_types0= SNOR_OP_ERASE_64K(SPINOR_OP_SE),.enable_quad_io= macronix_quad_enable,Enable Quad Mode;確定完器件所能支持的最大時(shí)鐘,接下來就要確定CRG 提供給 FMC器的最的手冊(cè)的系統(tǒng)章節(jié),假如 FMC 的時(shí)鐘源最佳可以匹配到大時(shí)鐘,參
51、考對(duì)應(yīng)150MHz 的時(shí)鐘,在 arch/arm/boot/dts/hi35xx-demb.dts 文件中,找到以下設(shè)備節(jié)點(diǎn):專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)17所有 ©基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植并更改 spi-max-frequency = <150000000>的值,注意:真實(shí)填寫到這個(gè)節(jié)點(diǎn)的頻率值都是 2X 時(shí)鐘,也就是說當(dāng) spi-max-frequency 參數(shù)填寫 150000000(Hz)時(shí),CRG 實(shí)際提供的時(shí)鐘是 75MHz。綜合上面提到的器件時(shí)鐘和 CRG 時(shí)鐘,這兩個(gè)
52、的最小值就是實(shí)際接口時(shí)鐘 75MHz。-結(jié)束1.3 SPI Nand Flash 器件的移植1.3.1 相關(guān)驅(qū)動(dòng)路徑目前 SPI Nand 驅(qū)動(dòng)使用的都是沒有標(biāo)準(zhǔn)化的版本。SPI Nand 驅(qū)動(dòng)的路徑:drivers/mtd/nand/hifmc100/非標(biāo)準(zhǔn)化 SPI Nand 驅(qū)動(dòng)新器件移植有關(guān)系的目錄如下表 1-6 所示。表1-6 SPI Nand 器件相關(guān)的主要路徑1.3.2 如何新增一顆 SPI Nand Flash專有和市信息半導(dǎo)體文檔版本 00B02 (2018-05-15)18所有 ©Hifmc100 目錄/文件名描述hifmc_spi_nand_ids.cSPI Nand 器件 ID 表,移植新 SPI Nand 器件主要修改的文件。主要包含 SPI Nand 器件的讀寫擦除參數(shù);hifmc100_spi_general.cSPI Nand 驅(qū)動(dòng)大部分器件通用的功能驅(qū)動(dòng)代碼,包含寫使能操作、QE bit 使能函數(shù)。基于 Hifmcv100器的 Flash 移植指南1 新 Flash 器件移植FMC器自身集成 ECC 糾錯(cuò)功能,F(xiàn)MC 啟動(dòng)之后會(huì)關(guān)掉 SPI Nand Flash 器件的ECC,而關(guān)閉 ECC 這個(gè)動(dòng)作,只能支持將 B0h Feature 寄存器的 bit4 置成 0。所
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度私營(yíng)企業(yè)商務(wù)用車租賃及維護(hù)服務(wù)合同3篇
- 二零二五年度養(yǎng)豬場(chǎng)養(yǎng)殖廢棄物資源化利用項(xiàng)目合作合同3篇
- 二零二五年度養(yǎng)牛產(chǎn)業(yè)鏈可持續(xù)發(fā)展合作協(xié)議3篇
- 2025年度智慧城市基礎(chǔ)設(shè)施建設(shè)投資入股協(xié)議3篇
- 二零二五年度農(nóng)村土地租賃與農(nóng)業(yè)廢棄物資源化利用及循環(huán)經(jīng)濟(jì)合作協(xié)議2篇
- 二零二五年度農(nóng)村土地承包經(jīng)營(yíng)權(quán)流轉(zhuǎn)與農(nóng)業(yè)廢棄物資源化利用及循環(huán)農(nóng)業(yè)合作合同
- 2025年度農(nóng)村房屋買賣合同及附屬土地使用權(quán)轉(zhuǎn)讓協(xié)議2篇
- 2025年度新材料研發(fā)合伙人股權(quán)分配與市場(chǎng)推廣合同3篇
- 二零二五年度農(nóng)村墓地墓園祭祀活動(dòng)策劃與執(zhí)行協(xié)議
- 2025年度養(yǎng)殖土地租賃及農(nóng)業(yè)廢棄物資源化利用協(xié)議3篇
- “青藍(lán)工程”師徒結(jié)對(duì)體育青年教師總結(jié)反思
- 設(shè)備維護(hù)檢查修理三級(jí)保養(yǎng)記錄表
- 施工安全風(fēng)險(xiǎn)分析及應(yīng)對(duì)措施表
- 《針灸推拿》題庫
- 2023年上海市初中物理競(jìng)賽復(fù)賽試題銀光杯
- GB/T 20475.2-2006煤中有害元素含量分級(jí)第2部分:氯
- GB 18218-2000重大危險(xiǎn)源辨識(shí)
- 神通數(shù)據(jù)庫管理系統(tǒng)v7.0企業(yè)版-2實(shí)施方案
- 油田視頻監(jiān)控綜合應(yīng)用平臺(tái)解決方案
- 福建省泉州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細(xì)及行政區(qū)劃代碼
- 酒精性腦病的護(hù)理查房實(shí)用版課件
評(píng)論
0/150
提交評(píng)論