一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在 Vitis 中使用 UIO 驅(qū)動(dòng)框架創(chuàng)建簡(jiǎn)單的 Linux 用戶應(yīng)用

電子工程師 ? 來(lái)源:XILINX技術(shù)社區(qū) ? 作者:XILINX技術(shù)社區(qū) ? 2020-11-20 14:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux嵌入式設(shè)計(jì)中最基本的任務(wù)之一是創(chuàng)建用戶應(yīng)用程序。

在本篇博文中,我們將探討如何在 Vitis 中使用 UIO 驅(qū)動(dòng)框架創(chuàng)建簡(jiǎn)單的 Linux 用戶應(yīng)用。

1

硬件設(shè)計(jì)

本次使用的是 Zynq UltraScale+ MPSoC ZCU104 評(píng)估板。但是,無(wú)論您使用任何器件,下列步驟都應(yīng)適用。

先使用 Vivado 來(lái)創(chuàng)建了塊設(shè)計(jì)。建立了 Zynq UltraScale PS,并把 AXI GPIO 連接到 ZCU104 評(píng)估板上的 4 個(gè) LED。

地址映射如下所示:

首先 在創(chuàng)建 XSA 時(shí)使用了以下選項(xiàng):

2

Linux 鏡像

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

但在本示例中,我們使用模板來(lái)創(chuàng)建鏡像。已經(jīng)添加了 UIO 驅(qū)動(dòng)程序,用于 AXI GPIO。

然后創(chuàng)建了 sysroot,在 Vitis 中需要使用它來(lái)進(jìn)行交叉編譯。

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";

};

然后,運(yùn)行以下命令:

petalinux-build

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

3

創(chuàng)建平臺(tái)

這并非必要步驟,因?yàn)橛脩糁恍柙?Vitis 中使用 sysroot 即可。

但為了便于使用,我們可以創(chuàng)建一個(gè)平臺(tái)并在 Vitis 中使用此平臺(tái)來(lái)創(chuàng)建 Linux 應(yīng)用。

首先,設(shè)置平臺(tái)文件。

把平臺(tái)文件組織為一種文件夾結(jié)構(gòu)。這并非必要步驟,但用戶需要注意 BIF 中的文件路徑。

在 Bootgen 中使用 BIF 來(lái)創(chuàng)建可啟動(dòng)的鏡像。此處我們僅使用占位符文件名。

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

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

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

創(chuàng)建 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 復(fù)制到sw_comp/src/boot。現(xiàn)在,在 Vitis 中創(chuàng)建一個(gè)新平臺(tái)工程,如下所示:

這樣就會(huì)在zcu104_base/export中創(chuàng)建平臺(tái)。

4

在 Vitis 中創(chuàng)建 Linux 鏡像

選擇“從存儲(chǔ)庫(kù)中選擇平臺(tái) (Select a platform from therepository)”,單擊 + 圖標(biāo)并瀏覽至您的平臺(tái)。

創(chuàng)建新應(yīng)用:

此處可以看到,“應(yīng)用設(shè)置 (Application settings)”默認(rèn)使用的是平臺(tái)中的設(shè)置。

選擇“空白應(yīng)用 (Empty Application)”模板,因?yàn)槲覀儗?chuàng)建自己的自定義應(yīng)用。

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

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

現(xiàn)在,即可將以下代碼復(fù)制到其中。這是一個(gè)簡(jiǎn)單的 UIO 示例,可用于開關(guān) 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;

}

選擇系統(tǒng)工程,然后單擊錘子圖標(biāo)。這樣即可構(gòu)建可執(zhí)行文件,并創(chuàng)建啟動(dòng)鏡像。

5

在硬件上執(zhí)行測(cè)試

將所有鏡像從led_app_systemDebugsd_card復(fù)制到 SD 卡上。

啟動(dòng)后,將自動(dòng)裝載 SD 卡。

在此處更改目錄,并執(zhí)行l(wèi)ed_app.elf,如下所示:

同時(shí),您在板上應(yīng)該還可以看到 LED 閃爍。

使用 Ctrl + c 即可取消。

責(zé)任編輯:xj

原文標(biāo)題:開發(fā)者分享 | 在 Zynq UltraScale 器件上通過(guò) Vitis 創(chuàng)建 Linux 用戶應(yīng)用

文章出處:【微信公眾號(hào):XILINX技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11496

    瀏覽量

    213224
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    614

    瀏覽量

    48120
  • Vitis
    +關(guān)注

    關(guān)注

    0

    文章

    150

    瀏覽量

    7890

原文標(biāo)題:開發(fā)者分享 | 在 Zynq UltraScale 器件上通過(guò) Vitis 創(chuàng)建 Linux 用戶應(yīng)用

