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

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

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

HPM6750測(cè)評(píng)|體驗(yàn)極致的運(yùn)行速度和開(kāi)發(fā)速度

先楫半導(dǎo)體HPMicro ? 2022-07-24 16:54 ? 次閱讀

在HPM6750上使用RT-Thread驅(qū)動(dòng)SD卡實(shí)現(xiàn)文件讀寫(xiě)只需要三步:

配置FATFS和SDIO功能

編譯項(xiàng)目代碼

燒錄二進(jìn)制到開(kāi)發(fā)板

PS:本篇內(nèi)容特點(diǎn)——實(shí)操性強(qiáng),異常簡(jiǎn)單,有手就行。

一、準(zhǔn)備工作

1.1 準(zhǔn)備好開(kāi)發(fā)板和SD卡


開(kāi)始本篇實(shí)驗(yàn)之前,需要準(zhǔn)備一個(gè)MicroSD卡,我這里準(zhǔn)備的是一個(gè)32G的鎧俠藍(lán)卡:

928c2e26-0a07-11ed-9ade-dac502259ad0.jpg

1.2 創(chuàng)建RT-Thread項(xiàng)目

首先,使用RT-Thread Studio創(chuàng)建名為hpm_sdio_test的項(xiàng)目:

92a89f66-0a07-11ed-9ade-dac502259ad0.png

注:如果已有RT-Thread項(xiàng)目,則可以跳過(guò)此步驟。

二、配置RT-Thread

這里僅以RT-Thread Studio為例,對(duì)RT-Thread進(jìn)行配置。除此之外,使用RT-Thread的Env工具,在命令行環(huán)境下進(jìn)行相關(guān)配置也是可以的。

2.1 打開(kāi)FATFS和SDIO組件

創(chuàng)建項(xiàng)目后,打開(kāi)RT-Thread Settings,開(kāi)啟FATFS和SDIO配置:

92b91f9e-0a07-11ed-9ade-dac502259ad0.jpg

可以看到,打開(kāi)的組件,圖標(biāo)顯示為彩色。這里的SDIO屬于RT-Thead驅(qū)動(dòng)框架的SDIO部分。

為了方便觀察實(shí)驗(yàn)現(xiàn)象,這里最好再打開(kāi)SDIO組件的調(diào)試日志:

92d56096-0a07-11ed-9ade-dac502259ad0.png

圖中頂欄的幾個(gè)部分,對(duì)于RT-Thread Studio創(chuàng)建的RT-Thread項(xiàng)目,通常而言:

內(nèi)核欄中的屬于內(nèi)核組件配置,相關(guān)源碼位于rt-thread子目錄;

組件欄中的屬于系統(tǒng)組件配置,相關(guān)源碼位于rt-thread/components子目錄;

軟件包欄中的屬于三方組件配置,相關(guān)源碼默認(rèn)不在項(xiàng)目中;在打開(kāi)相應(yīng)配置并保存后,才會(huì)下載到項(xiàng)目的packages子目錄;

硬件欄中的屬于BSP配置,相關(guān)源碼通常在board子目錄。

2.2 打開(kāi)SDIO驅(qū)動(dòng)


前面打開(kāi)的僅是SDIO驅(qū)動(dòng)框架,要使用SDIO功能,還需要打開(kāi)HPM開(kāi)發(fā)板的SDXC驅(qū)動(dòng):

92f876d0-0a07-11ed-9ade-dac502259ad0.png

修改完成,Ctrl+S保存修改。

三、編譯、燒錄、運(yùn)行

3.1 編譯項(xiàng)目代碼

完成上面的配置工作后,Ctrl+B編譯項(xiàng)目:

9325d774-0a07-11ed-9ade-dac502259ad0.png

編譯完成后,可以在控制臺(tái)看到Flash和RAM占用情況。

3.2 燒錄程序

編譯成功后,我們需要將生成的二進(jìn)制程序代碼文件燒錄到開(kāi)發(fā)板上。

