FPGA十年老鸟
十年FPGA码农,十年陈酿十年香!
展开
-
ZynqLinux最小系统系列——2、Petalinux软件的安装
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZynqLinux最小系统系列——2、Petalinux软件的安装安装依赖库以及软件安装依赖库以及软件在root账户下,输入以下指令,进行安装:apt install build-essential vim tofrodosapt install iproute2 gawk gcc git make net-tools zlib1g-dev apt install libssl-dev flex bison libselinu.原创 2022-05-21 21:23:32 · 7615 阅读 · 0 评论 -
ZynqLinux最小系统系列—— 3、Petalinux工程创建与编译以及烧写到FLASH(一)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZynqLinux最小系统系列——Petalinux工程创建与编译以及烧写到FLASH(一)petalinux工程创建Petalinux工程创建与编译以及烧写到FLASH(一))petalinux工程创建首先是需要这个文件在source一下Petalinux设置文件,以使Petalinux工具可用新建Petalinux工程:我们回到 cd /home/gzy 自己的用户名目录,为了统一管理,首先在自己的用户名目录下建立.原创 2022-05-22 06:00:00 · 2016 阅读 · 0 评论 -
ZYNQ LINUX开发笔记——windows下用xilinx SDK编译zynq linux app小程序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ LINUX开发笔记——windows下用xilinx SDK编译zynq linux app小程序前言操作方法总结前言在以往,我都是在linux上安装了xilinx vivado,然后执行以下语句source /opt/Xilinx/Vivado/2018.2/settings64.shexport ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-然后就可以用交叉编译工具ar.原创 2022-04-21 20:49:27 · 8856 阅读 · 3 评论 -
Linux学习过程记录——shell脚本学习1
注意:本系列为我自己的自学文章,没有固定章法,谢谢适当的扩展学习总是必要的,在项目中用到了一些简单的指令,但自我觉得了解的还不够,希望能够更加深入一点,不想拿一本厚重的shell入门来看,一来比较费时间,二来没有针对性,直接从实践上手,看见一句学一句。(1)2> /dev/nulllinux 系统预留三个文件描述符:0,1,2,他们的意义如下所示:0——标准输入(stdin)1——标准输出(stdout)2——标准错误(stderr)重定向的符号有两个,分别是>和>>,两者的区别是:前者会先清空原创 2022-06-03 21:28:36 · 334 阅读 · 0 评论 -
ZynqLinux最小系统系列——1、虚拟机环境的搭建
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZynqLinux最小系统系列——虚拟机环境的搭建前言操作记录必备ubuntu操作前言记录下ZynqLinux的一些操作流程,时间越久越容易淡忘,分别有Petalinux和原生的Linux两种系统的搭建,后面将分别进行描述和记录操作记录ubuntu-16.04.6-desktop-amd64.isopetalinux-v2018.2-final-installer.run首先,在虚拟机上安装Ubuntu。操作也很简单,我设置.原创 2022-05-21 18:20:05 · 7043 阅读 · 1 评论 -
ZynqLinux最小系统系列—— 7、Petalinux ubifs分区自动挂载以及用户脚本自启动
接上一篇,我们已经完成了Petalinux最小系统的搭建,并且手动挂载了ubifs分区。但是如何在上电的时候让其自动挂载还没实现。我接触的应用的一般情况下,LINUX系统起来之后都需要自动运行一个脚本用于指向位于FLASH中的用户sh文件,这样用户开发就可以以这个sh文件作为起点,进行更上一层的开发。那我们现在就需要一个这样的startup文件,系统加载完成之后接下来就来执行这个shell脚本文件,这个sh脚本文件要包含以下内容1、 挂载QPSI中的user1为ubifs分区挂载点为/flash/user原创 2022-06-05 18:02:07 · 1375 阅读 · 0 评论 -
ZynqLinux最小系统系列—— 5、探索根文件系统烧写到FLASH
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZynqLinux最小系统系列—— 5、探索根文件系统烧写到FLASH写在前面Linux根文件系统工程的设置写在前面ZynqLinux最小系统系列是我一个现学现写的系列帖子,写这个系列帖子并不代表我精通这个方面,相反在Linux驱动方面,我应该还是个菜鸟。如果各位看官你是高手了,可以给我提提建议,或者直接就不看了,如果你也是菜鸟,那么不妨看看学习的过程中有没有遇到相同的问题,可以借鉴的。总之,FPGA专业之外多进行扩展学习总是不会错.原创 2022-05-28 23:25:18 · 1804 阅读 · 0 评论 -
ZynqLinux最小系统系列—— 4、Petalinux工程创建与编译以及烧写到FLASH(二)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZynqLinux最小系统系列—— 4、Petalinux工程创建与编译以及烧写到FLASH(二)写在前面接上一篇烧写FLASH写在前面ZynqLinux最小系统系列是我一个现学现写的系列帖子,写这个系列帖子并不代表我精通这个方面,相反在Linux驱动方面,我应该还是个菜鸟。如果各位看官你是高手了,可以给我提提建议,或者直接就不看了,如果你也是菜鸟,那么不妨看看学习的过程中有没有遇到相同的问题,可以借鉴的。总之,FPGA专业之外多进.原创 2022-05-28 17:22:02 · 1357 阅读 · 3 评论 -
ZynqLinux最小系统系列—— 8、Petalinux 实时更新PL部分
在实际项目中,PL和PS的开发可能是两拨人,那么如果PL有更新了的话,如何不需要重新进行打包来进行实时更新呢示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。在Zynq 的Linux环境下,PL 的bit文件下载变得非常简单,甚至于不需要编写程序,只要使用shell 命令就能轻松地完成。它有两种编程方式:1、通过FSBL(First Stage Boot-loader), U-Boot 在引导时写入2、通过Linux FPGA Manager 在系统引导后写入FPGA原创 2022-06-05 21:47:34 · 2687 阅读 · 1 评论 -
ZynqLinux最小系统系列—— 9、一般Linux系统搭建(非Petalinux)
前面petalinux的学习暂时告一段落,petalinux虽然是被xilinx封装后使用起来很方便,但同时也隐藏了很多操作细节,因此从这篇开始,我开始转到linux搭建的普通方式。一步一步从fsbl、uboot、kernel、设备树、文件系统这些都自己来。力求对Linux最小系统的实现有更深的理解。我们在原来已经安装好了Petalinux的ubuntu16.04系统的基础下进行工作,因为在安装Petalinux的时候,必要的依赖库已经交叉编译工具就已经完成了。1、 一个已经安装了petalinux2018原创 2022-07-03 22:10:35 · 1968 阅读 · 0 评论 -
ZYNQ开发系列——把PS和PL程序烧写到FLASH中
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——把PS和PL程序烧写到FLASH中生成 fsbl.elf生成 BOOT.bin下载 BOOT.bin 文件到开发板 Flash这一篇我们将双串口打印和MIO,EMIO,AXI GPIO点灯的两个功能合并,并且少些到FLASH中生成 fsbl.elfFSBL 即 First Stage Boot Loader,当开发板上电后,Boot 流程开始启动,ARM 处理器首先执行芯 片内部的 ROM code,而 ROM.原创 2022-04-14 23:01:04 · 9225 阅读 · 5 评论 -
ZYNQ开发系列——双串口打印以及串口波特率设置
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——双串口打印以及串口波特率设置前言双串口打印串口波特率的修改前言上一篇,我们遗留了这两个问题:1、 如果我两个串口都想打印东西怎么弄2、 串口的波特率如何修改,最大能支持多少这一篇文章我们就来解决这个问题。双串口打印首先我们可以仿print的写法void print(const char8 *ptr){#if HYP_GUEST && EL1_NONSECURE &&.原创 2022-04-13 22:40:31 · 9573 阅读 · 0 评论 -
ZYNQ开发系列——SDK输出串口选择以及打印函数print、printf、xil_printf的差别
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——SDK输出串口选择以及打印函数print、printf、xil_printf的差别前言两个串口到底是谁在打印?print 和 printf 和 xil_printf前言在最初的helloworld工程中,我们实现了通过串口每个1秒钟打印一次Hello World。#include "platform.h"#include "xil_printf.h"int main(){ init_platf.原创 2022-04-10 20:53:32 · 15271 阅读 · 3 评论 -
ZYNQ开发系列——hw_platform包和BSP包中的一些理解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——hw_platform包和BSP包中的一些理解前言hw_platformBSP包前言前面我们完成了PS输出helloworld、PS与PL交互、MIO,EMIO,AXI GPIO的控制、以及PS中断的一些功能,前面的章节不去扣细枝末节,只求快速实现功能,算是一种偷跑吧,尽管一般说来,我们只要能会用即可,因为那些代码也很简单也比较独立,只要需要这些功能的时候把相关代码复制过去就可以了。但毕竟还是比较浅表的东西,有时.原创 2022-04-10 13:51:09 · 9207 阅读 · 2 评论 -
ZYNQ开发系列——PS响应PL中断请求
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——PS响应PL中断请求前言中断的设置PS部分代码前言PS和PL的交互中,还有一个中断没有讲到,在《从零开始研发GPS接收机连载》中,将会有两个中断,一个中断是505us中断,一个中断是10ms中断。在这里我们将其设置好,以便后面可以直接调用。中断的设置注意上面的中断端口ID,是按照端口顺序进行分配的。也就是说505us中断的中断ID是61,10ms中断的中断ID是62,这个后面PS的代码中会用到。PS部.原创 2022-04-08 23:01:24 · 8668 阅读 · 0 评论 -
ZYNQ开发系列——GPIO_AXI、MIO、EMIO点灯
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——GPIO_AXI、MIO、EMIO点灯前言三种GPIO控制方式前言一般来说程序跑起来都需要一个运行灯,以便指示PS和PL目前在正常运行,没有挂死。趁着这个需求,我将PS控制灯的几种方式重新温习一下,三种GPIO控制方式PS控制LED灯包含下面三种方式1、 MIO2、 EMIO3、 AXI GPIO使用MIO是LED的管脚在MIO上面,而使用EMIO和AXI GPIO IP则因为LED的管脚在PL那边.原创 2022-04-06 23:30:55 · 6753 阅读 · 1 评论 -
ZYNQ开发系列——PS和PL交互之PS端开发
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——PS和PL交互之PS端开发前言函数封装后记前言前面《ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互》我们将PL的AXI4LITE SLAVE模块准备就绪了。这一篇我们将PS端驱动也封装好,后面就能方便的利用函数来进行总线的读写了。函数封装之前我们在配置PS的时候总线的地址为:那怎么对这个地址进行操作呢,应该有个文档。不过我直接在其他函数中找到其方法是最快的,因为我暂时忘了手册标题是什么了,.原创 2022-04-05 21:04:13 · 8516 阅读 · 2 评论 -
ZYNQ开发系列——PS开发之HelloWorld
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——PS开发之HelloWorld前言外设接口SDK建立工程相关操作记录前言俗话说一日不见,如隔三秋。两年没搞PS的开发,居然连HelloWorld怎么出来都不记得了,可见知识记录的重要性,知识真的是有保鲜期的,当年那是多么熟练,信手拈来,不进行记录的话,现在就忘得有多彻底。这也是我半年前决心开始写博客的原因之一,希望自己学到的技能记录下来,永远保鲜。不过毕竟之前还是搞过,尽管现在看来又是从头开始学习,但应该进度不.原创 2022-04-04 23:00:13 · 7820 阅读 · 0 评论 -
ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互前言PS端AXI接口AXI4LITE slave模块的设计前言前面我们讲到使用AXI4LITE来作为总线接口来实现PS和PL的交互。同时我们为了支持《从零开始研发GPS接收机连载系列》博文的内容,将PS端的内容与我的ZYNQ7030+AD9363硬件平台进行同步。PS端AXI接口在ZYNQ7030+AD9363平台中,PS端也是规划为使用AXI4LITE总线与PL进行.原创 2022-04-04 22:49:17 · 8417 阅读 · 1 评论 -
ZYNQ LINUX开发笔记——内存直接访问
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ LINUX开发笔记——内存直接访问LINUX 脚本方式C APP模式LINUX 脚本方式写内存:devmem 0xFFFF1001 32 0x00000001读内存:devmem 0xFFFF1001 32 0x00000001如果在C模块中需要调用LINUX脚本则:system("devmem 0xFFFF1001 32 0x1")C APP模式关键代码:#include <errno.h>原创 2021-12-10 20:15:47 · 6825 阅读 · 0 评论 -
ZYNQ开发系列——几个常用接口通过EMIO引出的操作记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——几个常用接口通过EMIO引出的操作记录前言IIC接口以太网接口 100MSPI接口前言有时候不是所有外设都是通过MIO管脚连接出去,因为MIO管脚比较有限,有些外设必须通过EMIO口来进行连接,当要使用EMIO的时候,就不像MIO这样方便了,多出来了一些线需要自己去连接。虽然一般来说难度也不大,这里主要进行一个备忘式的记录。IIC接口Block design引出的管脚,IIC是双向的,因此_t是用来控制管脚方向。原创 2021-12-08 20:32:28 · 6619 阅读 · 0 评论 -
ZYNQ开发系列——AXI4LITE协议的理解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——AXI4LITE协议的理解前言AXI4lite协议的一些概念前言这里参考了这位仁兄的博文,对于AXI4.0协议写的非常详细。链接地址为:这里引述其一些内容AXI4lite协议的一些概念AXI4.0-lite 主要用于内核和外设寄存器之间的通信。PS写一些配置量写到PL的寄存器时,对于时间和数据量要求都不高。例如一个地址一个32位数据配置到PL中,用AXI4.0-lite就特别合适。AXI4_lite 协议原创 2021-12-08 20:26:22 · 6335 阅读 · 0 评论 -
ZYNQ开发系列——为PS和PL的交互做准备
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——为PS和PL的交互做准备我们使用ZYNQ的片子,肯定存在PS和PL交互的情况。一般来说大部分应用都是以PS为主机,PS通过地址管理着它所有的外设。可以配置SPI外设可以配置I2C外设可以配置UART外设可以配置网口外设PS给每个外设分配一个地址空间进行管理。那如果有些外设是要通过PL来实现呢,例如PS自带串口控制器只有2个,那如果项目中要使用三个呢,则需要通过AXI接口来与PL实现的串口进行通信,对这个A原创 2021-12-08 20:16:09 · 7716 阅读 · 0 评论 -
ZYNQ开发系列——ZYNQ系统的搭建
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ开发系列——ZYNQ系统的搭建DDR设置FLASH设置UART设置网口设置当我们有一个要用ZYNQ做的项目时,首先当然是把其最小系统搭建起来。这个最小系统可以交付给开发PS的同事开发裸机程序/RTOS实时操作系统/LINUX的最小系统。那我们来看看搭建一个ZYNQ最小系统工程要如何操作。首先肯定是在Create Block Design中找到ZYNQ7 Processing System.添加一个实例DDR设置PS的程序都原创 2021-12-08 20:09:23 · 6684 阅读 · 0 评论 -
ZYNQ LINUX开发笔记——交叉编译器备忘总结
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZYNQ LINUX开发笔记——交叉编译器备忘总结交叉编译器设置C APP编译指令C APP编译注意事项交叉编译器设置来源于: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842547/Install+Xilinx+ToolsZYNQ7000source /opt/Xilinx/Vivado/2018.2/settings64.shexport ARCH=ar原创 2021-12-06 20:39:08 · 6919 阅读 · 0 评论