FlexSPI ROM API on RT1170 with FreeRTOS: Questions about Interrupt Disabling and Cache Coherency

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

FlexSPI ROM API on RT1170 with FreeRTOS: Questions about Interrupt Disabling and Cache Coherency

291 次查看
langya
Contributor I

Dear NXP Team,

I would like to ask some questions about disabling interrupts and cache management when using the FlexSPI ROM API. I am using the RT1170 chip with FreeRTOS. Occasionally, the system hangs, and I suspect it may be caused by Flash operations using the ROM API.

1. In the SDK example `flexspi_romapi_cm7`, when reading/writing/erasing Flash with the ROM API, there is no interrupt disable/enable operation. I also found a document titled *"i.MX RT series FlexSPI Nor ROM APIs Usage & Flashloader.pdf"*, which mentions interrupts:

52liuyi52liuyi_1-1777029095740.png

Is it because the ROM API already handles interrupt masking internally, or is there another reason?

To implement write and erase operations at arbitrary Flash addresses, I have wrapped the ROM API into `flash_eraseData()` and `flash_writeData()` functions, and simply wrapped the read operation as `flash_readData()`:

52liuyi52liuyi_2-1777029153497.png

52liuyi52liuyi_3-1777029175571.png52liuyi52liuyi_4-1777029197881.png

Could you please review whether there are any potential errors in my three wrapper functions(I am a bit doubtful whether an erase operation is required before calling ROM_FLEXSPI_NorFlash_ProgramPage)? Also, when calling these functions (not the ROM API directly), is it necessary to disable/enable interrupts?

2. In the SDK example, after calling `ROM_FLEXSPI_NorFlash_ProgramPage` to write Flash, there is a `DCACHE_InvalidateByRange` operation to invalidate the D-Cache.
I understand that the ROM API operates on external NOR Flash through the FlexSPI controller's programming sequence, bypassing the Cache, so the CM7's data cache lines are not automatically updated.
Later, when we use `memcpy` to access Flash data, the access goes through D-Cache, and stale values may be fetched if the cache hits. Therefore, invalidating the D-Cache is necessary.
In my three wrapper functions that use these ROM APIs, could there also be cache coherency issues due to improper handling?

Any help would be very appreciated.

Best regards,

langya.

标记 (3)
0 项奖励
回复
1 回复

149 次查看
db16122
Contributor III

