精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

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

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

3天內不再提示
創作
電子發燒友網>電子資料下載>電子資料>Rpi SenseHAT與AMD-Xilinx Kria KR260和Petalinux的接口

Rpi SenseHAT與AMD-Xilinx Kria KR260和Petalinux的接口

2023-07-13 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

教程是關于“Rpi SenseHAT 與 AMD-Xilinx Kria KR260 和 Petalinux 的接口”。

本教程中使用的工具有:

  • 維瓦多 2022.2
  • 花瓣 2022.2
Rpi-SenseHAT 的 VIVADO/Petalinux 項目源碼、BSP、Kria 固件可在 Github 獲取:https://github.com/LogicTronix/KR260-SenseHAT-Petalinux [ Git Branch: SenseHAT-Sensors ]

樹莓派感知帽子

Raspberry Pi Sense HAT是一個附加板,可提供一系列傳感功能。機載傳感器使我們能夠監控壓力、濕度、溫度、顏色、方向和運動。8x8 RGB LED 矩陣讓我們能夠可視化來自傳感器的數據,五鍵操縱桿可以充當輸入設備。

板上的所有傳感器都連接到單個 I2C 總線。所有的傳感器都充當從機,并使用 I2C 協議與主機進行通信

Sense Hat 上使用的 IC

poYBAGSBKZ-AAM4oAACL7SJEYyY066.png
?
poYBAGSBKaSAYG-BAAHaHl52-VQ834.png
圖片:Raspberry Pi- Sense HAT
?

Vivado 設計流程

設計中使用的 IP

以下是 Vivado 設計中使用的 IP 內核,用于創建在 Kria KR260 上運行的“Sense HAT-I2C 接口”。

Zynq? Ultrascale+? MPSoC

pYYBAGSBKaeAM2EzAAA8FxsEuaQ808.png
?

Zynq? Ultrascale+? MPSoC 充當 PS 和 PL 之間的邏輯連接,同時協助使用 Vivado? IP 集成器將定制和嵌入式 IP 與處理系統集成。

AXI 中斷控制器

poYBAGSBKaqAdWCMAAAdOC157sg073.png
?

AXI 中斷控制器 (AXI INTC) 內核將來自外圍設備的多個中斷輸入集中到系統處理器的單個中斷輸出。

時鐘向導

pYYBAGSBKa2AX7o3AAAYHPqw_cM056.png
?

Clocking Wizard IP 簡化了為根據用戶時鐘要求定制的時鐘電路創建 HDL 源代碼包裝器的過程。該向導指導用戶為您的時鐘原語設置適當的屬性,并允許覆蓋任何向導計算的參數

AXI IIC 總線接口

pYYBAGSBKa-AWG4sAAAd1Y-Cgb4413.png
?

AXI IIC 總線接口連接到 AMBA? AXI 規范,并為大量流行設備提供低速、雙線、串行總線接口。產品規范定義了 AXI IIC 總線接口模塊的架構、硬件信號)接口、軟件(寄存器)接口和參數化選項。

處理系統重置

poYBAGSBKbKAQP4aAABFAh-WCg0500.png
?

處理系統復位是一個軟 IP,它提供了一種機制來處理給定系統的復位條件。內核在輸入端處理多種復位條件,并在輸出端生成適當的復位。該內核根據外部或內部復位條件生成復位。

AXI互連

poYBAGSBKbWAXcSQAAArjUgvIeg523.png
?

AXI 互連 IP 將一個或多個 AXI 內存映射主設備連接到一個或多個內存映射從設備。AXI 互連內核允許 AXI 主設備和從設備的任意組合連接到它,這些設備在數據寬度、時鐘域和 AXI 子協議(AXI4、AXI3 或 AXI4-Lite)方面可能各不相同。

塊設計-完整的塊設計

pYYBAGSBKbmABB0HAAE3TRJX6RY497.png
圖片:完整的 VIVADO 模塊設計
?

Sense HAT - KR260 接頭對齊

poYBAGSBKb2AIKrzAADmUxxOFDQ660.png
圖片:Sense HAT - KR260 接頭對齊
?

如上圖所示,Sense HAT 位于 KR260 上的 RPi 接頭上方。此對齊顯示了 40 個引腳的描述。傳感器通過使用引腳 3 和 5 的 I2C 進行通信。

約束

KR260 上只有 2 個引腳(AE14 和 AE15)需要約束 I2C 才能工作。AE15 用于 SDA,AE14 用于 SCL。

set_property PACKAGE_PIN AE15 [get_ports {iic_sda_io}]
set_property IOSTANDARD LVCMOS33 [get_ports {iic_sda_io}]
set_property PULLUP true [get_ports {iic_sda_io}]

