在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

SDRAM和RAM對MSC的實現

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-08-18 14:42 ? 次閱讀

客戶需求

昨天FAE同事報了一個客戶需求過來,需要雙大容量存儲設備(MSC device),一個安裝在SD卡上,另一個安裝到SDRAM上面。

初步分析

趕緊用MCUXpresso的peripheral tool去試了一下,結果發現這個工具不支持MSC mount on SD card,只支持MSC mount on RAM, 這樣就只能手動去做了。 先看看MSC的描述符結構,非常簡單直觀,妥妥的鋼鐵直男。一個interface,兩個endpoint,結束。

b9a8bc74-1eaa-11ed-ba43-dac502259ad0.png

所以,雙MSC的配置描述符就是:

b9b53ef4-1eaa-11ed-ba43-dac502259ad0.png

然后,結合客戶需求,最簡單的方法就是在MSC mount on SD card上面加一個MSC mount on RAM。SDRAM和RAM對MSC的實現基本沒有區別,只是一個buffer塊地址不同而已。

操作步驟

接下來我們做兩件事:

用peripheral tool導入一個dual MSC的工程,這個工具導出的代碼結構非常清晰,可以幫助我們了解如何做復合設備類。

導入SDK自帶的MSC mount on SD card+ CDC的工程:evkbimxrt1050_dev_composite_cdc_msc_disk_freertos

然后要做的事情就是把MSC mounton RAM的代碼集成到MSC mount on SD card+ CDC的工程的工程里面去,同時去掉里面的CDC。

需要的步驟我能想到的就是:

去掉MSC mount on SD card+ CDC工程里面的CDC。

集成MSC mount on RAM的代碼。

集成描述符。

集成數據結構。

好了,下面一步一步做來試試。 做之前,先把原始代碼做個備份,然后通過Beyond Compare可以看到相關的改動,這個非常重要。

代碼改動

代碼變動如下,更多細節請參考附件代碼:

刪除virtual_com.c, virtual_com.h

增加 usb_device_interface_0_msc_ram_disk.c

更改usb_device_descriptor.h

增加MSC(RAM)的相關宏定義。

更改USB_INTERFACE_COUNT為2,之前是3個接口,現在是兩個。

更改USB_MSC_DISK_INTERFACE_INDEX為1,之前為2。MSC(RAM)的index為0。

更改USB_MSC_DISK_BULK_IN_ENDPOINT為2,之前為1。MSC(RAM)使用端點1 IN,端點1 OUT。MSC(SD CARD) 使用端點2 IN,端點2 OUT。

刪掉CDC的相關定義

更改usb_device_descriptor.c

添加MSC(RAM)的數據結構,這些數據結構有點復雜。不過我們只需要知道他們用于維護相關的接口和端點就可以了:
A. g_UsbDeviceInterface0MscRamDiskConfig
B. g_UsbDeviceInterface0MscRamDiskInterfaceList
C. g_UsbDeviceInterface0MscRamDiskInterfaces
D.g_UsbDeviceInterface0MscRamDiskInterface
E.g_UsbDeviceInterface0MscRamDiskSetting0DefaultEndpoints

去掉CDC接口/端點描述符。

增加MSC(RAM)接口/端點描述符。

更新USB_DeviceSetSpeed()的相關內容。

usb_device_config.h

更改USB_DEVICE_CONFIG_CDC_ACM為0。

更改USB_DEVICE_CONFIG_MSC為2。

檢查USB_DEVICE_CONFIG_ENDPOINTS是否滿足需求,默認為5。

composite.h

去掉 #include "virtual_com.h"。

更改usb_device_composite_struct_t數據類型:
A. 去掉usb_cdc_vcom_struct_t cdcVcom
B. 增加class_handle_t interface0MscRamDiskHandle; 。

composite.c

更改g_CompositeClassConfig,去掉CDC,加入MSC(RAM) 。

增加USB_UpdateInterfaceSetting()函數。

修改USB_DeviceCallback(),對以下事件加入對MSC(RAM)的處理,去掉對CDC的處理:
A. kUSB_DeviceEventBusReset
B. kUSB_DeviceEventSetConfiguration
C.kUSB_DeviceEventSetInterface

修改USB_DeviceApplicationInit()加入對MSC(RAM)的處理,去掉對CDC的處理。

更改APPTask(),去掉對CDC的處理。

最后,要把MSC(RAM)的分區放到SDRAM上面,只需要更改usb_device_interface_0_msc_ram_disk.c里面的storageDisk指針指向SDRAM空間即可。默認的MCUXpresso的USB示例工程沒有使能SDRAM RAM。使能SDRAM需要更改一下配置:

b9d02dc2-1eaa-11ed-ba43-dac502259ad0.png

完成上述改動后,編譯代碼,再下載到目標板運行,可以看到:

b9f7dde0-1eaa-11ed-ba43-dac502259ad0.png

