chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

HPM SDK指南 | 我的板子我做主!

先楫半導(dǎo)體HPMicro ? 2022-12-12 17:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文介紹了基于HPM SDK如何新建一個(gè)新的工程供用戶項(xiàng)目開(kāi)發(fā),包括HPM SDK代碼結(jié)構(gòu)介紹,新BOARD適配驅(qū)動(dòng)運(yùn)行以及新工程的建立和注意事項(xiàng)。

先楫半導(dǎo)體面向用戶同時(shí)提供HPM SDK的集成工具集sdk_env,本文的介紹基于hpm sdk版本0.14.0,基于工具集sdk_env_v0.14.0。搭配以下費(fèi)教授的教程視頻,體驗(yàn)更佳哦,趕緊來(lái)一睹為快!

【先楫“芯”教程】如何創(chuàng)建HPM_SDK例程?

----- 以下為本指南的詳細(xì)內(nèi)容 -----?

HPMSDK組成結(jié)構(gòu)介紹

一、SDK ENV組成結(jié)構(gòu)

整個(gè)SDK ENV組成結(jié)構(gòu)如下圖所示:

d12bf0be-78aa-11ed-b116-dac502259ad0.png

doc:主要是先楫半導(dǎo)體官方開(kāi)發(fā)的用戶指導(dǎo)手冊(cè),包含 HPM6750EVK和HPM6750EVK mini的用戶指導(dǎo)手冊(cè)。

hpm_sdk: HPM SDK的核心軟件包。

toolchains:編譯工具鏈,主要為rv32imadc-ilp32d-x86_64-w64-mingw32

tools:主要第三方軟件和相應(yīng)的處理腳本。

其他:SDK運(yùn)行環(huán)境配置腳本和說(shuō)明文件。

二、HPM SDK核心軟件包架構(gòu)

SDK核心軟件包主要是支持完成應(yīng)用軟件開(kāi)發(fā)的各種組件,包含了驅(qū)動(dòng)、板級(jí)支持文件、中間件、soc定義文件、實(shí)例、處理腳本、幫助文件等。如下圖所示

d1529bc4-78aa-11ed-b116-dac502259ad0.png

各個(gè)目錄的主要內(nèi)容:

arch:risc-v架構(gòu)相關(guān)的操作接口。

boards:與開(kāi)發(fā)板相關(guān)的硬件定義和接口,主要為HPM6300EVK、HPM6750 EVK和HPM6750 EVK mini相關(guān)的板卡硬件信息。

cmake:與cmake和工程管理相關(guān)配置文件。

components:常用板載模塊驅(qū)動(dòng)、處理邏輯和控制接口,包括camera、codec、debug_console、enet_phy、serial_nor、touch、usb等。

doc:SDK支持文檔和軟件API的支持文檔。

drivers:soc片上硬件模塊驅(qū)動(dòng)、處理邏輯和控制接口。

middleware:常見(jiàn)算法庫(kù)、圖形庫(kù)、組件庫(kù)、RTOS等。

samples:各種應(yīng)用例程。

script:與工程管理、編譯相關(guān)的處理腳本。

soc:soc片上資源寄存器定義。

utils:其他通用處理組件。

其他:處理腳步和說(shuō)明文件。

新 board 添加適配

集成工具集sdk_env壓縮包解壓目錄下的start_cmd.cmd腳本可以啟動(dòng)命令行環(huán)境sdk prompt, 可通過(guò)命令generate_project -list 查看當(dāng)前支持的boards,可以查詢到當(dāng)前支持的boards如下:

hpm6300evk

hpm6750evk

hpm6750evk2

hpm6750evkmini

d17c4e4c-78aa-11ed-b116-dac502259ad0.png

在目錄hpm_sdk/boards下添加新board目錄,例如名稱:hpm6750demo,如下:

d1930e0c-78aa-11ed-b116-dac502259ad0.png

參考官方board添加新board的適配code,代碼介紹如下:

注:建議按照官方代碼結(jié)構(gòu)添加。

d1a9bd3c-78aa-11ed-b116-dac502259ad0.png

board.c:新board硬件初始化,包括clock/console/pmp/ahb等以新board實(shí)際硬件添加相關(guān)code。

pinmux.c:新board硬件pin腳復(fù)用選擇,以新board實(shí)際外設(shè)功能添加相關(guān)code(可使用HPM pinmux tool 泡泡龍工具自動(dòng)生成)。

CMakeList.txt: cmake構(gòu)建腳本文件,必須添加。

hpm6750evk.yaml:yaml配置文件, 名稱同新board名稱一致。文件中包含了board的相關(guān)信息,包括openocd 仿真器的相關(guān)信息。

*openocd目錄下同步添加board cfg文件:

d1c8c768-78aa-11ed-b116-dac502259ad0.png

board硬件初始化核心內(nèi)容詳解:

注意:新board以實(shí)際功能添加、刪減、修改。


(1).flash配置信息:在區(qū)域.nor_cfg_option存放flash的配置信息,包括:flash類型、頻率、電壓、片選等。

注:當(dāng)新board外掛的flash和官方的型號(hào)參數(shù)不一致時(shí),注意修改此配置。

#if defined(FLASH_XIP) && FLASH_XIP__attribute__ ((section(".nor_cfg_option"))) const uint32_t option[4] = {0xfcf90001, 0x00000007, 0x0, 0x0};#endif

(2).UF2固件頭部的簽名信息:當(dāng)固件是UF2類型,簽名存放在空間.uf2_signature區(qū)域。

if defined(FLASH_UF2) && FLASH_UF2ATTR_PLACE_AT(".uf2_signature") const uint32_t uf2_signature = BOARD_UF2_SIGNATURE;#endif

(3).終端初始化:串口終端初始化。

void board_init_console(void)

(4).時(shí)鐘初始化:系統(tǒng)時(shí)鐘及各個(gè)外設(shè)IP時(shí)鐘組選擇初始化。

void board_init_clock(void)

(5).外設(shè)初始化及外設(shè)時(shí)鐘源配置:各個(gè)外設(shè)的初始化,包括PINMUX及功能配置。

//外設(shè)初始化void board_init_uart(UART_Type *ptr) //UART 串口初始化void board_init_ahb(void) //AHB總線初始化void board_init_sdram_pins(void) //SDRAM PIN初始化void board_init_lcd(void) //LCD初始化void board_init_i2c(I2C_Type *ptr) //I2C初始化void board_init_cap_touch(void) //TOUCH觸摸屏初始化void board_init_gpio_pins(void) //GPIO PIN初始化void board_init_spi_pins(SPI_Type *ptr) //SPI PIN初始化void board_init_led_pins(void) //LED PIN初始化void board_init_cam_pins(void) //CAM PIN初始化void board_init_can(CAN_Type *ptr) //CAN 初始化void board_init_sd_pins(SDXC_Type *ptr) //SD PIN初始化void board_init_usb_pins(void) //USB PIN初始化void board_init_pmp(void) //PMP 初始化void board_init_adc12_pins(void) //ADC12 PIN初始化

