<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SPI flash如何運行程序,SPI flash有哪些應用

ss ? 作者:工程師譚軍 ? 2018-09-19 10:54 ? 次閱讀

本文主要是關于SPI flash的相關介紹,并著重對SPI flash如何運行程序以及應用進行了詳盡的闡述。

SPI flash

SPI一種通信接口。那么嚴格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指NOR也可能是NAND。但現在大部分情況默認下人們說的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把數據線和地址線并排與IC的管腳連接。但是后來發現不同容量的Norflash不能硬件上兼容(數據線和地址線的數量不一樣),并且封裝比較大,占用了較大的PCB板位置,所以后來逐漸被SPI(串行接口)Norflash所取代。同時不同容量的SPI Norflash管腳也兼容封裝也更小。,至于現在很多人說起NOR flash直接都以SPI flash來代稱。

SPI flash如何運行程序,SPI flash有哪些應用

NorFlash根據數據傳輸的位數可以分為并行(Parallel,即地址線和數據線直接和處理器相連)NorFlash和串行(SPI,即通過SPI接口和處理器相連)NorFlash;區別主要就是:1、SPI NorFlash每次傳輸一bit位的數據,parallel連接的NorFlash每次傳輸多個bit位的數據(有x8和x16bit兩種); 2、SPI NorFlash比parallel便宜,接口簡單點,但速度慢。

NandFlash是地址數據線復用的方式,接口標準統一(x8bit和x16bit),所以不同容量再兼容性上基本沒什么問題。但是目前對產品的需求越來越小型化以及成本要求也越來越高,所以SPI NandFlash漸漸成為主流,并且采用SPI NANDFlash方案,主控也可以不需要傳統NAND控制器,只需要有SPI接口接口操作訪問,從而降低成本。另外SPI NandFlash封裝比傳統的封裝也小很多,故節省了PCB板的空間。

SPI flash如何運行程序

上電后處理器要從地址0讀取指令,根據啟動方式將地址重映射后向總線發出請求并等待,spi flash控制器一位一位地給flash發命令發地址,再一位一位地讀回數據,響應總線的請求。處理器要耐心等待,總線控制器會協調好的。等待是常有的事情,包括訪問nand flash,包括訪問ddr sdram。我感覺fpga的avalon總線時序有參考價值

SPI flash有哪些應用

NOR flash和Nand flash相比

NOR缺點: 價格貴, 容量小, 擦除塊大, 擦除速度慢, NOR flash擦出壽命為100,000次, 遠小于NAND flash的一百萬次。 NOR可以單字節編程, 也就是說一次只更新一個byte

NOR優點: 讀速度快, 穩定不會出現位反轉, 不需要EDC和ECC, 不需要壞塊管理

NOR flash通常一次可以寫一個字節, NAND flash內存必須一次寫多個字節(通常為512字節)

NOR flash的優缺點決定了它的應用場: 適合存儲關鍵很少修改的數據, 比如bootloader kernel等代碼;不適合尺寸較大經常修改的數據,比如用戶地圖, 庫文件等

3 wire SPI

正常的SPI使用四根線: clock, cs, MOSI, MISO. 可以把MOSI MISO合并為一根線(slave out/slave in SISO)上實現半雙工。 主要用來實現低速傳輸

DUAL SPI

對于SPI flash來說, 全雙工并不常用, 因此擴展這兩根數據線, 使得他們支持半雙工傳輸, 加倍數據傳輸速度。 可以發送一個命令字節請求進入dual mode, 然后MOSI就變成了SIO0(Serial I/O 0), MISO變成了SIO1.

這種模式主要是針對SPI ROM, SPI flash設備, 需要進行大數據量傳輸

QUAD SPI

quad SPI又增加了兩根I/O線(SIO2 SIO3), 可以在一個時鐘周期傳送四個data bits. 通過使用特殊的命令, 使能quad mode.

Double data rate

除了使用多根I/O線, 某些設備還通過DDR技術增加傳輸速率

SPI NOR flash文件系統支持

NOR flash和普通機械硬盤, SSD, EMMC的最大區別就是NOR flash在寫之前,需要確保寫的位置是已經擦除過的, 因此并不適合使用傳統的Ext2/3/4, FAT/NTFS等文件系統

甚至YAFFS類的文件系統也不適合NOR flash

JFFS和JFFS2

這兩個文件系統都可以支持NOR flash, 并且提供了垃圾回收, 壞塊管理, 磨損平衡。 二者都存在文件系統mount速度較慢的問題, 不適合大容量flash

YAFFS/YAFFS2

已經被踢出主線內核了, 基本廢棄了。

Cramfs/Squashfs

