色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

一個關于Segger J-Flash在Micron Flash固定區域下載校驗失敗的故事

麥克泰技術 ? 來源:麥克泰技術 ? 作者:麥克泰技術 ? 2022-11-01 11:28 ? 次閱讀

今天痞子衡給大家講的是一個關于Segger J-Flash在Micron Flash固定區域下載校驗失敗的故事

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

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

一、引出客戶問題

首先是復現下客戶的問題,痞子衡找了塊 MIMXRT1170-EVK 開發板,將板載其他廠商 Flash 換成這顆 MT25QL256ABA8E12-0AAT(因為是 T-PBGA24 封裝,所以需要放到原來的 OctalFlash 位置 - U21),然后將 SDK_2.11.1_MIMXRT1170-EVKoardsevkmimxrt1170driver_examplesflexspi orpolling_transfer 例程稍作適配性修改,主要是將 customLUT 里的命令表按 Micron 數據手冊命令表做調整(全用了四字節地址命令),然后跑了一下例程發現基本的 Flash 讀寫擦操作沒有問題(默認操作的是 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),
};

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

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

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

在分析客戶問題之前,我們先來簡單認識一下這顆 Micron NOR Flash,痞子衡瀏覽了 Micron 的官網以及這顆 Flash 的數據手冊,發現它確實跟其他廠商的 NOR Flash 設計有點區別。

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

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

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

其它設計上的區別就不再詳細展開了,等用到具體功能查看數據手冊再去了解對比。

三、找到問題原因

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

#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;
}

//代碼省略
}

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

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

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

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

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

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

審核編輯 :李倩


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

    關注

    8

    文章

    7223

    瀏覽量

    90194
  • 開發板
    +關注

    關注

    25

    文章

    5220

    瀏覽量

    99182

原文標題:好文推薦| J-Flash在Micron Flash固定區域下載校驗失敗的故事