這樣我們就得到了兩個MSC,一個mounton SDRAM,一個mount on SD卡。

代碼鏈接

https://gitee.com/nxa16038/dual_msc.git

附錄:使用Peripheral tool導入

基于MCUXpresso IDE 環境,我們可以很輕易的生成雙MSC mount on RAM的代碼,步驟如下(以下步驟是在MCUXPresso 11.6版本上操作的)。

1. 導入SDK后,選擇new project

ba0bdcb4-1eaa-11ed-ba43-dac502259ad0.png 2. 點擊“Next”: ba1d6f9c-1eaa-11ed-ba43-dac502259ad0.png

3. 轉到middleware頁面,選擇USB Device MSD。

ba49063e-1eaa-11ed-ba43-dac502259ad0.png

4. 然后點finish就好了。

5. 然后點擊下圖所示的按鈕打開MCUXpresso內置的peripheral tool界面

ba620666-1eaa-11ed-ba43-dac502259ad0.png

6. 如果有多個工程,打開后什么都看不到需要選擇對應的工程,這里我們選擇剛建立的工程MIMXRT1052_Project。

ba70e21c-1eaa-11ed-ba43-dac502259ad0.png

7. 然后點擊Middleware右方的+號。

ba860e1c-1eaa-11ed-ba43-dac502259ad0.png

8. 最后選USB,點擊OK。

ba96aeca-1eaa-11ed-ba43-dac502259ad0.png

9. 然后Preset里面,選擇MSC RAM disk。

baaa842c-1eaa-11ed-ba43-dac502259ad0.png

10. 然后會看到一個錯誤提示:

bad56f2a-1eaa-11ed-ba43-dac502259ad0.png

baf308aa-1eaa-11ed-ba43-dac502259ad0.png

11. 在錯誤信息上點右鍵,選擇時鐘使能。

bb0730d2-1eaa-11ed-ba43-dac502259ad0.png

12. 由于默認只有一個MSC,我們需要再增加一個,點下圖的+號

bb16879e-1eaa-11ed-ba43-dac502259ad0.png

13. 默認添加的是DFU,我們需要切換到MSC

bb31eef8-1eaa-11ed-ba43-dac502259ad0.png

14. 這樣兩個MSC就做好了。

bb478b82-1eaa-11ed-ba43-dac502259ad0.png

15. 然后更新代碼

bb64dc1e-1eaa-11ed-ba43-dac502259ad0.png

16. 點擊OK

bb7f9d9c-1eaa-11ed-ba43-dac502259ad0.png

17. 然后IDE回到開發模式我們可以看到code已經生成好了。

bba9b5b4-1eaa-11ed-ba43-dac502259ad0.png

18. 然后build and run,就可以直接運行,得到兩個MSC on RAM。

bbcd40f6-1eaa-11ed-ba43-dac502259ad0.png

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

    關注

    7

    文章

    423

    瀏覽量

    55226
  • msc
    msc
    +關注

    關注

    0

    文章

    29

    瀏覽量

    20125
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1368

    瀏覽量

    114698
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68612