void board_init_adc16_pins(void) //ADC16 PIN初始化hpm_stat_t board_init_enet_pins(ENET_Type *ptr) //ENEN PIN初始化//外設(shè)時(shí)鐘源配置uint32_t board_init_spi_clock(SPI_Type *ptr) //SPI CLOCK配置uint32_t board_init_uart_clock(UART_Type *ptr) //UART CLOCK配置uint32_t board_init_dram_clock(void) //DRAM CLOCK配置uint32_t board_init_lcd_clock(void) //LCD CLOCK 配置uint32_t board_init_cam_clock(CAM_Type *ptr) //CAM CLOCK配置uint32_t board_init_adc12_clock(ADC12_Type *ptr) //ADC12 CLOCK配置uint32_t board_init_dao_clock(void) //DAO CLOCK配置uint32_t board_init_pdm_clock(void) //PDM CLOCK配置uint32_t board_init_i2s_clock(I2S_Type *ptr) //I2S CLOCK 配置uint32_t board_init_adc16_clock(ADC16_Type *ptr) //ADC16 CLOCK配置uint32_t board_init_can_clock(CAN_Type *ptr) //CAN CLOCK配置uint32_t board_sd_configure_clock(SDXC_Type *ptr, uint32_t freq) //SD CLOCK配置hpm_stat_t board_init_enet_ptp_clock(ENET_Type *ptr) //ENET PTP CLOCK配置hpm_stat_t board_init_enet_rmii_reference_clock(ENET_Type *ptr, bool internal) //ENET RMII CLOCK配置hpm_stat_t board_init_enet_rgmii_clock_delay(ENET_Type *ptr) //ENET RGMII delay CLOCK配置

(6). 外部SDRAM初始化:外部SDRAM初始化。

注意:當(dāng)初始數(shù)據(jù)有放到外部SDRAM,必須要定義宏:INIT_EXT_RAM_FOR_DATA。(此函數(shù)在啟動(dòng)start.s中被調(diào)用)

#ifdef INIT_EXT_RAM_FOR_DATA/** this function will be called during startup to initialize external memory for data use*/void _init_ext_ram(void)

通過(guò)命令generate_project -list 查看當(dāng)前支持的boards:

d1e1be12-78aa-11ed-b116-dac502259ad0.png

新 工 程 創(chuàng) 建

在目錄hpm_sdk/samples 下包含了官方的所有參考用例。參考官方用例來(lái)創(chuàng)建新的工程,新的工程路徑原則上是任意的,建議用戶放到hpm_sdk之外的目錄,方便用戶后續(xù)更新hpm_sdk而不影響用戶工程。例如創(chuàng)建兩個(gè)工程demo1,demo2,路徑和hpm_sdk在同一個(gè)目錄下:

d1fb07d2-78aa-11ed-b116-dac502259ad0.png

新工程組成介紹:

d21a880a-78aa-11ed-b116-dac502259ad0.png

CMakeList.txt:cmake構(gòu)建腳本文件,必須添加。

Linkers當(dāng)前工程使用的linker文件。當(dāng)然也可以通過(guò)-t 使用官方的linker文件。

inc:工程頭文件。

src:工程源文件。

CMakeList.txt腳本文件內(nèi)容介紹:

d237260e-78aa-11ed-b116-dac502259ad0.png

cmake_minimum_required(xxx):cmake最低版本要求,使用默認(rèn)3.13即可。

set(xxx):設(shè)置要使用到的中間件、組件或linker文件。例如:set(CONFIG_LVGL 1)使能中間件LVGL(middleware/littlevgl)。set(CUSTOM_GCC_LINKER_FILE xxx)設(shè)置工程使用的linker文件。

set_compile_definitions(xxx):設(shè)置編譯器選項(xiàng)及宏定義。例如:set_compile_definitions(-DFLASH_XIP=1):宏定義 FLASH_XIP=1

注意:如果是FLASH_XIP的方式,一定要宏定義FLASH_XIP=1;如果初始數(shù)據(jù)使用了外部SDRAM,一定要宏定義INIT_EXT_RAM_FOR_DATA=1;或通過(guò)構(gòu)建命令-t 指定。當(dāng)-t指定工程類型,則當(dāng)前cmakelist.txtset(CUSTOM_GCC_LINKER_FILE)指定的linker文件無(wú)效;

project(xxx): 工程名稱xxx。例如:project(demo1),demo1工程。

sdk_inc(xxx):工程頭文件路徑。

sdk_app_src(xxx):工程源文件添加,也可使用sdk_ses_src(xxx)或sdk_gcc_src(xxx)來(lái)指定為SES工程文件還是GCC工程文件。

generate_ses_project(): 構(gòu)建為ses工程。

通過(guò)命令:generate_project -b hpm6750demo -f 構(gòu)建生成SES工程。

