91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

在Zephyr OS上啟用NPU的實(shí)用方案

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 2026-03-09 10:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前兩期中我們已經(jīng)把所有準(zhǔn)備工作一步步鋪墊到位:

Zephyr迎來AI加速時(shí)代:NPU驅(qū)動(dòng)集成從未如此簡單

為Zephyr AI加速做好準(zhǔn)備:模型轉(zhuǎn)換

現(xiàn)在,是時(shí)候把準(zhǔn)備工作真正轉(zhuǎn)化為成果了!

今天,我們將正式在Zephyr中加入NPU軟件支持,讓模型不僅能“跑起來”,還能“跑得飛快”。是的,本期開始就是實(shí)戰(zhàn)環(huán)節(jié)!

本次的適配工作將以tflite_micro/hello_world工程為基礎(chǔ)展開。我們首先將其完整復(fù)制一份,并命名為hello_world_neutron。后續(xù)所有與Neutron NPU相關(guān)的移植步驟和配置修改,都將在這個(gè)新工程中進(jìn)行。

Zephyr的移植工作我們基于tfltie_micro/hello_world工程進(jìn)行,將其復(fù)制一份重命名為hello_world_neutron:

7d314970-182d-11f1-90a1-92fbcf53809c.png

一、改造思路

整體改造大致分為三個(gè)主要步驟:

開啟C++/FPU/TFLM支持

添加NPU相關(guān)驅(qū)動(dòng)與接口層代碼

修改CMakeLists.txt讓工程真正“認(rèn)識” NPU

除此之外,還需要將模型文件替換為NPU可執(zhí)行的版本,并手動(dòng)注冊Neutron自定義算子,使TFLM能夠調(diào)用NPU。下面我們一步一步來。

二、工程配置

1.修改prj.conf文件,添加FPU與CXX的支持:

CONFIG_CPP=y
CONFIG_STD_CPP17=y
CONFIG_FPU=y
CONFIG_FPU_SHARING=y
CONFIG_TENSORFLOW_LITE_MICRO=y
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_REQUIRES_FLOAT_PRINTF=y

三、加入NPU相關(guān)代碼

NPU 的組件大致可分為兩部分:

1. Neutron 與 TFLM 的接口層 2. Neutron 底層 Driver

3.1將NPU相關(guān)Driver從SDK中拷貝到工程目錄中

主要分為兩部分:NPU底層Driver以及NPU與TFLM的接口層代碼:

a) TFLM接口層代碼:

我們可以在SDK代碼中的eiq ensorflow-lite ensorflowlitemicrokernels eutron路徑下找到這兩個(gè)文件,

一定要注意:SDK版本要和轉(zhuǎn)換工具的版本一致,這里我們選擇的是2.16.0版本的SDK代碼以及針對于2.16.0 SDK版本的Neutron-converter.exe:

7d8ec7b2-182d-11f1-90a1-92fbcf53809c.png

將這兩個(gè)文件拷貝到工程目錄中:

7de677b4-182d-11f1-90a1-92fbcf53809c.png

3.2NPU底層驅(qū)動(dòng):

可以在eiq ensorflow-lite hird_party eutron路徑找到:

7e3fa622-182d-11f1-90a1-92fbcf53809c.png

將其同樣拷貝到工程目錄下,完整的目錄結(jié)構(gòu)如下:

7e9c8f90-182d-11f1-90a1-92fbcf53809c.png

四、修改CMakeLists,加入NPU依賴

我們需要讓工程能夠正確包含頭文件、鏈接NPU相關(guān)庫,完整示例如下:

cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(tensorflow_hello_world)
# These samples use local static initialization. Since Zephyr doesn't support the
# C++ ABI for thread-safe initialization of local statics and the constructors don't
# appear to require thread safety, we turn it off in the C++ compiler.
set(NO_THREADSAFE_STATICS $)
zephyr_compile_options($<$:${NO_THREADSAFE_STATICS}>)
#頭文件依賴
target_include_directories(app PRIVATE neutron/driver/include)
target_include_directories(app PRIVATE neutron/common/include)
target_include_directories(app PRIVATE neutron/source)
#庫依賴
add_library(libneutron1 STATIC IMPORTED GLOBAL)
set_target_properties(libneutron1 PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_SOURCE_DIR}/neutron/libNeutronDriver.a)
add_library(libneutron2 STATIC IMPORTED GLOBAL)
set_target_properties(libneutron2 PROPERTIES IMPORTED_LOCATION
${CMAKE_CURRENT_SOURCE_DIR}/neutron/libNeutronFirmware.a)
add_library(libneutron INTERFACE)
target_link_libraries(libneutron INTERFACE libneutron1 libneutron2)
target_link_libraries(app PUBLIC libneutron)
#添加源文件
file(GLOB app_sources src/*)
target_sources(app PRIVATE ${app_sources})
target_sources(app PRIVATE neutron/source/neutron.cpp)

到這里,工程已經(jīng)具備NPU支持能力。

五、替換模型文件

將src/目錄下的model.cpp替換為你通過xxd轉(zhuǎn)換得到的NPU版本模型。

模型來源應(yīng)為Neutron-converter轉(zhuǎn)換后的.bin,格式已經(jīng)適配NPU。

7ef84f06-182d-11f1-90a1-92fbcf53809c.png

六、注冊Neutron自定義算子

注冊Neutron算子:

因?yàn)門FLM本身不支持Neutron算子,這里需要我們手動(dòng)添加,添加方式是修改src/main_functions.cpp:

/* This pulls in the operation implementations we need.
* NOLINTNEXTLINE(runtime-global-variables)
*/
static tflite::MicroMutableOpResolver <1> resolver;
resolver.AddCustom(tflite::GetString_NEUTRON_GRAPH(),
tflite::Register_NEUTRON_GRAPH());

因Zephyr自帶的模型算子類型是FullyConnected,這里將他替換為NeutronGraph,同時(shí)在文件開頭添加頭文件引用:

7f526a22-182d-11f1-90a1-92fbcf53809c.png

至此,所有軟件工作就都完成了,接下來就是使用west工具進(jìn)行編譯:

west build -b frdm_mcxn947/mcxn947/cpu0

7fc2ddf2-182d-11f1-90a1-92fbcf53809c.png

七、編譯,下載運(yùn)行

使用west編譯工程,下載運(yùn)行:

80214f5e-182d-11f1-90a1-92fbcf53809c.png

當(dāng)我們看到正常輸出、并且沒有任何錯(cuò)誤時(shí),就說明:

模型成功轉(zhuǎn)換

Neutron NPU驅(qū)動(dòng)加載成功

TFLM已正確調(diào)度NPU推理

模型已順利跑在NPU上進(jìn)行加速!

八、完整鏈路走通

至此,小編跨越三期,帶大家完整走了一遍流程:

1. 自主訓(xùn)練模型

2. 使用轉(zhuǎn)換工具生成NPU 可執(zhí)行格式

3. 在ZephyrOS 中添加 Neutron NPU 驅(qū)動(dòng)支持

4. 讓模型真正跑在NPU 上加速推理

這條鏈路雖然步驟較多,但每一步都是構(gòu)建“嵌入式AI”所必需的關(guān)鍵環(huán)節(jié)。

也期待未來ZephyrOS能繼續(xù)完善AI支持,讓NPU適配更加自動(dòng)化,讓開發(fā)者可以更加專注于算法本身。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    416

    瀏覽量

    29414
  • AI
    AI
    +關(guān)注

    關(guān)注

    91

    文章

    39820

    瀏覽量

    301491
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3755

    瀏覽量

    52121
  • NPU
    NPU
    +關(guān)注

    關(guān)注

    2

    文章

    374

    瀏覽量

    21108
  • Zephyr
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    6586

原文標(biāo)題:微控制器也能跑AI: 在Zephyr OS上啟用NPU的實(shí)用方案

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    當(dāng)RA MCU遇見Zephyr系列(3)——Vs code中配置Zephyr集成開發(fā)環(huán)境

    RA生態(tài)工作室關(guān)注我們一篇文章介紹了如何在VScode中使用瑞薩官方插件為RA芯片創(chuàng)建項(xiàng)目與項(xiàng)目調(diào)試,相信大家對RAVScode中的開發(fā)有了基礎(chǔ)的了解。當(dāng)RAMCU遇見Zephyr,打通
    的頭像 發(fā)表于 01-01 10:04 ?4877次閱讀
    當(dāng)RA MCU遇見<b class='flag-5'>Zephyr</b>系列(3)——<b class='flag-5'>在</b>Vs  code中配置<b class='flag-5'>Zephyr</b>集成開發(fā)環(huán)境

    如何在Zephyr OS中使用cyhal?

    我一直使用Zephyr和 CY8CPROTO-063-BLE 模塊,我需要實(shí)現(xiàn)一個(gè)高速SPI驅(qū)動(dòng)器。 不幸的是,Zephyr 驅(qū)動(dòng)程序的開銷使每次傳輸?shù)拿看?SPI 傳輸都有大約 25 秒的額外
    發(fā)表于 01-29 07:12

    請問如何將Zephyr OS移植到KIT_PSOCE84_EVK?

    我正試圖將 Zephyr OS 移植到 KIT_PSOCE84_EVK,但官方的 Zephyr 支持板列表中并沒有列出它。 所以,看來我得自己移植了。 是否有針對 Zephyr
    發(fā)表于 05-30 07:32

    請問如何在OpenVINO?工具包中啟用NPU設(shè)備?

    有關(guān)在 OpenVINO? 工具套件中啟用 NPU 設(shè)備的咨詢。
    發(fā)表于 03-06 07:25

    如何在NXP MCU啟用D-Cache?

    我正在 NXP FRDM-MCXN947 MCU 測試 TFLite AI 模型的推理時(shí)間和性能。雖然我使用 NPU 獲得了良好的性能,但在不使用 NPU 時(shí),我的推理時(shí)間相對較慢。通過啟用
    發(fā)表于 03-27 07:48

    VisionFive 2 嘗試 Zephyr 時(shí)沒有輸出是怎么回事?

    我按照指示進(jìn)行作官方文檔 VisionFive 2 測試 Zephyr hello_world demo,雖然我成功編譯了目標(biāo)程序,但發(fā)送到 UART 后,我 tty
    發(fā)表于 02-05 06:49

    AIO-3399ProC NPU開發(fā)相關(guān)資料推薦

    傳輸。所以導(dǎo)致使用 “PCIE連接的NPU” 會(huì)比使用 “USB3.0方式連接的NPU實(shí)際推理速度上慢很多。為了解決這個(gè)問題,我們制作了相關(guān) PCIE-NPU加速補(bǔ)丁 ,最終結(jié)果
    發(fā)表于 07-01 17:38

    如何同時(shí)Zephyr運(yùn)行RT1170 EVK 1G和100M端口?

    是否可以 Zephyr 同時(shí)使用 RT1170 EVK 的 100M 和 1G 接口?我知道 1G 接口可以使用 100M enet 驅(qū)動(dòng)程序并獲得 100M 速度,這很好,但是
    發(fā)表于 04-07 09:55

    如何使用RT685的DSP搭配Zephyr OS?

    我使用的是 NXP MIMXRT685 EVK 板。 我正在嘗試創(chuàng)建一個(gè)簡單的程序來 DSP 和 ARM 部件之間進(jìn)行通信。我 MCUXpresso 和 Xplorer IDE 使用基本示例
    發(fā)表于 05-18 08:04

    μC/OS-IIEP7312的移植

    μC/OS-IIEP7312的移植首先介紹μC/OS-II操作系統(tǒng)的特點(diǎn),重點(diǎn)分析μC/OS-II
    發(fā)表于 06-16 11:24 ?1367次閱讀
    μC/<b class='flag-5'>OS</b>-II<b class='flag-5'>在</b>EP7312<b class='flag-5'>上</b>的移植

    Chrome OS將獲Linux支持,可在Chrome OS 運(yùn)行Linux?

    繼添加了安卓應(yīng)用支持后,Chrome OS現(xiàn)在又將獲得Linux支持。此前,IT之家報(bào)道了 Terminal(終端)應(yīng)用已出現(xiàn)在Chrome OS的開發(fā)通道中,暗示著我們將可在Chrome OS
    的頭像 發(fā)表于 06-14 08:45 ?4501次閱讀

    淺析ZephyrESP32的啟動(dòng)流程

    理解Zephyr一款soc的啟動(dòng)流程,有利于分析和調(diào)試開機(jī)過程卡死,驅(qū)動(dòng)異常等的問題。因此在上手一款新的soc時(shí)掌握Zephyr在其上面的啟動(dòng)流程非常必要。本文對
    的頭像 發(fā)表于 06-07 17:04 ?6999次閱讀

    泰凌微電子Zephyr編譯環(huán)境搭建

    如上文所介紹,Telink Zephyr是由社區(qū)的Zephyr倉庫fork而來的,用于維護(hù)我們社區(qū)的內(nèi)容,并開發(fā)新的功能。若要查看 Telink Zephyr 最新的開發(fā)內(nèi)容,可以查
    的頭像 發(fā)表于 01-30 11:28 ?4771次閱讀

    Sitara MPU啟用Matter

    電子發(fā)燒友網(wǎng)站提供《Sitara MPU啟用Matter.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 09:41 ?0次下載
    <b class='flag-5'>在</b>Sitara MPU<b class='flag-5'>上</b><b class='flag-5'>啟用</b>Matter

    深入解析Zephyr RTOS的技術(shù)細(xì)節(jié)

    ,Zephyr OS嵌入式開發(fā)中的知名度逐漸增加,新的微控制器和開發(fā)板都支持Zephyr。本文將深入討論Zephyr RTOS的技術(shù)細(xì)節(jié)。
    的頭像 發(fā)表于 10-22 16:47 ?4476次閱讀
    深入解析<b class='flag-5'>Zephyr</b> RTOS的技術(shù)細(xì)節(jié)