91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

ZLG致遠(yuǎn)電子 ? 2023-05-10 09:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

4602f868-ed47-11ed-ba01-dac502259ad0.jpg ?簡(jiǎn)介

SD卡(Secure Digital Card)即安全數(shù)字卡。是一種基于半導(dǎo)體快閃記憶器的新一代記憶設(shè)備,從MMC的基礎(chǔ)上發(fā)展而來。由于它的體積小、數(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)行管理。


46085808-ed47-11ed-ba01-dac502259ad0.jpg ?相關(guān)API

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

AWorksLP函數(shù)列表:

460dc554-ed47-11ed-ba01-dac502259ad0.png

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

46198c36-ed47-11ed-ba01-dac502259ad0.png

46085808-ed47-11ed-ba01-dac502259ad0.jpg ?工程編譯

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


46085808-ed47-11ed-ba01-dac502259ad0.jpg ?例程介紹

本文介紹例程在{SDK}\demos\peripheral\sdcard目錄下。

在src目錄下的demo_sdcard_fs.c例程代碼中的第149行到第157行使用了while循環(huán)如代碼1示,在循環(huán)中每隔500ms打開一次SD卡設(shè)備,通過檢查返回值來檢測(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 number66 */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\r\n");153 ? ? ? ? aw_mdelay(500);154 ? ? } 155 }while(fd < 0);156 157 ? ?aw_close(fd);

代碼1SD卡設(shè)備檢測(cè)流程

462e2470-ed47-11ed-ba01-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)沒有重要數(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\n", ret));168 return;169 }170 AW_INFOF(("make fs OK\n"));171 172 #endif

代碼2SD卡格式化

格式化完成后,代碼3中第174行通過aw_mkdir函數(shù)創(chuàng)建一個(gè)名為“/sd”的目錄,以該目錄為SD卡的掛載點(diǎn)。創(chuàng)建目錄的文件模式為文件所有者、用戶組和其他用戶都可以對(duì)該目錄進(jìn)行讀寫。第181行通過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!\n", 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!\n", ret));184 return;185 }186 AW_INFOF(("mount OK\n"));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è)試文件,通過對(duì)該文件進(jìn)行讀寫測(cè)試,讀寫完成后對(duì)數(shù)據(jù)進(jìn)行效驗(yàn),效驗(yàn)通過則表明SD卡讀寫測(cè)試成功。至此SD卡例程執(zhí)行完畢,整個(gè)過程會(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\n", handle));84 return;85 }86 AW_INFOF(("creat file %s ok\n", 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\n"));97 return;98 }99 AW_INFOF(("write file %s ok\n", p_file_name));100 101 /* 關(guān)閉文件 */102 aw_close(handle);103 AW_INFOF(("close file %s ok\n", 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\n", handle));112 return;113 }114 AW_INFOF(("open file %s ok\n", 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!\n"));123 return;124 }125 AW_INFOF(("read file %s ok\n", 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!\n"));131 aw_close(handle);132 return;133 }134 }135 136 AW_INFOF(("file %s data check ok\n", p_file_name));137 }

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

46377840-ed47-11ed-ba01-dac502259ad0.png

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


46085808-ed47-11ed-ba01-dac502259ad0.jpg ?擴(kuò)展介紹

在上節(jié)中有提到AWorksLP SD卡默認(rèn)是動(dòng)態(tài)檢測(cè)設(shè)備,即支持熱拔插,這是通過一個(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è)備在圖形化配置界面中沒有SD卡設(shè)備可供使用,只需將對(duì)應(yīng)的SDIO控制器選上即可。上文例程中SD卡是通過sdio1設(shè)備來控制的,所以僅需保證sdio1設(shè)備使能即可,如圖3所示。

4647fc6a-ed47-11ed-ba01-dac502259ad0.png

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

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

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

  1. 在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é)中所描述完全一致。

4652afb6-ed47-11ed-ba01-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ī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4793

    瀏覽量

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

    關(guān)注

    2

    文章

    589

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    固件燒錄速度實(shí)測(cè):JTAG比UART快6.8倍

    在批量生產(chǎn)場(chǎng)景中,固件燒錄效率直接影響產(chǎn)線節(jié)拍與交付能力。如何選擇最優(yōu)燒錄方式?本文以ZLG致遠(yuǎn)電子MR6450系列核心板為例,通過實(shí)測(cè)數(shù)據(jù)為您解析。MR6450核心板MR6450是ZLG致遠(yuǎn)電子
    的頭像 發(fā)表于 01-27 11:34 ?289次閱讀
    固件燒錄速度實(shí)測(cè):JTAG比UART快6.8倍

    SD讀寫均衡失效問題分析

    一、讀寫均衡失效引發(fā)的核心問題 讀寫均衡(磨損均衡,Wear Leveling)是SD固件通過算法將數(shù)據(jù)均勻分配到閃存芯片各單元,避免局部單元過度擦寫的關(guān)鍵機(jī)制。瀚海微SD出現(xiàn)讀寫
    的頭像 發(fā)表于 12-29 15:08 ?396次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>讀寫均衡失效問題分析

    SD NAND、TFSD的應(yīng)用領(lǐng)域大揭秘

    在如今這個(gè)數(shù)據(jù)爆炸的時(shí)代,各類存儲(chǔ)設(shè)備猶如繁星般閃耀,而SD NAND、TFSD更是其中的佼佼者。它們看似相似,實(shí)則各有千秋,在不同的領(lǐng)域和場(chǎng)景中發(fā)揮著獨(dú)特的作用。今天,就讓我們
    的頭像 發(fā)表于 11-30 15:16 ?984次閱讀
    <b class='flag-5'>SD</b> NAND、TF<b class='flag-5'>卡</b>、<b class='flag-5'>SD</b><b class='flag-5'>卡</b>的應(yīng)用領(lǐng)域大揭秘

    解鎖SD NAND、TF、SD的應(yīng)用密碼

    在科技飛速發(fā)展的今天,數(shù)據(jù)存儲(chǔ)的需求滲透到生活與工作的每一個(gè)角落——從手腕上的智能手表,到專業(yè)攝影師的相機(jī),再到工廠里的工業(yè)路由器,都離不開高效可靠的存儲(chǔ)介質(zhì)。SD NAND、TFSD
    的頭像 發(fā)表于 11-24 11:04 ?534次閱讀
    解鎖<b class='flag-5'>SD</b> NAND、TF<b class='flag-5'>卡</b>、<b class='flag-5'>SD</b><b class='flag-5'>卡</b>的應(yīng)用密碼

    分享SD協(xié)議、分類及IP設(shè)計(jì)詳解

    SD協(xié)議 SD分類 根據(jù)存儲(chǔ)容量 根據(jù)性能 SD協(xié)議 簡(jiǎn)介 引腳 SPI 模式(SPI接口
    發(fā)表于 10-30 17:14

    解鎖存儲(chǔ)密碼:SD NAND、TF、SD的應(yīng)用全景

    ,讓我們一同揭開它們的神秘面紗,深入了解其應(yīng)用領(lǐng)域、場(chǎng)景及具體產(chǎn)品。 一、SD NAND:大能量 SD NAND,也被叫做貼片式TF或者eMMC的簡(jiǎn)化版 ,是一種貼片式封裝的存儲(chǔ)芯片
    的頭像 發(fā)表于 10-29 14:24 ?670次閱讀

    SDIO SD電路設(shè)計(jì)速成攻略:核心步驟+調(diào)試技巧 !

    針對(duì)時(shí)間緊迫的開發(fā)者,本攻略直擊SDIO外接SD電路設(shè)計(jì)的核心步驟,并補(bǔ)充實(shí)用調(diào)試技巧,幫助你在最短時(shí)間完成從理論到可用的電路實(shí)現(xiàn)。 今天一起來聊聊 SDIO外接SD: SDIO
    的頭像 發(fā)表于 08-15 14:32 ?721次閱讀
    SDIO <b class='flag-5'>SD</b><b class='flag-5'>卡</b>電路設(shè)計(jì)速成攻略:核心步驟+調(diào)試技巧 !

    SD—雷龍 SD NAND

    一、SD介紹 1.基本介紹 本質(zhì):nand flash + 控制芯片 1.SD ,Secur
    的頭像 發(fā)表于 07-21 17:59 ?3790次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>—雷龍 <b class='flag-5'>SD</b> NAND

    【嵌入式開發(fā)】SD—雷龍 SD NAND

    一、SD介紹 1.基本介紹 =本質(zhì):nand flash + 控制芯片= 1.SD ,Sec
    發(fā)表于 07-21 17:56

    第二十五章 SDIO——SD讀寫測(cè)試

    本章介紹了W55MH32的SDIO接口,其可與SD 等通信,采用9針接口,分識(shí)別與數(shù)據(jù)傳輸模式。還提及SDIO功能框圖、初始化結(jié)構(gòu)體,并有SD
    的頭像 發(fā)表于 06-20 14:01 ?2005次閱讀
    第二十五章 SDIO——<b class='flag-5'>SD</b><b class='flag-5'>卡</b>讀寫測(cè)試

    什么是SD、TF寫保護(hù)?寫保護(hù)的常見原因

    部分SD、TF適配器或套上設(shè)有物理寫保護(hù)開關(guān),當(dāng)開關(guān)滑動(dòng)到"鎖定"位置時(shí),卡片會(huì)自動(dòng)進(jìn)入寫保護(hù)狀態(tài)。這是最常見也是最容易解決的寫保護(hù)原因。
    的頭像 發(fā)表于 06-10 00:00 ?5863次閱讀
    什么是<b class='flag-5'>SD</b><b class='flag-5'>卡</b>、TF<b class='flag-5'>卡</b>寫保護(hù)?寫保護(hù)的常見原因

    SD、TF檢測(cè)工具:全面解析與選擇指南

    在存儲(chǔ)芯片及存儲(chǔ)的生產(chǎn)和使用過程中,確保產(chǎn)品的質(zhì)量和可靠性至關(guān)重要。SD、T作為一種廣泛使用的存儲(chǔ)介質(zhì),其檢測(cè)工具的選擇對(duì)于保障存儲(chǔ)性
    的頭像 發(fā)表于 06-09 14:36 ?3797次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>、TF<b class='flag-5'>卡</b>檢測(cè)工具:全面解析與選擇指南

    科普|一文帶你認(rèn)清SD、TF、SIM及eSIM,高手請(qǐng)忽略!

    1.定義SD是SecureDigitalCard的英文縮寫,直譯就是“安全數(shù)字”。一般用于數(shù)碼相機(jī)等,作外存儲(chǔ)器用。TF即是T-Flash
    的頭像 發(fā)表于 05-21 15:56 ?6551次閱讀
    科普|一文帶你認(rèn)清<b class='flag-5'>SD</b><b class='flag-5'>卡</b>、TF<b class='flag-5'>卡</b>、SIM及eSIM<b class='flag-5'>卡</b>,高手請(qǐng)忽略!

    湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例

    湖南銀河電氣有限公司產(chǎn)品應(yīng)用案例
    發(fā)表于 04-23 11:21 ?0次下載

    Nand flash 和SDSD NAND)存儲(chǔ)扇區(qū)分配表異同

    NAND Flash 和 SDSD NAND)的存儲(chǔ)扇區(qū)分配表在原理上有相似之處,但由于二者的結(jié)構(gòu)和應(yīng)用場(chǎng)景不同,也存在一些差異。以下是它們的異同點(diǎn)和用法介紹:相同點(diǎn): 基本功
    發(fā)表于 03-13 10:45