文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用STM32 ST-LINK Utility和j-flash無法擦除怎么解決?

    keil燒錄程序中直接報錯 使用工具擦除報 使用STM32 ST-LINK Utility 和j-flash也無法擦除這個要怎么解決
    發表于 03-12 07:07

    Flash下載工具用戶指南

    電子發燒友網站提供《Flash下載工具用戶指南.pdf》資料免費下載
    發表于 01-12 09:31 ?0次下載

    關于NAND Flash些小知識

    前言 作為名電子專業的學生,半導體存儲顯然是繞不過去的坎,今天聊關于Nand Flash
    的頭像 發表于 12-17 17:33 ?336次閱讀

    GD32F303CCT6 keil5為什么下載不了程序?

    就是同一個項目我拷貝到同事電腦上是可以下載的,程序也是可以正常跑起來,但是我電腦上用keil5和J-Flash都不行然而都可以連接成功和識別芯片ID,更加讓我迷惑的是換了另
    發表于 11-15 07:09

    SEGGERJ-Link和Flasher提供Device Provisioner工具

    日前,SEGGER宣布為其Flasher系列編程器以及J-Link和J-Trace系列調試跟蹤工具提供Device Provisioner工具。
    的頭像 發表于 10-22 15:12 ?618次閱讀

    使用flash下載器工具下載WROOM-02模塊中的固件時,它經常失敗是怎么回事?

    當我使用 flash 下載器工具下載 WROOM-02 模塊中的固件時,它經常失敗。我會說 10 次中有 4 次我嘗試更新它會產生錯誤! 有沒有人經歷過這樣的事情。我正在使用 USB
    發表于 07-19 08:49

    ESP32外掛FLASH下載速度慢怎么解決?

    ESP32 外掛FLASH 下載速度慢,小于500K的固件能下載,但下載速度只有100kbits/s1.5M 固件下載
    發表于 06-21 15:01

    esp32s3 N8R8 efuse打開外置Flash8線模式后固件校驗失敗,如何將Flash8線模式恢復到4線模式?

    esp32s3 N8R8 efuse打開外置Flash 8線模式后固件校驗失敗,請問如何配置燒錄選項或者將Flash8線模式恢復到4線模式?
    發表于 06-13 06:11

    esp32如何先將OAT下來的固件進行sha256或者MD5校驗,再寫入相應的flash區域

    esp32如何先將OAT下來的固件進行sha256或者MD5校驗,再寫入相應的flash區域,OAT下來的固件先放在哪里?
    發表于 06-07 07:53

    AN89056 PSoC4100S+256K上的FLASH測試失敗的原因?

    = 007E 錯誤:flash flash 校驗和:d6117b4d252189bb 測試計數器 007E 始終測試失敗。 但我不明白為什么,因為
    發表于 05-21 08:16

    Ti60F100 內外flash操作方案

    是softjtag操作,所以使用了兩下載器。硬件設計外外掛片64Mb的flash。 外部flash
    的頭像 發表于 05-20 16:42 ?1875次閱讀
    Ti60F100 內外<b class='flag-5'>flash</b>操作方案

    J-FLASH燒寫時會將沒有數據的空白地址段寫成0x00,是否可以修改J-FLASH配置文件將數據寫成0xFF?

    J-FLASH燒寫時,會將沒有數據的空白地址段寫成0x00,是否可以修改J-FLASH配置文件將數據寫成0xFF? 是否有大神知道怎么辦?
    發表于 04-19 08:12

    關于stm32 flash寫入遇到的疑問求解

    用HAL_FLASH_Program去寫代碼段的地址時(0x0800194這樣的),返回HAL_OK,但實際上沒有寫成功。Keli memory
    發表于 04-10 06:05

    STM32F051使用J-flash燒錄完固件文件后,按鍵復位(NRST腳)后程序總是卡在Delay()的原因?

    我使用的是STM32F051,使用J-flash燒錄完固件文件后,按鍵復位(NRST腳)后程序總是卡在Delay(),調試發現原來是systick的中斷沒有。但是如果燒錄完固件后重新上電的話程序
    發表于 04-07 07:03

    stm32g473 flash擦除失敗的原因?

    跑ucosii的時候進行OTA升級擦除失敗,關掉系統調度可以擦除成功。單獨建立裸機工程,跑page擦除程序,Jlink單步調試概率性出現擦除
    發表于 03-26 08:11
    主站蜘蛛池模板: 日本又黄又裸一级大黄裸片 | 国产精品爽黄69天堂A片 | 国产成人cao在线 | 中文字幕无码亚洲视频 | 最新在线黄色网址 | 亚洲精品第二页 | 中文视频在线 | 羞羞漫画在线播放 | 国产精品XXXXX免费A片 | 国产精品久久久久一区二区三区 | 国产精品久久久久影院色老大 | 免费三级播放器 | 99视频在线观看视频 | 国产专区青青在线视频 | 久久re热在线视频精99 | 爱看吧孕妇网 | 欧美三级在线完整版免费 | 超碰免费视频公开观看 | 国产综合自拍 偷拍在线 | 久久99re6热在线播放 | 国产福利不卡在线视频 | 男人J进入女人P免费狂躁 | 亚欧免费观看在线观看更新 | 久久久精品免费免费直播 | 日韩黄色软件 | 亚洲zooz人禽交xxxx | 久久re这里视频精品15 | 乳色吐息在线观看全集免费观看 | 激情A片久久久久久久 | 97精品国产亚洲AV超碰 | 亚洲一区精品伊人久久伊人 | 狠狠色综合久久婷婷 | 日本免费xxx | 胖老太与人牲交BBWBBW高潮 | 成人毛片100部免费看 | 扒开黑女人p大荫蒂老女人 扒开粉嫩的小缝末成年小美女 | acg全彩无遮挡口工漫画网址 | 中文字幕AV亚洲精品影视 | 青春禁区动漫免费观看 | 久草网国产自偷拍 | 秋霞伦理手机在线看片 |