開(kāi)始測(cè)試之前,我們需要先將MicroSD卡插入開(kāi)發(fā)板(RT-Thread目前還不支持SD卡熱插拔):

934636c2-0a07-11ed-9ade-dac502259ad0.jpg

插入SD卡后,將開(kāi)發(fā)板通過(guò)USB線連接到PC。

此時(shí),我們可以看到,正面的SD卡指示燈已經(jīng)亮起了:

935f423e-0a07-11ed-9ade-dac502259ad0.jpg

3.3 運(yùn)行程序

接著,回到RT-Thread Studio,用Ctrl+Alt+D快捷鍵,將編譯好的程序燒錄到開(kāi)發(fā)板上。

燒錄完成后,我們就可以在串口終端看到——已經(jīng)檢查到sd卡了:

93668eb8-0a07-11ed-9ade-dac502259ad0.png

可以看到,RT-Thread版本信息已經(jīng)打印出來(lái)了,同時(shí)看到了熟悉的msh提示符。

基于RT-Thread的項(xiàng)目默認(rèn)情況下開(kāi)啟了msh,并且將UART0串口初始化為console輸入輸出。因此,我們可以在串口中斷軟件中,輸入msh支持的命令,查看命令的輸出。

四、在msh中操作SD卡

燒錄完成后,我們就可以在RT-Thread的msh環(huán)境中愉快地操作SD卡了。本節(jié)我將在串口終端中演示——如何在HPM6750開(kāi)發(fā)板上使用RT-Thread提供的文件系統(tǒng)、目錄、文件操作相關(guān)命令。

首先,我們可以通過(guò)help命令查看此時(shí)msh中支持哪些命令:

938b0b6c-0a07-11ed-9ade-dac502259ad0.png

可以看到,這里有很多命令,我們接下將會(huì)使用到的有:

文件操作命令——ls/cp/mv/cat/rm

可以寫(xiě)文件的命令——echo

目錄操作命令——cd/pwd/mkdir

文件系統(tǒng)操作命名——mkfs/mount/umount/df

使用過(guò)Linux的朋友應(yīng)該會(huì)對(duì)上面這些命令感到熟悉。

接下來(lái),我將會(huì)在msh中演示——如何通過(guò)這些命令對(duì)SD卡進(jìn)行一些操作。

4.1 查看塊設(shè)備

我們可以在串口終端內(nèi)使用list_device命令查看設(shè)備:

93a61d26-0a07-11ed-9ade-dac502259ad0.png

此時(shí),我們可以看到已經(jīng)有了一個(gè)名為“sd0”的塊設(shè)備。

4.2 格式化SD卡

初次使用的SD卡,可能沒(méi)有文件系統(tǒng),或者文件系統(tǒng)不是FAT格式的,需要將SD卡格式化為FAT文件系統(tǒng),RT-Thread后續(xù)才能掛載成功。

注意:格式化操作會(huì)導(dǎo)致SD卡上已有數(shù)據(jù)全部丟失;因此,在執(zhí)行格式化操作前,請(qǐng)確認(rèn)SD卡上沒(méi)有重要數(shù)據(jù),或者你已對(duì)SD卡上的重要數(shù)據(jù)進(jìn)行了備份。

接下來(lái),我們可以通過(guò)mkfs命令對(duì)SD卡進(jìn)行格式化:

93c51fe6-0a07-11ed-9ade-dac502259ad0.png

mkfs執(zhí)行會(huì)持續(xù)一段時(shí)間,請(qǐng)耐心等待(具體因不同SD卡容量和速度等級(jí)而異,我的32GB卡消耗了幾秒鐘)。

4.3 掛載文件系統(tǒng)

接下來(lái),我們可以在串口終端內(nèi)使用mount命令將SD卡掛載到根目錄:

93d5feba-0a07-11ed-9ade-dac502259ad0.png

