自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ZYNQ-Vitis(SDK)裸机开发之(九)PS端XADC接口使用,读取SOC芯片温度、电压,读取外部输入模拟量

XADC属于硬件接口,直接集成在PS核内,不可配置;可实现芯片内部电压和温度的读取,同时XADC模块也集成了模数转换器,可以将外部输入的模拟电压转换成数字信号,从而实现读取外部模拟信号的功能。ZYNQ SoC XADC模块,其内部包含有两个12 位(确保 10 位可靠精度)、转换速率为 1Mbps的 ADC,可以采集模拟信号并转换为数字信号送给 FPGA 内部使用。模块有一对支持差分输入的专用模拟通道输入引脚(VP/VN),在差分输入模式下,VP-VN 的电压输入范围是-0.5V ~ +0.5V;

2024-04-19 15:10:10 1299

原创 ZYNQ-Vitis(SDK)裸机开发之(八)PS端QSPI读写flash操作(包括SPI、Dual SPI、Qual SPI的配置使用)

SPI为标准通信协议,不仅可以操作flash,还可以与其他类型器件进行通信,但是由于SPI标准通信协议为全双工,且速度较慢,因此实际读写flash时,一般都使用其扩展协议,即Dual flash和Quad flash。Flash存储数据时,只能将1写为0,不能将0写为1,因此对flash进行擦除操作时,就是将flash对应区域全部置1,写数据时,就将对应bit置0即可。IO2(WP):写保护引脚,低电平时,flash无法被写入数据,在Quad SPI模式下复用为数据引脚。

2024-04-19 15:01:52 1687

原创 ZYNQ-Vitis(SDK)裸机开发之(七)PS私有定时器Timer的使用

在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(Global Timer)。除此之外,PS 中还有一个 24 位的系统看门狗定时器(SWDT)和两个 TTC(Triple Timer Counters)。系统看门狗定时器可以在系统发生灾难性的故障时(如 PS 中的 PLL 工作异常)发出信号,使得系统程序重新启动,保证了系统安全可靠的运行。

2024-04-14 09:47:50 1126

原创 ZYNQ-Vitis(SDK)裸机开发之(六)Watchdog看门狗的使用

看门狗主要是实现程序在运行异常、崩溃卡死的状态下,使系统进行重启的功能,ZYNQ看门狗为PS核内置功能,因此无需对PS端进行特殊配置,也不需要增加PL端的任何IP核;测试看门狗是否正常运行时,可将喂狗操作去掉,观察ZYNQ的Done等,是否固定频率亮灭,如果是,则证明ZYNQ由于没有喂狗,在被一直复位重启。函数,在操作时间较长较复杂的位置,进行喂狗操作,防止狗咬系统复位;连接***********************************开发环境:Vivado2020.2,Vitis2020.2。

2024-04-14 09:26:39 709

原创 ZYNQ-Vitis(SDK)裸机开发之(五)PL端AXI GPIO的使用

目前网上对于AXI GPIO的详细使用方法介绍的很少,基本都是一个通道一个IO,或者几个IO,统一进行配置,并没有对不同bit的不同操作进行深入的讲解,因此才写了本篇文章,也是希望大家学习过程中少走一些弯路,坑我都替你们踩过了。* 6.该代码实现AXI GPIO读取按键中断输出,然后打开蜂鸣器,按键一次,打开蜂鸣器,再按键一次,关闭蜂鸣器,蜂鸣器:channel1bit0,按键:channel1bit1。连接************************************

2024-04-14 09:19:09 1612

原创 ZYNQ-Vitis(SDK)裸机开发之(四)PS端MIO和EMIO的使用

以ZYNQ7020为例,GPIO总共118个,分为了4个bank(ZU+的GPIO和bank数量有所增加),其中MIO有两个bank,需要注意的是bank1的GPIO数量只有22个,其余三个都有32个。MIO和EMIO均为PS端的GPIO,由PS控制,其中MIO可直接配置复用成PS外设,而EMIO则可以连接到PL端,复用为PL端搭建的外设资源。

2024-04-14 09:08:11 1218 1

原创 ZYNQ-Vitis(SDK)裸机开发之(三)Vivado硬件设计(比特流(.xsa)文件)更新后,Vitis工程更新硬件依赖文件的方法,进行重编译

vitis工程中的板级支持包,都是根据vivado中设计硬件相关的,比如设计了一个PS串口,那么板级支持包中只包含PS串口操作的相关接口,不会包含PL串口操作的接口,因此如果Vivado工程更新后,如果vitis工程中不对xsa文件进行更新,vivado的修改不会生效;

2024-04-09 11:23:07 998

原创 ZYNQ-Vitis(SDK)裸机开发之(二)程序固化方法,程序烧写到SD卡启动以及通过QSPI烧写到Flash中启动方法

