日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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 ? 來(lái)源: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官方都說(shuō)是高性能,搞了很多跑分文章,看來(lái)已經(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ī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19177

    瀏覽量

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

    關(guān)注

    26

    文章

    6445

    瀏覽量

    121247
  • FreeRTOS
    +關(guān)注

    關(guān)注

    14

    文章

    501

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】+ FreeRTOS多任務(wù)初探

    1 生成FreeRTOS工程 1.1 使用RA Smart工具建立自己的工程 1.1.1 打開RA Smart Configurator 1.1.2 輸入
    發(fā)表于 04-19 12:30

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】介紹、環(huán)境搭建、工程測(cè)試

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】介紹、環(huán)境搭建、工程測(cè)試 本文介紹了 RA-Eco-RA4M2-100PIN-V2.0 開發(fā)板的基本信息,包括產(chǎn)品特點(diǎn)、參數(shù)資源、原理圖、環(huán)境搭建以及工程
    發(fā)表于 03-21 15:35

    Renesas RSKRX24U 開發(fā)板:電子工程師的得力助手

    Renesas RSKRX24U 開發(fā)板:電子工程師的得力助手 在電子開發(fā)的領(lǐng)域中,擁有一款功能強(qiáng)大且易于使用的開發(fā)板至關(guān)重要。Renesas RSKRX24U
    的頭像 發(fā)表于 12-29 15:45 ?705次閱讀

    探索FRDM - IMX8MPLUS開發(fā)板:開啟嵌入式開發(fā)新旅程

    探索FRDM - IMX8MPLUS開發(fā)板:開啟嵌入式開發(fā)新旅程 作為電子工程師,我們總是在尋找性能卓越、功能豐富且易于上手的開發(fā)板,以滿足不同項(xiàng)目的需求。NXP的FRDM - IMX
    的頭像 發(fā)表于 12-24 11:00 ?556次閱讀

    【瑞薩RA6E2地奇星開發(fā)板試用】+ 5.瑞薩RA6E2地奇星開發(fā)板coremark跑分測(cè)試313分

    瑞薩RA6E2地奇星開發(fā)板這款開發(fā)板性能很強(qiáng)的,是ARM cortex M33內(nèi)核,主頻200MHZ,F(xiàn)lash 256KB,40-KB SRAM,這可比STM32的F4都要強(qiáng)不少,因此特別想測(cè)試
    發(fā)表于 12-09 17:18

    開發(fā)者分享 | HPM5E-EC-DEV:基于HPM5E00的EtherCAT開發(fā)板分享

    Azure一名業(yè)余單片機(jī)愛好者,平時(shí)喜歡折騰各種開發(fā)板和新出的MCU。本職工作是一名軟件工程師,日常主要從事軟件應(yīng)用開發(fā),更多是和系統(tǒng)、應(yīng)用打交道。相比工作里的軟件世界,更喜歡在業(yè)余時(shí)間動(dòng)手做一些
    的頭像 發(fā)表于 10-29 10:15 ?2243次閱讀
    <b class='flag-5'>開發(fā)</b>者分享 | <b class='flag-5'>HPM</b>5E-EC-DEV:基于<b class='flag-5'>HPM</b>5E00的EtherCAT<b class='flag-5'>開發(fā)板</b>分享

    HPM5E00EVK,ecat_io例程,卡在DisableSyncManChannel函數(shù)

    ,操作到步驟 “12.3.5.5 更新EEPROM”時(shí),沒有掃描到設(shè)備。 程序已經(jīng)下載并運(yùn)行,但是貌似程序停在上圖的語(yǔ)句中,無(wú)法從do while循環(huán)里出來(lái)。 此時(shí),開發(fā)板ethercat IN網(wǎng)口
    發(fā)表于 09-25 15:06

    hpm的vscode開發(fā)環(huán)境搭建openocd燒錄問(wèn)題求解

    最近嘗試搭建基于vscode的hpm芯片開發(fā)環(huán)境,遇到一些問(wèn)題,求大佬們幫忙看看。 使用hpm6e00evk開發(fā)板sdk_env_1.10.0,cmake、ninja、openocd和
    發(fā)表于 09-09 09:55

    HPM monitor studio 只能在 hpm芯片+hpm_sdk 的組合下才能用嗎?

    使用 hpm6200evk開發(fā)板,但未使用hpm_sdk。 然后編譯的固件elf無(wú)法在hpm monitor studio解析成功。所以說(shuō)必須要使用
    發(fā)表于 08-28 09:36

    【上海晶珩睿莓1開發(fā)板試用體驗(yàn)】4、Coremark性能測(cè)試

    ×Cortex?A55, ARMv8-A, 64-bit, 2.0GHz)的睿莓1 CoreMark 表現(xiàn)。 CoreMark 是什么 目的:測(cè)量 CPU 在常見整型/控制密集型任務(wù)上的原始計(jì)算
    發(fā)表于 08-18 22:18

    【GM-3568JHF開發(fā)板免費(fèi)體驗(yàn)】GM-3568JHF的coremark跑分5007分

    下來(lái) 1。首先連接putty通過(guò)串口進(jìn)入開發(fā)板命令行窗口 上電啟動(dòng)如下 等一段時(shí)間后,會(huì)進(jìn)入OS系統(tǒng) 先看看gcc版本 gcc -v 輸入ls,可以看到coremark已經(jīng)下載完成 使用cd
    發(fā)表于 07-22 17:32

    ESP32開發(fā)板元件資料

    ESP32開發(fā)板元件
    發(fā)表于 07-21 14:47 ?17次下載

    Vivado無(wú)法選中開發(fā)板的常見原因及解決方法

    在使用 AMD Vivado Design Suite 對(duì)開發(fā)板(Evaluation Board)進(jìn)行 FPGA 開發(fā)時(shí),我們通常希望在創(chuàng)建工程時(shí)直接選擇開發(fā)板,這樣 Vivado
    的頭像 發(fā)表于 07-15 10:19 ?1996次閱讀
    Vivado無(wú)法選中<b class='flag-5'>開發(fā)板</b>的常見原因及解決方法

    HPM6P41 BuckBoost 開發(fā)板之(一)硬件設(shè)計(jì)篇

    本章基于HPM6P00的豐富外設(shè)與高性能特性,剖析了四開關(guān)BuckBoost開發(fā)板的硬件設(shè)計(jì)思路與實(shí)現(xiàn)細(xì)節(jié)。從寬范圍輸入/輸出電壓的功率拓?fù)溥x型,到電源管理、驅(qū)動(dòng)電路、采樣電路及各類接口的原理圖
    的頭像 發(fā)表于 06-30 11:14 ?4551次閱讀
    <b class='flag-5'>HPM</b>6P41 BuckBoost <b class='flag-5'>開發(fā)板</b>之(一)硬件設(shè)計(jì)篇

    【新品】遠(yuǎn)距離圖傳數(shù)傳模塊開發(fā)板、藍(lán)牙模塊開發(fā)板、無(wú)線模塊開發(fā)板

    新品上市圖傳數(shù)傳模塊開發(fā)板藍(lán)牙模塊開發(fā)板國(guó)產(chǎn)無(wú)線模塊開發(fā)板部分型號(hào)參與送樣文末了解詳情↓↓↓EWT611-900NW20S遠(yuǎn)距離圖傳數(shù)傳模塊開發(fā)板EWT611-900NW20S是一款入
    的頭像 發(fā)表于 06-12 19:33 ?1486次閱讀
    【新品】遠(yuǎn)距離圖傳數(shù)傳模塊<b class='flag-5'>開發(fā)板</b>、藍(lán)牙模塊<b class='flag-5'>開發(fā)板</b>、無(wú)線模塊<b class='flag-5'>開發(fā)板</b>
    宝丰县| 康乐县| 通化市| 岳西县| 滦平县| 建湖县| 海兴县| 进贤县| 南木林县| 射阳县| 景宁| 鱼台县| 中超| 三门峡市| 广南县| 甘南县| 伊金霍洛旗| 和政县| 泸州市| 增城市| 莱芜市| 凤冈县| 衢州市| 南开区| 木兰县| 东山县| 晋城| 化德县| 黑山县| 泌阳县| 台山市| 华容县| 汾阳市| 大港区| 囊谦县| 温泉县| 蓝山县| 镇雄县| 宣城市| 宜黄县| 东乡县|