這里,我先使用了mount -h查看了mount命令的用法。

另外需要注意的是,fstype參數(shù)使用的是elm(這里的elm實(shí)際就是FATFS)。

4.4 簡(jiǎn)單的文件讀寫(xiě)測(cè)試


前面提到echo命令比較特殊,可以寫(xiě)文件,接下來(lái)使用echo寫(xiě)文件,cat讀文件,ls查看文件:

93ee583e-0a07-11ed-9ade-dac502259ad0.png

這里使用了ls、echo、cat命令,進(jìn)行了文件讀寫(xiě)操作。

4.5 簡(jiǎn)單的目錄操作測(cè)試

接下來(lái),進(jìn)行簡(jiǎn)單的目錄操作演示。

940179f0-0a07-11ed-9ade-dac502259ad0.png

這里首先使用了pwd查看當(dāng)前工作目錄,然后演示了ls、mkdir、cd命令;

如果你是對(duì)RT-Thread了解不多的朋友,看到這里可能會(huì)非常驚奇——在一個(gè)可以運(yùn)行在單片機(jī)RTOS上,居然可以這么方便的進(jìn)行文件系統(tǒng)、目錄、文件操作。

五、業(yè)務(wù)代碼中使用SD卡

前面都是使用命令進(jìn)行相關(guān)操作的,實(shí)際項(xiàng)目中往往需要在業(yè)務(wù)代碼中使用前面的那些功能,包括文件系統(tǒng)、目錄、文件操作。

5.1 使用代碼進(jìn)行相關(guān)操作

所謂“授人以魚(yú)不如授人以漁”,這里不準(zhǔn)備展開(kāi)介紹前面所有命令行操作如何用代碼實(shí)現(xiàn),只介紹如何找到前面那些操作的源碼實(shí)現(xiàn)。總體來(lái)說(shuō),主要有兩個(gè)方法:

grep大法

grep結(jié)合正則表達(dá)式進(jìn)行搜索

使用其他你熟悉的工具也是可以的

RTFSC(read the f**king source code)

根據(jù)搜索到的位置打開(kāi)文件并閱讀源碼

對(duì),會(huì)這兩招就可以了。

下面以搜索mount命令的實(shí)現(xiàn)代碼為例進(jìn)行演示。我們知道RT-Thread的msh命令是通過(guò)MSH_開(kāi)頭的宏注冊(cè)到命令列表中的。因此可以搜索:

941e7a00-0a07-11ed-9ade-dac502259ad0.jpg

接下來(lái),就可以打開(kāi)./rt-thread/components/finsh/msh_file.c文件,跳轉(zhuǎn)到526進(jìn)行查看了:

94292518-0a07-11ed-9ade-dac502259ad0.jpg

可以看到這里調(diào)用了dfs_munt實(shí)現(xiàn)了文件系統(tǒng)掛載功能。

六、完善細(xì)節(jié)

絕大部分文件系統(tǒng)都有文件的創(chuàng)建、修改時(shí)間信息,F(xiàn)ATFS也不例外。因此,為了能夠讓SD卡上文件具有正確的創(chuàng)建、修改時(shí)間信息正常,建議使用SD卡的同時(shí)啟用RTC(Real Time Clock)以及NTP(Network Time Protocol)對(duì)時(shí)功能。本節(jié)主要介紹如何開(kāi)啟RT-Thread的RTC和NTP對(duì)時(shí)功能。

6.1 使能RTC

在RT-Thread系統(tǒng)中,RTC的實(shí)現(xiàn)有兩種,一種是純軟件方式,另一種是硬件方式。

