衡阳派盒市场营销有限公司

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

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

3天內不再提示

如何在 Vitis 中使用 UIO 驅動框架創建簡單的 Linux 用戶應用

電子工程師 ? 來源:XILINX技術社區 ? 作者:XILINX技術社區 ? 2020-11-20 14:05 ? 次閱讀

Linux嵌入式設計中最基本的任務之一是創建用戶應用程序。

在本篇博文中,我們將探討如何在 Vitis 中使用 UIO 驅動框架創建簡單的 Linux 用戶應用。

1

硬件設計

本次使用的是 Zynq UltraScale+ MPSoC ZCU104 評估板。但是,無論您使用任何器件,下列步驟都應適用。

先使用 Vivado 來創建了塊設計。建立了 Zynq UltraScale PS,并把 AXI GPIO 連接到 ZCU104 評估板上的 4 個 LED

地址映射如下所示:

首先 在創建 XSA 時使用了以下選項:

2

Linux 鏡像

如果您使用開發板,則建議使用 BSP(如果存在)。

但在本示例中,我們使用模板來創建鏡像。已經添加了 UIO 驅動程序,用于 AXI GPIO。

然后創建了 sysroot,在 Vitis 中需要使用它來進行交叉編譯。

petalinux-create -t project --template zynqMP -n zcu104_linux

cd zcu104_linux

petalinux-config --get-hw-description=

依次選擇“DTG Settings -> (zcu104-revc)MACHINE_NAME”

petalinux-config -c kernel
Select Device Drivers -> Userspace I/O drivers
<*> Userspace I/O platform driver with generic IRQ handing
<*> Userspace platform driver with generic irq and dynamic memory

將 system-user.dtsi 替換為:

/include/ "system-conf.dtsi"

/ {

chosen {

bootargs = "earlycon clk_ignore_unused uio_pdrv_genirq.of_id=generic-uio";

stdout-path = "serial0:115200n8";

};

};

&axi_gpio_0 {

compatible = "generic-uio";

};

然后,運行以下命令:

petalinux-build

cd images/linux
petalinux-build --sdk
petalinux-package --sysroot

3

創建平臺

這并非必要步驟,因為用戶只需在 Vitis 中使用 sysroot 即可。

但為了便于使用,我們可以創建一個平臺并在 Vitis 中使用此平臺來創建 Linux 應用。

首先,設置平臺文件。

把平臺文件組織為一種文件夾結構。這并非必要步驟,但用戶需要注意 BIF 中的文件路徑。

在 Bootgen 中使用 BIF 來創建可啟動的鏡像。此處我們僅使用占位符文件名。

mkdir -p sw_comp/src/a53/xrt/image
mkdir sw_comp/src/boot

將 image.ub、boot.scr 和 rootfs.cpio.gz 文件從 PetaLinux image/linux 文件夾復制到sw_comp/src/a53/image

將 system.bit、bl31.elf、uboot.elf、zynqmp_fsbl(已重命名為 fsbl.elf)和 pmufw.elf 文件從 PetaLinux image/linux 文件夾復制到sw_comp/src/boot

創建 BIF:

the_ROM_image:

{

[fsbl_config] a53_x64

[bootloader]

[pmufw_image]

[destination_device=pl]

[destination_cpu=a53-0, exception_level=el-3, trustzone]

[destination_cpu=a53-0, exception_level=el-2]

}

將 linux.bif 復制到sw_comp/src/boot。現在,在 Vitis 中創建一個新平臺工程,如下所示:

這樣就會在zcu104_base/export中創建平臺。

4

在 Vitis 中創建 Linux 鏡像

選擇“從存儲庫中選擇平臺 (Select a platform from therepository)”,單擊 + 圖標并瀏覽至您的平臺。

創建新應用:

此處可以看到,“應用設置 (Application settings)”默認使用的是平臺中的設置。

選擇“空白應用 (Empty Application)”模板,因為我們將創建自己的自定義應用。

右鍵單擊 led_test 應用下的 src 文件夾,然后選擇“新建 (New)”->“文件 (File)”

指定其文件名 (.c),然后單擊“完成 (Finish)”。

現在,即可將以下代碼復制到其中。這是一個簡單的 UIO 示例,可用于開關 LED。