文章出處:【微信號(hào):gh_2d1c7e2d540e,微信公眾號(hào):XILINX開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用AMD Vitis Unified IDE創(chuàng)建HLS組件

    這篇文章在開發(fā)者分享|AMD Vitis HLS 系列 1 - AMD Vivado IP 流程(Vitis 傳統(tǒng) IDE) 的基礎(chǔ)上撰寫,但使用的是 AMD Vitis Unified IDE,而不是之前傳統(tǒng)版本的
    的頭像 發(fā)表于 06-20 10:06 ?844次閱讀
    使用AMD <b class='flag-5'>Vitis</b> Unified IDE<b class='flag-5'>創(chuàng)建</b>HLS組件

    如何使用AMD Vitis HLS創(chuàng)建HLS IP

    本文逐步演示了如何使用 AMD Vitis HLS 來(lái)創(chuàng)建一個(gè) HLS IP,通過(guò) AXI4 接口從存儲(chǔ)器讀取數(shù)據(jù)、執(zhí)行簡(jiǎn)單的數(shù)學(xué)運(yùn)算,然后將數(shù)據(jù)寫回存儲(chǔ)器。接著會(huì)在 AMD Vivado Design Suite 設(shè)計(jì)
    的頭像 發(fā)表于 06-13 09:50 ?512次閱讀
    如何使用AMD <b class='flag-5'>Vitis</b> HLS<b class='flag-5'>創(chuàng)建</b>HLS IP

    Linux環(huán)境再升級(jí):PLIN驅(qū)動(dòng)程序正式發(fā)布

    PLIN驅(qū)動(dòng)程序現(xiàn)已正式發(fā)布,本文將展示如何安裝PLIN驅(qū)動(dòng)程序,以及如何在Linux環(huán)境下進(jìn)行基本的PLIN通信操作,確保您能夠快速掌握并應(yīng)用這一新工具。
    的頭像 發(fā)表于 04-21 15:29 ?306次閱讀
    <b class='flag-5'>Linux</b>環(huán)境再升級(jí):PLIN<b class='flag-5'>驅(qū)動(dòng)</b>程序正式發(fā)布

    何在VS Code中使用瑞薩RA系列MCU

    VS Code(Visual Studio Code)是微軟公司出品,它是一個(gè)免費(fèi)且多功能的代碼編輯器,幾乎支持所有主要的編程語(yǔ)言和框架。特別是最近又新加了Github Copilot功能,讓用戶
    的頭像 發(fā)表于 04-16 14:02 ?2600次閱讀
    如<b class='flag-5'>何在</b>VS Code<b class='flag-5'>中使</b>用瑞薩RA系列MCU

    飛凌嵌入式ElfBoard ELF 1板卡-字符驅(qū)動(dòng)之字符驅(qū)動(dòng)框架描述

    /dev目錄下創(chuàng)建設(shè)備文件,并通過(guò)device_destroy和class_destroy函數(shù)進(jìn)行刪除。 內(nèi)核緩沖區(qū)和用戶空間數(shù)據(jù)交換:驅(qū)動(dòng)程序可以使用copy_to_user
    發(fā)表于 03-14 09:45

    何在USB視頻類(UVC)框架中使用EZ-USB?FX3實(shí)現(xiàn)圖像傳感器接口USB視頻類(UVC)

    電子發(fā)燒友網(wǎng)站提供《如何在USB視頻類(UVC)框架中使用EZ-USB?FX3實(shí)現(xiàn)圖像傳感器接口USB視頻類(UVC).pdf》資料免費(fèi)下載
    發(fā)表于 02-28 17:36 ?2次下載

    使用Linux UIO框架實(shí)現(xiàn)ARM和FPGA的高效通信

    使用中斷加內(nèi)核驅(qū)動(dòng)的方式,雖然可以提高效率,但這對(duì)開發(fā)驅(qū)動(dòng)的工程師有較高的技術(shù)要求,因?yàn)閮?nèi)核驅(qū)動(dòng)運(yùn)行在內(nèi)核態(tài),一旦出現(xiàn)錯(cuò)誤,可能會(huì)造成整個(gè)內(nèi)核的崩潰,因此需要一種既高效又不依賴復(fù)雜內(nèi)核驅(qū)動(dòng)
    的頭像 發(fā)表于 02-25 09:49 ?1633次閱讀
    使用<b class='flag-5'>Linux</b> <b class='flag-5'>UIO</b><b class='flag-5'>框架</b>實(shí)現(xiàn)ARM和FPGA的高效通信

    何在MATLAB中使用DeepSeek模型

    在 DeepSeek-R1(https://github.com/deepseek-ai/DeepSeek-R1) AI 模型橫空出世后,人們幾乎就立馬開始詢問(wèn)如何在 MATLAB 中使用這些模型
    的頭像 發(fā)表于 02-13 09:20 ?3219次閱讀
    如<b class='flag-5'>何在</b>MATLAB<b class='flag-5'>中使</b>用DeepSeek模型

    何在Windows中使用MTP協(xié)議

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

    Linux中的用戶創(chuàng)建

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

    何在智能手機(jī)系統(tǒng)中使用bq27505

    電子發(fā)燒友網(wǎng)站提供《如何在智能手機(jī)系統(tǒng)中使用bq27505.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 10:21 ?0次下載
    如<b class='flag-5'>何在</b>智能手機(jī)系統(tǒng)<b class='flag-5'>中使</b>用bq27505

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

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

    何在反向降壓-升壓拓?fù)?b class='flag-5'>中使用TPS6290x

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

    何在IMC300系列中使用開環(huán)控制?

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

    何在RTOS中使用spi_interface.c?

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