哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

一個關(guān)于Segger J-Flash在Micron Flash固定區(qū)域下載校驗(yàn)失敗的故事

麥克泰技術(shù) ? 來源:麥克泰技術(shù) ? 作者:麥克泰技術(shù) ? 2022-11-01 11:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天痞子衡給大家講的是一個關(guān)于Segger J-Flash在Micron Flash固定區(qū)域下載校驗(yàn)失敗的故事。

痞子衡最近在支持一個 i.MXRT1170 歐美客戶,客戶項(xiàng)目里選用了來自 Micron 的四線 NOR Flash - MT25QL256ABA8E12-0AAT 作為啟動設(shè)備,一般讀寫倒是沒有問題,但是在 Segger J-Flash 下燒寫遇到了特定區(qū)域內(nèi)校驗(yàn)失敗的問題。

從痞子衡過往豐富的 Flash 支持經(jīng)驗(yàn)來看,亞太區(qū)客戶一般選用 ISSI(芯成)/Winbond(華邦)/MXIC(旺宏)/GigaDevices(兆易創(chuàng)新) 的 Flash 比較多,痞子衡對這些廠商 Flash 可以說是門清了。這個歐美客戶選用的是痞子衡不太熟的 Micron(鎂光) 產(chǎn)品,借著這個問題,痞子衡帶大家一起稍微深入地了解下 Micron Flash 產(chǎn)品:

一、引出客戶問題

首先是復(fù)現(xiàn)下客戶的問題,痞子衡找了塊 MIMXRT1170-EVK 開發(fā)板,將板載其他廠商 Flash 換成這顆 MT25QL256ABA8E12-0AAT(因?yàn)槭?T-PBGA24 封裝,所以需要放到原來的 OctalFlash 位置 - U21),然后將 SDK_2.11.1_MIMXRT1170-EVKoardsevkmimxrt1170driver_examplesflexspi orpolling_transfer 例程稍作適配性修改,主要是將 customLUT 里的命令表按 Micron 數(shù)據(jù)手冊命令表做調(diào)整(全用了四字節(jié)地址命令),然后跑了一下例程發(fā)現(xiàn)基本的 Flash 讀寫擦操作沒有問題(默認(rèn)操作的是 0x14000 處的 Sector),這表明硬件修改沒有問題。

constuint32_tcustomLUT[CUSTOM_LUT_LENGTH]={
/*Fastreadquadmode-SDR*/
[4*NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD]=
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,kFLEXSPI_1PAD,0xEC,kFLEXSPI_Command_RADDR_SDR,kFLEXSPI_4PAD,0x20),
[4*NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD+1]=
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DUMMY_SDR,kFLEXSPI_4PAD,0x0a,kFLEXSPI_Command_READ_SDR,kFLEXSPI_4PAD,0x04),

/*EraseSector*/
[4*NOR_CMD_LUT_SEQ_IDX_ERASESECTOR]=
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,kFLEXSPI_1PAD,0xDC,kFLEXSPI_Command_RADDR_SDR,kFLEXSPI_1PAD,0x20),

/*PageProgram-quadmode*/
[4*NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD]=
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,kFLEXSPI_1PAD,0x34,kFLEXSPI_Command_RADDR_SDR,kFLEXSPI_1PAD,0x20),
[4*NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD+1]=
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_WRITE_SDR,kFLEXSPI_4PAD,0x04,kFLEXSPI_Command_STOP,kFLEXSPI_1PAD,0x00),
};

接下來就是按客戶操作流程來復(fù)現(xiàn) Segger J-Flash 燒寫校驗(yàn)失敗問題,客戶其實(shí)是嘗試燒寫全部 32MB 數(shù)據(jù)來查看 J-Flash 及其配套下載算法能否適用這顆 Flash,這里痞子衡就用 《超級下載算法RT-UFL v1.0》,經(jīng)過測試,確實(shí)復(fù)現(xiàn)了客戶的問題。經(jīng)過反復(fù)測試,定位了問題是這顆 Micron 32MB 的 Flash 前 3/4 區(qū)域(0x0 - 0x17FFFFF)是沒問題的,但是在后 1/4 區(qū)域(0x1800000 - 1FFFFFF)均會出現(xiàn)校驗(yàn)錯誤(J-Flash軟件里看擦寫操作是能進(jìn)行的,但后面發(fā)現(xiàn)其實(shí)根本沒有正常擦寫)。