常規的只讀文件系統, 都支持數據壓縮, 實現簡單, 速度快, 如果NOR flash存放的文件系統是只讀的, 盡量使用他們。 這些常規文件系統工作在傳統塊設備上, 需要內核支持

CONFIG_MTD_BLKDEVS=y

CONFIG_MTD_BLOCK=y

Ext2/3/4 FAT/NTFS

支持讀寫的塊設備文件系統不適合工作用在NOR flash上, 因為NOR flash寫操作會導致擦除操作, 速度慢, 影響壽命。

MTD模擬block device

打開CONFIG_MTD_BLOCK和CONFIG_MTD_BLKDEVS

啟動后/dev/下會增加幾個block設備

root@devm:~# ls /dev/mtdmtd0 mtd1 mtd2 mtd3 mtdblock0 mtdblock2 mtd0ro mtd1ro mtd2ro mtd3ro mtdblock1 mtdblock3

使用mkfs.ext4, 格式化mtdblock,

root@evm:~# mkfs.ext4 /dev/mtdblock3mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)Stride=0 blocks, Stripe width=0 blocks1856 inodes, 7424 blocks371 blocks (5.00%) reserved for the super userFirst data block=1Maximum filesystem blocks=76021761 block group8192 blocks per group, 8192 fragments per group1856 inodes per group Allocating group tables: done Writing inode tables: done Creating journal (1024 blocks): doneWriting superblocks and filesystem accounting information: done

使用dd命令, 寫入cramfs鏡像

首先, 在Host創建cramefs鏡像

mkfs.cramfs rootfs/ cramfs.img

dd命令導入鏡像

root@evm:~# dd if=/dev/mtdblock3 of=cramfs.img 14848+0 records in14848+0 records outroot@evm:~# ls -l-rw-r--r-- 1 root root 7602176 Jan 1 00:24 kaka.imgroot@evm:~#

NOR flash使用JFFS2

NOR flash上運行JFFS2, JFFS2通過MTD接口操作NOR flash

創建JFFS2鏡像

mkfs.jffs2工具在mtd-utils工具包中

sudo apt-get install mtd-utils mkfs.jffs2 -r rootfs/ -o jffs2.img --pad=0x800000