#include

#include

#include

#include

#include

#define GPIO_MAP_SIZE 0x10000

#define GPIO_DATA 0x00

#define GPIO_TRI 0x04

#define LED_NUM 256

#define LED_DELAY 10000000

int main(int argc, char *argv[])

{

int fd;

char *uiod = "/dev/uio0";

void *gpio_ptr;

volatile int Delay;

printf("AXI GPIO UIO test. ");

// open the UIO device file to allow access to the device in user space

fd = open(uiod, O_RDWR);

if (fd < 1) {

printf("Invalid UIO device file:%s. ", uiod);

return -1;

}

// mmap the GPIO device into user space

gpio_ptr = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);

if (gpio_ptr == MAP_FAILED) {

printf("Mmap call failure. ");

return -1;

}

// set bit0 on the GPIO to be output

// see pg144 for ref

*((volatile unsigned *)(gpio_ptr + GPIO_TRI)) = 0x0;

// Toggle the LED

while (1) {

int i;

unsigned char led_pin = 0x0;

for (i = 0; i < LED_NUM; i++) {

*((volatile unsigned *)(gpio_ptr + GPIO_DATA)) = led_pin;

for (Delay = 0; Delay < LED_DELAY; Delay++);

*((volatile unsigned *)(gpio_ptr + GPIO_DATA)) = 0x0;

led_pin++;

}

}

// unmap the GPIO device from user space

munmap(gpio_ptr, 4096);

return 0;

}

選擇系統工程,然后單擊錘子圖標。這樣即可構建可執行文件,并創建啟動鏡像。

5

在硬件上執行測試

將所有鏡像從led_app_systemDebugsd_card復制到 SD 卡上。

啟動后,將自動裝載 SD 卡。

在此處更改目錄,并執行led_app.elf,如下所示:

同時,您在板上應該還可以看到 LED 閃爍。

使用 Ctrl + c 即可取消。

責任編輯:xj

原文標題:開發者分享 | 在 Zynq UltraScale 器件上通過 Vitis 創建 Linux 用戶應用

文章出處:【微信公眾號:XILINX技術社區】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210392
  • Zynq
    +關注

    關注

    10

    文章

    610

    瀏覽量

    47296
  • Vitis
    +關注

    關注

    0

    文章

    147

    瀏覽量

    7497

原文標題:開發者分享 | 在 Zynq UltraScale 器件上通過 Vitis 創建 Linux 用戶應用

