国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

介紹AWorksLP基于FatFs的SD卡的基本用法

AGk5_ZLG_zhiyua ? 來(lái)源:ZLG致遠(yuǎn)電子 ? 2023-05-08 16:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AWorksLP對(duì)存儲(chǔ)類設(shè)備進(jìn)行了高度抽象化,為存儲(chǔ)類設(shè)備提供了通用的文件操作接口,應(yīng)用程序可以輕松跨平臺(tái)。本文以MR6450平臺(tái)為例,介紹AWorksLP基于FatFs的SD卡的基本用法。

e54a9c88-ec47-11ed-90ce-dac502259ad0.jpg??簡(jiǎn)介

SD卡(Secure Digital Card)即安全數(shù)字卡。是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,從MMC的基礎(chǔ)上發(fā)展而來(lái)。由于它的體積小、數(shù)據(jù)傳輸速度快、可熱拔插等優(yōu)點(diǎn),被廣泛的運(yùn)用于便攜式和嵌入式設(shè)備上。 FatFs是一種面向小型嵌入式系統(tǒng)的通用的FAT文件系統(tǒng)。它完全是由ANSIC語(yǔ)言編寫并且完全獨(dú)立于底層I/O。

因此它可以很容易的移植到不同且資源有限的微控制器中。
由此可見在嵌入式開發(fā)中對(duì)SD卡中的文件進(jìn)行管理時(shí),F(xiàn)atFs是使用的最多的文件系統(tǒng)。 在AWorksLP中已經(jīng)集成了FatFs文件系統(tǒng),并支持使用該文件系統(tǒng)對(duì)SD卡的文件進(jìn)行管理。

e5627cf4-ec47-11ed-90ce-dac502259ad0.jpg??相關(guān)API

在SD卡例程中,是通過(guò)文件接口實(shí)現(xiàn)對(duì)SD卡中文件進(jìn)行操作的。在本文中僅介紹用到的文件接口,其他文件接口,請(qǐng)參考SDK中《AWorksLP OS 標(biāo)準(zhǔn)API參考手冊(cè)(html)》。

AWorksLP函數(shù)列表:

e56ff78a-ec47-11ed-90ce-dac502259ad0.png

部分接口參數(shù)屬性表:

e5c45596-ec47-11ed-90ce-dac502259ad0.png

e5627cf4-ec47-11ed-90ce-dac502259ad0.jpg??工程編譯

環(huán)境的搭建、Eclipse工程的編譯與配置、開發(fā)板的仿真與調(diào)試、請(qǐng)參考《AWorksLPSDK快速入門(MR6450)——開箱體驗(yàn)》。

e5627cf4-ec47-11ed-90ce-dac502259ad0.jpg??例程介紹

本文介紹例程在{SDK}demosperipheralsdcard目錄下。

在src目錄下的demo_sdcard_fs.c例程代碼中的第149行到第157行使用了while循環(huán)如代碼1示,在循環(huán)中每隔500ms打開一次SD卡設(shè)備,通過(guò)檢查返回值來(lái)檢測(cè)是否有SD卡插入。如檢測(cè)到返回值大于等于0則表明有SD卡插入。需要注意的是打開SD卡的設(shè)備名(“__BLK_NAME”在demo_sdcard_fs.c的第67行中默認(rèn)被宏定義為“/dev/sdcardB0”)需要與實(shí)際檢測(cè)到的SD卡設(shè)備名一致。

在AWorksLP中SD卡默認(rèn)是動(dòng)態(tài)監(jiān)測(cè),在SD卡插入時(shí)會(huì)在串口打印設(shè)備信息如圖1示,串口顯示SD卡設(shè)備名為“sdcardA0”,所以我們需要修改“__BLK_NAME”的宏定義為“/dev/sdcardA0”。

