自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 ZYNQ系列的实用奇葩操作(7)--PS-PL互联之LINUX下操作AXI外设(UIO接口)

我们知道MMU的作用之一是存储(地址)权限管理,所有物理地址(ZYNQ里的AXI总线地址)经过MMU后会重新映射到一个应用层可访问的虚拟地址。菜鸟方式使用LINUX内核自带的UIO驱动,UIO接口通俗的讲它提供了方法让用户应用层访问底层IO地址。如果你又不想为了单独点个灯搞个驱动一条龙,同时你和我一样是个懒人,那就使用下面的菜鸟方式。添加完成后会在LINUX的VFS里生成/dev/uiox (x为UIO接口编号,ZYNQ系列默认为0,ZYNQMPSOC系列默认占用了4个,从4开始编号)

2024-09-23 08:58:21 384

原创 ZYNQ系列的实用奇葩操作(6)--PS-PL互联之裸机下操作AXI外设

1.地址赋值使用的是固定的(uint32_t *),ZYNQ是32位CPU这样操作没有问题,但在ZYNQ MPSOC这种64位的CPU上需要使用(uint64_t *),我们要尽量写和架构无关代码(这也是每个SDK都会将C语言标准的integer、short integer、char等类型重新typedef一遍的原因,这些重定义可不是闲的没事干)。2.每个寄存器的每一位对应的含义都是存在开发人员大脑里的,不满足好的代码需要能解释自身的要求。还记得之前讲的CPU指针和CPU的Memory Map吗?

2024-09-15 21:57:49 460

原创 ZYNQ系列的实用奇葩操作(5)--PS-PL互联之实现一个简易AXI外设

第十步 底层逻辑电路是连接软件和硬件的桥梁,FPGA最终和硬件的桥梁就是顶层Module定义的output/input信号,output对应的引脚输出高低电平,input获取对应引脚的高低电平(FPGA工程师:这我熟)。第九步 打开myip_v1_0_S00_AXI.v文件,这个文件很容易理解,就是实现AXI总线读写slv_reg0-slv_reg3寄存器的功能。第七步 myip_v1_0_S00_AXI.v就是一个最基本的AXI-LITE接口外设。第四步 选择创建的文件要保存位置,各位看客自便。

2024-09-08 23:41:53 439

原创 ZYNQ系列的实用奇葩操作(4)--PS-PL互联之从外设角度理解AXI总线

内核只是一颗处理器的一部分,同一个内核不同的厂家加上不同的外设可以做成不同的处理器,就像LPC4357和STM32F407都是基于coretx-M4内核,但是是两个完全不同的处理器。从上图可以看出来,CPU预分配的DDR内存地址是1GB,也就是说PS端的DDR控制器支持的最大内存是1GB,你原理图上给个4GB的DDR除了拉动GDP外没其它作用。本章讲了CPU和外设的关系,外设在CPU里的地址映射,核心还是CPU处理外设都是通过地址+数据总线的方式。回忆虽然美好,但回忆的目的是让未来的路越走越宽。

2024-09-01 00:43:25 718

原创 ZYNQ系列的实用奇葩操作(3)--PS-PL互联之从CPU角度理解AXI接口

上一篇文章讲了CPU(本章的CPU都是指的ARM内核,即中央处理单元,不包括SOC里包含的外设等)如何处理一个C语言的指针写入操作,本章继续深入理解。2号通道对应AXI_GP_Slave接口,意思是PL端可以通过这个接口,经过Central Interconnect总线矩阵访问PS的各个外设,如UART、SPI、DDR等。我们现在来想一想, CPU上挂载了一组内存,现在使用str r2, [r3] 这行代码往内存里写数的流程(这里r3对应的地址是分配给了DDR,不考虑MMU)。

2024-08-29 00:43:22 419

原创 ZYNQ系列的实用奇葩操作(2)--PS-PL互联之从C语言指针开始理解AXI接口

