国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

在Zephyr OS上啟用NPU的實用方案

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

掃碼添加小助手

加入工程師交流群

前兩期中我們已經把所有準備工作一步步鋪墊到位:

Zephyr迎來AI加速時代:NPU驅動集成從未如此簡單

為Zephyr AI加速做好準備:模型轉換

現在,是時候把準備工作真正轉化為成果了!

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

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

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

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

一、改造思路

整體改造大致分為三個主要步驟:

開啟C++/FPU/TFLM支持

添加NPU相關驅動與接口層代碼

修改CMakeLists.txt讓工程真正“認識” NPU

除此之外,還需要將模型文件替換為NPU可執行的版本,并手動注冊Neutron自定義算子,使TFLM能夠調用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相關代碼

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

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

3.1將NPU相關Driver從SDK中拷貝到工程目錄中

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

a) TFLM接口層代碼:

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

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

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

將這兩個文件拷貝到工程目錄中:

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

3.2NPU底層驅動:

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

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

將其同樣拷貝到工程目錄下,完整的目錄結構如下:

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

四、修改CMakeLists,加入NPU依賴

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

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)

到這里,工程已經具備NPU支持能力。

五、替換模型文件

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

模型來源應為Neutron-converter轉換后的.bin,格式已經適配NPU。

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

六、注冊Neutron自定義算子

注冊Neutron算子:

因為TFLM本身不支持Neutron算子,這里需要我們手動添加,添加方式是修改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,同時在文件開頭添加頭文件引用:

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

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

west build -b frdm_mcxn947/mcxn947/cpu0

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

七、編譯,下載運行

使用west編譯工程,下載運行:

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

當我們看到正常輸出、并且沒有任何錯誤時,就說明:

模型成功轉換

Neutron NPU驅動加載成功

TFLM已正確調度NPU推理

模型已順利跑在NPU上進行加速!

八、完整鏈路走通

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

1. 自主訓練模型

2. 使用轉換工具生成NPU 可執行格式

3. 在ZephyrOS 中添加 Neutron NPU 驅動支持

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

這條鏈路雖然步驟較多,但每一步都是構建“嵌入式AI”所必需的關鍵環節。

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

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

    關注

    1

    文章

    416

    瀏覽量

    29414
  • AI
    AI
    +關注

    關注

    91

    文章

    39809

    瀏覽量

    301479
  • 模型
    +關注

    關注

    1

    文章

    3755

    瀏覽量

    52116
  • NPU
    NPU
    +關注

    關注

    2

    文章

    374

    瀏覽量

    21108
  • Zephyr
    +關注

    關注

    0

    文章

    59

    瀏覽量

    6584

原文標題:微控制器也能跑AI: 在Zephyr OS上啟用NPU的實用方案

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    當RA MCU遇見Zephyr系列(3)——Vs code中配置Zephyr集成開發環境

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

    如何在Zephyr OS中使用cyhal?

    我一直使用Zephyr和 CY8CPROTO-063-BLE 模塊,我需要實現一個高速SPI驅動器。 不幸的是,Zephyr 驅動程序的開銷使每次傳輸的每次 SPI 傳輸都有大約 25 秒的額外
    發表于 01-29 07:12

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

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

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

    有關在 OpenVINO? 工具套件中啟用 NPU 設備的咨詢。
    發表于 03-06 07:25

    如何在NXP MCU啟用D-Cache?

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

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

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

    AIO-3399ProC NPU開發相關資料推薦

    傳輸。所以導致使用 “PCIE連接的NPU” 會比使用 “USB3.0方式連接的NPU實際推理速度上慢很多。為了解決這個問題,我們制作了相關 PCIE-NPU加速補丁 ,最終結果
    發表于 07-01 17:38

    如何同時Zephyr運行RT1170 EVK 1G和100M端口?

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

    如何使用RT685的DSP搭配Zephyr OS

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

    μC/OS-IIEP7312的移植

    μC/OS-IIEP7312的移植首先介紹μC/OS-II操作系統的特點,重點分析μC/OS-II
    發表于 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 運行Linux?

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

    淺析ZephyrESP32的啟動流程

    理解Zephyr一款soc的啟動流程,有利于分析和調試開機過程卡死,驅動異常等的問題。因此在上手一款新的soc時掌握Zephyr在其上面的啟動流程非常必要。本文對
    的頭像 發表于 06-07 17:04 ?6997次閱讀

    泰凌微電子Zephyr編譯環境搭建

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

    Sitara MPU啟用Matter

    電子發燒友網站提供《Sitara MPU啟用Matter.pdf》資料免費下載
    發表于 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的技術細節

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