在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HPM6750EVKMINI開發板生成coremark和FreeRTOS工程

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

1.前言

使用先楫,當然就是看上它的高性能,順便了解了一下晶心D45內核,發現華人都有一個特點,要是掌握了一個mcu的設計精髓,就會盡量多的開掘出更高的性能,更強的外設,繼續卷死在行業作威作福的lw。那么拿到先楫開發板,當然要跑跑分,順便與一眾芯片做做比較。

2.生成coremark工程

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

> generate_project -b hpm6750evkmini -t flash_xip

2.使用SEGGER Embedded Studio編譯下載,并運行。

poYBAGKtU6OALFTFAAIyOuE6REY884.png

好家伙,單核跑出4553分,大家可能只看分數沒啥概念,看看常用的芯片跑分對比:

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

STM32F1只能跑出108分。

i.mx6ul跑出1500分。

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

相比之下,先輯這HPM6750可真夠優秀的!!

pYYBAGKtU6OAYE2XAAFzmnCFsYE831.png

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

3.生成FreeRTOS工程

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

start_cmd.cmd進入\sdk_env_v0.11.0\hpm_sdk\samples\rtos

> generate_project -b hpm6750evkmini -t flash_xip

4.代碼分析

使用使用SEGGER Embedded Studio打開,并對代碼進行簡單修改。freertos建立task,運行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函數中的gpio初始化函數
***************************************************************/
board_init_gpio_pins();

/**************************************************************
	函數原型在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)

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

/**************************************************************
	gpio復用定義
***************************************************************/
/* 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進行debug運行上述代碼,截圖如下:

pYYBAGKtWPuAErHfAAKQtSkDftg702.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17311

    瀏覽量

    352194
  • 開發板
    +關注

    關注

    25

    文章

    5120

    瀏覽量

    97950
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62316
收藏 人收藏

    評論

    相關推薦

    【敏矽微ME32G070開發板免費體驗】使用coremark測試敏矽微ME32G070 跑分

    收到敏矽微ME32G070分開發板有3天了,一直想知道這個MCU的性能怎樣?就像平時買新電腦后,就會用魯大師來測個分數,今天我就使用coremark來測試下敏矽微ME32G070這款MCU的分數能力
    發表于 12-19 12:09

    【RA-Eco-RA4E2-64PIN-V1.0開發板試用】CoreMark測試RA4E2 單片機CPU性能分數

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

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

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

    如何做一個hpm6750evk2的bootloader?

    我正在做一個hpm6750evk2的bootloader。設計很簡單,boot工程代碼只做跳轉到1M后的APP工程代碼處,APP工程就是做的一個點燈的程序而已,boot、APP
    發表于 10-23 19:01

    HPM6750 Bootloader設計

    我正在做一個hpm6750evk2的bootloader。設計很簡單,boot工程代碼只做跳轉到1M后的APP工程代碼處,APP工程就是做的一個點燈的程序而已,boot、APP
    發表于 10-23 18:59

    HPM6750evkmini如何實現可信的執行環境?

    HPM6700的datasheet中的1.2.15 信息安全系統有提到“基于BOOT ROM 的安全啟動機制,支持加密啟動,支持可信的執行環境”,請問可信的執行環境如何實現的?有相關的Demo或者資料嗎?是類似于TFM這樣的嗎?
    發表于 09-25 09:27

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

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

    米爾基于NXP iMX.93開發板的M33處理器應用開發筆記

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

    先楫半導體所有開發板已上RT-Thread主線啦

    目前,先楫半導體在RT-Thread主線支持的開發板包含以下這些
    的頭像 發表于 06-05 08:17 ?617次閱讀
    先楫半導體所有<b class='flag-5'>開發板</b>已上RT-Thread主線啦

    先楫半導體 hpm_sdk v1.5.0 正式發布

    的Andes toolchain,coremark分數低于使用Segger Embedded Studio集成的Andes Toolchain的結果。 快速了解 hpm_sdk 支持的開發板
    發表于 04-08 11:14

    fpga開發板是什么?fpga開發板有哪些?

    FPGA開發板是一種基于FPGA(現場可編程門陣列)技術的開發平臺,它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實現各種數字電路和邏輯功能。FPGA開發板通常包括FPG
    的頭像 發表于 03-14 18:20 ?2123次閱讀

    基于先楫HPM5300 RISC-V內核MCU的HPM5361EVK開發板測評效果(二)

    HPM5361EVK是基于先楫HPM5300系列高性能RISC-V內核MCU的一款開發板
    的頭像 發表于 03-12 10:30 ?3056次閱讀
    基于先楫<b class='flag-5'>HPM</b>5300 RISC-V內核MCU的<b class='flag-5'>HPM</b>5361EVK<b class='flag-5'>開發板</b>測評效果(二)

    先楫HPM5361EVK開發板,網友測評效果(二)

    上海先楫半導體舉辦的HPM5361EVK開發板試用活動圓滿結束,廣大工程師和愛好者們踴躍參與此次試用并提交報告。經過先楫半導體專家組評選,一共產生6名優秀獲獎者。感謝媒體平臺電子工程
    的頭像 發表于 03-12 08:16 ?2260次閱讀
    先楫<b class='flag-5'>HPM</b>5361EVK<b class='flag-5'>開發板</b>,網友測評效果(二)

    解決HPM6750EVK2jlink下載

    拿到HPM6750EVK2,使用jlink下載時,我原來用買jlink配的20轉10轉接進行連接,下載程序里一直報不能連接到開發板。經過查找用手冊后,找到了問題。 我的jlink的引腳圖與之不對
    發表于 02-16 10:30

    【先楫HPM5361EVK開發板試用體驗】(原創)5.手把手實戰AI機械臂

    HPM5361EVK開發板。現在開始設計實戰AI機械臂的程序。 代碼結構 由于編寫一個完整的用先楫HPM5361EVK開發板控制三組四自由度機械臂,并加入紅外線傳感器、機器視覺和Ch
    發表于 02-06 10:28
    主站蜘蛛池模板: 天天操夜夜做| 国产全部理论片线观看| 丁香婷婷基地| 都市激情 亚洲| 永久看免费bbbbb视频| 五月天婷亚洲| 蜜色网| 国产成人永久在线播放| 色涩在线观看| 少妇被按摩| 永井玛丽亚中文在线观看视频| 亚洲人xx视频| 日本天堂影院| 经典三级一区在线播放| 91黄色视屏| 日本加勒比在线播放| 国产美女视频爽爽爽| 49vv婷婷网| 最近新韩国hd视频| 四虎网址最新| 精品无码三级在线观看视频| www资源| 欧美夜夜| vvvv98国产成人综合青青| 精品一区二区三区三区| 五月婷六月| 久久综合丁香| 亚洲第一区视频在线观看| 国内精品手机在线观看视频| 丁香六月啪| 亚洲色图日韩| 欧美freesex10一|3| www.87福利| 国产九九热| 免费播放一区二区三区| 色网站在线看| 国产一区二区高清| 奇米影视四色7777| 亚洲欧美一区二区三区在线播放| 亚洲欧美在线视频免费| 玖玖爱这里只有精品|