76efd28c-5992-11ed-a3b6-dac502259ad0.png

二、Micron QuadSPI NOR Flash有什么不同?

在分析客戶問題之前,我們先來簡單認(rèn)識一下這顆 Micron NOR Flash,痞子衡瀏覽了 Micron 的官網(wǎng)以及這顆 Flash 的數(shù)據(jù)手冊,發(fā)現(xiàn)它確實(shí)跟其他廠商的 NOR Flash 設(shè)計有點(diǎn)區(qū)別。

首先是 Flash 容量,其他廠商一般都是能夠提供從 512Kb 到 2Gb 全范圍的 Flash 產(chǎn)品,但是 Micron 串行 NOR Flash 最小容量就是 128Mb,果然是國際 Memory 大廠,設(shè)計就是豪橫。但是從 Flash 作為 XIP 啟動設(shè)備角度而言,128Mb 其實(shí)挺多的,普通的嵌入式項(xiàng)目沒有這么大的代碼存儲需求。

771720a8-5992-11ed-a3b6-dac502259ad0.png

其次是 NOR Flash 里的高頻問題 《QE bit 設(shè)計》,一般 Flash 的 IO2/3 引腳復(fù)用功能都是通過內(nèi)部狀態(tài)寄存器里的 QE 位來控制,QE 關(guān)閉則 IO2/3 是 RESET#/HOLD#/WP# 功能:如果 QE 開啟則 IO2/3 用于數(shù)據(jù)傳輸(這種情況下才可以用 Quad I/O 相關(guān)命令)。然而 Micron Flash 根本就沒有 QE 位控制,IO2/3 功能主要靠當(dāng)前命令類型來決定:如果是 Single SPI 或者 Dual I/O SPI 命令,則 IO2/3 是 RESET#/HOLD#/WP# 功能;如果是 Quad I/O SPI 命令,則 IO2/3 用于傳輸數(shù)據(jù)。

其它設(shè)計上的區(qū)別就不再詳細(xì)展開了,等用到具體功能查看數(shù)據(jù)手冊再去了解對比。

三、找到問題原因

現(xiàn)在來分析客戶問題,F(xiàn)lash 后 1/4 區(qū)域在 J-Flash 下校驗(yàn)錯誤,那我們先修改 polling_transfer 例程去操作 0x1800000 之后的 Sector,發(fā)現(xiàn)確實(shí)跑不過。如果不是 Flash 介質(zhì)問題,也不是讀寫擦命令問題,那只能有一種解釋,那就是 Flash 里這個區(qū)域被保護(hù)了,F(xiàn)lash 里是有非易失寄存器可以設(shè)置軟件保護(hù)的,但是默認(rèn)應(yīng)該是全部區(qū)域不保護(hù),而第一小節(jié)里我們先跑了 polling_transfer 例程驗(yàn)證 Flash 讀寫,那大概率這個例程里有修改 Flash 內(nèi)部寄存器操作,經(jīng)過排查痞子衡定位到了 flexspi_nor_enable_quad_mode() 函數(shù)。

#defineFLASH_QUAD_ENABLE0x40U

constuint32_tcustomLUT[CUSTOM_LUT_LENGTH]={
/*EnableQuadmode*/
[4*NOR_CMD_LUT_SEQ_IDX_WRITESTATUSREG]=
FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,kFLEXSPI_1PAD,0x01,kFLEXSPI_Command_WRITE_SDR,kFLEXSPI_1PAD,0x04),
};

intmain(void)
{
//代碼省略

/*Enterquadmode.*/
status=flexspi_nor_enable_quad_mode(EXAMPLE_FLEXSPI);
if(status!=kStatus_Success)
{
returnstatus;
}

//代碼省略
}

第二小節(jié)介紹里我們知道 Micron Flash 是沒有 QE 位設(shè)計的,因此 flexspi_nor_enable_quad_mode() 函數(shù)在這里是多余的,這個函數(shù)是將 0x40 寫入到了命令標(biāo)號為 0x01 的 Status Register(這個操作適用于 ISSI Flash),我們在數(shù)據(jù)手冊里找到這個寄存器定義,發(fā)現(xiàn)被置位的 bit 6 是塊保護(hù)控制位 BP[3:0] 里的最高位,并且 BP[3:0] 設(shè)置是非易失性的(斷電不丟失)。