然后将SD卡插入板卡的卡槽中,根据硬件原理图,将板卡启动模式开关,拨到SD卡启动模式,等待程序启动,如果zynq的done灯亮,且功能正常,则证明SD卡烧写启动成功。注意事项:建立vitis程序时,要勾选Generate boot components选项,这样会生成启动的引导文件fsbl,没有fsbl没办法进行程序烧写。Vitis工程编译完成后,在如下目录下会生成BOOT.BIN文件,去对应文件加中找到该文件,备用。程序烧写即将程序固化到存储器中,掉电不丢失,重新上电可以自动运行固化好的程序。

2024-04-09 10:56:12 1412

原创 ZYNQ-Vitis(SDK)裸机开发之(一)串口收发使用:PS串口+PL串口、多个串口使用方法

一些注意事项:PS和PL串口同时使用时,PL串口配置的中断优先级不能小于等于0xA0(即数值不能大于等于0xA0),目前代码中配置的PL串口中断优先级为0x98,如果数值大于等于0xA0时,单独使用PL串口收发没有问题,一旦使用了一次PS串口的收发,PL串口收发功能就失效了,具体原因我也不太清楚,还没深究,大家知道的话可以评论区说下~实例化PS、PL串口结构体对象,并新建数组,存放实例化后的对象指针,方便后续使用操作,这样后面的串口初始化配置等操作,只需要传入对应串口号即可操作响应的串口结构体;

2024-04-09 09:39:01 2536 3

原创 STM32/GD32学习指南-踩坑之(五)串口收发数据的三种方式:UART接收中断、UART+DMA空闲中断、UART+DMA超时中断,接收不定长数据,纯干货,有史以来最详细的讲解,附源码

串口收发数据的三种方式:UART接收中断、UART+DMA空闲中断接收不定长数据、UART+DMA超时中断接收不定长数据;该种方式使用DMA(直接内存存取器)接收串口数据,中断标志为:USART_INT_IDLE;该种方式在串口RX处于空闲状态时,会触发中断,也就是一帧数据接收完成后,串口RX不再收到数据,即可触发空闲中断,此时可以将接收到的数据提取出来,由于使用DMA接收,所以可以接收不定长数据,并且数据接收过程中不需要CPU的参与,只是在数据接收完的时候,会触发一次空闲中断才涉及到CPU参与

2024-02-29 16:22:11 4187 5

原创 STM32/GD32学习指南-踩坑之(四)GPIO作为简单IO,配置为输出模式时初始状态的注意事项

无论是GD32还是STM32,当GPIO配置为输出模式时,初始化完成后,都有一个初始的输出状态,有的可能时高电平,有的可能是低电平,不配置的话,可能初始化后一瞬间的上升或下降沿信号的输出,会对一些外围器件产生期望之外的操作等。在初始化代码前,先将GPIO的输出寄存器置高,再对GPIO初始化,用示波器测量,低电平的时间从2ms变成了1ms,时间缩短了,对应控制的外设确实没有被复位,但是还是有风险。所有GPIO配置为输出模式时,初始化后需要给一个确定的输出状态,GPIO_BOP为置高,GPIO_BC为置低。

2023-08-29 11:29:32 1984

原创 ZYNQ-Linux开发之(八)Python源码交叉编译安装以及Numpy库交叉编译安装的使用

对于交叉编译使用的numpy库来说,只需要numpy文件夹下的.h文件,所以eclipse中调用的numpy库并不需要交叉编译,.h文件不分平台,可以直接将zynq根文件系统中/usr/lib/python3/dist-packages/numpy/core/include/numpy文件夹拷贝出来放到虚拟机中使用,也可以手动安装X86平台的numpy库或者安装ARM平台下的numpy库,然后将python安装目录下对应的。端编译方式一致,没有交叉编译工具,编译平台,目标平台等配置,直接。

2023-08-01 14:45:04 1275

原创 ZYNQ-Linux开发之(七)国产化复旦微电子FMQL平台uboot和kernel无法识别国产SPI Flash 芯片以及分区的问题

这里面我添加了几行打印信息,打印的是uboot启动后读取的spi flash芯片实际的ID值,系统启动后进入uboot指令,输入:sf probe,即可查看,一共是6个值,分为两组,前三个为flash芯片的Manufacture ID,也就是0x010219,后三个为Device ID的值,也就是0x4d0180,或者是0x4d01,具体情况跟芯片的型号有关,同时可以查看芯片手册来确定上面的两个ID的值。(1)进入到SDK中,找到如下目录中的spi_flash.c文件,双击打开,找到如下函数。

2023-08-01 14:24:12 3147

原创 STM32/GD32学习指南-踩坑之(三)环形buffer使用方法,环形缓存区的读取操作方法