軟件方式的RTC,RT-Thread內(nèi)核已經(jīng)有了完整的實(shí)現(xiàn),一般用于沒(méi)有硬件RTC的設(shè)備上(或者硬件RTC驅(qū)動(dòng)還沒(méi)有支持的情況下)。RT-Thread的硬件RTC,和其他硬件功能類(lèi)似,有RTC驅(qū)動(dòng)框架和RTC硬件驅(qū)動(dòng)兩部分。其中,RTC驅(qū)動(dòng)框架已有RT-Thread內(nèi)核實(shí)現(xiàn),RTC硬件驅(qū)動(dòng)由廠商實(shí)現(xiàn)(一般通過(guò)BSP或者CSP提供出來(lái))。

軟件模擬RTC以及RTC驅(qū)動(dòng)框架的配置項(xiàng)可以通過(guò)RT-Thread Settings進(jìn)行設(shè)置:

943d16b8-0a07-11ed-9ade-dac502259ad0.png

HPM6750的BSP中已經(jīng)實(shí)現(xiàn)了RTC硬件驅(qū)動(dòng),我們可以在RT-Thread Settings中設(shè)置硬件RTC功能:

945dcd86-0a07-11ed-9ade-dac502259ad0.png

6.2 使能網(wǎng)絡(luò)和NTP——實(shí)現(xiàn)聯(lián)網(wǎng)自動(dòng)對(duì)時(shí)

使能WiFi聯(lián)網(wǎng),具體操作參考我此前的帖子:http://bbs.eeworld.com.cn/thread-1206656-1-1.html 或參考 (HPM6750 測(cè)評(píng) | 不寫(xiě)一行代碼,兩分鐘實(shí)現(xiàn)WiFi聯(lián)網(wǎng))

RT-Thread的netutils軟件包中包含了NTP功能,使能NTP功能可以參考帖子中使能netutils軟件包中ifconfig相關(guān)的介紹。

七、本篇小結(jié)


可以看到,在基于RT-Thread系統(tǒng)的項(xiàng)目中,我們沒(méi)有添加任何代碼,就可以實(shí)現(xiàn)對(duì)HPM6750開(kāi)發(fā)板上的SD卡進(jìn)行文件系統(tǒng)、目錄、文件相關(guān)操作。這是因?yàn)镽T-Thread系統(tǒng)本身已經(jīng)積累了大量?jī)?yōu)秀開(kāi)發(fā)者的工作成果,其中包括SDIO驅(qū)動(dòng)框架、FATFS支持、芯片廠的SDXC驅(qū)動(dòng)。所謂的“站在巨人的肩膀上”,大概就是這種體驗(yàn)吧。

本篇就到這里了,感謝你的閱讀,下次再會(huì)。