注意:如果cmakelist.txt中指定了linker文件及工程類型,無(wú)需-t指定。

d25ed578-78aa-11ed-b116-dac502259ad0.png

雙擊工程xxx_build/segger_embedded_studio/xxx.emProject文件,打開(kāi)SES工程編譯調(diào)試。

d26f79c8-78aa-11ed-b116-dac502259ad0.png

至此新建工程已完成。本文主要介紹了基于sdk_env_v0.14.0如何新建一個(gè)工程。詳細(xì)介紹了新BOARD適配驅(qū)動(dòng)運(yùn)行以及新工程建立的注意事項(xiàng)。HPM SDK基于CMAKE工具來(lái)為Segger構(gòu)建工程,同時(shí)用戶也可通過(guò)添加修改cmake腳本來(lái)快速新建工程,為用戶省去了繁瑣的工程配置及編譯調(diào)試環(huán)境配置,大大提升了用戶的開(kāi)發(fā)效率。(欲了解參考文獻(xiàn),可點(diǎn)擊“閱讀原文”獲取)


本期的內(nèi)容就分享到這兒,如果有其他感興趣的內(nèi)容,歡迎隨時(shí)留言給小編,先楫芯上人會(huì)在接下來(lái)的分享中陸續(xù)為大家呈現(xiàn)~

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

    關(guān)注

    3

    文章

    1091

    瀏覽量

    50666
  • HPM
    HPM
    +關(guān)注

    關(guān)注

    1

    文章

    43

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    SDK音頻替換失敗記錄過(guò)程

    在安信可離線語(yǔ)音模組 VC-01、VC-02 系列教程 【中級(jí)入門(mén)篇】中根據(jù)設(shè)置的不同回復(fù)詞和命令字進(jìn)行了固件生成。出教程的時(shí)候在考慮有沒(méi)有什么辦法來(lái)替換到SDK中的音頻,在嘗試了各種辦法后發(fā)現(xiàn)很難辦到 (建議直接使用云平臺(tái)
    的頭像 發(fā)表于 09-25 15:50 ?1707次閱讀
    <b class='flag-5'>SDK</b>音頻替換失敗記錄過(guò)程

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

    向大家請(qǐng)教一個(gè)問(wèn)題。如題, 硬件:HPM5E00EVK 開(kāi)發(fā)環(huán)境:win10, embedded studio 軟件:sdk_env_v1.10.0,ethercat/ecat_io 硬件連接
    發(fā)表于 09-25 15:06

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

    令行可以查看到。 問(wèn)題2:嘗試修改hpm6e00_all_in_one.cfg把HPM_SDK_BASE替換為絕對(duì)路徑,這個(gè)報(bào)錯(cuò)消失。但是燒錄時(shí)提示校驗(yàn)失敗,找了好久不知道怎么解決,文件結(jié)構(gòu)也放到下面。
    發(fā)表于 09-09 09:55

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

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

    重磅更新 | HPM_SDK v1.10.0 發(fā)布

    版本更新概況[New]增加HPM5E00系列MCU以及HPM5E00EVK支持增加flash_xip_hybrid構(gòu)建,在該模式下AXI_SRAM被用作FLASH前256KB的緩存,位于FLASH前256KB的代碼擁有RAM級(jí)別的訪問(wèn)性能。1、新增/更新的中間件(Midd
    的頭像 發(fā)表于 07-02 15:07 ?887次閱讀
    重磅更新 | <b class='flag-5'>HPM_SDK</b> v1.10.0 發(fā)布

    為什么選擇VHDL入門(mén)

    在群里交流提問(wèn)的時(shí)候,大家總是驚訝并疑惑:為什么要選擇 VHDL入門(mén)?因?yàn)楹孟?99% 搞 FPGA 開(kāi)發(fā)的人都在用 Verilog。 的選擇,是通過(guò)網(wǎng)上搜索的討論而做出的,為了留存,這里水一
    的頭像 發(fā)表于 06-25 11:18 ?690次閱讀
    為什么<b class='flag-5'>我</b>選擇VHDL入門(mén)

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

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

    先輯半導(dǎo)體HPM6E00系列產(chǎn)品能用來(lái)做EtherCAT的主站嗎

    雖然明確說(shuō)明了先輯半導(dǎo)體HPM6E00系列產(chǎn)品能用來(lái)做EtherCAT的從站,但它可以用來(lái)做主站嗎,還是說(shuō)必須用其他芯片做主站呢
    發(fā)表于 03-16 10:16

    先楫半導(dǎo)體HPM_SDK v1.7.0發(fā)布!這些更新你值得關(guān)注!

    先楫半導(dǎo)體HPM_SDK v1.7.0發(fā)布!這些更新你值得關(guān)注!
    的頭像 發(fā)表于 02-08 13:42 ?887次閱讀
    先楫半導(dǎo)體<b class='flag-5'>HPM_SDK</b> v1.7.0發(fā)布!這些更新你值得關(guān)注!

    先楫半導(dǎo)體HPM_SDK v1.8.0 發(fā)布

    先楫半導(dǎo)體HPM_SDK v1.8.0 發(fā)布
    的頭像 發(fā)表于 02-08 13:39 ?871次閱讀
    先楫半導(dǎo)體<b class='flag-5'>HPM_SDK</b> v1.8.0 發(fā)布

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

    基于HPM_SDK_ENV開(kāi)發(fā)應(yīng)用程序的方式HPM_SDK_ENV是先楫半導(dǎo)體MCU的Windows集成開(kāi)發(fā)環(huán)境,其包含HPM_SDK,工具鏈,依賴工具(cmake,ninja,openocd等
    的頭像 發(fā)表于 02-08 13:38 ?1278次閱讀
    基于<b class='flag-5'>HPM_SDK</b>_ENV開(kāi)發(fā)應(yīng)用程序的升級(jí)處理

    轉(zhuǎn)行嵌入式,的奮斗之路

    作為一名曾經(jīng)成功從其他領(lǐng)域轉(zhuǎn)行到嵌入式的工程師,想分享一下的個(gè)人經(jīng)歷和一些意見(jiàn),希望能給那些有同樣轉(zhuǎn)行想法的人一些參考。
    的頭像 發(fā)表于 12-05 09:18 ?1058次閱讀
    轉(zhuǎn)行嵌入式,<b class='flag-5'>我</b>的奮斗之路

    戴上降噪耳機(jī)的,為什么還要捂住耳朵?

    降噪耳機(jī),成為當(dāng)代年輕人的隨身避難所。在喧囂的城市中,它們提供了一片寧?kù)o,讓我們得以恢復(fù)能量。 如果讓選出本世紀(jì)最偉大的發(fā)明,一定會(huì)毫不猶豫地投它一票。人們有時(shí)并不需要太多,只需一個(gè)能切斷外界
    的頭像 發(fā)表于 11-23 15:39 ?1071次閱讀
    戴上降噪耳機(jī)的<b class='flag-5'>我</b>,為什么還要捂住耳朵?

    使用官方SDK開(kāi)發(fā)6450

    官網(wǎng)提供的SDK芯片類型沒(méi)有包含HPM6450,如何添加6450到SDK中有人知道么?
    發(fā)表于 10-24 14:51

    明明說(shuō)的是25G信號(hào),你卻讓看12.5G的損耗?

    那一天,問(wèn)高速先生25G光模塊信號(hào)在主板上允許的損耗是多少,他們就告訴在12.5G要滿足大概7.3dB,當(dāng)時(shí)就懵了,明明說(shuō)的是25G啊,他跟我說(shuō)12.5G干嘛!
    的頭像 發(fā)表于 10-23 09:08 ?1759次閱讀
    明明<b class='flag-5'>我</b>說(shuō)的是25G信號(hào),你卻讓<b class='flag-5'>我</b>看12.5G的損耗?