原文標題:在i.MX RT1050上如何實現雙大容量存儲(MSC)設備

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    VHDL工具實現SDRAM控制器的要點分享

    在高速實時或者非實時信號處理系統當中,使用大容量存儲器實現數據緩存是一個必不可少的環節,也是系統實現中的重點和難點之一。SDRAM(同步動態隨機訪問存儲器)具有價格低廉、密度高、數據讀寫速度快的優點
    的頭像 發表于 01-18 07:21 ?8251次閱讀
    VHDL工具<b class='flag-5'>實現</b><b class='flag-5'>SDRAM</b>控制器的要點分享

    SDRAM與雙口RAM數據轉移接口控制電路

    控制;(5)DRAM為16位數據總線,RAM為32位數據總線,SDRAM進行一次突發操作,RAM進行一次讀寫操作,以實現速度匹配;(6)DRAM和R
    發表于 06-10 05:00

    ARM里的ramSDRAM有什么區別?

    本篇文章英尚微電子存儲芯片供應商主要詳細介紹下ARM里的ramSDRAM有什么區別,首先介紹了ramSDRAM做了詳細闡述,最后介紹了兩者的區別。
    發表于 04-02 06:46

    如何去實現外部RAM擴展接口呢

    使用并行SRAM或者SDRAM實現ram擴展。有些IO口較多的MCU有專用的接口如FSMC來連接SDRAM或并行psram,但會占用過多的管腳資源和PCB面積。面向IoT領域的IPU
    發表于 11-24 06:50

    RAM與SRAM及其SDRAM都有哪些不同呢

    1、RAM(random access memory):(都屬于易失性存儲器)SRAM:靜態隨機存儲器,6個晶體管存儲一位數據,功耗大,面積大DRAM:動態隨機存儲器,一個晶體管和一個電容存儲一位數
    發表于 12-17 06:35

    ARM里的ramSDRAM有什么區別

    的數據就會丟失。我們通常購買或升級的內存條就是用作電腦的內存,內存條(SIMM)就是將ram集成塊集中在一起的一小塊電路板,它插在計算機中的內存插槽上,以減少ram集成塊占用的空間。SDRAM介紹
    發表于 10-25 15:08

    如何提高evkmimxrt1170_dev_msc_disk_bm_cm7示例的傳輸速度?

    到內部 RAM 或外部 SDRAM 的程序,因此我們可以檢查閃存 XIP 與 SDRAM/內部 RAM 的性能。我們已經找到了很多帖子,但無法設法使示例引導形式閃存,然后從
    發表于 06-08 09:07

    使用Verilog實現基于FPGA的SDRAM控制器

    摘 要:介紹了SDRAM的特點和工作原理,提出了一種基于FPGA的SDRAM控制器的設計方法,使用該方法實現的控制器可非常方便地對SDRAM進行控制。 關鍵
    發表于 06-20 13:04 ?2191次閱讀

    SDRAM接口的VHDL設計方案

    SDRAM 以其高速和大容量的優點獲得了極大的應用,但是其接口與目前廣泛應用的微處理器系統不兼容,介紹了用 VHDL 語言實現SDRAMRAM之間的接口控制電路,從而將
    發表于 06-01 15:29 ?57次下載
    <b class='flag-5'>SDRAM</b>接口的VHDL設計方案

    Turbo碼譯碼在MSC8101上的實現探討

    介紹了摩托羅拉公司新一代定點數字信號處理芯片MSC8101的特點,以及Turbo碼譯碼在MSC8101上的實現技術。
    發表于 09-13 18:04 ?20次下載
    Turbo碼譯碼在<b class='flag-5'>MSC</b>8101上的<b class='flag-5'>實現</b>探討

    SDRAM與SRAM的區別

    SRAM是靠雙穩態觸發器來記憶信息的;SDRAM是靠MOS電路中的柵極電容來記憶信息的。由于電容上的電荷會泄漏,需要定時給與補充,所以動態RAM需要設置刷新電路。但動態RAM比靜態RAM
    發表于 11-03 18:26 ?5568次閱讀

    一文看懂ARM里的RAMSDRAM有什么區別

    本文主要介紹的是ARM里的RAMSDRAM有什么區別,首先介紹了RAM的類別及特點,其次對SDRAM做了詳細闡述,最后介紹了RAM
    發表于 04-27 16:20 ?3.4w次閱讀

    采用VHDL語言實現SDRAM與雙口RAM的數據傳輸系統設計

    來設置RAM起始地址、SDRAM起始地址、傳送數據長度、傳送數據方向之后,SDRAMRAM之間數據傳送就完全可以通過硬件實現,不必占用微處
    的頭像 發表于 06-01 07:08 ?3074次閱讀
    采用VHDL語言<b class='flag-5'>實現</b><b class='flag-5'>SDRAM</b>與雙口<b class='flag-5'>RAM</b>的數據傳輸系統設計

    ARM里的ramSDRAM之間的區別是什么

    本篇文章英尚微電子存儲芯片供應商主要詳細介紹下ARM里的ramSDRAM有什么區別,首先介紹了ramSDRAM做了詳細闡述,最后介紹了兩者的區別。
    發表于 02-25 15:01 ?1406次閱讀

    SDRAM工作原理 SDRAM布局布線說明

    SDRAM全稱Synchronous Dynamic RAM,同步動態隨機存儲器。首先,它是RAM,即隨機存儲器的一種。
    發表于 08-08 15:10 ?2281次閱讀
    <b class='flag-5'>SDRAM</b>工作原理 <b class='flag-5'>SDRAM</b>布局布線說明
    主站蜘蛛池模板: bt天堂网在线资源www| 天天干天天干天天色| 女人又色又爽又黄| 国产91小视频在线观看| 久久国产精品99久久久久久牛牛 | 4虎影院在线观看| 99热99操99射| 亚色在线视频| 性福利视频| 国产精品九九久久一区hh| 在线观看天堂| 男人午夜影院| 中文天堂在线最新版在线www| 你懂的网址在线观看| 唐人呦一呦xxxx视频| 2021天天干| 四虎最新免费网址| 毛片官网| 激情www| 伊人久久大香线蕉综合电影| 如色网| 天天操夜夜欢| 国产美女精品久久久久中文 | 国产精品入口免费视频| 成人在线一区二区三区| 五月婷婷在线视频观看| 5月丁香婷婷| 日本一卡精品视频免费| 久久婷婷丁香| 天天干妹子| 制服丝袜中文字幕第一页| 欧洲一级鲁丝片免费| 天天干天天干天天操| 在线观看亚洲成人| 成年男人永久免费看片| 又黄又湿又爽| 色97色| 可以免费播放的在线视频| 午夜激情网站| 色综合天天综合网站中国| 日本不卡视频在线|