7725eb38-5992-11ed-a3b6-dac502259ad0.png

再進(jìn)一步往下找 BP[3:0] 設(shè)置與 Flash 空間對應(yīng)關(guān)系,發(fā)現(xiàn) 4'b1000 設(shè)置就是保護(hù)后 1/4 區(qū)域里的所有 block,至今似乎真相大白了。為了驗(yàn)證發(fā)現(xiàn),我們需要將 Status Register 重設(shè)為 0x00,然后再用 J-Flash 燒寫一次,這時候校驗(yàn)失敗問題消失了,一切恢復(fù)正常。

773e860c-5992-11ed-a3b6-dac502259ad0.png

回顧這個故事,如果痞子衡事先不用 polling_transfer 例程去操作一次 Flash,或者即使跑了例程但事先意識到了 Micron Flash 沒有 QE 設(shè)計而刪除 flexspi_nor_enable_quad_mode() 函數(shù),也就無法復(fù)現(xiàn)客戶問題了,這也是本次故事里最神奇的地方,客戶和痞子衡犯了同樣的失誤,也許這就是緣分?

至此,一個關(guān)于Segger J-Flash在Micron Flash固定區(qū)域下載校驗(yàn)失敗的故事痞子衡便介紹完畢了,掌聲在哪里~~~

審核編輯 :李倩


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

    關(guān)注

    8

    文章

    7347

    瀏覽量

    94995
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6398

    瀏覽量

    120443

原文標(biāo)題:好文推薦| J-Flash在Micron Flash固定區(qū)域下載校驗(yàn)失敗的故事

