自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 windows座驾(2) - VScode+QT minGW

CMAKE下载地址是https://cmake.org/download/,根据自己的系统下载合适的版本。比如:C:\Qt\Qt5.12.12\Tools\mingw730_4\bin。比如:C:\Qt\Qt5.12.12\Tools\mingw730_64\bin。比如:C:\Qt\Qt5.12.12\Tools\mingw730_4。比如:C:\Qt\Qt5.12.12\Tools\mingw730_4。Gdb Path :此选项配置在VSCODE里面使用GDB调试时,gdb的目录。

2025-05-08 23:26:07 758

原创 我的开发座驾-windows篇(1)VScode+MarsCode AI套装

开发环境第一步必然就是开发神器VScode,在还没毕业的时候用visual studio就惊叹于它的智能感知能力,可惜这么好用的功能需要安装庞大的VS,并且对其他开发的支持等于没有。最近发现记忆力越来越差了,这不新装了系统后,就忘了之前使用的开发环境怎么配的,所以就有了此系列文章。marscode AI这个插件使用deepseek模型推理后,确实已经具有了很强的使用价值,不再是昨年那种靠AI插件出代码只要1分钟,调BUG1小时的体验。还好,现在的AI只能算是一把神兵,神兵也要看主人能不能挥的动。

2025-04-05 23:57:09 475

原创 ZYNQ嵌入式开发三板斧之Petalinux篇(2)

仅仅修改这里还不够,还需要修改aboortboot_single_key函数的源码,单看此函数的名字就知道这个函数决定哪个按键按下时进入命令行(膜拜下大佬的命名规则,函数名称本身就可以是自己的注释)。xilinx在这里给我们埋了一个坑,打开u-boot目录里的common/autoboot.c文件,源代码里定义的配置是CONFIG_USE_AUTOBOOT_MENUKEY(XILINX真有你的,挖坑真给力。u-boot老鸟都知道可以通过make kconfig的模式修改u-boot进入命令行模式的键值。

2025-03-23 11:27:32 216

原创 ZYNQ嵌入式开发三板斧之Petalinux篇(1)

3.在实际使用中会涉及到定制了底层驱动的u-boot和kernel,因此在Linux Components selectiong里将自己下载的源码目录指定到配置项里(注意源码目录必须是没有经过make配置或编译过的)。5.配置设备树生成模式,Remove PL from devicetree选中则petalinux编译时不会自动生成通过AXI接口在PL端扩展的外设的设备树,此模式下适用于适配自己编辑的驱动模块的设备树。2.进入刚才创建的userprj目录下 加载VIVADO生成的硬件平台描述文件。

2025-01-16 17:27:29 330

原创 小马拉大车--PS端使用AXI接口享受10G以太网

别问我为啥不用UDP测速,不是我懒,是iperf的UDP速度测出来只有1Gbits我都不好意思贴上来,跟砖头挂在PL端时UDP纯接收10Gbps,4端口无丢包5Gbps的速度相比太拉跨了。1)配置工程的ZYNQMP处理器为自己板子对应型号,之后对着自己的核心板配置好ZYNQMP最小系统,注意此工程PS端的UART引脚和国内大部分的开发板都不一样,此UART是LINUX的控制台终端接口,一定要和自己的板子一致。砖头使用的是VIVADO2020.2,将2019.2的工程升级后实测也是能用的。

2024-12-23 23:34:08 507

原创 【无标题】

不同于GPIO类引脚可以直接让整个PORT做自动生成顶层文件,SPI类接口需要每个接口单独导出,不然按整个PORT生成的SPI接口会是三态类型,(三态类型下SPI的时序会有一点问题,在某些芯片下可以正常工作,某些芯片就不能,具体情况用示波器很容易抓出,不服输的可以试一试)。需要提醒的是AXI SPI的io1_o对应的是SPI接口的MOSI接口,AXI SPI的 io1_i对应SPI接口的MISO接口。一般也不会用AXI SPI做很高大上的功能,具体的AXI SPI配置可参考下图。

2024-12-03 22:38:55 263

原创 ZYNQ系列的实用奇葩操作(10)--PS和PL防扯皮工具JTAG-AXI食用方法

这里注意,虽然上图不同的master对同一个slave分配了同一个地址,但是经过AXI Interconnect或AXI-Smartconnect的互联允许每个Master接口可以有自己的对应的地址空间,即不同的master对同一个slave接口的地址空间可以不同,之后的例程会展示这种情况。上图可以看到AXI Interconnect这个IP核将两个主机接口JTA-TO-AIX、PS_M_AXI与从机接口连接到了一组AXI互联接口上,这个图也展示了AXI接口支持多主多从结构的互联形式。

2024-11-17 20:19:54 504

原创 ZYNQ系列的实用奇葩操作(8)--ZYNQ远程调试神器XVC食用方法(上)

From AXI to BSCAN:BSCAN接口是每个芯片厂家预留的调试接口,如果选择From AXI to BSCAN,就会将ZYNQ芯片的调试接口连接到这个IP上,意思就是说可以使用ZYNQ的PS端调试PL端,使用了这个接口后芯片的物理JTAG接口可以下载PL端的程序但不能调试PL端。Debug Bridge IP配置里的Bridge Type有几种选项,我们常用的两种是From AXI to BSCAN 和 From AXI to JTAG。看吧,事情不是因为难就不去做,是做了才不难。

2024-10-20 00:45:10 962

原创 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 683

原创 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 595

原创 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 593

原创 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 852

原创 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 548

原创 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 453

原创 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 505

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

1

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

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

1ad9361 iio示波器

2021-06-30 12:12:00 6934 14

原创 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 3417 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 2801 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 6130 2

原创 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 2410

原创 Vivado 封装IP核调试记录

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

2021-06-12 22:25:27 2352 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 257

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

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

2017-02-20 14:36:12 258

空空如也

空空如也

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

TA关注的人

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