文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    何在Windows中使用MTP協議

    、圖片等)的通信協議,它被廣泛用于Android設備。以下是如何在Windows中使用MTP協議的詳細步驟: 1. 確保設備支持MTP 首先,你需要確認你的設備支持MTP協議。大多數現代Android
    的頭像 發表于 01-03 10:26 ?415次閱讀

    Linux中的用戶創建

    Linux中的用戶創建 用戶的類型 超級管理用戶: 權限最高的用戶(uid:0) #uid:是
    的頭像 發表于 12-20 14:24 ?320次閱讀
    <b class='flag-5'>Linux</b>中的<b class='flag-5'>用戶</b>與<b class='flag-5'>創建</b>

    何在智能手機系統中使用bq27505

    電子發燒友網站提供《如何在智能手機系統中使用bq27505.pdf》資料免費下載
    發表于 10-17 10:21 ?0次下載
    如<b class='flag-5'>何在</b>智能手機系統<b class='flag-5'>中使</b>用bq27505

    何在MSP430?MCU中使用智能模擬組合

    電子發燒友網站提供《如何在MSP430?MCU中使用智能模擬組合.pdf》資料免費下載
    發表于 09-14 10:19 ?0次下載
    如<b class='flag-5'>何在</b>MSP430?MCU<b class='flag-5'>中使</b>用智能模擬組合

    何在反向降壓-升壓拓撲中使用TPS6290x

    電子發燒友網站提供《如何在反向降壓-升壓拓撲中使用TPS6290x.pdf》資料免費下載
    發表于 09-13 10:07 ?0次下載
    如<b class='flag-5'>何在</b>反向降壓-升壓拓撲<b class='flag-5'>中使</b>用TPS6290x

    何在IMC300系列中使用開環控制?

    何在 IMC300 系列中使用開環控制? 我設置角度選擇 = 2 和 CtrlModeSelect = 2,就可以控制電機的速度了。 目前,我想測試開環。 我將 Vd_Ext 和 Vq_Ext 都
    發表于 07-22 07:20

    何在RTOS中使用spi_interface.c?

    何在 RTOS 中使用 spi_interface.c?
    發表于 07-10 06:29

    何在IDF框架中使用自定義的靜態庫和動態庫?

    基于商業需要,我們需要在 ESP-IDF v4.0-rc 這個版本的IDF中開發與使用自定義庫,有如下問題請協助: 1如何利用IDF框架編寫自定義靜態庫和動態庫? 2如何在IDF框架中使
    發表于 06-25 07:57

    請問cmakelists中的變量如何在程序中使用?

    大家好, 我有個問題請教,cmakelists.txt中的變量如何在程序中使用?比如以下cmakelists.txt文件中的PROJECT_VER變量,我如何在c程序中使用?試了很多辦
    發表于 06-11 07:34

    請問ESP Wroom 32板如何在LInux下使用?

    ESP Wroom 32板如何在LInux下使用。 我用的系統是統信UOS,如何使用ESP32板,開發Micropython啊 簡單來說就是在ESP32上刷上micropython固件,然后編寫micropython代碼。 在
    發表于 06-05 06:22

    在Windows 10上創建并運行AMD Vitis?視覺庫示例

    本篇文章將演示創建一個使用 AMD Vitis? 視覺庫的 Vitis HLS 組件的全過程。此處使用的是 Vitis Unified IDE。如果您使用的是舊版 AMD
    的頭像 發表于 05-08 14:02 ?855次閱讀
    在Windows 10上<b class='flag-5'>創建</b>并運行AMD <b class='flag-5'>Vitis</b>?視覺庫示例

    Linux添加磁盤創建分區、掛載

    Linux添加磁盤創建分區、掛載
    發表于 04-20 17:49 ?557次閱讀
    <b class='flag-5'>Linux</b>添加磁盤<b class='flag-5'>創建</b>分區、掛載

    Vitis2023.2使用之—— updata to Vitis Unified IDE

    上一章聊了一下vitis2023.2怎樣使用classic Vitis IDE,這章我們來說一說基于classic Vitis IDE的工程怎么樣更新到新版本的Vitis Unifie
    發表于 03-24 17:14

    Vitis2023.2使用之—— classic Vitis IDE

    Vitis 已經更新到2023.2了,新版本相較于舊版本更新了嵌入式平臺,新版平臺增加了Versal? AI 引擎 DSP 設計的增強功能,全新的獨立 Vitis 嵌入式軟件,最新 Vitis 統一
    發表于 03-24 16:15

    何在測試中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大會 上分享了他如何在測試中使用 ChatGPT。
    的頭像 發表于 02-20 13:57 ?802次閱讀
    东营区百家乐官网艺术团| 百家乐官网轮盘怎么玩| 金彩娱乐城| 马山县| 澳门百家乐官网玩法与游戏规则| 百家乐官网游戏试| 百家乐必胜绝技| 百家乐赌博破解方法| 大发888出纳| 五家渠市| 百家乐官网扑克筹码| 火命与金命做生意 | 百家乐官网怎么赢博彩正网| 凯斯网百家乐官网的玩法技巧和规则| 金沙百家乐娱乐城场| 请问下百家乐去哪个娱乐城玩最好呢| bet365最稳定网址| 百家乐官网美食坊| 百家乐巴厘岛平台| 水果机下载| 百家乐官网胜率被控制| 澳门玩百家乐官网00| 百家乐规律打| 巨野县| 聚众玩百家乐官网的玩法技巧和规则 | 元游棋牌游戏大厅| 百家乐官网路单免费下载| 大众百家乐官网娱乐城| 德晋百家乐的玩法技巧和规则| 188金宝博备用网址| 真人百家乐官网试玩账号| 百家乐要怎么玩啊| 大发888最佳状态| 百家乐官网的方法和公式| 百家乐蓝盾假网| 大发888大发888官网| 帝王百家乐官网新足球平台| 葡京百家乐玩法| 晓游棋牌游戏大厅下载| 百家乐官网多少钱| 百家乐www|