女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

HPM6750EVKMINI開發(fā)板生成coremark和FreeRTOS工程

Evanee ? 來源:Evanee ? 作者:Evanee ? 2022-06-20 09:25 ? 次閱讀

1.前言

使用先楫,當(dāng)然就是看上它的高性能,順便了解了一下晶心D45內(nèi)核,發(fā)現(xiàn)華人都有一個(gè)特點(diǎn),要是掌握了一個(gè)mcu的設(shè)計(jì)精髓,就會(huì)盡量多的開掘出更高的性能,更強(qiáng)的外設(shè),繼續(xù)卷死在行業(yè)作威作福的lw。那么拿到先楫開發(fā)板,當(dāng)然要跑跑分,順便與一眾芯片做做比較。

2.生成coremark工程

1.這次選擇生成flash里面執(zhí)行的工程。

> generate_project -b hpm6750evkmini -t flash_xip

2.使用SEGGER Embedded Studio編譯下載,并運(yùn)行。

poYBAGKtU6OALFTFAAIyOuE6REY884.png

好家伙,單核跑出4553分,大家可能只看分?jǐn)?shù)沒啥概念,看看常用的芯片跑分對(duì)比:

rt1052能跑出3000多分,nxp官方都說是高性能,搞了很多跑分文章,看來已經(jīng)被秒殺。

STM32F1只能跑出108分。

i.mx6ul跑出1500分。

呼聲很高的全志D1可以跑出2240分。

相比之下,先輯這HPM6750可真夠優(yōu)秀的!!

pYYBAGKtU6OAYE2XAAFzmnCFsYE831.png

有了這么高的性能,可以寫比較復(fù)雜的計(jì)算或者控制程序了。

3.生成FreeRTOS工程

有了高性能還不夠,需要加上RTOS,高性能才能被充分利用。仍然借助SDK例子。

start_cmd.cmd進(jìn)入\sdk_env_v0.11.0\hpm_sdk\samples\rtos

> generate_project -b hpm6750evkmini -t flash_xip

4.代碼分析

使用使用SEGGER Embedded Studio打開,并對(duì)代碼進(jìn)行簡(jiǎn)單修改。freertos建立task,運(yùn)行task代碼分析不再贅述。


#include "FreeRTOS.h"
#include "task.h"


#include 
#include "board.h"
#include "hpm_gpio_drv.h"

#define task1_PRIORITY    (configMAX_PRIORITIES - 5U)
#define task2_PRIORITY    (configMAX_PRIORITIES - 4U)

volatile bool led_on;

static void task1(void *pvParameters)
{
    for (;;) {

        printf("LED is %s.\n", led_on ? "on" : "off");
        vTaskDelay(1000);
    }
}

static void task2(void *pvParameters)
{
    for (;;) {

        gpio_toggle_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN);
        printf("task2: Toggle the led pin level\n");
        led_on = !led_on;
        vTaskDelay(1000);
    }
}

int main(void)
{
    board_init();
    board_init_gpio_pins();

    gpio_set_pin_output(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN);
    gpio_write_pin(BOARD_LED_GPIO_CTRL, BOARD_LED_GPIO_INDEX, BOARD_LED_GPIO_PIN, BOARD_LED_ON_LEVEL);

    led_on = true;

    if (xTaskCreate(task1, "task1", configMINIMAL_STACK_SIZE + 256U, NULL, task1_PRIORITY, NULL) != pdPASS) {
        printf("Task1 creation failed!.\n");
        for (;;) {
            ;
        }
    }
    if (xTaskCreate(task2, "task2", configMINIMAL_STACK_SIZE + 256U, NULL, task2_PRIORITY, NULL) != pdPASS) {
        printf("Task2 creation failed!.\n");
        for (;;) {
            ;
        }
    }
    vTaskStartScheduler();
    for (;;) {
        ;
    }
    return 0;
}

這里順便分析一下gpio的初始化方法:


/**************************************************************
	主要分析一下main函數(shù)中的gpio初始化函數(shù)
***************************************************************/
board_init_gpio_pins();

