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

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

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

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

淺析Zephyr應(yīng)用的代碼結(jié)構(gòu)中的自定義驅(qū)動

智芯原動ICETech ? 來源:HalfCoder ? 作者:lgl88911 ? 2021-08-18 09:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇是《《Zephyr應(yīng)用的代碼結(jié)構(gòu)》》系列的終篇和下面兩篇文章一起可以構(gòu)建出一個有app獨立管理的zephyr項目

Zephyr應(yīng)用的代碼結(jié)構(gòu)--West提貨單: zephyr和zephyr外部項目納入到應(yīng)用代碼目錄管理

Zephyr應(yīng)用的代碼結(jié)構(gòu)--自定義開發(fā)板: 將自定義board納入到應(yīng)用代碼目錄管理

除了上面兩個場景外,我們的硬件可能也有新的驅(qū)動需求,而該驅(qū)動不被Zephyr支持,如果不想將驅(qū)動放入Zephyr中,就需要將驅(qū)動納入到應(yīng)用代碼目錄。

Zephyr驅(qū)動的添加可以分為3個級別:

有驅(qū)動API抽象,有設(shè)備樹綁定:只用添加驅(qū)動代碼

有驅(qū)動API抽象,無設(shè)備樹綁定:添加設(shè)備樹綁定文件和驅(qū)動代碼

無驅(qū)動API抽象,無設(shè)備樹綁定:添加抽象API頭文件,添加設(shè)備樹綁定文件,添加驅(qū)動代碼

驅(qū)動代碼目錄

驅(qū)動代碼目錄添加

在app/目錄下添加drivers目錄,如下

app

├── drivers

│ └── zephyr

│ ├── CMakeLists.txt

│ ├── Kconfig

│ └── sensor

│ ├── CMakeLists.txt

│ ├── Kconfig

│ └── rotary_encoder

├── CMakeLists.txt

├── Kconfig

├── rotary_encoder.c

└── rotary_encoder.h

在drivers/zephyr下的將要添加的驅(qū)動類型分類,例如我需要添加傳感器類型的驅(qū)動,就增加一個sensor文件夾

zephyr/CMakeLists.txt中指定該文件夾, 如果有其它驅(qū)動類型的文件夾也加入到該文件中

1

add_subdirectory(sensor)

zephyr/Kconfig包含各個驅(qū)動類型文件夾的Kconfig

1

rsource “sensor/Kconfig”

zephyr/sensor/CMakeLists.txt中指定要使用的驅(qū)動文件夾,例如這里要指定選擇編碼器

1

add_subdirectory_ifdef(CONFIG_ROTARY_ENCODER rotary_encoder)

zephyr/sensor/Kconfig包含該類型下各個驅(qū)動的Kconfig

1

rsource “rotary_encoder/Kconfig”

zephyr/sensor/rotary_encoder/CMakeLists.txt指定驅(qū)動的源代碼

zephyr_include_directories(。)

zephyr_library()

zephyr_library_sources(rotary_encoder.c)

zephyr/sensor/rotary_encoder/Kconfig則是該驅(qū)動代碼rotary_encoder.c要使用的配置選項

menuconfig ROTARY_ENCODER

bool “Rotary Encoder Sensor”

depends on GPIO

help

Enable driver for Rotary encoder sensors.

if ROTARY_ENCODER

config ROTARY_ENCODER_THREAD_PRIORITY

int “Thread priority”

default 10

help

Priority of thread used by the driver to handle interrupts.

config ROTARY_ENCODER_THREAD_STACK_SIZE

int “Thread stack size”

default 1024

help

Stack size of thread used by the driver to handle interrupts.

驅(qū)動代碼由rotary_encoder.c和rotary_encoder.h組成,不是本文說明重點,如何實現(xiàn)驅(qū)動可以參考Zephyr驅(qū)動實現(xiàn)方式

指定使用驅(qū)動目錄

Zephyr建議將外部目錄的驅(qū)動作為module添加,在app/CMakeLists.txt中添加下面內(nèi)容,構(gòu)建時就會編譯app/drivers