--pad=0x800000 如果不加這個參數, 生成的鏡像尺寸(文件系統大?。┦前凑誶ootfs/小內容大小決定的;通過這個參數我們可以強制指定文件系統大小

燒寫JFFS2鏡像

有兩種燒寫方法:

1. 在uboot中把jffs2.img下載DRAM中, 然后使用sf write命令把DRAM內容燒寫到nor flash上

2. 進入系統后使用 dd if=jffs2.img of=/dev/mtdblock4

二者性質上實際相同, 都是直接把鏡像燒到NOR flash某段內存中

掛載JFFS2文件系統

首先kernel要支持jffs2文件系統, 執行如下命令

mount -t jffs2 /dev/mtdblock4 /mnt

文件系統掛載速度

由于JFFS2在掛載過程中需要執行掃描, 構造文件系統, 因此在同樣大小的mtdblock上, JFFS2掛載時間遠大于EXT4文件系統

文件系統尺寸為0x740000(7.25MB)

Ext4掛載時間 root@evm:~# time mount -t ext4 /dev/mtdblock3 /mnt real 0m 0.06suser 0m 0.00ssys 0m 0.00s

JFFS2掛載時間 root@evm:~# time mount -t jffs2 /dev/mtdblock3 /mntreal 0m 0.34suser 0m 0.00ssys 0m 0.33s

結語

關于SPI flash的相關介紹就到這了,如有不足之處歡迎指正。

相關閱讀推薦:SPI Flash控制器驗證

相關閱讀推薦:FPGA中SPI Flash存儲器的復用編程方法的實現

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • pcb
    pcb
    +關注

    關注

    4253

    文章

    22576

    瀏覽量

    388525
  • SPI Flash
    +關注

    關注

    1

    文章

    13

    瀏覽量

    10259
收藏 人收藏

    評論

    相關推薦

    基于FPGA的SPI Flash控制器的設計方案

    傳統的Flash讀寫是通過CPU軟件編程實現,其讀寫速度較慢,且占用CPU資源,另外由于Flash芯片本身功能指令較多,使得對芯片進行直接操作變得非常困難。本文提出一個基于FPGA的SPI
    發表于 09-24 09:12 ?5677次閱讀
    基于FPGA的<b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b>控制器的設計方案

    SPI方式FPGA配置和SPI flash編程

    SPI方式FPGA配置和SPI flash編程
    發表于 05-16 18:01 ?164次下載
    <b class='flag-5'>SPI</b>方式FPGA配置和<b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>編程

    基于紅牛開發板的spi flash讀寫圖片

    SPI:serial peripheral interface串行外圍設備接口是一種常見的時鐘同步串行通信接口。外置flash按接口分有總線flash,SPI
    發表于 09-01 17:16 ?16次下載
    基于紅牛開發板的<b class='flag-5'>spi</b> <b class='flag-5'>flash</b>讀寫圖片

    SPI flash是什么,關于SPI FLASH的讀寫問題

    SPI一種通信接口。那么嚴格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指NOR也可能是NAND。
    的頭像 發表于 09-18 14:38 ?10.2w次閱讀
    <b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>是什么,關于<b class='flag-5'>SPI</b> <b class='flag-5'>FLASH</b>的讀寫問題

    淺析spi flash驅動及其程序

    怎么用說白了對于Flash就是讀寫擦,也就是實現flash的驅動。先簡單了解下spi flash的物理連接。
    的頭像 發表于 10-07 11:26 ?1.8w次閱讀
    淺析<b class='flag-5'>spi</b> <b class='flag-5'>flash</b>驅動及其<b class='flag-5'>程序</b>

    淺談STM32之SPI_FLASH之應用實例

    SPI Flash 首先它是個Flash,Flash是什么東西就不多說了(非易失性存儲介質),分為NOR和NAND兩種(NOR和NAND的區別本篇不做介紹)。
    的頭像 發表于 10-07 11:29 ?7117次閱讀

    淺析FLASH讀寫----SPI原理及應用

    SPI一種通信接口。那么嚴格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指NOR也可能是NAND。
    的頭像 發表于 10-07 11:32 ?2.3w次閱讀
    淺析<b class='flag-5'>FLASH</b>讀寫----<b class='flag-5'>SPI</b>原理及應用

    STM32_ SPI讀寫Flash

    STM32_SPI讀寫Flash
    的頭像 發表于 04-08 10:26 ?5045次閱讀
    STM32_ <b class='flag-5'>SPI</b>讀寫<b class='flag-5'>Flash</b>

    STM32F4 SPI-FLASH實驗例程

    STM32F4 SPI-FLASH實驗例程(java的哪個版本用于嵌入式開發)-STM32F4 SPI-FLASH實驗例程,有需要的可以參考!
    發表于 07-30 16:01 ?20次下載
    STM32F4 <b class='flag-5'>SPI-FLASH</b>實驗例程

    STM32FLASH實驗-SPI

    STM32FLASH實驗-SPI(嵌入式開發考研考什么)-FLASH實驗-SPI學習目標:1、學會STM32硬件SPI2、學會對EN25Q6
    發表于 08-04 12:58 ?22次下載
    STM32<b class='flag-5'>FLASH</b>實驗-<b class='flag-5'>SPI</b>

    實現簡單的SPI讀寫FLASH

    實現簡單的SPI讀寫FLASH一、前言繼上篇文章SPI的相關知識,本章主要介紹使用SPI協議實現簡單的讀寫FLASH,寫入功能主要介紹的是定
    發表于 11-26 19:21 ?22次下載
    實現簡單的<b class='flag-5'>SPI</b>讀寫<b class='flag-5'>FLASH</b>

    單片機學習筆記————STM32使用SPI讀寫串行Flash(二)

    第一步:STM32與Flash的硬件連接單片機型號:STM32F103ZET6Flash型號:W25Q64第二步:配置相關的宏/**************************SPI接口定義
    發表于 11-30 17:21 ?12次下載
    單片機學習筆記————STM32使用<b class='flag-5'>SPI</b>讀寫串行<b class='flag-5'>Flash</b>(二)

    SPI Nand Flash簡介

    1.SPI Nand Flash簡介SPI Nand Flash顧名思義就是串行接口的Nand Flash,它和普通并行的Nand
    發表于 12-02 10:51 ?34次下載
    <b class='flag-5'>SPI</b> Nand <b class='flag-5'>Flash</b>簡介

    關于SPI Flash的那些事兒

    EPROM通常采用是IIC串行總線,低速,單雙工,通信速率一般是百KHz。而SPI Flash是采用的SPI總線,高速,全雙工,通訊速率一般是百MHz。S...
    發表于 01-26 18:55 ?4次下載
    關于<b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b>的那些事兒

    一文了解SPI NAND FlashSPI NOR Flash的區別

    的并行口NOR Flash不能硬件上兼容(數據線和地址線的數量不一樣),并且封裝大,占用PCB板的位置較大,逐漸被SPI(串行接口)的 NOR Flash所取代。
    的頭像 發表于 03-06 09:49 ?5497次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>