set_property PACKAGE_PIN AE14 [get_ports {iic_scl_io}]
set_property IOSTANDARD LVCMOS33 [get_ports {iic_scl_io}]
set_property PULLUP true [get_ports {iic_scl_io}]

但是,下圖可用作映射和約束所有其他引腳的參考。

pYYBAGSBKcGANmjEAADm4bseuDQ959.png
圖片:使用 Raspberry Pi 40 針 GPIO 接頭(HAT 接頭)的詳細約束映射
?

生成 XSA

  • 從“文件”菜單中,選擇“導出”>“導出平臺”。
  • 在平臺類型窗口中選擇硬件選項。
poYBAGSBKcSAf5MlAABnQXp_shg780.png
?
  • 選擇 Pre-Synthesis 狀態,并在 Platform State 窗口中選擇 Include bitstream 選項。
poYBAGSBKcaAbn1AAAB2r2IHntE719.png
?
  • 更改所需的平臺屬性。
pYYBAGSBKcmAIqrwAABjfMidd5Q698.png
?
  • 輸入 XSA 的名稱并選擇要將 XSA 導出到的文件夾,然后選擇完成。
poYBAGSBKcuAaL2QAABQdx5g2r4857.png
?

Petalinux 流程:

Sense HAT 傳感器的驅動程序可用性

為了集成 SenseHAT 傳感器,我們必須擁有這些傳感器的 Petalinux 驅動程序或 linux 驅動程序。對于 SenseHAT,大多數傳感器的 C/C++ 驅動程序都可以從供應商那里獲得。一些驅動程序也是由獨立開發人員編寫的。

濕度/溫度

加速度計/陀螺儀和磁力計

壓力/溫度

LED驅動

Petalinux 開發:

先決條件

創建 petalinux 項目需要支持的 BSP,可從以下鏈接下載也可以在沒有 BSP 的情況下創建項目,但不太方便。

創建、配置和構建 Petalinux 項目

下面列出了創建 petalinux 項目的步驟。

● 創建一個文件夾并復制從Vivado 導出的平臺(XSA)。

● 同時復制 Vivado 生成的 BIN 文件,位于 /.runs/impl_1/.bin

● 在目錄中打開終端并獲取petalinux 腳本。

● 運行以下命令創建名為 的petalinux 項目。

petalinux-create --type project -s to-bsp> --name name>

● 運行以下命令配置項目。

petalinux-config --get-hw-description 

● 在項目配置窗口中,

○ 在 FPGA 管理器下啟用 FPGA 管理器。

pYYBAGSBKc6AL8WzAACx-6j5vNY532.png
?
  • 在圖像打包配置下,
  • 將根文件系統類型更改為 INITRD
  • 將 INITRAMFS/INITRD 映像名稱更改為 petalinux-initramfs-image
  • 禁用 Copy final images to tftpbootUnder Image Packaging Configuration,
pYYBAGSBKdGAbzosAADqbK9E6Fo495.png
?
  • 保存并退出配置窗口。
  • 運行以下命令來配置內核。
petalinux-config -c kernel
  • 在 Device Drivers > I2C support > I2C Hardware Bus support 下,啟用
  • Cadence I2C 控制器
  • 賽靈思 I2C 控制器
poYBAGSBKdaAMH4xAAGmmZpE0BE206.png
?
  • 保存并退出配置。
  • 運行以下命令來配置根文件系統。
petalinux-config -c rootfs
  • 在 Filesystem Packages > base > i2c-tools 下,啟用
  • i2c-工具
  • i2c-工具-dev
pYYBAGSBKdqAdwXSAAC2C4IL7eM435.png
?
  • 在 Filesystem Packages > misc > python3 下,啟用
  • 蟒蛇3
  • 您需要的所有其他 python 模塊
poYBAGSBKd2AWC95AAD6Mq48Nmo976.png
?
  • 保存并退出配置。
  • 運行petalinux-build來構建項目。
poYBAGSBKeGAYMKQAAG_o02aluU805.png
?

生成/創建可引導映像

  • 運行以下命令以創建可引導的 WIC 映像。
petalinux-package --wic --images-dir images/linux/ --bootfiles "ramdisk.cpio.gz.u-boot, boot.scr, Image, system.dtb, system-zynqmp-sck-kr-g-revB.dtb" --disk-name "sda"
  • 確保 dtb 文件存在于 /images/linux/ 目錄中。
pYYBAGSBKeSAbN2CAAIjgUAE8Do479.png
?
  • 下載、安裝并運行 BalenEtcher。
  • 在 images/linux 目錄中找到 WIC 映像。
pYYBAGSBKemAbleoAAAqo6sUjdg699.png
?
  • 選擇目標設備并選擇 Flash。