/**************************************************************
	函數(shù)原型在board.c中定義
***************************************************************/
void board_init_gpio_pins(void)
{
    init_gpio_pins();
}
//borad.c中定義
void init_gpio_pins(void)
{
    uint32_t pad_ctl = IOC_PAD_PAD_CTL_PE_SET(1) | IOC_PAD_PAD_CTL_PS_SET(1);

    /* Green LED*/
    HPM_IOC->PAD[IOC_PAD_PB18].FUNC_CTL = IOC_PB18_FUNC_CTL_GPIO_B_18;
    HPM_IOC->PAD[IOC_PAD_PB18].PAD_CTL = pad_ctl;

}

/**************************************************************
	寄存器配置宏命令
***************************************************************/
/*
 * PS (RW)
 *
 * pull select
 * 0: pull down
 * 1: pull up
 */
#define IOC_PAD_PAD_CTL_PS_MASK (0x800U)
#define IOC_PAD_PAD_CTL_PS_SHIFT (11U)
#define IOC_PAD_PAD_CTL_PS_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_PS_SHIFT) & IOC_PAD_PAD_CTL_PS_MASK)
#define IOC_PAD_PAD_CTL_PS_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_PS_MASK) >> IOC_PAD_PAD_CTL_PS_SHIFT)

/*
 * PE (RW)
 *
 * pull enable
 * 0: pull disable
 * 1: pull enable
 */
#define IOC_PAD_PAD_CTL_PE_MASK (0x10U)
#define IOC_PAD_PAD_CTL_PE_SHIFT (4U)
#define IOC_PAD_PAD_CTL_PE_SET(x) (((uint32_t)(x) << IOC_PAD_PAD_CTL_PE_SHIFT) & IOC_PAD_PAD_CTL_PE_MASK)
#define IOC_PAD_PAD_CTL_PE_GET(x) (((uint32_t)(x) & IOC_PAD_PAD_CTL_PE_MASK) >> IOC_PAD_PAD_CTL_PE_SHIFT)

/**************************************************************
	寄存器地址
***************************************************************/
/* IOC base address */
#define HPM_IOC_BASE (0xF4040000UL)
/* IOC base pointer */
#define HPM_IOC ((IOC_Type *) HPM_IOC_BASE)

/**************************************************************
	寄存器結(jié)構(gòu)體定義
***************************************************************/
typedef struct {
    struct {
        __RW uint32_t FUNC_CTL;                /* 0x0: ALT SELECT */
        __RW uint32_t PAD_CTL;                 /* 0x4: PAD SETTINGS */
    } PAD[492];
} IOC_Type;

/**************************************************************
	gpio復(fù)用定義
***************************************************************/
/* IOC_PB18_FUNC_CTL function mux definitions */
#define IOC_PB18_FUNC_CTL_GPIO_B_18            IOC_PAD_FUNC_CTL_ALT_SELECT_SET(0)
#define IOC_PB18_FUNC_CTL_UART1_CTS            IOC_PAD_FUNC_CTL_ALT_SELECT_SET(3)
#define IOC_PB18_FUNC_CTL_CAN1_RXD             IOC_PAD_FUNC_CTL_ALT_SELECT_SET(7)
#define IOC_PB18_FUNC_CTL_DAOL_N               IOC_PAD_FUNC_CTL_ALT_SELECT_SET(10)
#define IOC_PB18_FUNC_CTL_DRAM_DQ_25           IOC_PAD_FUNC_CTL_ALT_SELECT_SET(12)
#define IOC_PB18_FUNC_CTL_PWM1_P_1             IOC_PAD_FUNC_CTL_ALT_SELECT_SET(16)
#define IOC_PB18_FUNC_CTL_XPI_SLV_ADQ_31       IOC_PAD_FUNC_CTL_ALT_SELECT_SET(30)

可見,risc-v處理器的寄存器配置套路是非常清楚的,和arm思路相同,步驟大同小異~~~~~