list(APPEND ZEPHYR_EXTRA_MODULES

${CMAKE_CURRENT_SOURCE_DIR}/drivers

設(shè)備樹綁定文件目錄

為了硬件上的靈活性,Zephyr引入了設(shè)備樹,通過設(shè)備樹綁定的方式將設(shè)備樹轉(zhuǎn)換為C宏來使用。Zephyr的設(shè)備樹綁定文件可能不包含我們要用的硬件設(shè)備,這就需要我們自己添加。同樣設(shè)備樹綁定文件也可以納入app的目錄進行管理,在app目錄下添加dts目錄,里面放置設(shè)備樹綁定文件

app

├── dts

│ └── bindings

│ └── sensor

│ └── rotary-encoder.yaml

rotary-encoder.yaml的編寫和使用方法不是本文重點,詳細可以參考Zephyr添加旋轉(zhuǎn)編碼器驅(qū)動

在app/CMakeLists.txt中添加下面內(nèi)容,構(gòu)建時編譯設(shè)備樹會查找到app/dts目錄

1

list(APPEND DTS_ROOT ${CMAKE_SOURCE_DIR})

設(shè)備驅(qū)動API頭文件目錄

對于個人項目開發(fā)來說,設(shè)備驅(qū)動API一般是項目內(nèi)使用,API抽象的普遍覆蓋性并不一定要非常全,此外使用的人員也不需要大范圍討論,根據(jù)需求進行自定義就可以, 所形成的頭文件放到對應(yīng)的驅(qū)動目錄即可,例如zephyr/sensor/rotary_encoder/rotary_encoder.h, 為了方便應(yīng)用直接使用,可以在app/CMakeLists中添加

1

include_directories(drivers/zephyr/sensor/rotary_encoder/)

之后應(yīng)用代碼中就可以直接”#include “rotary_encoder.h”

結(jié)束語

到此為止我們通過三篇文章可以將Zephyr代碼, Zephyr外部項目,自定義board, 驅(qū)動都納入到一個app的倉庫進行管理,通過一個獨立的app倉庫可以驅(qū)動編譯所必須的代碼,既方便管理,又十分精簡。

如果你使用的SOC都還未被Zephyr支持,也可以將soc的移植納入到應(yīng)用目錄下進行管理,這部分目前我并沒有使用過無法做實例解釋可以參考https://docs.zephyrproject.org/latest/application/index.html#soc-definitions進行操作。

參考

https://github.com/zephyrproject-rtos/zephyr/tree/main/samples/application_development/out_of_tree_driver

https://docs.zephyrproject.org/latest/samples/application_development/out_of_tree_driver/README.html

編輯:jq

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

    關(guān)注

    12

    文章

    1994

    瀏覽量

    88728
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2481

    瀏覽量

    67058
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74417

原文標題:Zephyr應(yīng)用的代碼結(jié)構(gòu)--自定義驅(qū)動

文章出處:【微信號:智芯原動ICETech,微信公眾號:智芯原動ICETech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    自定義卡片編輯組件

    自定義卡片編輯頁面從左到右分為功能區(qū)、預(yù)覽畫布區(qū)和屬性配置區(qū)。 開發(fā)者可以拖動左邊組件圖標到中間畫布區(qū)域,選中中間畫布上某個組件時,右邊會展示該組件的屬性配置,修改屬性配置可以實時在畫布上生效
    發(fā)表于 04-22 11:11

    使用Python/MyHDL創(chuàng)建自定義FPGA IP

    使用 Python/MyHDL 創(chuàng)建自定義 FPGA IP,與 Vivado 集成,并通過 PYNQ 進行控制——實現(xiàn)軟件上的簡單硬件設(shè)計。
    的頭像 發(fā)表于 04-09 09:53 ?285次閱讀
    使用Python/MyHDL創(chuàng)建<b class='flag-5'>自定義</b>FPGA IP

    MCUXpresso SDK創(chuàng)建自定義清單

    概述 MCUXpresso SDK 24.12 介紹塞德恩漢CED支持自定義清單,使開發(fā)人員能夠精確定義其工作區(qū)包含哪些組件、驅(qū)動程序、中間件和板支持包。此功能在極簡主義、可重復(fù)性和
    發(fā)表于 04-07 07:11

    極海APM32F427如何實現(xiàn)自定義USB HID設(shè)備與PC進行通信

    最近需要使用到 APM32F427 枚舉成Custom HID設(shè)備進行用戶自定義通信,但是官方的例程只有提供的HID枚舉為鼠標或者鍵盤類型的設(shè)備。這里記錄一下,怎么使用Geehy官方的USB中間件,實現(xiàn)自定義的USB HID設(shè)備進行用戶通信。
    的頭像 發(fā)表于 03-30 09:30 ?2794次閱讀
    極海APM32F427如何實現(xiàn)<b class='flag-5'>自定義</b>USB HID設(shè)備與PC進行通信

    如何為 Vision Five 2 編譯自定義 Linux 內(nèi)核?

    Vision Five 2 的 Debian 用戶指南只提供了半頁關(guān)于如何編譯自己的內(nèi)核的相當稀疏的內(nèi)容。僅從該文檔,我無法制作我的自定義內(nèi)核。那里的信息似乎相當不完整。如果有人能提供一些
    發(fā)表于 02-24 07:44

    無圖形界面模式下自定義檢查工具的應(yīng)用

    此前文章已介紹 ANSA 自定義檢查工具。本文將探討該功能在無圖形界面(No-GUI)模式下的應(yīng)用,旨在滿足標準化工作流程的需求,適用于需要高度自動化的前處理場景。通過集成自定義檢查,用戶可實現(xiàn)工作流程的高效自動化運行。
    的頭像 發(fā)表于 11-30 14:13 ?800次閱讀
    無圖形界面模式下<b class='flag-5'>自定義</b>檢查工具的應(yīng)用

    采用匯編指示符來使用自定義指令

    * 使用riscv-nuclei-elf-objdump -d a.out &gt; main.dump命令查看反匯編代碼,結(jié)果如下所示 如圖所示,在指定位置插入了自定義的指令數(shù)據(jù)。 2
    發(fā)表于 10-28 06:02

    如何在e203 SOC添加自定義外設(shè)

    如何在E203 添加自定義的外設(shè),困擾已久,以下是一個從別處借鑒而來的方法: 1、設(shè)計好自定義外設(shè)的RTL后,在其中添加ICB總線的握手協(xié)議和讀寫寄存器。 2、設(shè)計一個對外接口,用來設(shè)定
    發(fā)表于 10-20 10:38

    代碼實現(xiàn)茶吧機自定義語音控制定制

    代碼實現(xiàn)茶吧機自定義語音控制定制 前言 茶吧機集成離線語音控制,核心是通過自然語音交互替代手動操作實現(xiàn)全方位體驗升級 —— 既無需起身即可完成燒水、調(diào)溫等操作,省去傳統(tǒng)多步按鍵調(diào)試的繁瑣,又依托
    的頭像 發(fā)表于 10-17 16:43 ?1471次閱讀
    零<b class='flag-5'>代碼</b>實現(xiàn)茶吧機<b class='flag-5'>自定義</b>語音控制定制

    如何使用SDK進行自定義音頻播放功能

    在上一篇文章安信可離線語音模組 VC-01、VC-02 系列教程 【二次開發(fā)篇】自定義音頻替換失敗過程,簡要概述了res_build_tool.py 文件, 其主要的作用就是將音頻文件進行轉(zhuǎn)換,從而使編譯固件的時候能夠?qū)⒁纛l文件編譯到BIN
    的頭像 發(fā)表于 09-25 15:52 ?4456次閱讀
    如何使用SDK進行<b class='flag-5'>自定義</b>音頻播放功能

    LOTO示波器自定義解碼功能—CANFD解碼

    /?spm_id_from=333.1365.list.card_archive.click 。 視頻僅對串口進行解碼演示,正好我們從客戶手中拿到了一塊USB轉(zhuǎn)CAN/CANFD模塊,如下圖所示, 本文借此對自定義解碼功能
    的頭像 發(fā)表于 07-11 10:34 ?1221次閱讀
    LOTO示波器<b class='flag-5'>自定義</b>解碼功能—CANFD解碼

    大彩講堂:VisualTFT軟件如何自定義圓形進度條

    VisualTFT軟件如何自定義圓形進度條
    的頭像 發(fā)表于 07-07 17:10 ?1969次閱讀
    大彩講堂:VisualTFT軟件如何<b class='flag-5'>自定義</b>圓形進度條

    KiCad 自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand 在 KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細講解了自定義規(guī)則的設(shè)計與實例。? ” ? 演講主要圍繞 加強 KiCad 自定義
    的頭像 發(fā)表于 06-16 11:17 ?2595次閱讀
    KiCad <b class='flag-5'>中</b>的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應(yīng)用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認鍵盤的解決方案,可實現(xiàn)鍵盤個性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習慣,對按鍵布局進行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護層面,自定義鍵盤可以
    的頭像 發(fā)表于 06-05 14:19 ?2665次閱讀

    如何使用自定義設(shè)置回調(diào)函數(shù)?

    你好,我正在嘗試編寫自己的自定義設(shè)置回調(diào)函數(shù),并使用 fastEnum=false。 是否有任何代碼示例或資料可供我參考? void CyU3PUsbRegisterSetupCallback
    發(fā)表于 05-21 06:11
    共和县| 金秀| 山丹县| 五寨县| 深州市| 遵义市| 呼图壁县| 神木县| 隆子县| 平凉市| 南充市| 涪陵区| 全南县| 东丽区| 邳州市| 华宁县| 巫溪县| 叙永县| 怀化市| 涞源县| 信丰县| 大方县| 枞阳县| 志丹县| 涿州市| 华容县| 台安县| 玉龙| 息烽县| 拜泉县| 珠海市| 福清市| 阳高县| 鹿泉市| 怀来县| 三台县| 连平县| 上虞市| 彭泽县| 奈曼旗| 孝感市|