poYBAGSBKeuAfx7RAAArN6UYvuU330.png
?

準備覆蓋:

生成設備樹覆蓋

  • 在復制 XSA 的目錄中打開終端。在這里再次獲取 Petalinux 并運行xsct命令。
  • 如果系統找不到 xsct 命令,請確保獲取 Vitis 或 PetaLinux shell 腳本。
  • 如果在運行 Petalinux shell 腳本后 xsct 命令仍然缺失,請運行以下命令。
PATH="${XSCT_TOOLCHAIN}/bin:${PATH}"
  • 運行以下“HSI”命令將在當前目錄中提取 XSA 的內容。
hsi::open_hw_design ./.xsa
pYYBAGSBKe2AYJggAABjLXPWbgs534.png
?
createdts -hw ./name>.xsa -zocl -platform-name platform-name> -git-branch  -overlay -compile -out ./name-is-better>
  • 運行上面的命令將:
  • 從 Xilinx 設備樹生成器 repo 克隆分支
  • 在.////psu_cortexa53_0/device_tree_domain/bsp/ 目錄
poYBAGSBKfCAY4-zAACBXMIwwZU688.png
?
  • 退出xsct外殼。
注意:以下命令可以在沒有 Petalinux 腳本源的常規終端中運行。
  • 運行以下命令編譯設備樹。
dtc -@ -O dtb -o ./kr260.dtbo ./kr260_dt/kr260_dt/kr260/psu_cortexa53_0/device_tree_domain/bsp/pl.dtsi
  • 確保編輯 pl.dtsi 的路徑。
  • 此命令將在當前目錄中生成 kr260.dtbo。
  • 如果 dtc 拋出“ dtc: invalid option -- '@'”錯誤,則需要自己編譯 dtc。

編譯故障碼

  • 運行以下命令。
git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git
cd dtc
make
  • 如果遇到“cc1: all warnings being treated as errors”,編輯 dtc 目錄中的 Makefile 并從 CFLAGS 中刪除 -Werror 標志。
make install
  • 運行上面的命令將在 $HOME/bin.. 中安裝 dtc

重試編譯設備樹

  • 運行 cd../ 移出 dtc 目錄
  • dtc -@ -O dtb -o./kr260.dtbo./kr260_dt/kr260_dt/kr260/psu_cortexa53_0/device_tree_domain/bsp/pl.dtsi

將文件傳輸到設備

  • 運行以下命令創建 shell.json。
echo '{ "shell_type" : "XRT_FLAT", "num_slots": "1" }' > shell.json
  • 將 Vivado 實現目錄中的 bin 文件重命名為您命名 dtbo 的相同名稱。
  • 我已將它們重命名為 kr260.bit.bin 和 kr260.dtbo。
  • 將 Sense HAT 連接到 KR260 接頭。
  • 現在啟動設備并登錄。
  • 用戶名密碼默認petalinux
  • 在設備主目錄中創建一個目錄。
mkdir ~/<any-directory-name>
  • 將您的設備連接到路由器并通過運行 ifconfig 命令查找 IP 地址。如果您在路由器設置中為設備分配靜態 IP 會更好。
  • 在主機上運行 scp 命令以將文件傳輸到設備。
scp ./kr260.bit.bin ./kr260.dtbo ./shell.json petalinux@:~/
poYBAGSBKfSAdGM6AAVftdJpBI8265.jpg
圖片:帶有 KR260 連接的 SenseHAT
?

在 I2C 總線上加載覆蓋和檢測設備

  • 將包含 kr260.bit.bin、kr260.dtbo 和 shell.json 的目錄移動到 /lib/firmware/xilinx/。
sudo mv ./ /lib/firmware/xilinx/
  • 列出設備上存在的應用程序。
sudo xmutil listapps
pYYBAGSBKfeAPJqAAACEcoDh8nI563.png
?
  • 卸載當前應用程序。
sudo xmutil unloadapp
  • 加載您的應用程序(在本例中為 kr260)。
sudo xmutil loadapp kr260
  • 檢查 XIIC 是否在系統中被列為 I2C 總線。
i2cdetect -l
  • 這將列出系統中的所有 I2C 總線(在本例中為 i2c-7)。
poYBAGSBKfqAU4QyAABjxLYhB4s289.png
?
  • 檢查 XIIC 總線上的設備。
I2cdetect -y -r <i2c-bus-number>
  • 這將顯示連接到 I2C 總線的傳感器的地址。
  • 如果 Sense Hat 正在工作,它應該顯示以下地址。
  • 以下 I2C 總線 7 的地址映射顯示了來自 Sense HAT 的所有傳感器地址。這些地址也在表 1 中列出。
pYYBAGSBKf2AZumlAABKK_eYVzg177.png
?