例如:现在有一个串口,接收到外部发来的数据,将其存入到环形buffer中,然后再从该环形buffer中将数据读取出来,进行一些帧格式、数据校验的操作,再从该串口发送出去。在处理接收数据时,经常使用到环形buffer存储数据进行处理,尤其是单片机中,内存本来就小,就需要节约内存的使用。Head:当前队列头部,也就是下次数据读取时的首地址,根据数据的存取状态,是动态变化的。Tail:当前队列尾,也就是下次数据写入时的首地址,根据数据的存取状态,是动态变化的。3. 读取环形buffer中的数据。

2023-07-14 17:24:42 1219 1

原创 OTN协议解析软件-G.709协议解析软件-OTN协议分组解析-OTN协议学习-光通信学习,功能非常强大

windows下的Qt版本,带上位机界面,以及Linux下的Linux C++版本,开发环境为Ubuntu + eclipse。分享一个OTN协议解析的软件,可用于自己学习或者公司调试学习使用,需要的可以点击文章最后的链接。支持OTUCn,OTU4,OTU3,OTU2,OTU1,ODU0速率OTN数据的解析。支持解析过程中,各个子级ODU信号或OPU信号或载荷信号的提取。支持OTN数据分组信息的输出打印,多层级分组的层级关系展示。软件功能非常强大,可以支持各种OTN速率信号的解析工作。

2023-07-13 09:21:11 286

原创 STM32/GD32学习指南-踩坑之(二)关于堆栈空间大小配置的问题

图中Heap_Size就是堆空间大小的配置,堆空间主要是程序员自己申请的空间,例如malloc,new申请的内存占用堆空间,用完后需要使用free或delete手动释放,否则会造成内存泄漏、野指针的问题。图中Stack_Size就是栈空间大小的配置,一般函数内的局部变量占用栈空间,并且函数执行完毕后会被自动回收,根据自己的片子手册以及代码编写的使用,合理分配即可,例如图中的0x00000800,十进制是2048,即2MB空间的栈内存。打断点后,进入如下图所示的硬件错误中断函数中。开发过程中遇到如下问题。

2023-07-10 15:15:03 2259 5

原创 ZYNQ-Linux开发之(六)linux指令整理-全是linux开发中使用频率最高的shell指令,非常实用

3. 实时查看文档或日志的内容,例如调试日志在不停更新,可以使用该指令实时查看日志更新内容。7. 通过网口,远程将其他设备内数据拷贝传输出来,或者将本机数据传输到远端设备中。6. 远程登陆其他设备的系统-前提是两个设备的系统通过网口连接,可正常网络通信。14. 通过控制台启动程序,程序后台启动,并且控制台退出后程序不退出。19. 反编译设备树-反编译dtb设备树文件。18. 编译设备树-生成dtb设备树文件。24. 查看当前目录下的所有文件信息。21. 剪切文件-或重命名文件。8. 查看网口状态信息。

2023-07-09 17:18:45 344

原创 ZYNQ-Linux开发之(三)Vivado SDK使用,裸机开发调试,不带linux

单击Documention,可查看接口相关文档说明,单击Import Examples,可导入接口相关测试例程。,在弹出的窗口中,选中GDB Debugger using Debug Test.elf on Local,单击Run,正确情况下,SecureCRT窗口将输出“Hello World”。其他接口调试可在Peripheral Drivers中找到相应接口,点击Import Examples,再根据情况修改例程中的C/C++源代码(一般情况下不需要修改或这需要少量修改),按照以上步骤调试即可。

2023-07-02 11:08:25 5347 1

原创 ZYNQ-Linux开发之(二)Vivado工程搭建、Block Design设计搭建、PS、PL的IP核的使用配置

其他可能需要配置的是PL Fabric Clocks,根据之后添加PL的IP核所需的时钟确定,比如本工程的PL的IP核中有的需要100M时钟,有的需要200M时钟,有的需要125M时钟,还有的需要10M时钟,则可按下图设置,对于精度要求不高的IP核,还可以通过添加时钟的IP来进行时钟的倍频实现需要的时钟。4. SD有两个可选,一般设计中SD0为SD卡槽,SD1为EMMC,若为板卡存在EMMC芯片则SD0和SD1都需要勾选,无论是否有EMMC,SD0都是必须选择的。

2023-07-02 10:50:00 6231 5

原创 ZYNQ-Linux开发之(一)Vivado安装、SDK安装、License导入破解、Vivado无法正常启动等

点击Load License,再点击右侧的Copy License…,弹出对话框中找到License文件,选择打开后弹出License安装成功的对话框,点击确定完成vivado 2018.3安装。导入license,如果没有自动弹出可以打开软件后,单击Help菜单的Manage License…

2023-07-02 09:46:01 6594 2