AN12077: Using the i.MX RT FlexRAM – Application Note FYI, have you test your code on RT1170 EVK? More error log during system hang would be helpful

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2355823%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E4%BD%BF%E7%94%A8%20FreeRTOS%20%E7%9A%84%20RT1170%20%E4%B8%8A%E7%9A%84%20FlexSPI%20ROM%20API%EF%BC%9A%E6%9C%89%E5%85%B3%E4%B8%AD%E6%96%AD%E7%A6%81%E7%94%A8%E5%92%8C%E9%AB%98%E9%80%9F%E7%BC%93%E5%AD%98%E4%B8%80%E8%87%B4%E6%80%A7%E7%9A%84%E9%97%AE%E9%A2%98%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2355823%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CSPAN%3E%E4%BA%B2%E7%88%B1%E7%9A%84%E6%81%A9%E6%99%BA%E6%B5%A6%E5%9B%A2%E9%98%9F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E6%88%91%E6%83%B3%E9%97%AE%E4%B8%80%E4%BA%9B%E5%85%B3%E4%BA%8E%E4%BD%BF%E7%94%A8%20FlexSPI%20ROM%20API%20%E6%97%B6%E7%A6%81%E7%94%A8%E4%B8%AD%E6%96%AD%E5%92%8C%E9%AB%98%E9%80%9F%E7%BC%93%E5%AD%98%E7%AE%A1%E7%90%86%E7%9A%84%E9%97%AE%E9%A2%98%E3%80%82%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%B8%A6%E6%9C%89%20FreeRTOS%20%E7%9A%84%20RT1170%20%E8%8A%AF%E7%89%87%E3%80%82%E7%B3%BB%E7%BB%9F%E5%81%B6%E5%B0%94%E4%BC%9A%E6%8C%82%E8%B5%B7%EF%BC%8C%E6%88%91%E6%80%80%E7%96%91%E5%8F%AF%E8%83%BD%E6%98%AF%E4%BD%BF%E7%94%A8%20ROM%20API%20%E8%BF%9B%E8%A1%8C%E9%97%AA%E5%AD%98%E6%93%8D%E4%BD%9C%E9%80%A0%E6%88%90%E7%9A%84%E3%80%82%3C%2FP%3E%3CP%3E1.%E5%9C%A8%20SDK%20%E7%A4%BA%E4%BE%8B%20%22flexspi_romapi_cm7%20%22%E4%B8%AD%EF%BC%8C%E4%BD%BF%E7%94%A8%20ROM%20API%20%E8%AF%BB%2F%E5%86%99%2F%E9%87%8A%E6%94%BE%E9%97%AA%E5%AD%98%E6%97%B6%EF%BC%8C%E6%B2%A1%E6%9C%89%E4%B8%AD%E6%96%AD%E7%A6%81%E7%94%A8%2F%E5%90%AF%E7%94%A8%E6%93%8D%E4%BD%9C%E3%80%82%E6%88%91%E8%BF%98%E6%89%BE%E5%88%B0%E4%BA%86%E4%B8%80%E4%BB%BD%E6%A0%87%E9%A2%98%E4%B8%BA%20*%20%22%20i.MX%20RT%20%E7%B3%BB%E5%88%97%20FlexSPI%20%E6%88%96%E9%9D%9E%20ROM%20API%20%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%20%26amp%3B%20Flashloader.pdf%20%22%20*%20%E7%9A%84%E6%96%87%E6%A1%A3%EF%BC%8C%E5%85%B6%E4%B8%AD%E6%8F%90%E5%88%B0%E4%BA%86%E4%B8%AD%E6%96%AD%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%2252liuyi52liuyi_1-1777029095740.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%2252liuyi52liuyi_1-1777029095740.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F383487iCCF0AC585B642AD0%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%2252liuyi52liuyi_1-1777029095740.png%22%20alt%3D%2252liuyi52liuyi_1-1777029095740.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E6%98%AF%E5%9B%A0%E4%B8%BA%20ROM%20API%20%E5%B7%B2%E7%BB%8F%E5%9C%A8%E5%86%85%E9%83%A8%E5%A4%84%E7%90%86%E4%BA%86%E4%B8%AD%E6%96%AD%E5%B1%8F%E8%94%BD%EF%BC%8C%E8%BF%98%E6%98%AF%E5%8F%A6%E6%9C%89%E5%8E%9F%E5%9B%A0%EF%BC%9F%3C%2FP%3E%3CP%3E%E4%B8%BA%E4%BA%86%E5%9C%A8%E4%BB%BB%E6%84%8F%E9%97%AA%E5%AD%98%E5%9C%B0%E5%9D%80%E4%B8%8A%E5%AE%9E%E7%8E%B0%E5%86%99%E5%85%A5%E5%92%8C%E6%93%A6%E9%99%A4%E6%93%8D%E4%BD%9C%EF%BC%8C%E6%88%91%E5%B0%86%20ROM%20API%20%E5%B0%81%E8%A3%85%E4%B8%BA%20%60flash_eraseData()%60%20%E5%92%8C%20%60flash_writeData()%60%20%E5%87%BD%E6%95%B0%EF%BC%8C%E5%B9%B6%E5%B0%86%E8%AF%BB%E5%8F%96%E6%93%8D%E4%BD%9C%E7%AE%80%E5%8D%95%E5%9C%B0%E5%B0%81%E8%A3%85%E4%B8%BA%20%60flash_readData()%60%EF%BC%9A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%2252liuyi52liuyi_2-1777029153497.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%2252liuyi52liuyi_2-1777029153497.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F383488i69610D9941ADA4E7%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%2252liuyi52liuyi_2-1777029153497.png%22%20alt%3D%2252liuyi52liuyi_2-1777029153497.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%2252liuyi52liuyi_3-1777029175571.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%2252liuyi52liuyi_3-1777029175571.png%22%20style%3D%22width%3A%20342px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F383489iC95A7AA30726AC81%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%2252liuyi52liuyi_3-1777029175571.png%22%20alt%3D%2252liuyi52liuyi_3-1777029175571.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%2252liuyi52liuyi_4-1777029197881.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%2252liuyi52liuyi_4-1777029197881.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F383490iCE2E4B19FA574688%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%2252liuyi52liuyi_4-1777029197881.png%22%20alt%3D%2252liuyi52liuyi_4-1777029197881.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E8%83%BD%E5%90%A6%E8%AF%B7%E6%82%A8%E6%A3%80%E6%9F%A5%E4%B8%80%E4%B8%8B%E6%88%91%E7%9A%84%E4%B8%89%E4%B8%AA%E5%B0%81%E8%A3%85%E5%87%BD%E6%95%B0%E4%B8%AD%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E6%BD%9C%E5%9C%A8%E9%94%99%E8%AF%AF%EF%BC%88%E6%88%91%E6%9C%89%E7%82%B9%E6%80%80%E7%96%91%E5%9C%A8%E8%B0%83%E7%94%A8%20ROM_FLEXSPI_NorFlash_ProgramPage%20%E4%B9%8B%E5%89%8D%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E8%BF%9B%E8%A1%8C%E6%93%A6%E9%99%A4%E6%93%8D%E4%BD%9C%EF%BC%89%EF%BC%9F%E5%8F%A6%E5%A4%96%EF%BC%8C%E5%9C%A8%E8%B0%83%E7%94%A8%E8%BF%99%E4%BA%9B%E5%87%BD%E6%95%B0%EF%BC%88%E8%80%8C%E4%B8%8D%E6%98%AF%E7%9B%B4%E6%8E%A5%E8%B0%83%E7%94%A8%20ROM%20API%EF%BC%89%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E7%A6%81%E7%94%A8%2F%E5%90%AF%E7%94%A8%E4%B8%AD%E6%96%AD%EF%BC%9F%3C%2FP%3E%3CP%3E2%E3%80%82%E5%9C%A8%20SDK%20%E7%A4%BA%E4%BE%8B%E4%B8%AD%EF%BC%8C%E5%9C%A8%E8%B0%83%E7%94%A8%20%60ROM_FLEXSPI_NorFlash_ProgramPage%60%20%E5%86%99%E5%85%A5%20Flash%20%E5%90%8E%EF%BC%8C%E6%9C%89%E4%B8%80%E4%B8%AA%20%60DCACHE_InvalidateByRange%60%20%E6%93%8D%E4%BD%9C%E4%BD%BF%20%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%20%E5%A4%B1%E6%95%88%E3%80%82%3CBR%20%2F%3E%E6%88%91%E7%9F%A5%E9%81%93ROM%20API%E9%80%9A%E8%BF%87FlexSPI%E6%8E%A7%E5%88%B6%E5%99%A8%E7%9A%84%E7%BC%96%E7%A8%8B%E5%BA%8F%E5%88%97%E5%9C%A8%E5%A4%96%E9%83%A8NOR%E9%97%AA%E5%AD%98%E4%B8%8A%E8%BF%90%E8%A1%8C%EF%BC%8C%E7%BB%95%E8%BF%87%E4%BA%86%E7%BC%93%E5%AD%98%EF%BC%8C%E5%9B%A0%E6%AD%A4CM7%E7%9A%84%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%E8%A1%8C%E4%B8%8D%E4%BC%9A%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E3%80%82%3CBR%20%2F%3E%E7%A8%8D%E5%90%8E%EF%BC%8C%E5%BD%93%E6%88%91%E4%BB%AC%E4%BD%BF%E7%94%A8%20%60memcpy%60%E8%AE%BF%E9%97%AE%E9%97%AA%E5%AD%98%E6%95%B0%E6%8D%AE%E6%97%B6%EF%BC%8C%E8%AE%BF%E9%97%AE%E5%B0%86%E9%80%9A%E8%BF%87%20%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%20%E8%BF%9B%E8%A1%8C%EF%BC%8C%E5%A6%82%E6%9E%9C%E7%BC%93%E5%AD%98%E5%91%BD%E4%B8%AD%EF%BC%8C%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%8E%B7%E5%8F%96%E8%BF%87%E6%97%B6%E7%9A%84%E5%80%BC%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8C%E5%BF%85%E9%A1%BB%E4%BD%BF%20%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98%20%E5%A4%B1%E6%95%88%E3%80%82%3CBR%20%2F%3E%E5%9C%A8%E6%88%91%E4%BD%BF%E7%94%A8%E8%BF%99%E4%BA%9B%20ROM%20API%20%E7%9A%84%E4%B8%89%E4%B8%AA%E5%B0%81%E8%A3%85%E5%87%BD%E6%95%B0%E4%B8%AD%EF%BC%8C%E6%98%AF%E5%90%A6%E4%B9%9F%E4%BC%9A%E5%9B%A0%E5%A4%84%E7%90%86%E4%B8%8D%E5%BD%93%E8%80%8C%E5%87%BA%E7%8E%B0%E7%BC%93%E5%AD%98%E4%B8%80%E8%87%B4%E6%80%A7%E9%97%AE%E9%A2%98%EF%BC%9F%3C%2FP%3E%3CP%3E%E5%A6%82%E6%9C%89%E4%BB%BB%E4%BD%95%E5%B8%AE%E5%8A%A9%EF%BC%8C%E6%88%91%E4%BB%AC%E5%B0%86%E4%B8%8D%E8%83%9C%E6%84%9F%E6%BF%80%E3%80%82%3C%2FP%3E%3CP%3E%E9%A1%BA%E7%A5%9D%E5%95%86%E7%A5%BA%EF%BC%81%3C%2FP%3E%3CP%3Elangya.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2356260%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20FlexSPI%20ROM%20API%20on%20RT1170%20with%20FreeRTOS%3A%20Questions%20about%20Interrupt%20Disabling%20and%20Cache%20Coherency%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2356260%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com.cn%2Fdocs%2Fen%2Fapplication-note%2FAN12077.pdf%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3EAN12077%EF%BC%9A%E4%BD%BF%E7%94%A8%20i.MX%20RT%20FlexRAM%20%E2%80%94%20%E5%BA%94%E7%94%A8%E7%AC%94%E8%AE%B0%3C%2FA%3E%E4%BB%85%E4%BE%9B%E5%8F%82%E8%80%83%EF%BC%8C%E4%BD%A0%E5%9C%A8%20RT1170%20EVK%20%E4%B8%8A%E6%B5%8B%E8%AF%95%E8%BF%87%E4%BD%A0%E7%9A%84%E4%BB%A3%E7%A0%81%E5%90%97%EF%BC%9F%E6%9C%80%E5%A5%BD%E8%83%BD%E6%8F%90%E4%BE%9B%E6%9B%B4%E5%A4%9A%E7%B3%BB%E7%BB%9F%E6%8C%82%E8%B5%B7%E6%97%B6%E7%9A%84%E9%94%99%E8%AF%AF%E6%97%A5%E5%BF%97%3C%2FP%3E%3C%2FLINGO-BODY%3E