使用 Python 與傳感器通信

要使用 python 與連接到總線的傳感器進行通信,需要安裝 python 包。

安裝 pip,Python 的包安裝程序

要安裝所需的包,需要 pip。由于 petalinux 沒有啟用 pip 的選項,因此應手動安裝。

值得慶幸的是,安裝 pip 非常容易。按照以下步驟操作。

  • 在終端中運行以下任何命令以下載 get-pip.py python 腳本。
wget https://bootstrap.pypa.io/get-pip.py
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
  • 運行 python get-pip.py 并等待它完成。
  • 如果上述命令不起作用,請運行 python3 get-pip.py。

安裝 SMBus

要安裝 SMBus,請運行pip install smbusSMBus 通過 i2c-dev 為 Linux SMBus 訪問提供 python 綁定。

編寫一個粗糙的 python 應用程序

為了與傳感器通信,我們需要一個 SMBus 類的對象,它為我們提供了使通信更容易的各種功能。我們通過傳遞傳感器所連接的 I2C 總線編號來創建 SMBus 類的新實例。

bus = smbus.SMBus(<i2c-bus-number>)

使用總線對象,我們可以訪問以下功能,幫助我們從/向傳感器寄存器讀取/寫入數據。

poYBAGSBKgCAHK0ZAABU6bJmb1M197.png
?

為了從傳感器獲取數據,我們將特定字節數據寫入控制寄存器,以啟用/禁用設備中的某些功能。最重要的一步是將傳感器置于活動模式,這將開始感應并將結果存儲在其內部寄存器中。然后我們可以讀取這些寄存器并使用也存儲在其他寄存器中的校準數據進行計算。

校準數據存儲在內部非易失性存儲器中,并在開機時寫入校準寄存器。

有關寄存器及其描述的詳細信息,請查看傳感器的數據表。

與傳感器通信的通用方式

設備上的所有傳感器都遵循類似的配置和校準方法。

  • 設置輸出數據速率和平均
  • 輸出數據速率指定更新輸出數據的頻率
  • 平均給出所選樣本數量的平均值
  • 激活傳感器
  • 讀取并存儲校準數據
  • 讀取輸出值并應用校準

代碼片段

# HTS221 Sensor Initialization

def HTS221_Init():
temp = bus.read_byte_data(HTS221_ADDRESS, HTS221_CTRL1)
temp |= HTS221_CTRL1_MASK
bus.write_byte_data(HTS221_ADDRESS, HTS221_CTRL1, temp)

# Reading Temperature from Sensor

def HTS221_T_ReadTemp():
buffer = bus.read_i2c_block_data(HTS221_ADDRESS, HTS221_T0_C_8 | 0x80, 2)
tmp = bus.read_byte_data(HTS221_ADDRESS, HTS221_T1_T0)
T0_degC_x8_u16 = ((tmp & 0x03) << 8) | buffer[0]
T1_degC_x8_u16 = ((tmp & 0x0C) << 6) | buffer[1]
T0_degC = twos_complement(bin_str((T0_degC_x8_u16 >> 3), 16), 16)
T1_degC = twos_complement(bin_str((T1_degC_x8_u16 >> 3), 16), 16)
buffer = bus.read_i2c_block_data(HTS221_ADDRESS, HTS221_T0_OUT | 0x80, 4)
T0_out = twos_complement(bin_str(((buffer[1] << 8) | buffer[0]), 16), 16)
T1_out = twos_complement(bin_str(((buffer[3] << 8) | buffer[2]), 16), 16)
buffer = bus.read_i2c_block_data(
HTS221_ADDRESS, HTS221_TEMP_OUT_L | 0x80, 2)
T_out = twos_complement(bin_str(((buffer[1] << 8) | buffer[0]), 16), 16)
temperature = (T_out - T0_out) * (T1_degC - T0_degC) / \
(T1_out - T0_out) + T0_degC
return temperature

傳感器的輸出

HTS221 傳感器的溫度和濕度讀數

pYYBAGSBKgKAbDKYAACa7VB4cmk031.png
?

LPS25H 傳感器的溫度和壓力讀數

poYBAGSBKgWAJwNlAACD6PKyhbE756.png
?

LSM9DS1 傳感器的加速度、磁力計和陀螺儀讀數

pYYBAGSBKgiAOipFAADWESRf_I0485.png
?

本教程的VIVADO、Petalinux工程源碼和Python源碼查看:Github【Git分支:SenseHAT-Sensors】

您可以在您的 PC 上通過以下命令克隆 Git Branch:

git clone -b SenseHAT-Sensors https://github.com/logictronix/kr260-sensehat-petalinux

感謝 Frank Shrestha [frank_shrestha@logictronix.com] 創建了這個“深入”教程!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費