資料介紹
描述
Zynqberry 一直是我最喜歡的開(kāi)發(fā)板之一,到目前為止,我覺(jué)得我主要只是花時(shí)間將我的基礎(chǔ)設(shè)計(jì)更新到最新版本的 Xilinx IDE,然后才再次擺脫它。幸運(yùn)的是,這一次我對(duì)版本 2019.2 的更新非常順利,以至于我的小 Zynqberry 已經(jīng)準(zhǔn)備好種植自己的小項(xiàng)目花園(對(duì)不起,我無(wú)法抗拒可怕的雙關(guān)語(yǔ))。
我的第一個(gè)想法自然是如何開(kāi)始移植我以前的 Raspberry Pi 項(xiàng)目,因?yàn)?Zynqberry 被設(shè)計(jì)為 Raspberry Pi FPGA 的替代品。我在之前的項(xiàng)目中創(chuàng)建的 Zynqberry 基礎(chǔ)設(shè)計(jì)涵蓋了使用 Zynqberry 板上所有外設(shè)所需的硬件框架。通過(guò)與 Raspberry Pi 等效的硬件設(shè)計(jì),這使得主要區(qū)別在于 Zynqberry 上的嵌入式 Linux 映像。
為了使 Zynqberry 上的操作系統(tǒng)與常見(jiàn)的 Raspberry Pi 映像(如 Raspbian)更加模棱兩可,安裝 Python 及其功能(如軟件包安裝程序 pip)是我的第一步。
構(gòu)建 PetaLinux 環(huán)境的 Yocto 框架包含 bitbake 配方,允許幾乎所有標(biāo)準(zhǔn) Linux 庫(kù)包含在構(gòu)建中。
要將庫(kù)添加到您的構(gòu)建中,請(qǐng)將行“CONFIG_”添加到位于/project-spec/meta-user/conf/目錄中的user-rootfsconfig文件。
# System tools
CONFIG_gsl
CONFIG_nano
CONFIG_cmake
# Python3
CONFIG_python3
CONFIG_python3-pip
CONFIG_python3-cffi
CONFIG_python3-numpy
CONFIG_python3-shell
CONFIG_python3-pyserial
CONFIG_python3-threading
CONFIG_python3-multiprocessing
我選擇添加 Python3 包,因?yàn)槲业拇蠖鄶?shù) Raspberry Pi 項(xiàng)目都基于依賴于 Python3 的 Adafruit 的 CircuitPython。我注意到我在 Raspberry Pi 上使用的其他一些常用庫(kù)/工具是 cmake(用于構(gòu)建和打包軟件的開(kāi)源工具集)、GSL(GNU 科學(xué)庫(kù))和 nano(文本編輯器)。
將庫(kù)添加到項(xiàng)目后,通過(guò)運(yùn)行根文件系統(tǒng)的配置編輯器在映像中啟用它們:
petalinux-config -c rootfs
然后在用戶包下,選擇每個(gè)庫(kù)并使用“Y”鍵啟用它們。
由于包管理器(如 Python 的 pip)會(huì)在安裝指定包時(shí)自動(dòng)解決任何缺失的依賴項(xiàng),因此需要互聯(lián)網(wǎng)連接。要啟用以太網(wǎng)端口并使其在 Linux 用戶空間中可用,需要編輯內(nèi)核并創(chuàng)建基本 TCP/IP 網(wǎng)絡(luò)初始化腳本和配置文件的核心配方。
要編輯內(nèi)核,請(qǐng)運(yùn)行內(nèi)核配置編輯器:
petalinux-config -c kernel
使用以下選項(xiàng)配置內(nèi)核:
CONFIG_MII=y
CONFIG_XILINX_GMII2RGMII=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_AX8817X=y
CONFIG_USB_NET_AX88179_178A=y
CONFIG_USB_NET_CDCETHER=y
# CONFIG_USB_NET_CDC_EEM is not set
CONFIG_USB_NET_CDC_NCM=y
# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set
# CONFIG_USB_NET_CDC_MBIM is not set
# CONFIG_USB_NET_DM9601 is not set
# CONFIG_USB_NET_SR9700 is not set
# CONFIG_USB_NET_SR9800 is not set
# CONFIG_USB_NET_SMSC75XX is not set
CONFIG_USB_NET_SMSC95XX=y
# CONFIG_USB_NET_GL620A is not set
CONFIG_USB_NET_NET1080=y
# CONFIG_USB_NET_PLUSB is not set
# CONFIG_USB_NET_MCS7830 is not set
# CONFIG_USB_NET_RNDIS_HOST is not set
CONFIG_USB_NET_CDC_SUBSET_ENABLE=y
CONFIG_USB_NET_CDC_SUBSET=y
# CONFIG_USB_ALI_M5632 is not set
# CONFIG_USB_AN2720 is not set
CONFIG_USB_BELKIN=y
CONFIG_USB_ARMLINUX=y
# CONFIG_USB_EPSON2888 is not set
# CONFIG_USB_KC2190 is not set
CONFIG_USB_NET_ZAURUS=y
# CONFIG_USB_NET_CX82310_ETH is not set
# CONFIG_USB_NET_KALMIA is not set
# CONFIG_USB_NET_QMI_WWAN is not set
# CONFIG_USB_NET_INT51X1 is not set
# CONFIG_USB_SIERRA_NET is not set
# CONFIG_USB_VL600 is not set
# CONFIG_USB_NET_CH9200 is not set
CONFIG_FB_SIMPLE=y
# CONFIG_FRAMEBUFFER_CONSOLE is not set
CONFIG_SND_SIMPLE_CARD_UTILS=y
CONFIG_SND_SIMPLE_CARD=y
CONFIG_USBIP_CORE=y
# CONFIG_USBIP_VHCI_HCD is not set
# CONFIG_USBIP_HOST is not set
# CONFIG_USBIP_VUDC is not set
# CONFIG_USBIP_DEBUG is not set
為基本 TCP/IP 網(wǎng)絡(luò)初始化腳本和配置文件的核心配方創(chuàng)建目錄:
mkdir project path>/project-spec/meta-user/recipes-core/init-ifupdown/init-ifupdown-1.0
創(chuàng)建接口文件,
cat ./interfaces
并向其中添加以下內(nèi)容:
auto lo
iface lo inet loopback
## Static IP example
#auto eth0
#iface eth0 inet static
# address 192.168.1.190
# netmask 255.255.255.0
# network 192.168.1.0
# gateway 192.168.1.1
## DHCP Example
auto eth0
iface eth0 inet dhcp
然后在/project-spec/meta-user/recipes-core/init-ifupdown目錄中為 init-ifupdown 包創(chuàng)建名為init-ifupdown_1.0.bbappend的 bitbake 文件,并將以下行添加到它:
FILESEXTRAPATHS_prepend := "${THISDIR}/init-ifupdown-1.0:"
內(nèi)核需要通過(guò)設(shè)備樹(shù)指定給它的以太網(wǎng)硬件的鉤子。在/project-spec/meta-user/recipes-bsp/device-tree/files/目錄中編輯用戶可配置的設(shè)備樹(shù)源文件 system-user.dtsi 。以下是 Zynqberry 上所有外圍設(shè)備的最全面的設(shè)備樹(shù):
/include/ "system-conf.dtsi"
/ {
aliases{
eth0 = &usb0;
};
};
/ {
#address-cells = <1>;
#size-cells = <1>;
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
hdmi_fb_reserved_region@1FC00000 {
compatible = "removed-dma-pool";
no-map;
// 512M (M modules)
reg = <0x1FC00000 0x400000>;
// 128M (R modules)
//reg = <0x7C00000 0x400000>;
};
camera_fb_reserved_region@1FC00000 {
compatible = "removed-dma-pool";
no-map;
// 512M (M modules)
reg = <0x1FC00000 0x400000>;
// 128M (R modules)
//reg = <0x7800000 0x400000>;
};
};
hdmi_fb: framebuffer@0x1FC00000 { // HDMI out
compatible = "simple-framebuffer";
// 512M (M modules)
reg = <0x1FC00000 (1280 * 720 * 4)>; // 720p
// 128M (R modules)
//reg = <0x7C00000 (1280 * 720 * 4)>; // 720p
width = <1280>; // 720p
height = <720>; // 720p
stride = <(1280 * 4)>; // 720p
format = "a8b8g8r8";
status = "okay";
};
camera_fb: framebuffer@0x1FC00000 { // CAMERA in
compatible = "simple-framebuffer";
// 512M (M modules)
reg = <0x1FC00000 (1280 * 720 * 4)>; // 720p
// 128M (R modules)
//reg = <0x7800000 (1280 * 720 * 4)>; // 720p
width = <1280>; // 720p
height = <720>; // 720p
stride = <(1280 * 4)>; // 720p
format = "a8b8g8r8";
};
vcc_3V3: fixedregulator@0 {
compatible = "regulator-fixed";
regulator-name = "vccaux-supply";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
&qspi {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
flash0: flash@0 {
compatible = "jedec,spi-nor";
reg = <0x0>;
#address-cells = <1>;
#size-cells = <1>;
spi-max-frequency = <50000000>;
partition@0x00000000 {
label = "boot";
reg = <0x00000000 0x00500000>;
};
partition@0x00500000 {
label = "bootenv";
reg = <0x00500000 0x00020000>;
};
partition@0x00520000 {
label = "kernel";
reg = <0x00520000 0x00a80000>;
};
partition@0x00fa0000 {
label = "spare";
reg = <0x00fa0000 0x00000000>;
};
};
};
/*
* We need to disable Linux VDMA driver as VDMA
* already configured in FSBL
*/
&video_in_axi_vdma_0 {
status = "disabled";
};
&video_out_axi_vdma_0 {
status = "disabled";
};
&video_out_v_tc_0 {
//xilinx-vtc: probe of 43c20000.v_tc failed with error -2
status = "disabled";
};
&gpio0 {
interrupt-controller;
#interrupt-cells = <2>;
};
&i2c1 {
#address-cells = <1>;
#size-cells = <0>;
i2cmux0: i2cmux@70 {
compatible = "nxp,pca9544";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x70>;
i2c1@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
id_eeprom@50 {
compatible = "atmel,24c32";
reg = <0x50>;
};
};
i2c1@1 { // Display Interface Connector
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
};
i2c1@2 { // HDMI Interface Connector
#address-cells = <1>;
#size-cells = <0>;
reg = <2>;
};
i2c1@3 { // Camera Interface Connector
#address-cells = <1>;
#size-cells = <0>;
reg = <3>;
};
};
};
/{
usb_phy0: usb_phy@0 {
compatible = "ulpi-phy";
#phy-cells = <0>;
reg = <0xe0002000 0x1000>;
view-port = <0x0170>;
drv-vbus;
};
};
&usb0 {
usb-phy = <&usb_phy0>;
};
/*
* Sound configuration
*/
/{
// Custom driver based on spdif-transmitter
te_audio: dummy_codec_te {
compatible = "te,te-audio";
#sound-dai-cells = <0>;
};
// Simple Audio Card from AXI_I2S and custom XADC audio input and
// PWM audio output cores
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "TE0726-PWM-Audio";
simple-audio-card,format = "i2s";
simple-audio-card,widgets =
"Microphone", "In Jack",
"Line", "Line In Jack",
"Line", "Line Out Jack",
"Headphone", "Out Jack";
simple-audio-card,routing =
"Out Jack", "te-out",
"te-in", "In Jack";
simple-audio-card,cpu {
sound-dai = <&audio_axi_i2s_adi_0>;
};
simple-audio-card,codec {
sound-dai = <&te_audio>;
};
};
};
&audio_axi_i2s_adi_0 {
compatible = "adi,axi-i2s-1.00.a";
reg = <0x43c00000 0x1000>;
clocks = <&clkc 15>, <&clkc 18>; // FCLK_CLK0, FCLK_CLK3
clock-names = "axi", "ref";
dmas = <&dmac_s 0 &dmac_s 1>;
dma-names = "tx", "rx";
#sound-dai-cells = <0>;
};
/*
* We need to disable Linux XADC driver to use XADC for audio recording
*/
&adc {
status = "disabled";
};
Zynqberry 板上的 Zynq 芯片無(wú)法直接訪問(wèn)以太網(wǎng)端口。四個(gè) USB 端口和以太網(wǎng)端口實(shí)際上連接到 USB PHY 集線器,該集線器連接到 Zynq 芯片的 USB0 MIO 端口。這就是以太網(wǎng)設(shè)備 eth0 綁定到設(shè)備樹(shù)中 USB0 節(jié)點(diǎn)的原因。
此時(shí),保存并關(guān)閉所有文件,然后構(gòu)建項(xiàng)目。
petalinux-build
打包啟動(dòng)映像并使用 Vitis 將其編程到 Zynqberry 的 QSPI 閃存中。然后將內(nèi)核、設(shè)備樹(shù) blob 和根文件系統(tǒng)復(fù)制到 SD 卡。(我已經(jīng)在我的上一篇 Zynqberry 項(xiàng)目帖子中介紹了這些步驟)。
啟動(dòng) Zynqberry 并使用默認(rèn)用戶名“root”和默認(rèn)密碼“root”登錄(除非您選擇在系統(tǒng)配置編輯器中更改它)。您可以將 Zynqberry 的以太網(wǎng)端口直接插入路由器,或者使用 PC 上的互聯(lián)網(wǎng)共享。我選擇了后一個(gè)選項(xiàng),因?yàn)槲业穆酚善鞑辉谖覠o(wú)法訪問(wèn)的修道院位置。由于 Ubuntu 在我計(jì)算機(jī)上的虛擬機(jī)中運(yùn)行,因此我也將這部分切換回 Mac 端。
通過(guò) USB-C 轉(zhuǎn)以太網(wǎng)橋適配器,我將其配置為 Zynqberry 和我的 MacBook 之間的迷你路由器。為此,我通過(guò)為 LAN 網(wǎng)橋提供與我在 Zynqberry 上配置接口文件相同的網(wǎng)絡(luò)和子網(wǎng)掩碼上的不同 IP 地址。
旁注:不要將路由器的網(wǎng)關(guān)地址添加到 LAN 網(wǎng)橋配置中,這將與您的計(jì)算機(jī)與路由器的連接發(fā)生沖突。
然后我啟用了 LAN 網(wǎng)橋的 Internet 共享:
為了測(cè)試 MacBook 和 Zynqberry 之間的初始連接,我打開(kāi)了一個(gè)終端窗口并將我的路由器通過(guò) DHCP 分配給 Zynqberry 的 IP 地址 ping 通:
然后我通過(guò)安裝一個(gè)基本的 Adafruit 庫(kù)來(lái)測(cè)試互聯(lián)網(wǎng)連接:
pip3 install adafruit-blinka
請(qǐng)繼續(xù)關(guān)注我的下一個(gè)項(xiàng)目,內(nèi)容包括如何在 Zynqberry 上安裝 Adafruit 的 CircuitPython!
?
- Linux操作系統(tǒng)的CP命令源代碼匯總 4次下載
- 機(jī)器人操作系統(tǒng)EtherCAT技術(shù)研究綜述 1次下載
- 三寶機(jī)器人軟件操作系統(tǒng)v2.20.33.100下載 3次下載
- 單片機(jī)編程和操作系統(tǒng)綜述 40次下載
- RTThread操作系統(tǒng)的調(diào)度設(shè)計(jì)原理是怎樣的
- 嵌入式操作系統(tǒng)的介紹和嵌入式操作系統(tǒng)的發(fā)展?fàn)顩r和應(yīng)用前景說(shuō)明
- 操作系統(tǒng)是什么?Linux操作系統(tǒng)的原理與應(yīng)用資料概述 13次下載
- Linux操作系統(tǒng)下C語(yǔ)言編程入門(mén).pdf 95次下載
- RTOS操作系統(tǒng) 0次下載
- 計(jì)算機(jī)操作系統(tǒng)試題及答案
- 操作系統(tǒng)講解(操作系統(tǒng)課件) 0次下載
- Linux操作系統(tǒng)原理及應(yīng)用 0次下載
- 操作系統(tǒng) ppt 0次下載
- 操作系統(tǒng)技巧使用大全
- ucos操作系統(tǒng).
- 深度解析全球操作系統(tǒng)格局 675次閱讀
- 詳解實(shí)時(shí)操作系統(tǒng)和非實(shí)時(shí)操作系統(tǒng) 3520次閱讀
- 什么是實(shí)時(shí)操作系統(tǒng)(RTOS) 4347次閱讀
- Linux是實(shí)時(shí)系統(tǒng)還是分時(shí)操作系統(tǒng)? 1414次閱讀
- linux操作系統(tǒng)基礎(chǔ)知識(shí) 5829次閱讀
- 物聯(lián)網(wǎng)十大經(jīng)典開(kāi)源操作系統(tǒng) 1w次閱讀
- 對(duì)實(shí)時(shí)操作系統(tǒng)特性的討論 5039次閱讀
- 嵌入式操作系統(tǒng)是什么_嵌入式操作系統(tǒng)有哪些 2w次閱讀
- 如何設(shè)計(jì)一個(gè)小型嵌入式操作系統(tǒng) 9351次閱讀
- 國(guó)產(chǎn)操作系統(tǒng)究竟哪里不行_國(guó)產(chǎn)操作系統(tǒng)為何難普及 1.3w次閱讀
- 國(guó)產(chǎn)操作系統(tǒng)有哪些 1.4w次閱讀
- 簡(jiǎn)要介紹了操作系統(tǒng)虛擬化的概念,以及實(shí)現(xiàn)操作系統(tǒng)虛擬化的技術(shù) 1.3w次閱讀
- petalinux(二)開(kāi)啟petalinux內(nèi)核調(diào)試模式 1w次閱讀
- 如何安裝實(shí)時(shí)操作系統(tǒng)RTOS 6105次閱讀
- 概述及匯總ARM的嵌入式操作系統(tǒng) 2951次閱讀
下載排行
本周
- 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元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(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開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 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ì)》 溫德?tīng)栔?/a>
- 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)論
查看更多