使用ide進(jìn)行debug運(yùn)行上述代碼,截圖如下:

pYYBAGKtWPuAErHfAAKQtSkDftg702.png

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17851

    瀏覽量

    360696
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5538

    瀏覽量

    102477
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    490

    瀏覽量

    63783
收藏 人收藏

    評(píng)論

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

    來自資深工程師對(duì)ELF 2開發(fā)板的產(chǎn)品測(cè)評(píng)

    來自資深工程師對(duì)ELF 2開發(fā)板的使用測(cè)評(píng)
    的頭像 發(fā)表于 04-28 15:03 ?784次閱讀
    來自資深<b class='flag-5'>工程</b>師對(duì)ELF 2<b class='flag-5'>開發(fā)板</b>的產(chǎn)品測(cè)評(píng)

    重磅更新 | 先楫半導(dǎo)體HPM_SDK v1.9.0 發(fā)布

    版本更新概況[New]增加HPM6P00系列MCU以及hpm6p00evk支持[New]增加了開發(fā)板已知問題說明[Update]將全系列開發(fā)板VCore電壓調(diào)節(jié)至1.275V,
    的頭像 發(fā)表于 04-02 08:31 ?311次閱讀
    重磅更新 | 先楫半導(dǎo)體<b class='flag-5'>HPM</b>_SDK v1.9.0 發(fā)布

    CubeMX生成freertos工程沒有代碼提示是怎么回事?

    使用Cube生成freertos工程沒有代碼提示功能,使用該函數(shù)一次后才會(huì)有該函數(shù)的代碼提示功能,生成裸機(jī)工程就有。
    發(fā)表于 03-13 08:18

    STM32MP25x開發(fā)板Bring Up培訓(xùn)課程(中)

    STM32MP25x開發(fā)板BringUp培訓(xùn)課程(上)米爾基于STM32MP257核心開發(fā)板2.修改設(shè)備樹查看生成的Bringup工程
    的頭像 發(fā)表于 02-20 08:06 ?453次閱讀
    STM32MP25x<b class='flag-5'>開發(fā)板</b>Bring Up培訓(xùn)課程(中)

    基于HPM_SDK_ENV開發(fā)應(yīng)用程序的升級(jí)處理

    )以及工程創(chuàng)建工具等文件。用戶基于HPM_SDK_ENV開發(fā)自己的應(yīng)用程序時(shí)需要考慮如何維護(hù)板級(jí)配置文件和應(yīng)用程序文件的問題。以下3種維護(hù)方式:用戶將自己的級(jí)配置文
    的頭像 發(fā)表于 02-08 13:38 ?917次閱讀
    基于<b class='flag-5'>HPM</b>_SDK_ENV<b class='flag-5'>開發(fā)</b>應(yīng)用程序的升級(jí)處理

    【敏矽微ME32G070開發(fā)板免費(fèi)體驗(yàn)】使用coremark測(cè)試敏矽微ME32G070 跑分

    收到敏矽微ME32G070分開發(fā)板有3天了,一直想知道這個(gè)MCU的性能怎樣?就像平時(shí)買新電腦后,就會(huì)用魯大師來測(cè)個(gè)分?jǐn)?shù),今天我就使用coremark來測(cè)試下敏矽微ME32G070這款MCU的分?jǐn)?shù)能力
    發(fā)表于 12-19 12:09

    【RA-Eco-RA4E2-64PIN-V1.0開發(fā)板試用】CoreMark測(cè)試RA4E2 單片機(jī)CPU性能分?jǐn)?shù)

    CoreMark是一個(gè)專門用來測(cè)試CPU性能的程序。類似電腦上面的魯大師測(cè)試電腦跑分多少。 本期測(cè)評(píng)就是來講解CoreMark移植到瑞薩RA4E2 開發(fā)板上,測(cè)試板子性能的。 首先
    發(fā)表于 12-14 12:05

    自己做的hpm5321和6750板子怎么都沒有1.1的輸出呢?

    新手硬件開發(fā)求分析 。 不知道是layout的關(guān)系還是什么原因呢,主要IC內(nèi)部dcdc部分跟其他引腳配置沒關(guān)系吧,對(duì)比了官方開發(fā)板和野火的開發(fā)版沒什么差,難道電容規(guī)格會(huì)影響嗎? 5321原理圖,3.3上電正常,無1.1v輸出
    發(fā)表于 12-14 11:48

    RK3588主板/開發(fā)板Android12系統(tǒng)APK簽名文件生成的方法,干貨滿滿

    本文介紹瑞芯微RK3588主板/開發(fā)板Android12系統(tǒng)下,APK簽名文件生成方法。觸覺智能RK3588開發(fā)板演示,音視頻接口、通信接口等一應(yīng)俱全,幫助企業(yè)提高產(chǎn)品開發(fā)效率,縮短上
    的頭像 發(fā)表于 12-12 10:38 ?738次閱讀
    RK3588主板/<b class='flag-5'>開發(fā)板</b>Android12系統(tǒng)APK簽名文件<b class='flag-5'>生成</b>的方法,干貨滿滿

    如何做一個(gè)hpm6750evk2的bootloader?

    我正在做一個(gè)hpm6750evk2的bootloader。設(shè)計(jì)很簡(jiǎn)單,boot工程代碼只做跳轉(zhuǎn)到1M后的APP工程代碼處,APP工程就是做的一個(gè)點(diǎn)燈的程序而已,boot、APP
    發(fā)表于 10-23 19:01

    HPM6750 Bootloader設(shè)計(jì)

    我正在做一個(gè)hpm6750evk2的bootloader。設(shè)計(jì)很簡(jiǎn)單,boot工程代碼只做跳轉(zhuǎn)到1M后的APP工程代碼處,APP工程就是做的一個(gè)點(diǎn)燈的程序而已,boot、APP
    發(fā)表于 10-23 18:59

    HPM6750evkmini如何實(shí)現(xiàn)可信的執(zhí)行環(huán)境?

    HPM6700的datasheet中的1.2.15 信息安全系統(tǒng)有提到“基于BOOT ROM 的安全啟動(dòng)機(jī)制,支持加密啟動(dòng),支持可信的執(zhí)行環(huán)境”,請(qǐng)問可信的執(zhí)行環(huán)境如何實(shí)現(xiàn)的?有相關(guān)的Demo或者資料嗎?是類似于TFM這樣的嗎?
    發(fā)表于 09-25 09:27

    【龍芯2K0300蜂鳥試用】+5.CoreMark跑分

    CC=loongarch64-linux-gnu-gcc link 接下來將編譯的庫傳遞到開發(fā)板,傳遞這里直接使用scp遠(yuǎn)程上傳就行,添加可執(zhí)行權(quán)限,運(yùn)行
    發(fā)表于 08-18 22:06

    HPM SDK 1.6.0 FreeRTOS LTS更改及適配指南

    1、HPM_SDKFreeRTOSLTS特性總覽HPMSDKV1.6.0中FreeRTOS升級(jí)前后特性支持對(duì)比:特性V10.4.4LTS202210.01中斷搶占√√RISCV浮點(diǎn)擴(kuò)展支持
    的頭像 發(fā)表于 07-06 08:17 ?4373次閱讀
    <b class='flag-5'>HPM</b> SDK 1.6.0 <b class='flag-5'>FreeRTOS</b> LTS更改及適配指南

    米爾基于NXP iMX.93開發(fā)板的M33處理器應(yīng)用開發(fā)筆記

    1.概述本文主要介紹M33核的兩種工程調(diào)試開發(fā),第一種方式是通過板子自帶的固件進(jìn)行開發(fā),第二種方式是使用IAREmbeddedWorkbench來構(gòu)建可移植的Freertos文件進(jìn)行
    的頭像 發(fā)表于 06-29 08:01 ?2018次閱讀
    米爾基于NXP iMX.93<b class='flag-5'>開發(fā)板</b>的M33處理器應(yīng)用<b class='flag-5'>開發(fā)</b>筆記