原创 ZYNQ-FMQL简介、linux开发方法、Vivado工程搭建

ZYNQ、FMQL开发流程、设备树开发流程、vivado工程搭建、procise工程搭建、IAR工程搭建

2023-06-18 10:39:24 977 1

原创 ZYNQ-Linux开发之(五)Vivado工程搭建,设备树修改方法,复旦微电子fmql开发、vivado联合procise、IAR的linux系统开发-保姆级教程-非常详细

不要在其余四个文件中修改设备树,即便修改了,编译后也不会生效,其余四个文件是通过DeviceTree文件夹以及.hdf文件编译后生成的,里面有vivado工程搭建的资源的设备树节点的描述,大家使用时,可以先不修改system-user.dtsi文件编译一次,这样其余四个文件中的设备树节点就根据你的DeviceTree文件夹以及.hdf文件进行了更新,然后再通过其余四个文件中的设备树节点的引用名字,在system-user.dtsi文件中通过引用添加新的设备树子节点信息。

2023-06-18 10:10:46 7154 15

原创 STM32/GD32学习指南-踩坑之(一)外部晶振配置,初始化失败,不起振

开发过程中,遇到GD32初始化时钟一直卡在system_clock_200m_25m_hxtal(void)函数里面,卡在了RCU_CTL_HXTALSTB标志位的检测。使用有源晶振的话,需要在上述system_clock_200m_25m_hxtal(void)中添加一句话,在RCU_CTL |= RCU_CTL_HXTALEN;跳转到__SYSTEM_CLOCK_200M_PLL_25M_HXTAL对应的系统时钟配置函数:system_clock_200m_25m_hxtal(void)

2023-06-12 15:56:57 1854

原创 STM32/GD32学习指南-踩坑之(一)外部晶振配置,初始化失败,不起振

GD32配置外部时钟,有源晶振和无源晶振

2023-06-12 11:37:30 5774 5

原创 ZYNQ-Linux开发之(四)(Vivado - C2C使用)

ZYNQ-Linux开发之(一)(Vivado - C2C使用)

2023-06-10 17:48:04 1096 2

ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口

ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设计、Vitis裸机开发设计,PS一个串口和PL两个串口 ZYNQ020 工程,包含Vivado设

2024-04-09

numpy源码 numpy-1.8.1.tar.gz

numpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源码 numpy-1.8.1.tar.gznumpy源

2023-08-01

Python源码 Python-3.4.0.zip

Python源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zipPython源码 Python-3.4.0.zip

2023-08-01

OTN G.709协议T-REC-G.709-202202-I!Amd2!PDF-EOTN光通信协议

1 Scope 11 2 References 11 3 Terms and definitions 12 4 Abbreviations 14 5 Conventions 17 6 Optical transport network interface structure 18 6.1 Basic signal structure 19 6.1.1 OCh substructure 19 6.1.2 Full functionality OTM n.m (n ≥ 1) structure 19 6.1.3 Reduced functionality OTM nr.m and OTM 0.m structure 20 6.2 Information structure for the OTN interfaces 20 7 Multiplexing/mapping principles and bit rates 24 7.1 Mapping 26 7.2 Wavelength division multiplex 27 7.3 Bit rates and capacity 27

2023-07-12

ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源

ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口、GPIO等资源 ZYNQ的嵌入式linux开发的vivado工程,工程包含GE网口

2023-06-18

C++操作mysql数据库封装

zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C++操作代码 zynq平台mysql数据库C

2023-06-12

Linux下C++操作mysql和redis数据库的封装

编译环境:eclipse 使用平台X86,乌班图下,当然,C++代码是通用的,也可以在windows下使用 包含了mysql常用的增删改查操作,支持容器数据添加,各种模板数据添加,支持单行增加删除,单行数据修改,多行数据增加删除,多行数据修改,清空表格,多条件查询,多条件删除等等很多便捷的操作,插入和删除数据快。 redis数据库支持string、键值对、map、多层map等数据的增删改查,还支持C++多层嵌套结构体的json序列化并写入redis数据库,非常方便 编译环境:eclipse 使用平台X86,乌班图下,当然,C++代码是通用的,也可以在windows下使用 包含了mysql常用的增删改查操作,支持容器数据添加,各种模板数据添加,支持单行增加删除,单行数据修改,多行数据增加删除,多行数据修改,清空表格,多条件查询,多条件删除等等很多便捷的操作,插入和删除数据快。 redis数据库支持string、键值对、map、多层map等数据的增删改查,还支持C++多层嵌套结构体的json序列化并写入redis数据库,非常方便 免费供大家下载使用,过程中如有问题可以联系我

2023-06-12

常用Linux指令-非常实用

常用Linux指令-非常实用

2023-06-12

空空如也

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

TA关注的人

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