文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    NOR FLASH和NAND FLASH的對比

    FLASH芯片的擦寫次數(shù)般來說都是有限的,目前主流產(chǎn)品的擦寫壽命普遍10萬次左右。當(dāng)FLASH芯片接近使用壽命終點(diǎn)時,寫操作可能會出現(xiàn)失敗
    的頭像 發(fā)表于 03-31 16:58 ?417次閱讀

    RT595 和 RT685開發(fā)板編程失敗的恢復(fù)方法

    J-Flash from SEGGER Official Website. 2. Hardware Setup Board Modifications: Connect pins 2 and 3
    發(fā)表于 03-19 07:52

    NOR Flash和NAND flash有什么區(qū)別

    嵌入式系統(tǒng)、移動設(shè)備與存儲領(lǐng)域,NOR Flash和NAND Flash是兩種最常見的非易失性存儲技術(shù)。盡管它們都屬于閃存(Flash EEPROM)家族,但在內(nèi)部結(jié)構(gòu)、接口方式、讀
    的頭像 發(fā)表于 03-11 15:08 ?456次閱讀
    NOR <b class='flag-5'>Flash</b>和NAND <b class='flag-5'>flash</b>有什么區(qū)別

    Infineon SEMPER NOR Flash與HYPERRAM? 2.0 Gen2 Flash+RAM MCP產(chǎn)品解析

    啟動代碼,用RAM進(jìn)行暫存擴(kuò)展內(nèi)存。英飛凌(Infineon)推出的Flash+RAM多芯片封裝(MCP)Gen 2產(chǎn)品,將SEMPER? NOR Flash和HYPERRAM? 2.0集成
    的頭像 發(fā)表于 12-20 16:20 ?1349次閱讀

    MCU固件幾種Flash(閃存)劃分方式

    你通過U盤、OTA遠(yuǎn)程等方式下載的程序,其實(shí)你還是需要提前下載BootLoader程序,才能進(jìn)下載APP程序。? ? ?今天就來說說通過OTA方式升級固件時,幾種
    的頭像 發(fā)表于 11-27 18:20 ?1374次閱讀

    使用J-Flash來編程CW32 MCU

    1.安裝J-Flash: 從SEGGER官方網(wǎng)站下載最新版本的J-Flash工具。 按照安裝向?qū)У闹甘就瓿砂惭b過程。 2.連接硬件: 將CW32 MCU通過調(diào)試器(如
    發(fā)表于 11-25 07:00

    如何使用新版本J-Flash編程CW32 MCU

    1、從Segger公司官網(wǎng)下載安裝最新版本JLink驅(qū)動,比如V7.96a,安裝目錄下沒有JLinkDevices.xml文件。 2、C:Users<用戶名>
    發(fā)表于 11-12 07:24

    CW32L012實(shí)現(xiàn)外部flash下載算法

    外部flash或者內(nèi)置的片上flash,都是編譯器通過調(diào)用寫好的FLM文件來實(shí)現(xiàn)下載,單片機(jī)內(nèi)部的安裝pack包就會有(官方實(shí)現(xiàn)),外部flash的情況比較復(fù)雜,例如用的哪種
    的頭像 發(fā)表于 10-09 17:38 ?1778次閱讀
    CW32L012實(shí)現(xiàn)外部<b class='flag-5'>flash</b><b class='flag-5'>下載</b>算法

    SEGGER J-Probe工具的工作原理和應(yīng)用

    SEGGER J-Probe工具的核心理念是提供可定制的圖形用戶界面(GUI),使開發(fā)人員能夠應(yīng)用程序運(yùn)行時與嵌入式系統(tǒng)的內(nèi)部數(shù)據(jù)進(jìn)行
    的頭像 發(fā)表于 08-14 10:04 ?2274次閱讀
    <b class='flag-5'>SEGGER</b> <b class='flag-5'>J</b>-Probe工具的工作原理和應(yīng)用

    FLASH模擬EEPROM入門指南

    0xFF,而EEPROM支持直接覆蓋寫入。 壽命考量:FLASH擦寫次數(shù)有限(約10萬次),需通過策略降低磨損;EEPROM則達(dá)百萬次以上。 關(guān)鍵技術(shù)路線 雙頁輪換機(jī)制:使用兩固定大小的存儲頁交替
    發(fā)表于 08-14 06:13

    使用Segger J-Link Pro對XMC7200的CM0+內(nèi)核進(jìn)行編程遇到的問題求解

    當(dāng)我使用 GNU C 編譯器編譯起始(.text)地址為 0x10000000 的 CM0+ 程序時,我無法 Segger J-Link Pro 中下載該程序。我
    發(fā)表于 07-21 06:05

    SEGGER工具支持GigaDevice GD32C2系列微控制器

    J-Link和Flasher軟件包從V8.46版本開始,SEGGER增加了基于Cortex-M23內(nèi)核的GigaDevice GD32C2系列微控制器的調(diào)試和Flash編程支持。
    的頭像 發(fā)表于 07-09 16:12 ?1054次閱讀

    如何使用新版本J-Flash編程CW32 MCU?

    1、從Segger公司官網(wǎng)下載安裝最新版本JLink驅(qū)動,比如V7.96a,安裝目錄下沒有JLinkDevices.xml文件。 2、C:Users AppDataRoamingSEGGER目錄
    的頭像 發(fā)表于 07-01 15:05 ?1022次閱讀
    如何使用新版本<b class='flag-5'>J-Flash</b>編程CW32 MCU?

    CYUSB3014不能給Flash下載程序怎么解決?

    我們這邊在開發(fā)帶USB3.0接口的CAN通訊監(jiān)控工具的時候,USB出現(xiàn)了問題。USB3.0接口上通過control center工
    發(fā)表于 06-03 11:56

    如何通過SFL為設(shè)備添加Flash編程支持

    SEGGER Flash Loader(SFL)是J-Link設(shè)備支持套件(DSK)的部分,通過SFL,用戶可以為自己的新設(shè)備添加Flash
    的頭像 發(fā)表于 05-19 16:35 ?1633次閱讀
    如何通過SFL為設(shè)備添加<b class='flag-5'>Flash</b>編程支持
    乐清市| 巴彦淖尔市| 湟源县| 长岭县| 虞城县| 衡阳市| 固始县| 灵川县| 连州市| 陆良县| 赤壁市| 南安市| 凤城市| 交口县| 鄯善县| 雷波县| 平顶山市| 临沂市| 象山县| 五台县| 宜兰市| 江川县| 兴国县| 镶黄旗| 酒泉市| 安化县| 嵊州市| 房产| 吴川市| 同江市| 岚皋县| 东至县| 花莲市| 清流县| 福海县| 平顶山市| 馆陶县| 隆安县| 镶黄旗| 两当县| 桐城市|