主頁 >  其他 > JN5169 JN-AN-1217-Zigbee-3-0-Base-Device

JN5169 JN-AN-1217-Zigbee-3-0-Base-Device

2021-06-16 09:14:50 其他

JN5169 JN-AN-1217-Zigbee-3-0-Base-Device

  • 一、JN-AN-1217 介紹
  • 二、設備描述
    • 1、路由器
      • ① 路由器功能
      • ② 組建或加入網路
        • a、使用網路引導加入現有網路
        • b、使用 NFC 加入現有網路
        • c、組建分布式網路
      • ③ 允許其他設備加入網路
      • ④ 系結設備
      • ⑤ 操作設備
      • ⑥ 重新加入網路
      • ⑦ 恢復出廠設定
    • 2、協調器
      • ① 協調器功能
      • ② 組建網路
      • ③ 允許其他節點加入
      • ④ 系結節點
      • ⑤ 操作設備
      • ⑥ 重新加入網路
      • ⑦ 恢復出廠設定
      • ⑧ 串行介面命令匯總
    • 3、終端設備
      • ① 終端設備功能
      • ② 加入網路
        • a、使用網路引導加入現有網路
        • b、使用 NFC 加入現有網路
      • ③ 允許其他設備加入網路
      • ④ 系結設備
      • ⑤ 操作設備
      • ⑥ 重新加入網路
      • ⑦ 恢復出廠設定
  • 三、安裝代碼
  • 四、使用應用說明進行開發
    • 1、通用代碼
    • 2、NTAG 檔案夾(AES 格式)
    • 3、NFC 檔案夾(ZigBee 安裝代碼格式)
    • 4、協調器應用代碼
      • ① 命令列構建選項
    • 5、路由器應用代碼
      • ① 命令列構建選項
    • 6、終端設備應用代碼
      • ① 命令列構建選項
  • 五、IO 說明
    • 1、按鍵 IO
    • 2、USB Dongle LED IO
    • 3、路由器 White LEDs IO
    • 4、IO 使用一覽表(JN516x)
  • 六、開啟串口除錯輸出

一、JN-AN-1217 介紹

JN-AN-1217 提供了示例應用,以演示使用 NXP JN516x 或 JN517x 無線微控制器的 ZigBee 3.0 網路中基本設備的功能和操作, 一個示例應用程式可以用作:

  • 使用可在 JN516x/7x 評估套件的節點上運行的提供的預構建二進制檔案的演示,
  • 使用提供的C 源檔案和相關專案檔案進行自定義應用程式開發的起點,

JN-AN-1217 中描述的設備為協調器、路由器和終端設備提供了 ZigBee 基本設備行為規范的標準強制性功能,它們沒有實作完整的真實設備,但提供了 ZigBee 基礎設備的強制性功能,可以在其上構建和進一步開發應用程式,

ZigBee 3.0 無線網路包括許多在硬體平臺上實作以形成節點的 ZigBee 軟體設備,JN-AN-1217 涉及在 NXP JN516x 和 JN517x 平臺上實施 ZigBee 基礎設備,

JN-AN-1217 提供了以下 ZigBee 邏輯設備型別的示例實作:

  • 協調員
  • 路由器
  • 終端設備

上述設備型別的示例不是真實世界的設備,如 ZigBee 照明和占用設備規范中定義的設備,但提供了 ZigBee 基本設備行為規范所需的基本行為,它們作為模板提供,進一步開發為真實的物理設備, ZigBee 基礎設備在 ZigBee 3.0 設備用戶指南 [JN-UG-3114] 中進行了介紹和詳細說明,

ZigBee 基本設備行為規范提供了用于形成、加入和維護 ZigBee 3.0 網路的定義、程式和方法,它還定義了服務發現的方法,將操作集群的客戶端和服務器系結在一起,以實作物理設備的功能,

二、設備描述

1、路由器

本節介紹如何在 ZigBee 3.0 網路中除錯和操作路由器應用程式, 要使用此應用程式,您必須已將應用程式 Router_NtagIcode_JN51xx_DR1175.bin 編程到裝有 DR1175 照明/傳感器擴展板的載板上的 JN516x/7x 模塊中,

① 路由器功能

路由器應用程式的功能在下面進行了描述和說明,

路由器可以加入現有網路,也可以決定自己形成分布式網路供其他節點加入, 有關集中式信任中心網路和分布式網路之間差異的詳細資訊,請參閱 ZigBee 設備用戶指南 [JN-UG-3114],

路由器支持 ZigBee 基本設備行為規范中定義的基本設備的強制性集群和功能, 為了演示“查找和系結”功能,路由器還支持將開/關集群作為服務器,

② 組建或加入網路

路由器既可以加入現有網路,也可以在沒有網路的情況下形成分布式網路供其他設備加入,

a、使用網路引導加入現有網路

一旦網路開放以接受新加入者(網路上的設備的網路轉向),出廠新路由器就可以加入現有網路, 這是通過以下方式實作的:

  1. 在已經在網路上的設備之一上觸發網路轉向,
  2. 然后重置(使用 RST 或 RESET 按鈕)或打開路由器設備的電源,

