資料介紹
描述
本教程是關(guān)于“Rpi SenseHAT 與 AMD-Xilinx Kria KR260 和 Petalinux 的接口”。
本教程中使用的工具有:
- 維瓦多 2022.2
- 花瓣 2022.2
Rpi-SenseHAT 的 VIVADO/Petalinux 項(xiàng)目源碼、BSP、Kria 固件可在 Github 獲?。?/font>https://github.com/LogicTronix/KR260-SenseHAT-Petalinux [ Git Branch: SenseHAT-Sensors ]
樹莓派感知帽子
Raspberry Pi Sense HAT是一個(gè)附加板,可提供一系列傳感功能。機(jī)載傳感器使我們能夠監(jiān)控壓力、濕度、溫度、顏色、方向和運(yùn)動(dòng)。8x8 RGB LED 矩陣讓我們能夠可視化來自傳感器的數(shù)據(jù),五鍵操縱桿可以充當(dāng)輸入設(shè)備。
板上的所有傳感器都連接到單個(gè) I2C 總線。所有的傳感器都充當(dāng)從機(jī),并使用 I2C 協(xié)議與主機(jī)進(jìn)行通信。
Sense Hat 上使用的 IC:
Vivado 設(shè)計(jì)流程
設(shè)計(jì)中使用的 IP
以下是 Vivado 設(shè)計(jì)中使用的 IP 內(nèi)核,用于創(chuàng)建在 Kria KR260 上運(yùn)行的“Sense HAT-I2C 接口”。
Zynq? Ultrascale+? MPSoC
Zynq? Ultrascale+? MPSoC 充當(dāng) PS 和 PL 之間的邏輯連接,同時(shí)協(xié)助使用 Vivado? IP 集成器將定制和嵌入式 IP 與處理系統(tǒng)集成。
AXI 中斷控制器
AXI 中斷控制器 (AXI INTC) 內(nèi)核將來自外圍設(shè)備的多個(gè)中斷輸入集中到系統(tǒng)處理器的單個(gè)中斷輸出。
時(shí)鐘向?qū)?/font>
Clocking Wizard IP 簡(jiǎn)化了為根據(jù)用戶時(shí)鐘要求定制的時(shí)鐘電路創(chuàng)建 HDL 源代碼包裝器的過程。該向?qū)е笇?dǎo)用戶為您的時(shí)鐘原語(yǔ)設(shè)置適當(dāng)?shù)膶傩?,并允許覆蓋任何向?qū)в?jì)算的參數(shù)。
AXI IIC 總線接口
AXI IIC 總線接口連接到 AMBA? AXI 規(guī)范,并為大量流行設(shè)備提供低速、雙線、串行總線接口。本產(chǎn)品規(guī)范定義了 AXI IIC 總線接口模塊的架構(gòu)、硬件(信號(hào))接口、軟件(寄存器)接口和參數(shù)化選項(xiàng)。
處理系統(tǒng)重置
處理系統(tǒng)復(fù)位是一個(gè)軟 IP,它提供了一種機(jī)制來處理給定系統(tǒng)的復(fù)位條件。內(nèi)核在輸入端處理多種復(fù)位條件,并在輸出端生成適當(dāng)?shù)膹?fù)位。該內(nèi)核根據(jù)外部或內(nèi)部復(fù)位條件生成復(fù)位。
AXI互連
AXI 互連 IP 將一個(gè)或多個(gè) AXI 內(nèi)存映射主設(shè)備連接到一個(gè)或多個(gè)內(nèi)存映射從設(shè)備。AXI 互連內(nèi)核允許 AXI 主設(shè)備和從設(shè)備的任意組合連接到它,這些設(shè)備在數(shù)據(jù)寬度、時(shí)鐘域和 AXI 子協(xié)議(AXI4、AXI3 或 AXI4-Lite)方面可能各不相同。
塊設(shè)計(jì)-完整的塊設(shè)計(jì)
Sense HAT - KR260 接頭對(duì)齊
如上圖所示,Sense HAT 位于 KR260 上的 RPi 接頭上方。此對(duì)齊顯示了 40 個(gè)引腳的描述。傳感器通過使用引腳 3 和 5 的 I2C 進(jìn)行通信。
約束
KR260 上只有 2 個(gè)引腳(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}]
但是,下圖可用作映射和約束所有其他引腳的參考。
生成 XSA
- 從“文件”菜單中,選擇“導(dǎo)出”>“導(dǎo)出平臺(tái)”。
- 在平臺(tái)類型窗口中選擇硬件選項(xiàng)。
- 選擇 Pre-Synthesis 狀態(tài),并在 Platform State 窗口中選擇 Include bitstream 選項(xiàng)。
- 更改所需的平臺(tái)屬性。
- 輸入 XSA 的名稱并選擇要將 XSA 導(dǎo)出到的文件夾,然后選擇完成。
Petalinux 流程:
Sense HAT 傳感器的驅(qū)動(dòng)程序可用性
為了集成 SenseHAT 傳感器,我們必須擁有這些傳感器的 Petalinux 驅(qū)動(dòng)程序或 linux 驅(qū)動(dòng)程序。對(duì)于 SenseHAT,大多數(shù)傳感器的 C/C++ 驅(qū)動(dòng)程序都可以從供應(yīng)商那里獲得。一些驅(qū)動(dòng)程序也是由獨(dú)立開發(fā)人員編寫的。
濕度/溫度
加速度計(jì)/陀螺儀和磁力計(jì)
壓力/溫度
- https://github.com/ameltech/sme-lps25h-library
- https://github.com/kirananto/RaZorReborn/tree/master/drivers/sensors/pressure/lps25h
Petalinux 開發(fā):
先決條件
創(chuàng)建 petalinux 項(xiàng)目需要支持的 BSP,可從以下鏈接下載。也可以在沒有 BSP 的情況下創(chuàng)建項(xiàng)目,但不太方便。
- 從 Xilinx 下載為開發(fā)板下載支持的 BSP。
- 下載鏈接:https://www.xilinx.com/member/forms/download/xef.html? filename=xilinx-kr260-starterkit-v2022.2-10141622.bsp
創(chuàng)建、配置和構(gòu)建 Petalinux 項(xiàng)目
下面列出了創(chuàng)建 petalinux 項(xiàng)目的步驟。
● 創(chuàng)建一個(gè)文件夾并復(fù)制從Vivado 導(dǎo)出的平臺(tái)(XSA)。
● 同時(shí)復(fù)制 Vivado 生成的 BIN 文件,位于 /.runs/impl_1/.bin
● 在目錄中打開終端并獲取petalinux 腳本。
● 運(yùn)行以下命令創(chuàng)建名為 的petalinux 項(xiàng)目。
petalinux-create --type project -s to-bsp> --name name>
● 運(yùn)行以下命令配置項(xiàng)目。
petalinux-config --get-hw-description
● 在項(xiàng)目配置窗口中,
○ 在 FPGA 管理器下啟用 FPGA 管理器。
- 在圖像打包配置下,
- 將根文件系統(tǒng)類型更改為 INITRD
- 將 INITRAMFS/INITRD 映像名稱更改為 petalinux-initramfs-image
- 禁用 Copy final images to tftpbootUnder Image Packaging Configuration,
- 保存并退出配置窗口。
- 運(yùn)行以下命令來配置內(nèi)核。
petalinux-config -c kernel
- 保存并退出配置。
- 運(yùn)行以下命令來配置根文件系統(tǒng)。
petalinux-config -c rootfs
- 在 Filesystem Packages > base > i2c-tools 下,啟用
- i2c-工具
- i2c-工具-dev
- 保存并退出配置。
- 運(yùn)行petalinux-build來構(gòu)建項(xiàng)目。
生成/創(chuàng)建可引導(dǎo)映像
- 運(yùn)行以下命令以創(chuàng)建可引導(dǎo)的 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/ 目錄中。
- 下載、安裝并運(yùn)行 BalenEtcher。
- 在 images/linux 目錄中找到 WIC 映像。
- 選擇目標(biāo)設(shè)備并選擇 Flash。
準(zhǔn)備覆蓋:
生成設(shè)備樹覆蓋
- 在復(fù)制 XSA 的目錄中打開終端。在這里再次獲取 Petalinux 并運(yùn)行xsct命令。
- 如果系統(tǒng)找不到 xsct 命令,請(qǐng)確保獲取 Vitis 或 PetaLinux shell 腳本。
- 如果在運(yùn)行 Petalinux shell 腳本后 xsct 命令仍然缺失,請(qǐng)運(yùn)行以下命令。
PATH="${XSCT_TOOLCHAIN}/bin:${PATH}"
- 運(yùn)行以下“HSI”命令將在當(dāng)前目錄中提取 XSA 的內(nèi)容。
hsi::open_hw_design ./.xsa
createdts -hw ./name>.xsa -zocl -platform-name platform-name> -git-branch -overlay -compile -out ./name-is-better>
- 運(yùn)行上面的命令將:
- 從 Xilinx 設(shè)備樹生成器 repo 克隆分支
- 在.////psu_cortexa53_0/device_tree_domain/bsp/ 目錄
- 退出xsct外殼。
注意:以下命令可以在沒有 Petalinux 腳本源的常規(guī)終端中運(yùn)行。
- 運(yùn)行以下命令編譯設(shè)備樹。
dtc -@ -O dtb -o ./kr260.dtbo ./kr260_dt/kr260_dt/kr260/psu_cortexa53_0/device_tree_domain/bsp/pl.dtsi
- 確保編輯 pl.dtsi 的路徑。
- 此命令將在當(dāng)前目錄中生成 kr260.dtbo。
- 如果 dtc 拋出“ dtc: invalid option -- '@'”錯(cuò)誤,則需要自己編譯 dtc。
編譯故障碼
- 運(yùn)行以下命令。
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 標(biāo)志。
make install
- 運(yùn)行上面的命令將在 $HOME/bin.. 中安裝 dtc
重試編譯設(shè)備樹
- 運(yùn)行 cd../ 移出 dtc 目錄
- dtc -@ -O dtb -o./kr260.dtbo./kr260_dt/kr260_dt/kr260/psu_cortexa53_0/device_tree_domain/bsp/pl.dtsi
將文件傳輸?shù)皆O(shè)備
- 運(yùn)行以下命令創(chuàng)建 shell.json。
echo '{ "shell_type" : "XRT_FLAT", "num_slots": "1" }' > shell.json
- 將 Vivado 實(shí)現(xiàn)目錄中的 bin 文件重命名為您命名 dtbo 的相同名稱。
- 我已將它們重命名為 kr260.bit.bin 和 kr260.dtbo。
- 將 Sense HAT 連接到 KR260 接頭。
- 現(xiàn)在啟動(dòng)設(shè)備并登錄。
- 用戶名和密碼默認(rèn)為petalinux 。
- 在設(shè)備主目錄中創(chuàng)建一個(gè)目錄。
mkdir ~/<any-directory-name>
- 將您的設(shè)備連接到路由器并通過運(yùn)行 ifconfig 命令查找 IP 地址。如果您在路由器設(shè)置中為設(shè)備分配靜態(tài) IP 會(huì)更好。
- 在主機(jī)上運(yùn)行 scp 命令以將文件傳輸?shù)皆O(shè)備。
scp ./kr260.bit.bin ./kr260.dtbo ./shell.json petalinux@:~/
在 I2C 總線上加載覆蓋和檢測(cè)設(shè)備
- 將包含 kr260.bit.bin、kr260.dtbo 和 shell.json 的目錄移動(dòng)到 /lib/firmware/xilinx/。
sudo mv ./ /lib/firmware/xilinx/
- 列出設(shè)備上存在的應(yīng)用程序。
sudo xmutil listapps
- 卸載當(dāng)前應(yīng)用程序。
sudo xmutil unloadapp
- 加載您的應(yīng)用程序(在本例中為 kr260)。
sudo xmutil loadapp kr260
- 檢查 XIIC 是否在系統(tǒng)中被列為 I2C 總線。
i2cdetect -l
- 這將列出系統(tǒng)中的所有 I2C 總線(在本例中為 i2c-7)。
- 檢查 XIIC 總線上的設(shè)備。
I2cdetect -y -r <i2c-bus-number>
- 這將顯示連接到 I2C 總線的傳感器的地址。
- 如果 Sense Hat 正在工作,它應(yīng)該顯示以下地址。
- 以下 I2C 總線 7 的地址映射顯示了來自 Sense HAT 的所有傳感器地址。這些地址也在表 1 中列出。
使用 Python 與傳感器通信
要使用 python 與連接到總線的傳感器進(jìn)行通信,需要安裝 python 包。
安裝 pip,Python 的包安裝程序
要安裝所需的包,需要 pip。由于 petalinux 沒有啟用 pip 的選項(xiàng),因此應(yīng)手動(dòng)安裝。
值得慶幸的是,安裝 pip 非常容易。按照以下步驟操作。
- 在終端中運(yùn)行以下任何命令以下載 get-pip.py python 腳本。
wget https://bootstrap.pypa.io/get-pip.py
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- 運(yùn)行 python get-pip.py 并等待它完成。
- 如果上述命令不起作用,請(qǐng)運(yùn)行 python3 get-pip.py。
安裝 SMBus
要安裝 SMBus,請(qǐng)運(yùn)行pip install smbus。SMBus 通過 i2c-dev 為 Linux SMBus 訪問提供 python 綁定。
編寫一個(gè)粗糙的 python 應(yīng)用程序
為了與傳感器通信,我們需要一個(gè) SMBus 類的對(duì)象,它為我們提供了使通信更容易的各種功能。我們通過傳遞傳感器所連接的 I2C 總線編號(hào)來創(chuàng)建 SMBus 類的新實(shí)例。
bus = smbus.SMBus(<i2c-bus-number>)
使用總線對(duì)象,我們可以訪問以下功能,幫助我們從/向傳感器寄存器讀取/寫入數(shù)據(jù)。
為了從傳感器獲取數(shù)據(jù),我們將特定字節(jié)數(shù)據(jù)寫入控制寄存器,以啟用/禁用設(shè)備中的某些功能。最重要的一步是將傳感器置于活動(dòng)模式,這將開始感應(yīng)并將結(jié)果存儲(chǔ)在其內(nèi)部寄存器中。然后我們可以讀取這些寄存器并使用也存儲(chǔ)在其他寄存器中的校準(zhǔn)數(shù)據(jù)進(jìn)行計(jì)算。
校準(zhǔn)數(shù)據(jù)存儲(chǔ)在內(nèi)部非易失性存儲(chǔ)器中,并在開機(jī)時(shí)寫入校準(zhǔn)寄存器。
有關(guān)寄存器及其描述的詳細(xì)信息,請(qǐng)查看傳感器的數(shù)據(jù)表。
與傳感器通信的通用方式
設(shè)備上的所有傳感器都遵循類似的配置和校準(zhǔn)方法。
- 設(shè)置輸出數(shù)據(jù)速率和平均
- 輸出數(shù)據(jù)速率指定更新輸出數(shù)據(jù)的頻率
- 平均給出所選樣本數(shù)量的平均值
- 激活傳感器
- 讀取并存儲(chǔ)校準(zhǔn)數(shù)據(jù)
- 讀取輸出值并應(yīng)用校準(zhǔn)
代碼片段
# 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 傳感器的溫度和濕度讀數(shù)
LPS25H 傳感器的溫度和壓力讀數(shù)
LSM9DS1 傳感器的加速度、磁力計(jì)和陀螺儀讀數(shù)
本教程的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] 創(chuàng)建了這個(gè)“深入”教程!
- Kria KV260視覺AI入門套件用戶指南
- Kria KR260機(jī)器人入門套件:通過硬件加速釋放機(jī)器人
- 適用于AWS IoT Greengrass的Xilinx KV260入門指南
- 創(chuàng)建自定義Kria KV260加速M(fèi)L應(yīng)用程序
- Xilinx KV260 Vitis-AI 1.4人臉檢測(cè)
- 為Kria KV260添加USB WiFi
- Kria KV260 AI視覺套件入門
- Xilinx Kria KV260套件的第一個(gè)硬件項(xiàng)目
- Vivado 2021.1中的Kria KV260入門
- 使用Xilinx Kria KV260進(jìn)行AI火災(zāi)探測(cè)
- Xilinx KV 260構(gòu)建一個(gè)人臉識(shí)別車庫(kù)門鎖
- Kria KV260上的動(dòng)態(tài)交通燈系統(tǒng)
- PetaLinux 2020.1 ubuntu 安裝
- 基于XILINX的SPARTAN板的VGA接口顯示程序 8次下載
- 利用XILINX解決方案快速創(chuàng)建存儲(chǔ)器接口設(shè)計(jì)
- 使用Python提取ILA數(shù)據(jù)的流程 468次閱讀
- AMD Xilinx 7系列FPGA的Multiboot多bit配置 991次閱讀
- AMD Kria KR260 DPU配置教程3 1098次閱讀
- AMD Kria KR260 DPU配置教程2 1840次閱讀
- AMD Kria KR260 DPU配置教程 862次閱讀
- 基于AMD SOC的QT應(yīng)用程序開發(fā) 908次閱讀
- AMD-Xilinx FPGA功耗優(yōu)化設(shè)計(jì)簡(jiǎn)介 1276次閱讀
- petalinux安裝過程 2866次閱讀
- petalinux是什么?petallinux是如何設(shè)計(jì)的 1.2w次閱讀
- Docker里玩轉(zhuǎn)PetaLinux的上手教程 2345次閱讀
- ubuntu16.04如何安裝petalinux_2017.4 2518次閱讀
- Xilinx FPGA JTAG接口轉(zhuǎn)換成USB接口的方法 1.6w次閱讀
- 基于Ubuntu的PetaLinux安裝教程 6399次閱讀
- petalinux如何用SD卡上的設(shè)備樹_步驟教程 7810次閱讀
- petalinux(二)開啟petalinux內(nèi)核調(diào)試模式 1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多