现在需要存一部分,你翻了下小本本(fp),看看哪个房间安全点,发现小本本(fp)第8页记录了10号房间安全,并记在了脑子(r3)里,这个过程就对应 ldr r3, [fp, #-8]。等了一会儿,你老婆出门了,好的,机不可失。假设你是个狡猾的兔子,每个月你老婆会给你零花钱,剩下的呢你要存下来,然后你就在很多房间里藏了私房钱,每个房间里面藏的金额还不一样。第38行是寄存器间接寻址,说人话就是r3寄存器里面保存了一个数,这个数是一个CPU可以访问的地址,然后将r2寄存器的值存到r3这个地址对应的位置。

2024-08-24 17:18:26 387

原创 ZYNQ系列的实用奇葩操作--PS-PL互联之接口解释

现在ARM和FPGA挤到一堆了,ARM不顺手使用都对不起这么nice的功能,所以呢EMIO接口就是说,PS的各种外设IO引脚(如串口、GPIO、I2C、ETH等等)都可以通过EMIO接口映射到FPGA部分,重新分配引脚。下图就是将GPIO控制器的IO引脚映射到了PL部分。看到没,明明只是插了一个下载器,扫出来了两个器件,ARM_DAP_0对应的是ARM部分,XC7Z020对应的是FPGA部分。好了,此篇文章只是开胃菜,下一篇文章介绍PS-PL互联的重头戏--几种AXI接口,以及如何理解SOC中的总线。

2024-08-22 00:31:26 244

原创 AD9361移植到自己的ZYNQ板子的过程-4编译no-os工程

1

2021-07-02 18:09:13 1923 2

原创 zynq+ad9361 petalinux使用官方IIO示波器调试记录

1ad9361 iio示波器

2021-06-30 12:12:00 4889 13

原创 AD9361移植到自己的ZYNQ板子的过程-3修改vivado工程以适应自己的硬件

1.修改使用的硬件平台。 打开上章自动生成的VIVAO工程,我选用的硬件平台对应的是fmcomms2_zc702.xpr。按下图方式打开project summary.project part里修改为的project device 修改为xc7z020clg484.之后按照提示,有弹出的框框都选YES。让更新ip核也按提示更新。2.修改PS相关配置, 1.DDR相关的配置,重要 首先要按照自己的硬件配置好DDR,尤其是与PCB布线有关的DDR的时序一定要...

2021-06-28 00:54:24 2643 1

原创 Petalinux 使用外部ADI的内核源码编译记录-附oe_runmake解决办法

最近在使用zynq+ad9361,需要使用ADI提供的内核源码。按照UG1144的,Using External Kernel and U-Boot with PetaLinux。配置工程petalinux-config,在界面里配置linux components selection->linux-kernel->ext-local-src ,会弹出输入内核目录框,输入内核源码目录。 编译后,会出现do_compile: oe_runmake failed错误。然后查阅附近有关的错...

2021-06-25 18:02:20 2559 2

原创 AD9361移植到自己的ZYNQ板子的过程-2官方GITHUB代码移植

1.官方托管代码说明ADI官方的所有代码都托管到了https://github.com/analogdevicesinc打开后在2021/06的截图如下:众所周知ZYNQ包含PS和PL部分,对于AD9361+ZYNQ来说,hdl文件夹里存放的就是FPGA部分的代码和生成hdf文件需要的代码,对应ZYNQ平台需要使用VIVADO工具开发的部分。不管是no-os还是linux,都需要用到hdl里的代码来生成HDF文件。no-os里存放的就是裸机开发需要用到的代码,linux里存放的是LINUX平台开

2021-06-24 12:00:24 5009

原创 AD9361移植到自己的ZYNQ板子的过程-1移植教程的分类

1.官方教程的分类 adi官方的手册的确是很多也很全,这也导致了搜索出来的东西让人眼花缭乱。比如什么HDL-版本号、no-os-master、linux、iio 、bit文件编译构建,库文件构建,no-os在linux或windows下编译,hdl和no-os又有多个版本,hdl又会搜索出AD9361 Evaluation Software这个配置软件,这个配置软件有会搜索出很多教程。才开始接触让人摸不着头脑,下面大概讲解这些花样是什么意思。1.AD9361 Evaluation Soft...

2021-06-24 10:58:30 2126

原创 Vivado 封装IP核调试记录

Vivado 封装IP核调试记录在很多vivado IP封装教程中 都是写如何一次性成功的封装一个IP。但是当我们修改了源文件后,再使用就会出现一些奇怪的问题,现记录下来。1.端口名重导入更改了源文件的input /output 接口定义后,在Ports and Interfaces栏中,没有同步更新端口名,即使此时点及刷新按钮称(尤其是只是更改了端口名的大小写后,我一度认为是VIVADO不区分大小写,但是此时IP是可以正常封装完成的,只有在综合仿真的时候会报错:cannot find port

2021-06-12 22:25:27 2025 2

原创 LinuxBASE2--Makefile&GDB

makefile 文件 用来代替在控制台输入命令。如控制台输入 gcc -o filename filesrc用makefile描述:hello:hello.c   gcc -o hello hello.cclean:   rm -f  hello缩进要用TAB延时变量定义   =    ?=     立即变量定义:=     变量定义符 +=在右边的变量为 :=定义的立即

2017-02-21 10:37:04 232

原创 嵌入式Linux入门1--GCC

windows下使用Mingw32提供的GCC工具链为使用工具。Linux下GCC使用方法与此相同。GCC常用选项,注意区分大小写.1.主要命令:-c:预处理 编译 汇编 -S:编译 不汇编-E: 预处理。预处理信息在使用MINGW32的情况下,预处理信息会在cmd控制台中显示     编译器处理过程:预处理-》编译-》汇编-》链接-o :指定输出的文件名-v:显示

2017-02-20 14:36:12 226

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除