64 /* sd卡設(shè)備分區(qū)名,是由sd卡設(shè)備分區(qū)注冊(cè)為字符型設(shè)備
65 * sd卡設(shè)備分區(qū)名一般是由SD卡設(shè)備名加上part number
66 */
67 #define __BLK_NAME   "/dev/sdcardB0"
149 do{
150   fd = aw_open(__BLK_NAME, AW_O_RDWR, 0);
151   if (fd < 0) {
152 ? ? ? ? aw_kprintf("open device failed
");
153 ? ? ? ? aw_mdelay(500);
154 ? ? } 
155 }while(fd < 0);
156 
157 ? ?aw_close(fd);
代碼1SD卡設(shè)備檢測(cè)流程

e608814e-ec47-11ed-90ce-dac502259ad0.png

圖1串口打印SD卡設(shè)備名 代碼2中第159行到172行的功能為使用aw_make_fs函數(shù)接口將SD卡格式化為FatFs文件系統(tǒng)。第159行的宏定義默認(rèn)為#if 0,本次例程為了演示該步驟將宏改為#if 1。需要注意的是格式化會(huì)把卡內(nèi)的數(shù)據(jù)清除,在執(zhí)行格式化之前需要確??▋?nèi)沒(méi)有重要數(shù)據(jù)。

159 #if 1  /* 格式化一次即可  */
160 
161     /* 卷名為"awdisk", 卷大小為4k  */
162     struct aw_fs_format_arg fmt = {"awdisk", 1024 * 4, 0};
163 
164     /* 制作文件系統(tǒng) ,將存儲(chǔ)器名為 "/dev/sd0"制作為"vfat"類型的文件系統(tǒng)  */
165     ret = aw_make_fs(__BLK_NAME, "vfat", &fmt);
166     if (ret != AW_OK) {
167         AW_ERRF(("failed: %d
", ret));
168         return;
169     }
170     AW_INFOF(("make fs OK
"));
171 
172 #endif

代碼2SD卡格式化

格式化完成后,代碼3中第174行通過(guò)aw_mkdir函數(shù)創(chuàng)建一個(gè)名為“/sd”的目錄,以該目錄為SD卡的掛載點(diǎn)。創(chuàng)建目錄的文件模式為文件所有者、用戶組和其他用戶都可以對(duì)該目錄進(jìn)行讀寫。第181行通過(guò)aw_mount函數(shù)將SD卡掛載在“/sd”目錄中。需要注意的掛載前需要確保目錄存在,如果將SD卡掛載在不存在的目錄上,掛載會(huì)失敗。掛載的文件系統(tǒng)也需要與SD卡格式化的文件系統(tǒng)格式一致,否則掛載同樣會(huì)失敗。

173 /* 創(chuàng)建掛載節(jié)點(diǎn) */
174 ret = aw_mkdir("/sd", AW_S_IRWXU | AW_S_IRWXG | AW_S_IRWXO);
175 if (ret != AW_OK) {
176   AW_ERRF(("/sd create error: %d!
", ret));
177   return;
178 }
179 
180 /* 文件系統(tǒng)掛載到"/sd"節(jié)點(diǎn) */
181 ret = aw_mount("/sd", __BLK_NAME, "vfat", 0, NULL);
182 if (ret != AW_OK) {
183   AW_ERRF(("/sd mount FATFS error: %d!
", ret));
184   return;
185 }
186 AW_INFOF(("mount OK
"));
187 
188 /* SD 卡讀寫測(cè)試 */
189 __fs_file_rw();

代碼3掛載SD卡

最終例程會(huì)在第189行調(diào)用__fs_file_rw函數(shù),函數(shù)體如代碼4所示。在該函數(shù)中會(huì)在“/sd”目錄下創(chuàng)建一個(gè)名為“aworks_sd_test.txt”的測(cè)試文件,通過(guò)對(duì)該文件進(jìn)行讀寫測(cè)試,讀寫完成后對(duì)數(shù)據(jù)進(jìn)行效驗(yàn),效驗(yàn)通過(guò)則表明SD卡讀寫測(cè)試成功。至此SD卡例程執(zhí)行完畢,整個(gè)過(guò)程會(huì)有串口信息打印如圖2所示。

69 aw_local void __fs_file_rw (void)
70 {
71     int         i = 0;
72     int         handle;
73     char       *p_file_name = "/sd/aworks_sd_test.txt";
74     uint8_t     str_buf[256] = {0};
75     int         len;
76 
77     /*
78     * 寫文件測(cè)試(包括創(chuàng)建,文件寫操作,關(guān)閉操作)
79     */
80     /* 創(chuàng)建新文件 */
81     handle = aw_open(p_file_name, AW_O_RDWR | AW_O_CREAT, 0777);
82     if (handle < 0) {
83         AW_ERRF(("creat file error: %d
", handle));
84         return;
85     }
86     AW_INFOF(("creat file %s ok
", p_file_name));
87 
88     len = sizeof(str_buf);
89     for (i = 0; i < len; i++) {
90         str_buf[i] = (uint8_t)i;
91     }
92 
93     /* 寫文件 */
94     if (aw_write(handle, str_buf, sizeof(str_buf)) != sizeof(str_buf)) {
95         aw_close(handle);
96         AW_ERRF(("write file error
"));
97         return;
98     }
99     AW_INFOF(("write file %s ok
", p_file_name));
100 
101     /* 關(guān)閉文件 */
102     aw_close(handle);
103     AW_INFOF(("close file %s ok
", p_file_name));
104 
105     /*
106     * 讀文件測(cè)試(包括打開,文件讀操作,關(guān)閉操作)
107     */
108     /* 打開文件 */
109     handle = aw_open(p_file_name, AW_O_RDONLY, 0777);
110     if (handle < 0) {
111         AW_ERRF(("open file error: %d
", handle));
112         return;
113     }
114     AW_INFOF(("open file %s ok
", p_file_name));
115 
116     memset(str_buf, 0, sizeof(str_buf));
117 
118     /* 讀取文件 */
119     len = sizeof(str_buf);
120     if (aw_read(handle, str_buf, sizeof(str_buf)) != sizeof(str_buf)) {
121         aw_close(handle);
122         AW_ERRF(("read file error!
"));
123         return;
124     }
125     AW_INFOF(("read file %s ok
", p_file_name));
126 
127     /* 檢驗(yàn)數(shù)據(jù)是否正確 */
128     for (i = 0; i < len; i++) {
129         if ((uint8_t)i != str_buf[i]) {
130             AW_ERRF(("file data error!
"));
131             aw_close(handle);
132             return;
133         }
134     }
135 
136     AW_INFOF(("file %s data check ok
", p_file_name));
137 }

代碼4__fs_file_rw讀寫測(cè)試函數(shù)

e61a3a10-ec47-11ed-90ce-dac502259ad0.png

圖2SD卡例程執(zhí)行成功的串口信息

e5627cf4-ec47-11ed-90ce-dac502259ad0.jpg??擴(kuò)展介紹

在上節(jié)中有提到AWorksLP SD卡默認(rèn)是動(dòng)態(tài)檢測(cè)設(shè)備,即支持熱拔插,這是通過(guò)一個(gè)檢測(cè)引腳實(shí)現(xiàn)的。在實(shí)際應(yīng)用中,可能出于節(jié)約I/O資源的考慮,需要將檢測(cè)引腳復(fù)用為其他功能。在這種情況下可以將SD卡定義為靜態(tài)設(shè)備,這樣檢測(cè)引腳就能復(fù)用作其他功能了。

在AWorksLP中SD卡的動(dòng)態(tài)設(shè)備在圖形化配置界面中沒(méi)有SD卡設(shè)備可供使用,只需將對(duì)應(yīng)的SDIO控制器選上即可。上文例程中SD卡是通過(guò)sdio1設(shè)備來(lái)控制的,所以僅需保證sdio1設(shè)備使能即可,如圖3所示。

e63ad0cc-ec47-11ed-90ce-dac502259ad0.png

圖3 動(dòng)態(tài)設(shè)備下確認(rèn)控制器被選上

將SD卡設(shè)備以靜態(tài)方式注冊(cè)時(shí),則需要進(jìn)行如下操作:

將pins.dts({board}dtspins.dts)文件中CD引腳配置注釋,修改完成后如代碼5所示;

在board.dts文件中添加SD卡設(shè)備,如代碼5所示。

/*  cd-pins = <&pin1 PIN_PD28
(IOC_PD28_FUNC_CTL_SDC1_CDN|HPM_PIN_DS(6)|HPM_PIN_PE(_HPM_PIN_PE_ON)|AW_PIN_CFG_PULL_UP) 
(IOC_PD28_FUNC_CTL_SDC1_CDN|HPM_PIN_DS(6)|HPM_PIN_PE(_HPM_PIN_PE_ON)|AW_PIN_CFG_PULL_UP) 
(IOC_PD28_FUNC_CTL_SDC1_CDN|HPM_PIN_DS(6)|HPM_PIN_PE(_HPM_PIN_PE_ON)|AW_PIN_CFG_PULL_UP) >; */
代碼5 注釋引腳
 &sdio1 {
   sdio_mem_card0:sdio_mem_card0 {
     compatible = "general,sdio_mem_card";
     label = "sdcardA";
     status = "disabled";
   };
 };
代碼6添加SD卡設(shè)備

完成修改后,重新打開例程編譯圖形化配置界面,即可在Board EPC6450-AWI/Devices/External Memories選項(xiàng)下看到板卡下新增sdcardA設(shè)備如圖4所示,使能該項(xiàng)并保存退出,再次編譯工程并執(zhí)行固件,例程現(xiàn)象與上節(jié)中所描述完全一致。

e659d97c-ec47-11ed-90ce-dac502259ad0.png

圖4 選擇SD卡設(shè)備

注意:例程在靜態(tài)SD卡設(shè)備下執(zhí)行需要在固件運(yùn)行前將SD卡插入。





審核編輯:劉清

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

    關(guān)注

    48

    文章

    8385

    瀏覽量

    164661
  • 嵌入式
    +關(guān)注

    關(guān)注

    5199

    文章

    20454

    瀏覽量

    334271
  • SD卡
    +關(guān)注

    關(guān)注

    2

    文章

    589

    瀏覽量

    68780
  • FatFS文件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    7916

原文標(biāo)題:【產(chǎn)品應(yīng)用】AWorksLP例程介紹(MR6450)—— SD卡

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    STM32+SD NAND(貼片SD)完成FATFS文件系統(tǒng)移植與測(cè)試

    貼片式SD,使用起來(lái)與普通的SD一樣,簡(jiǎn)單的區(qū)別就是:比TF穩(wěn)定,比eMMC便宜。 下面章節(jié)里會(huì)詳細(xì)
    的頭像 發(fā)表于 07-17 17:24 ?1.2w次閱讀
    STM32+<b class='flag-5'>SD</b> NAND(貼片<b class='flag-5'>SD</b><b class='flag-5'>卡</b>)完成<b class='flag-5'>FATFS</b>文件系統(tǒng)移植與測(cè)試

    如何使用 FatFs 顯示 SD 中的 JPEG 文件?

    使用 FatFs 顯示 SD 中的 JPEG 文件
    發(fā)表于 09-04 06:20

    cc3200+fatfs+sd 文件刪除

    TI工程師你好! ? ? ? 我使用SDK1.1.0 Fatfs Rv0.10C,在使用fatfs文件系統(tǒng)的時(shí)候,我下載一個(gè)40M大文件到SD,下載完場(chǎng)之后調(diào)用f_unlink刪除此
    發(fā)表于 05-14 07:22

    stmF103rct6使用fatfsSD

    stmF103rct6使用fatfsSD,我現(xiàn)在是把需要的數(shù)據(jù)從SD讀出來(lái),然后發(fā)送到IO口,發(fā)完再回來(lái)讀
    發(fā)表于 06-29 20:29

    32的sdFATFS文件系統(tǒng)是什么

    最近看了32的sdFATFS文件系統(tǒng),現(xiàn)在就自己的理解總結(jié)一下。一、SD模塊SD
    發(fā)表于 07-13 06:57

    如何在Fatfs軟件上去讀寫SD下文件呢

    讀寫SD是指什么?SD/TF有哪些硬件接口?如何在Fatfs軟件上去讀寫SD
    發(fā)表于 11-01 06:16

    探討一下SDFATFS文件系統(tǒng)

    SD模塊支持哪幾種操作模式呢?如何對(duì)SD進(jìn)行初始化呢?FATFS是什么意思?FATFS文件系
    發(fā)表于 12-17 06:35

    關(guān)于SD使用FATFS的問(wèn)題求解

    尊敬的先生/女士,我對(duì) STM32 的世界還很陌生,盡管我每天都在探索關(guān)于它們的新事物。我必須使用 MCU 的 SDMMC 的(內(nèi)部)DMA,將大容量字節(jié)從 SD 傳輸?shù)?micro 的內(nèi)部 RAM。為此,是否真的有必要使用 FATF
    發(fā)表于 02-03 08:25

    基于SDFATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉

    基于SDFATFS文件系統(tǒng)的研究與應(yīng)用_崔鵬偉。
    發(fā)表于 04-14 16:46 ?40次下載

    STM32F103RCT6用SPI和FATFS訪問(wèn)SD

    STM32F103RCT6用SPI和FATFS訪問(wèn)SD,參考了正點(diǎn)原子源碼
    發(fā)表于 08-03 18:20 ?144次下載

    STM32單片機(jī)移植SDFATFS文件系統(tǒng)

    最近看了32的sdFATFS文件系統(tǒng),現(xiàn)在就自己的理解總結(jié)一下。一、SD模塊SD
    發(fā)表于 11-15 16:51 ?6次下載
    STM32單片機(jī)移植<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>FATFS</b>文件系統(tǒng)

    基于STM32CubeIDE 開發(fā) FATFS + SD + USB 的讀卡器功能

    一、介紹本次采用STM32CubeIDE 平臺(tái) STM32L476RE 芯片 自帶 usb接口和 Mirco槽,實(shí)現(xiàn)通過(guò)USB連接電腦能正確對(duì)SD中的文件進(jìn)行讀寫操作,同時(shí)芯片內(nèi)部
    發(fā)表于 12-28 19:47 ?20次下載
    基于STM32CubeIDE 開發(fā) <b class='flag-5'>FATFS</b> + <b class='flag-5'>SD</b><b class='flag-5'>卡</b> + USB 的讀卡器功能

    【產(chǎn)品應(yīng)用】AWorksLP例程介紹(MR6450)—— SD

    AWorksLP對(duì)存儲(chǔ)類設(shè)備進(jìn)行了高度抽象化,為存儲(chǔ)類設(shè)備提供了通用的文件操作接口,應(yīng)用程序可以輕松跨平臺(tái)。本文以MR6450平臺(tái)為例,介紹AWorksLP基于FatFs
    的頭像 發(fā)表于 05-10 09:42 ?1328次閱讀
    【產(chǎn)品應(yīng)用】<b class='flag-5'>AWorksLP</b>例程<b class='flag-5'>介紹</b>(MR6450)—— <b class='flag-5'>SD</b><b class='flag-5'>卡</b>

    stm32 CubeMx 實(shí)現(xiàn)SD/sd nand FATFS讀寫測(cè)試

    文章目錄stm32CubeMx實(shí)現(xiàn)SD/SDnandFATFS讀寫測(cè)試1.前言2.環(huán)境介紹2.1軟硬件說(shuō)明2.2外設(shè)原理圖3.工程搭建3.1CubeMx配置3.2SDIO時(shí)鐘配置說(shuō)明3.2讀寫測(cè)試
    的頭像 發(fā)表于 06-03 09:20 ?3662次閱讀
    stm32 CubeMx 實(shí)現(xiàn)<b class='flag-5'>SD</b><b class='flag-5'>卡</b>/<b class='flag-5'>sd</b> nand <b class='flag-5'>FATFS</b>讀寫測(cè)試

    如何移植FatFs文件系統(tǒng)到SD內(nèi)

    SDFatFs文件管理系統(tǒng)
    的頭像 發(fā)表于 09-19 09:11 ?3142次閱讀
    如何移植<b class='flag-5'>FatFs</b>文件系統(tǒng)到<b class='flag-5'>SD</b><b class='flag-5'>卡</b>內(nèi)