這將導致路由器啟動網路發現和關聯程序,關聯之后是安全材料的交換和信任中心鏈接密鑰的更新(如果加入集中信任中心網路,

如果加入不成功,可以通過重新通電重新嘗試, 或者,可以遵循形成分布式網路的程序,

b、使用 NFC 加入現有網路

路由器可以通過與 ZigBee 物聯網網關主機交換 NFC 資料加入或移動到現有網路,如應用說明 ZigBee 物聯網網關主機與 NFC (JN-AN-1222) 中所述, 這提供了一種將新設備引入這種網路的快速方便的方法,

確保為 NFC 設定硬體,

c、組建分布式網路

Router 可以在沒有開放網路加入的情況下組成分布式網路,要在全新出廠的設備上實作此目的:

  • 按下載板上的 DIO8/GPIO4 按鈕(該按鈕也用于啟動網路轉向以及查找和系結,如下所述),

路由器將使用隨機網路密鑰形成網路并開始運行, 要允許其他設備加入此網路,請按照下一節中的說明進行操作,

③ 允許其他設備加入網路

一旦路由器成為網路的一部分,就必須打開網路以允許其他設備加入(網路上的網路轉向), 去做這個:

  • 按下載板上的 DIO8/GPIO4 按鈕(同一個按鈕也用于啟動查找和系結)

然后路由器將向網路廣播管理許可加入請求,以打開“許可加入”視窗 180 秒, 現在可以在要加入網路的設備上觸發網路引導程序(對于不在網路上的設備),

④ 系結設備

Router 支持 On/Off 集群作為服務器,實作 Finding 和 Binding 程序作為Target,要將 Finding 和 Binding 作為目標觸發,請執行以下操作:

  1. 按下所有目標設備載板上的 DIO8/GPIO4 按鈕(同一個按鈕也用于啟動 Network Steering),
  2. 在啟動器設備上開始查找和系結,

這將導致路由器自我識別 180 秒,而發起者將嘗試找到識別設備,查詢它們的功能并在具有匹配操作集群的設備上創建系結,作為該程序的一部分,路由器可以接收添加組命令和/或系結請求命令,

報告是 ZigBee 3.0 中的一項強制性功能,路由器支持 On/Off 集群作為服務器,并且該集群的 OnOff 屬性是 ZigBee Base Device Behavior Specification 中定義的可報告屬性,路由器擁有用于報告 OnOff 屬性狀態的默認配置,一旦希望接收這些定期和變化報告的設備創建了遠程系結,路由器將開始向此系結設備發送報告,報告的頻率取決于各個目標設備的默認報告配置,在本例中為 60 秒,接收報告的設備可以通過發送報告配置命令來請求更改,

⑤ 操作設備

本演示中該設備的操作功能由 On/Off 集群提供, 由于設備支持 On/Off 集群服務器,它的操作是被動的,它回應系結設備發送的命令, 它通過切換 DR1175 照明/傳感器擴展板上的白燈來回應來自系結控制器設備的 OnOff Toggle 命令,

⑥ 重新加入網路

作為路由器,當該設備在非出廠狀態下重新啟動時,它只會恢復其先前狀態的運行, 所有應用程式、系結、組和網路引數都保存在非易失性存盤器中,

⑦ 恢復出廠設定

路由器可以回傳到其出廠新狀態(擦除除傳出網路幀計數器之外的所有持久資料),如下所示:

  • 按住DIO8/GPIO4 按鈕并按下載板上的RST 按鈕,

然后路由器將在舊網路上廣播離開指示,然后洗掉所有持久資料(傳出網路幀計數器除外)并執行軟體重置,

有兩種支持的無線命令可用于從網路中洗掉設備 - 它們是:

  • 無需重新加入的網路離開請求
  • ZDO 管理網路離開請求,無需重新加入

基本集群的重置命令將導致 ZCL 重置為其出廠新默認值,重置所有屬性和配置的報告, 這不會從網路中洗掉設備 - 所有網路引數、組和系結都將保留在原位,

2、協調器

本節介紹如何在 ZigBee 3.0 網路中除錯和操作 Coordinator 應用程式, 要使用此應用程式,必須已將應用程式二進制檔案編程到相關的物理設備中——以下任一項:

  • Coordinator_JN51xx_DR1199.bin 插入裝有 DR1199 通用擴展板的載板上的 JN516x/7x 模塊
  • Coordinator_JN51xx_DONGLE.bin 到 JN5169/79 USB Dongle

① 協調器功能

Coordinator 應用程式的功能在下面進行了描述和說明,



協調器負責最初形成網路,然后通過信任中心功能管理允許哪些其他設備加入網路并向允許加入的設備分發安全材料,協調器支持 ZigBee 基本設備行為規范中定義的基本設備的強制性集群和功能,

為了演示“查找和系結”功能,協調器還支持 On/Off 集群作為客戶端,

Coordinator 提供了兩種觸發其功能的方法:

  • 使用來自連接到協調器硬體的主機終端上的串行介面的命令——如果協調器應用程式被編程到 JN5169/JN5179 USB Dongle,這是唯一可用的介面, 串行介面不區分大小寫,
  • 使用DR1199 通用擴展板上的按鈕——這顯然只有在將協調器應用程式編程到載板上的JN516x/7x 模塊時才可用,

② 組建網路

根據所使用的硬體,可以通過以下任一方式從出廠時的新協調器(不在網路上的網路轉向)形成網路:

  • 按下DR1174/OM15028 載板上的按鈕DIO8/GPIO4,
  • 在串行介面(Dongle 或載板)上輸入“form”,

然后協調器將啟動一個網路, 使用資料包嗅探器(例如,在 JN5169 USB Dongle 上),然后可以在操作通道上觀察周期性鏈接狀態訊息,

③ 允許其他節點加入

網路形成后,必須打開網路以允許其他設備通過以下任一方式加入(網路上的網路轉向),具體取決于所使用的硬體:

  • 按下DR1199 通用擴展板上的按鈕SW2,
  • 在串行介面(Dongle 或載板)上輸入“steer”,

然后協調器將向網路廣播管理許可加入請求,以打開“許可加入”視窗 180 秒, 現在可以在要加入網路的設備上觸發網路引導程序(對于不在網路上的設備),

④ 系結節點

“查找和系結”是控制設備通過匹配操作集群來查找受控設備并在系結表中創建條目的程序, Coordinator 支持將 Finding 和 Binding 作為嘗試找到要系結的目標的“發起者”,出于演示的目的,Coordinator 支持 On/Off 集群作為客戶端,因此 Finding 和 Binding 程序將尋找支持 On/Off 集群作為服務器的設備以創建系結,

要作為發起方開始查找和系結,首先在任何“目標”設備上觸發查找和系結,然后在協調器(發起方)上執行以下任一操作:

  • 按下DR1199 通用擴展板上的按鈕SW4,
  • 在串行介面(Dongle 或DR1199)上輸入“find”,

當目標的查找和系結完成并創建了系結時,協調器將向目標設備發送識別關閉命令,以表示目標的程序完成,根據正在創建的系結型別(單播或組播),可以向目標設備發送添加組命令,

報告是 ZigBee 3.0 中的一項強制性功能,希望從操作服務器接收定期和更改報告的設備應在目標設備上為自己創建遠程系結,此協調器將向具有開/關集群服務器的目標發送系結請求,然后它將從該設備接收定期和變化報告,報告 On/Off 集群的 OnOff 屬性 (0x0000) 的狀態,報告的頻率取決于各個目標設備的默認報告配置,接收報告的設備可以通過發送報告配置命令來請求更改,

⑤ 操作設備

本演示中該設備的操作功能由 On/Off 集群提供, 您現在可以通過以下任一方式向系結設備(在系結表中)發送 OnOff Toggle 命令:

  • 按下DR1199 通用擴展板上的按鈕SW1,
  • 在串行介面(Dongle 或DR1199)中輸入“toggle”,

此命令對系結設備的影響取決于與設備上的開/關集群相關的功能——對于本演示中的路由器,它將切換一個燈,

⑥ 重新加入網路

作為協調器,當此設備在非出廠狀態下重新啟動時,它只會恢復其先前狀態的操作, 所有應用程式、系結、組和網路引數都保存在非易失性存盤器中,

⑦ 恢復出廠設定

根據所使用的硬體,可以通過以下任一方式將協調器回傳到其出廠新狀態(擦除除傳出網路幀計數器之外的所有持久資料):

  • 按住DIO8/GPIO4 按鈕并按下載板上的RST 按鈕
  • 在串行介面(Dongle 或DR1199)上輸入““factory reset”

⑧ 串行介面命令匯總

按鈕串行命令操作
SW1Toggle向系結設備發送 OnOff Toggle 命令
SW2Steer觸發網路上設備的網路轉向
SW3Form為不在網路上的設備觸發網路形成
SW4Find觸發查找和系結作為發起者
Reset+DIO8Factory Reset將設備恢復出廠設定,擦除持久資料
ResetSoft Reset觸發軟體復位(不丟失資料)
-Print將 Aps 密鑰表列印到終端
-Code < MAC > < Install Code >將安裝代碼提供到 Aps 密鑰表中

串口設定為使用 115200 波特率,8 個資料位,1 個停止位,無奇偶校驗, 串行命令不區分大小寫, 安裝代碼可以輸入為 16 個十六進制位元組,沒有分隔符、逗號或冒號,

3、終端設備

本節介紹如何在 ZigBee 3.0 網路中除錯和操作終端設備應用程式, 要使用此應用程式,您必須已將應用程式 EndDevice_NtagIcode_JN51xx_DR1199.bin 編程到裝有 DR1199 通用擴展板的載板上的 JN516x/7x 模塊中,

① 終端設備功能

終端設備應用程式的功能在下面進行了描述和說明,


終端設備是一個休眠的“空閑時關閉接收”設備,它無法形成網路或成為加入網路的其他設備的父設備, 終端設備支持 ZigBee 基礎設備行為規范中定義的基礎設備的強制性集群和功能,

為了演示“查找和系結”功能,終端設備還支持作為客戶端的開/關集群,

到/來自終端設備的所有通信都通過其父協調器或路由器傳遞,并且終端設備必須定期向父設備發送輪詢請求,以便接收可能正在等待它的任何訊息, 終端設備實作混合睡眠模式 - 在最扯訓醒后的短時間內,它將執行一系列 warm sleep 周期,然后在定時器或 DIO 更改時將其喚醒,但在此之后它將進入深度睡眠模式直到喚醒 通過 DIO 更改,

② 加入網路

a、使用網路引導加入現有網路

一旦網路開放以接受新加入者(網路上的設備的網路轉向),出廠新的終端設備就可以加入現有網路, 這是通過以下方式實作的:

  1. 在已經在網路上的設備之一上觸發網路轉向,
  2. 按下終端設備的 DR1199 通用擴展板上的按鈕 SW2,

b、使用 NFC 加入現有網路

終端設備可以通過與 ZigBee 物聯網網關主機交換 NFC 資料加入或移動到現有網路,如應用說明 ZigBee 物聯網網關主機與 NFC (JN-AN-1222) 中所述, 這提供了一種將新設備引入這種網路的快速方便的方法,

確保為 NFC 設定硬體,

此程序的說明包含在應用說明 (JN-AN-1222) 中,

③ 允許其他設備加入網路

一旦終端設備成為網路的一部分,終端設備就可以請求打開網路以允許其他設備加入(網路上的網路轉向),去做這個:

  • 按下終端設備的 DR1199 通用擴展板上的按鈕 SW2,

然后,終端設備將向其父設備單播管理許可加入請求, 然后,父設備會將其重新廣播到網路并打開“允許加入”視窗 180 秒, 現在可以在要加入網路的設備上觸發網路引導程序(對于不在網路上的設備), 終端設備能夠向新加入者開放網路,但它不能成為這些新加入者的父設備,

④ 系結設備

終端設備支持“查找和系結”作為嘗試查找要系結到的目標的發起方,出于演示的目的,終端設備支持 On/Off 集群作為客戶端,因此 Finding 和 Binding 程序將尋找支持 On/Off 集群作為服務器的設備以創建系結,

要在終端設備上作為發起方觸發查找和系結,首先在任何目標設備上觸發查找和系結,然后在終端設備上執行以下操作:

  • 按下終端設備的 DR1199 通用擴展板上的按鈕 SW4

當目標的查找和系結完成并創建系結時,終端設備將向目標設備發送識別關閉命令,以表示此目標的程序已完成,根據正在創建的系結型別(單播或組播),可以向目標發送添加組命令,報告是 ZigBee 3.0 中的強制性功能,但請求將報告發送到設備不是強制性的,作為休眠設備,終端設備很可能處于休眠狀態并且無法接收任何報告,因此該設備不會在目標設備上創建系結以供它們發送報告,

⑤ 操作設備

本演示中該設備的操作功能由 On/Off 集群提供, 您現在可以向系結的系結設備(在系結表中)發送 OnOff Toggle 命令,如下所示:

  • 按下DR1199 通用擴展板上的按鈕SW1,

此命令對系結設備的影響取決于與設備上的開/關集群相關的功能——對于本演示中的路由器,它將切換一個燈,

⑥ 重新加入網路

作為終端設備,當該設備在非出廠狀態下重啟時,它會發送網路重新加入請求以重新建立與其前一個父設備的聯系, 如果失敗,它將嘗試加入網路上將托管它的任何路由器, 在開機和從深度睡眠中喚醒時嘗試重新加入, 所有應用程式、系結、組和網路引數都保存在非易失性存盤器中,

⑦ 恢復出廠設定

終端設備可以回傳到其出廠新狀態(擦除除傳出網路幀計數器之外的所有持久資料),如下所示:

  • 按住DIO8/GPIO4 按鈕并按下載板上的RST 按鈕,

然后,終端設備將向其父設備單播離開指示,該設備將將此訊息重新廣播到舊網路, 終端設備然后將洗掉所有持久資料(除了傳出網路幀計數器)并執行軟體重置,

有兩種支持的無線命令可用于從網路中洗掉設備 - 它們是:

  • 無需重新加入的網路離開請求
  • ZDO 管理網路離開請求,無需重新加入

基本集群的重置命令將導致 ZCL 重置為其出廠新默認值,重置所有屬性和配置的報告, 這不會從網路中洗掉設備 - 所有網路引數、組和系結都將保留在原位,

三、安裝代碼

ZigBee 基礎設備允許設備使用唯一的安裝代碼而不是眾所周知的默認鏈接密鑰加入網路, 此安裝代碼僅用于初始加入,并在加入后立即被信任中心替換為新的唯一鏈接密鑰,以確保信任中心和單個設備之間的未來通信, 安裝代碼的長度為 16 個位元組,

每個加入的設備(路由器或終端設備)都必須有一個唯一的安裝代碼, 如何在真實設備中生成和配置此代碼超出了本應用筆記的范圍, 出于演示的目的,每個加入的設備都將創建一個安裝代碼,該代碼是其 8 位元組 IEEE/MAC 地址重復一次, 例如,IEEE/MAC 地址為 00158D000035C9B8 的設備將生成以下安裝代碼:

00:15:8D:00:00:35:C9:B8:00:15:8D:00:00:35:C9:B8

在使用安裝碼的設備加入網路之前,需要將該設備的 IEEE/MAC 地址和安裝碼添加到網路的信任中心, 串行介面提供了執行此操作的命令, 該命令的格式為:

Code <MAC Address> <Install code>
  • < MAC Address > 是設備的IEEE/MAC 地址(MSB 在前,字母字符不區分大小寫),
  • < Install code > 是安裝代碼(MSB 在前,字母字符不區分大小寫,位元組之間可以用冒號(‘:’)、逗號(‘,’)或空分隔),

對于具有上述 IEEE/MAC 地址的設備,命令為:

Code 00158D000035C9B8 00,15,8D,00,00,35,C9,B8, 00,15,8D,00,00,35,C9,B8

在信任中心提供安裝代碼和 IEEE/MAC 地址后,可以遵循將新設備加入網路的正常程式,

使用安裝代碼加入新設備后,它將被新的信任中心鏈接密鑰替換(安裝代碼將被丟棄且不會存盤以供重復使用), 如果設備恢復出廠設定,則在信任中心中重新提供安裝代碼之前,它將無法與網路重新關聯,

要構建本應用說明中的設備以使用安裝代碼進行連接,請編輯每個設備的命令列以設定構建選項 ICODE=1,然后清理并重建每個設備,

四、使用應用說明進行開發

JN-AN-1217-Zigbee-3-0-Base-Device 檔案目錄結構

JN-AN-1217-Zigbee-3-0-Base-Device 專案工程結構

1、通用代碼

本節列出并描述了提供本應用筆記中所有設備通用功能的源檔案,這些檔案保存在 Common/source 目錄中,

檔案名描述
App.zpscfgApp.zpscfg 是 ZigBee 堆疊的組態檔, 對于應用程式中的每個設備,它定義了所有必需的堆疊引數、表大小、服務器等,該檔案作為構建程序的一部分進行處理,并創建要構建到每個設備中的特定于設備的源檔案,
app_buttons.capp_buttons.c 提供了一個介面來讀取擴展板上的開關/按鈕并將按鈕按下事件發布到應用程式事件佇列,
app_events.happ_events.h 包含應用程式事件的型別定義,
app_ntag_aes.capp_ntag_aes.c 包含驅動 NFC 除錯資料交換并在從 NTAG 讀取有效資料時啟動加入程序的代碼, 此代碼使用較舊的 NTAG 資料格式,該格式采用 AES 加密并且未在默認版本中使用,
app_ntag_icode.capp_ntag_icode.c 包含驅動 NFC 除錯資料交換并在從 NTAG 讀取有效資料時啟動加入程序的代碼, 此代碼使用較新的 NTAG 資料格式,該格式采用 ZigBee 安裝代碼加密并用于默認構建,
app_pdm.capp_pdm.c 為持久資料管理器 (PDM) 提供錯誤事件回呼,以便將 PDM 的狀態通知給應用程式,
PDM_IDs.hPDM_IDs.h 為 PDM 中的所有資料記錄提供唯一識別符號,

2、NTAG 檔案夾(AES 格式)

包含用于 NFC 的公共 API 的 NTAG 庫和頭檔案保存在 NTAG 目錄中, 此代碼使用較舊的 NTAG 資料格式,該格式采用 AES 加密并且未在默認版本中使用,

3、NFC 檔案夾(ZigBee 安裝代碼格式)

包含 NFC 公共 API 的 NFC 庫和頭檔案保存在 NFC 目錄中, 此代碼使用較新的 NTAG 資料格式,該格式采用 ZigBee 安裝代碼加密并用于默認構建,

這些 API 和 app_ntag_icode.c/h API 的檔案可以在本應用筆記的 Doc 目錄中的 NFC.chm 幫助檔案中找到,

4、協調器應用代碼

本節列出并描述了 Coordinator 應用程式代碼的源檔案,這些檔案在應用程式的 Source 目錄中提供, 您可能希望使用此代碼作為您自己的應用程式開發的基礎,

檔案名描述
app_main.capp_main.c 承載主程式回圈,并定義和初始化系統資源、佇列、計時器等,
app_start.capp_start.c 管理 JN516x/7x 芯片啟動,呼叫初始化函式并啟動主程式回圈,
app_coordinator.capp_coordinator.c 承載應用程式和基本設備回呼的事件處理程式,在基礎設備完成任何所需的處理后,基礎設備回呼接識訓礎設備事件和 AF 堆疊事件,然后這些事件可以由應用程式進一步處理,事件包括傳遞給 ZCL 以進行處理和網路管理事件(例如“網路形成”和“新節點已加入”)的資料指示,以便讓應用程式了解網路狀態,處理應用程式事件佇列以接收按鈕按下事件,
app_zcl_task.capp_zcl_task.c 托管特定于設備的 ZCL 初始化和回呼函式, ZCL 回呼將收到的 ZCL 命令和回應的結果通知應用程式,以便應用程式可以采取適當的操作, ZCL 滴答定時器用于為 ZCL 提供滴答以管理與定時器相關的事件或狀態轉換,
app_serial_commands.capp_serial_commands.c 提供串行介面的命令解釋器 - 在適當的情況下,串行命令創建應用程式按鈕按下事件以觸發所需的操作,
uart.cuart.c 接收并處理串行介面上??傳輸的字符,
irq_JN516x.sirq_JN516x.s 定義支持和服務哪些 JN516x 硬體中斷,以及優先級,這是由兩個表定義的 - 一個中斷優先級表和一個處理程式函式表,該檔案不用于 JN517x,
bdb_options.hbdb_options.h 定義基本設備使用的引數,例如主要和次要通道掩碼,
zcl_options.hzcl_options.h 定義了 ZCL 的特性,例如支持哪些集群,是客戶端還是服務器,以及支持哪些可選命令和屬性,所選集群的必需命令和屬性將自動包含在內,

① 命令列構建選項

以下命令列選項可用于配置構建的設備:

命令描述
JENNIC_CHIP_FAMILY=JN516x為 JN516x 微控制器構建
JENNIC_CHIP_FAMILY=JN517x用于構建 JN517x 微控制器
JENNIC_CHIP=JN5169為 JN5169 微控制器構建
JENNIC_CHIP=JN5168為 JN5168 微控制器構建
JENNIC_CHIP=JN5164為 JN5164 微控制器構建
JENNIC_CHIP=JN5179為 JN5179 微控制器構建
JENNIC_CHIP=JN5178為 JN5178 微控制器構建
JENNIC_CHIP=JN5174為 JN5174 微控制器構建
DR=DR1199為基于 DR1199 擴展板的硬體構建(默認)
DR=DONGLE為基于 USB 加密狗的硬體構建
GROUPS=0構建以便系結命令使用單播傳輸
GROUPS=1構建以便系結命令使用組播傳輸
ICODES=0進行構建,以便不使用安裝代碼
ICODES=1進行構建,以便使用安裝代碼

5、路由器應用代碼

本節列出并描述了路由器應用程式代碼的源檔案,這些檔案在應用程式的源目錄中提供, 您可能希望使用此代碼作為您自己的應用程式開發的基礎,

檔案名描述
app_main.capp_main.c 承載主程式回圈,并定義和初始化系統資源、佇列、計時器等,
app_start.capp_start.c 管理 JN516x/7x 芯片啟動,呼叫初始化函式并啟動主程式回圈,
app_router_node.capp_router_node.c 承載應用程式和基本設備回呼的事件處理程式,在基礎設備完成任何所需的處理后,基礎設備回呼接識訓礎設備事件和 AF 堆疊事件,然后這些事件可以由應用程式進一步處理,事件包括傳遞給 ZCL 以進行處理和網路管理事件(例如“網路形成”和“新節點已加入”)的資料指示,以便讓應用程式了解網路狀態,處理應用程式事件佇列以接收按鈕按下事件,
app_zcl_task.capp_zcl_task.c 托管特定于設備的 ZCL 初始化和回呼函式, ZCL 回呼將收到的 ZCL 命令和回應的結果通知應用程式,以便應用程式可以采取適當的操作, ZCL 滴答定時器用于為 ZCL 提供滴答以管理與定時器相關的事件或狀態轉換,
app_reporting.capp_reporting.c 為設備的報告功能提供支持,當收到配置報告命令時,它管理報告配置的恢復和任何更改的保存,
irq_JN516x.sirq_JN516x.s 定義支持和服務哪些 JN516x 硬體中斷,以及優先級,這是由兩個表定義的 - 一個中斷優先級表和一個處理程式函式表,該檔案不用于 JN517x,
bdb_options.hbdb_options.h 定義基本設備使用的引數,例如主要和次要通道掩碼,
zcl_options.hzcl_options.h 定義了 ZCL 的特性,例如支持哪些集群,是客戶端還是服務器,以及支持哪些可選命令和屬性,所選集群的必需命令和屬性將自動包含在內,

① 命令列構建選項

以下命令列選項可用于配置構建的設備:

命令描述
JENNIC_CHIP_FAMILY=JN516x為 JN516x 微控制器構建
JENNIC_CHIP_FAMILY=JN517x用于構建 JN517x 微控制器
JENNIC_CHIP=JN5169為 JN5169 微控制器構建
JENNIC_CHIP=JN5168為 JN5168 微控制器構建
JENNIC_CHIP=JN5164為 JN5164 微控制器構建
JENNIC_CHIP=JN5179為 JN5179 微控制器構建
JENNIC_CHIP=JN5178為 JN5178 微控制器構建
JENNIC_CHIP=JN5174為 JN5174 微控制器構建
ICODES=0進行構建,以便不使用安裝代碼
ICODES=1進行構建,以便使用安裝代碼
APP_NTAG_ICODE=0構建不支持 NTAG/NFC(ZigBee 安裝代碼格式)
APP_NTAG_ICODE=1構建 NTAG/NFC(ZigBee 安裝代碼格式)支持(這是默認選項)
APP_NTAG_AES=0構建不支持 NTAG/NFC(AES 加密格式)(這是默認選項)
APP_NTAG_AES=1使用 NTAG/NFC(AES 加密格式)支持構建

6、終端設備應用代碼

本節列出并描述了終端設備應用程式代碼的源檔案,這些檔案在應用程式的源目錄中提供, 您可能希望使用此代碼作為您自己的應用程式開發的基礎,

檔案名描述
app_main.capp_main.c 承載主程式回圈,并定義和初始化系統資源、佇列、計時器等,
app_start.capp_start.c 管理 JN516x/7x 芯片啟動,呼叫初始化函式并啟動主程式回圈,
app_end_device_node.capp_end_device_node.c 承載應用程式和基本設備回呼的事件處理程式,在基礎設備完成任何所需的處理后,基礎設備回呼接識訓礎設備事件和 AF 堆疊事件,然后這些事件可以由應用程式進一步處理,事件包括傳遞給 ZCL 以進行處理和網路管理事件(例如“網路形成”和“新節點已加入”)的資料指示,以便讓應用程式了解網路狀態,處理應用程式事件佇列以接收按鈕按下事件,
app_zcl_task.capp_zcl_task.c 托管特定于設備的 ZCL 初始化和回呼函式, ZCL 回呼將收到的 ZCL 命令和回應的結果通知應用程式,以便應用程式可以采取適當的操作, ZCL 滴答定時器用于為 ZCL 提供滴答以管理與定時器相關的事件或狀態轉換,
irq_JN516x.sirq_JN516x.s 定義支持和服務哪些 JN516x 硬體中斷,以及優先級,這是由兩個表定義的 - 一個中斷優先級表和一個處理程式函式表,該檔案不用于 JN517x,
bdb_options.hbdb_options.h 定義基本設備使用的引數,例如主要和次要通道掩碼,
zcl_options.hzcl_options.h 定義了 ZCL 的特性,例如支持哪些集群,是客戶端還是服務器,以及支持哪些可選命令和屬性,所選集群的必需命令和屬性將自動包含在內,

① 命令列構建選項

以下命令列選項可用于配置構建的設備:

命令描述
JENNIC_CHIP_FAMILY=JN516x為 JN516x 微控制器構建
JENNIC_CHIP_FAMILY=JN517x為 JN517x 微控制器構建
JENNIC_CHIP=JN5169為 JN5169 微控制器構建
JENNIC_CHIP=JN5168為 JN5168 微控制器構建
JENNIC_CHIP=JN5164為 JN5164 微控制器構建
JENNIC_CHIP=JN5179為 JN5179 微控制器構建
JENNIC_CHIP=JN5178為 JN5178 微控制器構建
JENNIC_CHIP=JN5174為 JN5174 微控制器構建
GROUPS=0構建以便系結命令使用單播傳輸
GROUPS=1構建以便系結命令使用組播傳輸
ICODES=0進行構建,以便不使用安裝代碼
ICODES=1進行構建,以便使用安裝代碼
APP_NTAG_ICODE=0構建不支持 NTAG/NFC(ZigBee 安裝代碼格式)
APP_NTAG_ICODE=1構建 NTAG/NFC(ZigBee 安裝代碼格式)支持(這是默認選項)
APP_NTAG_AES=0構建不支持 NTAG/NFC(AES 加密格式)(這是默認選項)
APP_NTAG_AES=1使用 NTAG/NFC(AES 加密格式)支持構建

五、IO 說明

1、按鍵 IO

按鍵介面代碼在 Common/Source 檔案夾下的 app_buttons.c / h 檔案

在 app_buttons.h 檔案內,可以看到按鍵 IO 的具體定義

#if (defined BUTTON_MAP_DR1199)
    #if (defined APP_NTAG_ICODE) || (defined APP_NTAG_AES)
        typedef enum {
            APP_E_BUTTONS_BUTTON_1 = 0,
            APP_E_BUTTONS_BUTTON_SW1,
            APP_E_BUTTONS_BUTTON_SW2,
            APP_E_BUTTONS_BUTTON_SW3,
            APP_E_BUTTONS_BUTTON_SW4,
            APP_E_BUTTONS_NFC_FD
        } APP_teButtons;
        #define APP_BUTTONS_NUM             (6UL)
        #if (JENNIC_CHIP_FAMILY == JN516x)
            #define APP_BUTTONS_BUTTON_1          (8)
            #define APP_BUTTONS_BUTTON_SW1        (11)
            #define APP_BUTTONS_BUTTON_SW2        (12)
            #define APP_BUTTONS_BUTTON_SW3        (17)
            #define APP_BUTTONS_BUTTON_SW4        (1)
            #define APP_BUTTONS_NFC_FD            (0)
        #elif (JENNIC_CHIP_FAMILY == JN517x)
            #define APP_BUTTONS_BUTTON_1          (4)
            #define APP_BUTTONS_BUTTON_SW1        (12)
            #define APP_BUTTONS_BUTTON_SW2        (13)
            #define APP_BUTTONS_BUTTON_SW3        (18)
            #define APP_BUTTONS_BUTTON_SW4        (5)
            #define APP_BUTTONS_NFC_FD            (17)
        #endif
        #define APP_BUTTONS_DIO_MASK                ((1 << APP_BUTTONS_BUTTON_1) | (1 << APP_BUTTONS_BUTTON_SW4) | (1 << APP_BUTTONS_BUTTON_SW3) | (1 << APP_BUTTONS_BUTTON_SW2) | (1 << APP_BUTTONS_BUTTON_SW1) | (1 << APP_BUTTONS_NFC_FD))
        #define APP_BUTTONS_DIO_MASK_FOR_DEEP_SLEEP (                              (1 << APP_BUTTONS_BUTTON_SW4)| (1 << APP_BUTTONS_BUTTON_SW3)  | (1 << APP_BUTTONS_BUTTON_SW2) | (1 << APP_BUTTONS_BUTTON_SW1) | (1 << APP_BUTTONS_NFC_FD))
    #else
        typedef enum {
            APP_E_BUTTONS_BUTTON_1 = 0,
            APP_E_BUTTONS_BUTTON_SW1,
            APP_E_BUTTONS_BUTTON_SW2,
            APP_E_BUTTONS_BUTTON_SW3,
            APP_E_BUTTONS_BUTTON_SW4,
        } APP_teButtons;

        #define APP_BUTTONS_NUM             (5UL)
        #if (JENNIC_CHIP_FAMILY == JN516x)
            #define APP_BUTTONS_BUTTON_1          (8)
            #define APP_BUTTONS_BUTTON_SW1        (11)
            #define APP_BUTTONS_BUTTON_SW2        (12)
            #define APP_BUTTONS_BUTTON_SW3        (17)
            #define APP_BUTTONS_BUTTON_SW4        (1)
        #elif (JENNIC_CHIP_FAMILY == JN517x)
            #define APP_BUTTONS_BUTTON_1          (4)
            #define APP_BUTTONS_BUTTON_SW1        (12)
            #define APP_BUTTONS_BUTTON_SW2        (13)
            #define APP_BUTTONS_BUTTON_SW3        (18)
            #define APP_BUTTONS_BUTTON_SW4        (5)
        #endif
        #define APP_BUTTONS_DIO_MASK        ((1 << APP_BUTTONS_BUTTON_1)|(1 << APP_BUTTONS_BUTTON_SW4)|(1 << APP_BUTTONS_BUTTON_SW3) | (1 << APP_BUTTONS_BUTTON_SW2) | (1 << APP_BUTTONS_BUTTON_SW1))
        #define APP_BUTTONS_DIO_MASK_FOR_DEEP_SLEEP        ((1 << APP_BUTTONS_BUTTON_SW4)|(1 << APP_BUTTONS_BUTTON_SW3) | (1 << APP_BUTTONS_BUTTON_SW2) | (1 << APP_BUTTONS_BUTTON_SW1))
     #endif
#elif (defined BUTTON_MAP_DR1175)
    #if (defined APP_NTAG_ICODE) || (defined APP_NTAG_AES)
        typedef enum {
            APP_E_BUTTONS_BUTTON_1 = 0,
            APP_E_BUTTONS_NFC_FD
        } APP_teButtons;
        #define APP_BUTTONS_NUM                 (2UL)
        #if (JENNIC_CHIP_FAMILY == JN516x)
            #define APP_BUTTONS_BUTTON_1        (8)
            #define APP_BUTTONS_NFC_FD          (0)
        #elif (JENNIC_CHIP_FAMILY == JN517x)
            #define APP_BUTTONS_BUTTON_1        (4)
            #define APP_BUTTONS_NFC_FD          (17)
        #endif
        #define APP_BUTTONS_DIO_MASK            ((1 << APP_BUTTONS_BUTTON_1) | (1 << APP_BUTTONS_NFC_FD))
        #define APP_BUTTONS_DIO_MASK_FOR_DEEP_SLEEP (                          (1 << APP_BUTTONS_NFC_FD))
    #else
        typedef enum {
            APP_E_BUTTONS_BUTTON_1 = 0
        } APP_teButtons;

        #define APP_BUTTONS_NUM             (1UL)
        #if (JENNIC_CHIP_FAMILY == JN516x)
            #define APP_BUTTONS_BUTTON_1        (8)
        #elif (JENNIC_CHIP_FAMILY == JN517x)
            #define APP_BUTTONS_BUTTON_1            (4)
        #endif
        #define APP_BUTTONS_DIO_MASK        (1 << APP_BUTTONS_BUTTON_1)
    #endif
#else
#error "define a button map for the hardware"
    typedef enum {
        APP_E_BUTTONS_BUTTON_1
    } APP_teButtons;

    #define APP_BUTTONS_NUM             (1UL)
    #define APP_BUTTONS_BUTTON_1        (17)
    #define APP_BUTTONS_DIO_MASK        (1 << APP_BUTTONS_BUTTON_1)
#endif

typedef enum {
    E_INTERRUPT_UNKNOWN,
    E_INTERRUPT_BUTTON,
    E_INTERRUPT_WAKE_TIMER_EXPIRY
} teInterruptType;

從代碼中可以看出,當芯片為 JN516x 時,定義了 BUTTON_MAP_DR1199 且關閉 NFC 和 AES 時,按鍵 IO 定義為:

BUTTON_MAP_DR1199 宏定義在每個專案檔案夾的 Build 檔案夾下的 Makefile 檔案,下面以協調器的為例:


需要開啟編譯命令支持:

2、USB Dongle LED IO

僅協調器支持 USB Dongle 板,USB Dongle 有兩個 LED,表示創建網路狀態和是否允許加入網路,

3、路由器 White LEDs IO

路由器 DR 為 DR1175 !!!

打開 app_led_interface.c 檔案

從代碼中可以看出,RGB_LED 和 White_LED 是以介面形式提供的,

按 F3 跳轉到函式宣告,這是 JN-SW-4170 SDK 提供的庫函式,

根據 SDK 我們找到 PlatformDIOAssignments.h 檔案

從 PlatformDIOAssignments.h 我們可以知道,當使用的是 JN516x 芯片時,WHITE_LED_TIMER 使用的是定時器 3 的 PWM 輸出,由此可知,路由器 White LEDs IO 為 DIO13,

4、IO 使用一覽表(JN516x)

DIODR1199通用板DR1175點燈/傳感器USB Dongle
DIO0
DIO1SW4
DIO2
DIO3
DIO4
DIO5
DIO6
DIO7
DIO8BUTTON_1
DIO9
DIO10
DIO11SW1
DIO12SW2SHT1x (HTS):HTS_DATA
DIO133個高亮白色LED
DIO14NFC I2C:SIF_CLKPCA9634三色燈I2C:SIF_CLK
DIO15NFC I2C:SIF_DPCA9634三色燈I2C:SIF_D
DIO16PCA9634_OELED_NWK_FORMED
DIO17SW3SHT1x (HTS):HTS_CLKLED_PERMIT_JOIN

六、開啟串口除錯輸出

串口除錯輸出宏定義在每個專案檔案夾的 Build 檔案夾下的 Makefile 檔案,下面以協調器的為例:

只需要取消相應的注釋,重新編譯工程,燒錄程式,即可在串口列印相關的除錯資訊,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287681.html

標籤:其他

上一篇:樹莓派安裝openwrt并設定主路由

下一篇:簡易霓虹燈控制器

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more