arm
文章平均质量分 79
leon_zeng0
从事激光领域软件开发,三维内雕软件,3d 打印机软件, 运动控制器,通讯,c, c++, verilog,fpga
技术移民加拿大,往返于多伦多和中国之间
喜欢旅游,游泳,徒步,自驾游,独轮平衡车,滑冰,单板滑雪
展开
-
PCA9685 多舵机控制器的编程
本文介绍通过写入寄存器的方法实现对PCA9685 的控制。PCA9685 模块制作机器人,舵机就是让它动起来的关键器件。而又由于通常设计中为了不影响处理器供电或者主控功率不够,都会另外制作一块板子用作舵机驱动,也叫舵机控制板。PCA9685是一款用于产生16路PWM信号的LED控制芯片, 采用I2C总线与主控芯片进行通信。PCA9685具有可以产生16路PWM脉冲、控制独立精准、编程简单灵活等特点, 以其为基础实现的舵机控制能够有限减少硬件和软件设计的复杂度, 具有高可靠性PCA9685的用途.原创 2021-01-08 15:06:25 · 15909 阅读 · 0 评论 -
AXI4 Lite 协议分析
本文是上篇文章《自定义IP实验》的扩展,在Zynq 7000 的ip设计应用中,为了实现PS-PL 互动,我们需要选择 AXI 4 协议, 而Axi4 Lite 是其中简化版本,耗用资源比较少,也比较好理解。大多数情况,我们选择它。为了设计好自定义ip 包,我们需要熟悉和掌握 Axi 4 Lite。首先使用ILA 采集读写的波形图,另存工程,然后添加ila。我简单介绍其操作过程,如原创 2017-12-08 05:39:51 · 14498 阅读 · 0 评论 -
自己动手做个DIY波士顿机器狗
我想来整个DIY波士顿机器狗。中文的介绍:https://www.qbitai.com/2020/08/17572.html软件安装:https://github.com/mike4192/spotMicro硬件制作:https://www.thingiverse.com/thing:3445283中文介绍是这样的:用树莓派DIY波士顿机器狗,帮你省下50万:教程开源,人人皆可上手软件部分在运行Ubuntu 16.04的树莓派3B计算机上实现。所以首先,需要准备一个价原创 2020-09-10 12:17:18 · 9527 阅读 · 18 评论 -
ZYNQ 双核运行并交互,一个linux,一个裸核
zynq 7000 一般有2个cpu (arm A9),我们一般都用一个cpu0,本实验让2个cpu 都运行起来,cpu0 运行操作系统petalinux 2018.2, cpu1: 裸机流水灯。同时通过共享内存的方式,实现2个核之间的交互。原创 2020-07-15 12:17:01 · 9995 阅读 · 7 评论 -
petalinux(zynq) 设备树学习
正在学习A Tutorial on the Device Tree (Zynq) -- Part IZynq设备树教程(一)A Tutorial on the Device Tree (Zynq) -- Part IIA Tutorial on the Device Tree (Zynq) -- Part IIIA Tutorial on the Device Tree (Zynq) -- Part IVA Tutorial on the Device Tree (Zynq) --原创 2020-07-13 20:02:16 · 4123 阅读 · 0 评论 -
tftp 源代码解析
我先研究udp 传输的机制,tftp是用udp 设计的一个不错应用。在网上查找tftp 源代码,发现https://github.com/ideawu/tftpx上的源码比较好看,这个只是linux 下的代码。在ubuntu 上make 了一下,就编译好了,然后测试程序,能按tftp 的方式运行。那个链接包含服务端和客户端代码,我这里只是分析其客户端代码,因为就算客户端代码也很大的,相比其他的代码,这个还是算简单的。这个客户端代码包含3个文件,tftpx.h 定义tftp中的常量,与..原创 2020-06-21 12:05:08 · 3587 阅读 · 0 评论 -
petalinux 保留一段专用内存给你的驱动程序
在实际应用中,需要保留一段专用内存,给驱动程序或者应用程序,比如给PL 访问的一段内存,用于查表,等等。本文介绍如何在petalinlux 里实现保留一段内存。在这里我引用原文有3种方式预留内存:普通的,DMA,CMA。我的应用中打算使用普通的,32位方式。但这里3种方式都介绍。来自参与的问题:https://forums.xilinx.com/t5/Embedded-Linux/Zynq...原创 2020-02-26 03:57:29 · 3227 阅读 · 0 评论 -
PID 算法参数及调节
我学习PID参数意义,参考了以下文章:一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制)PID算法原理 一图看懂PID的三个参数PID算法实现及参数整定图解(附代码)https://www.cnblogs.com/whylinux/p/10960319.html公式PID控制应该算是应用非常广泛的控制算法了。小到控制一个元件的温度,大到控制无人机的飞行姿态和飞行...原创 2019-10-03 13:40:47 · 28679 阅读 · 4 评论 -
UDP 的广播,组播和点播
1:说明使用UDP协议进行信息的传输之前不需要建立连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。 单播用于两个主机之间的端对端通信,广播用于一个主机对整个局域网上所有主机上的数据通信。单播和广播是两个极端,要么对一个主机进行通信...原创 2018-12-24 13:13:46 · 7363 阅读 · 1 评论 -
zynq 7000 petalinux 2018.2下的流水灯实验
流水灯实验通过简单的硬件,演示在petalinux 下对zynq 7000的外设的操控。1:硬件设计硬件设计是在Vivado 2018.2 下完成的。 除了满足petalinux 的基本硬件设计要求外,需要添加 一个gpio ip。这个ip 可以是vivado 2018.2 本身自带的gpio, 也可以是另篇自定义ip 设计中我们设计的ip。 如果是自带的,注意设置为4位,只输出。在约...原创 2018-11-17 11:23:44 · 3594 阅读 · 0 评论 -
petalinux 2018.2 下的helloworld 实验
在我们用petalinux 建立好了 zynq 7000的工程后,我就迫切想做一个简单的程序测试一下。我们就来一个petalinux 下的helloworld 实验。1: 工程建立打开 xilinx sdk2018.2, 新建工程,出现如下界面。 取工程名 hello_linux, Os Platform 选择为linux。点击Next, 在界面里选择 Linux Hello Wo...原创 2018-11-22 13:22:23 · 3382 阅读 · 1 评论 -
Zynq 7000裸机的lwip 样例程序echo server 实验
zynq 7000 裸机跑lwip 的echo server原创 2017-10-12 00:15:14 · 24516 阅读 · 36 评论 -
zynq 7000 自定义IP 实验
本文通过一个简单例子介绍zynq 7000中自定义ip 的设计过程。 此例子就是控制4个led 。 在ps-pl 试验中,一般用的就是Vivado 自带的GPIO ip。 所以如果你熟悉了PS端和PL端协同设计流水灯试验,对于本例子就只需关注自定义ip 的设计了。如果你还不熟悉这种协同设计,那你就得先学习好了,再来看本文试验。本文就是用自定义的ip 替代自带的gpio ip来控制流水灯。其主要...原创 2017-11-30 15:16:30 · 7099 阅读 · 9 评论 -
zynq 的定时器中断实验
本文通过定时器中断实验,介绍zynq 的中断和定时器的基本使用方法。本文是在helloworld 实验的基础上完成的,所以必须先完成了helloworld 的实验。这个可以学习本博客的helloworld 实验,或者开发板提供的helloworld 实验。1:中断和定时器介绍:中断对于保证任务的实时性非常必要, 在 ZYNQ 里集成了中断控制器 GIC(Generic Interrupt Cont...原创 2018-04-01 00:43:44 · 3603 阅读 · 0 评论 -
zynq 的64位全局定时器
zynq 有一个64位全局定时器,我觉得有点实用价值,比如精确的实时计算,代码运行时间计算。怎么用呢?我就google 了一下,有篇文章推荐查看2个文件。这2个文件名分别是 sleep.c, xtime_l.c。这2个文件是Vivado 安装的时候就安装好了的样例程序,我的是在这个目录下:C:\Xilinx\SDK\2015.4\data\embeddedsw\lib\bsp\standalone...原创 2018-04-01 11:21:20 · 3307 阅读 · 4 评论 -
zynq 7000 的流水灯实验
流水灯实验是FPGA 的入门实验。最简单并且得到实在的体验,我们就从这里开始zynq 7000的体验吧。本实验包括3部分:创建工程,添加和建立文件,比特流产生和编程。 1:创建工程:打开Vivado,在如下界面里选择建立工程,Create Project。由于不同的vivado的版本,可能界面不一,但都是找到Create Project。出现create project 界...原创 2018-08-31 03:14:39 · 2927 阅读 · 0 评论 -
petalinux 2018.2 在QSPI启动
我认为比较容易制作的启动盘是从SD卡启动,但实际中很需要直接从QSPI启动。那么本文是在制作从SD卡的基础上完成的。如果你有不清楚,那就先看看我的另篇博客petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验链接是:https://blog.csdn.net/leon_zeng0/article/details/82766521那篇文章介绍从SD 启动的制作过程...原创 2018-10-03 13:13:07 · 10223 阅读 · 5 评论 -
Linux驱动开发常用调试工具 devmem之代码分析
本文先列出代码,然后分析,最后是使用情况介绍,命令控制led 点亮的方法。在Linux开发中着实用的调试工具并不是很多。devmem的方式是提供给驱动开发人员,在应用层能够读写内存地址,外设地址。也有类似叫 devmem2的,功能类似。在我用的petalinux 2018.2 中,其名字是devmem。这个代码是开源的,linux 的一部分。 我这里的原始代码来自 : https://gi...原创 2018-10-17 02:19:47 · 3249 阅读 · 1 评论 -
linux, petalinux 下的udp 通讯实验
udp 是基于tcp/ip协议的无连接通讯。我基于zynq 7000建立了petalinux 系统,希望能有高效有效的通讯方式。以前做了tcp 基于连接的通讯实验,但实际中包会被拆开,感觉有点不好,所以特做了无连接的通讯测试,这就是udp 通讯。1:实验过程首先在网上查找了udp 在linux下的c 语言通讯程序。 但我需要运行的环境是zynq 7000上建立的petalinux2018....原创 2018-11-22 03:09:19 · 1946 阅读 · 2 评论 -
Zynq 7000的hello world 实验
开发当然要从最简单的学起,从串口打印"Hello World"是开发ZYNQ的嵌入式系统的入门设计。初学者必项经过本实验锻炼才能理解和体验ZYNQ的软硬件开发过程。我们将在AX7010/AX7020开发板上创建一个简单的ZYNQ嵌入式系统。然后我们将会使用SDK创建一个简单的软件应用程序,幵下载到ZYNQ的ARM处理器中,实现串口的字符打印。1 Vivado工程创建1.1 在Viv原创 2017-10-15 20:05:52 · 8143 阅读 · 6 评论