(本文摘選自EEWORLD@xusiwei1236)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)注

    5045

    文章

    18816

    瀏覽量

    298445
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    stm32cubeide debug和release單片機(jī)運(yùn)行速度不一樣,在哪里進(jìn)行控制的?

    stm32cubeide debug模式和release模式單片機(jī)運(yùn)行速度不一樣,在哪里進(jìn)行控制的
    發(fā)表于 03-28 09:08

    解決HPM6750EVK2jlink下載

    拿到HPM6750EVK2,使用jlink下載時(shí),我原來(lái)用買(mǎi)jlink配的20轉(zhuǎn)10轉(zhuǎn)接板進(jìn)行連接,下載程序里一直報(bào)不能連接到開(kāi)發(fā)板。經(jīng)過(guò)查找用手冊(cè)后,找到了問(wèn)題。 我的jlink的引腳圖與之不對(duì)
    發(fā)表于 02-16 10:30

    Embedded Studio 編譯器教程

    最近入手先輯的HPM6750,需要使用Embedded Studio 編譯器來(lái)做開(kāi)發(fā),各位推薦一下學(xué)習(xí)資料。
    發(fā)表于 02-04 08:01

    G120電機(jī)運(yùn)行速度怎么設(shè)置?

    G120電機(jī)運(yùn)行速度怎么設(shè)置? 例如我在觸摸屏=1是高速=2中速=3是低速。 這個(gè)速度怎么設(shè)置?
    發(fā)表于 01-09 07:37

    直流電機(jī)的輸出功率與運(yùn)行速度之間的關(guān)系到底是怎樣的?

    想請(qǐng)教各位高手兩個(gè)問(wèn)題: 1、直流電機(jī)的輸出功率與運(yùn)行速度之間的關(guān)系到底是怎樣的, 最好能寫(xiě)出公式 2、我這里的直流電機(jī)是通過(guò)6RA70調(diào)速的, 是否能通過(guò)降低電機(jī)的運(yùn)行速度來(lái)控制電機(jī)的輸出功率,從而節(jié)約生產(chǎn)用電呢??
    發(fā)表于 12-26 06:55

    Linux 下編譯HPM_Math 工程報(bào)錯(cuò)

    /hpm/hpm_sdk/soc/HPM6750/toolchains/gcc/flash_xip.ld -- Segger device name: HPM6750xVMx -- S
    發(fā)表于 12-20 12:54

    RT_thread studio中如何配置先輯的hpm_math數(shù)學(xué)庫(kù)?

    hpm6750不知道如何在RTThread studio中使用hpm_math中的數(shù)學(xué)庫(kù),想要使用libdspf.a,但是不知道如何配置
    發(fā)表于 12-06 18:32

    請(qǐng)問(wèn)使用NRF通信影不影響程序運(yùn)行速度?

    使用NRF通信影不影響程序運(yùn)行速度?
    發(fā)表于 11-06 08:07

    如何加快32的運(yùn)行速度

    如何會(huì)加快32的運(yùn)行速度
    發(fā)表于 11-06 07:58

    求助,平常MCU的指令執(zhí)行速度為多少?

    平常MCU的指令執(zhí)行速度為多少?
    發(fā)表于 11-01 08:23

    【深度測(cè)評(píng)HPM6750 MCU片內(nèi)16位ADC精度測(cè)試

    【深度測(cè)評(píng)HPM6750 MCU片內(nèi)16位ADC精度測(cè)試
    的頭像 發(fā)表于 10-30 17:43 ?2460次閱讀
    【深度<b class='flag-5'>測(cè)評(píng)</b>】<b class='flag-5'>HPM6750</b> MCU片內(nèi)16位ADC精度測(cè)試

    如何看單片機(jī)里程序改了之后運(yùn)行速度的變化的?

    請(qǐng)問(wèn)大家平時(shí)是怎么看單片機(jī)里程序改了之后運(yùn)行速度的變化的?
    發(fā)表于 10-30 07:00

    想找一個(gè)先楫半導(dǎo)體的HPM6750 使用linux剪裁操作系統(tǒng)的例程

    想找一個(gè)先楫半導(dǎo)體的HPM6750 使用linux剪裁操作系統(tǒng)的例程,SDK里給了FREERT的,沒(méi)有LINUX的。哪里可以下載的到?
    發(fā)表于 10-25 16:18

    HPM6750 從 XPI0 CB 端口啟動(dòng)

    XPI0CA端口的引腳,如下圖所示。所以最后選擇了XPI0的CB端口用于連接NORFlash。部分引腳復(fù)用功能(來(lái)源:HPM6750數(shù)據(jù)手冊(cè))XPI部分原理圖2問(wèn)題在HP
    的頭像 發(fā)表于 10-21 08:18 ?818次閱讀
    <b class='flag-5'>HPM6750</b> 從 XPI0 CB 端口啟動(dòng)

    HPM6750從XPI0 CB端口啟動(dòng)步驟

    在我的某個(gè)項(xiàng)目中由于希望把板子做的小一點(diǎn),所以選擇了 BGA196 封裝的 HPM6750IAN2 芯片,在畫(huà)板子的過(guò)程中,注意到相比 BGA289 封裝的 HPM6750IVM2 芯片,其并沒(méi)有
    的頭像 發(fā)表于 10-20 14:42 ?867次閱讀
    <b class='flag-5'>HPM6750</b>從XPI0 CB端口啟動(dòng)步驟