日常调试记录
文章平均质量分 92
DSP、FPGA等嵌入式开发过程中的日常调试记录
小裘HUST
最好的程序员做自己的硬件
展开
-
EMIF转AXI-Lite接口
DSP的EMIF接口转FPGA内部的AXI-Lite接口原创 2023-02-18 23:38:03 · 1242 阅读 · 1 评论 -
卡尔曼滤波器与DSP实现
卡尔曼滤波的公式总结,给出DSP实现的示例原创 2023-02-12 20:56:40 · 1323 阅读 · 0 评论 -
基于多核DSP的双目标KCF跟踪实现
在多核DSP上实现对两个目标分别采用KCF算法进行跟踪,单帧图像处理时间仅需13ms原创 2023-02-06 17:26:24 · 1084 阅读 · 1 评论 -
用于多核DSP开发的核间通信
利用IPC开发多核DSP。主要包括IPC初始化,Notify,MessageQ和GateMP的使用原创 2023-01-19 23:17:14 · 5197 阅读 · 8 评论 -
最佳的最小二乘解
关于最佳的最小二乘解的一些理解原创 2022-10-30 23:05:21 · 1211 阅读 · 0 评论 -
C/C++读写BMP文件
BMP文件格式,C/C++读写BMP文件原创 2022-10-07 16:28:33 · 2465 阅读 · 1 评论 -
C6000 DSP优化技术入门
DSP优化技术:restrict 指针;循环展开;地址对齐;程序级优化;线性汇编。原创 2022-10-06 11:11:36 · 1777 阅读 · 1 评论 -
硬件FFT加速模块的应用
调用硬件FFT模块高效实现二维FFT。原创 2022-10-02 20:48:18 · 1747 阅读 · 0 评论 -
近期C6000 DSP开发小结
C6678的复数乘法指令;Cache映射方式;TI Data Type;QDMA的使用原创 2022-10-02 11:20:45 · 1697 阅读 · 0 评论 -
基于STM32的ADC采样序列频谱分析
利用CMSIS的DSP库对ADC采样得到的数字序列进行FFT分析频谱原创 2022-07-04 21:28:41 · 5178 阅读 · 0 评论 -
傅里叶分析概述
主要梳理了一下FS,FT,DFS,DTFT,DFT之间的关系原创 2022-07-02 10:22:53 · 1690 阅读 · 0 评论 -
SYS/BIOS与SRIO应用实例
SYS/BIOS实时内核的使用,FPGA通过SRIO接口从DSP端读取数据。原创 2022-06-14 17:06:48 · 1974 阅读 · 1 评论 -
OpenMP在多核DSP上的应用
OpenMP在C6678DSP上的使用原创 2022-05-26 16:58:35 · 1262 阅读 · 3 评论 -
使用C++开发STM32 FreeRTOS工程与添加DSP库
当我们想使用C++开发带FreeRTOS的STM32工程时,需要做一些准备并且修改Makefile;另外本文补充了一下DSP库的调用方式。原创 2022-04-30 14:44:23 · 4749 阅读 · 1 评论 -
CubeMX+Eclipse+Jlink STM32开发环境搭建
CubeMX + Eclipse + Jlink 的STM32开发环境搭建原创 2022-04-25 00:53:38 · 2130 阅读 · 0 评论 -
RTSC与XDCTools
RTSC简介、XDCTools的学习与使用原创 2022-04-23 21:19:37 · 3226 阅读 · 2 评论 -
C++运算符重载与返回值优化
没有重写拷贝构造函数导致内存重复释放原创 2022-04-22 21:17:44 · 1478 阅读 · 0 评论 -
电磁感应、电感与变压器
参考大物、电路理论、电动力学的书,复习了一下电磁相关的知识。原创 2022-03-20 23:10:51 · 2475 阅读 · 0 评论 -
vivado时序约束——(最大/最小)输入输出延时
引言关于FPGA设计时的输入延时、输出延时的基本概念,网上已经有很多文章进行了介绍。文章链接:FPGA静态时序分析我主要也是通过上面这篇文章进行学习的。但是文章中对于最大输入延时的推导有一点小错误,而且整体上看比较复杂,为此本文进行了适当总结。在很多文章的分析中,常常引入时钟抖动(jitter),时钟偏斜(skew),因此常常会显得比较复杂。为了便于分析,时钟的这部分不确定性我们可以暂时不考虑,即把发射(launch)和捕获(capture)的时钟看作完全相同的时钟。建立时间与保持时间在讨论输入原创 2021-02-22 17:52:00 · 8134 阅读 · 8 评论 -
CMOS与非门振荡器原理与分析
问题背景上图是一个简易的电子门铃电路,主要是采用两个CMOS与非门74HC00和一些阻容产生振荡信号,再由一个NPN型的双极结型三极管驱动小喇叭来实现的。分析这个电路需要对逻辑门和电容的特性有一定的了解。原理分析电路中的C2、C3是滤波电容,R1是BJT的基极限流电阻不需要多做分析,我们主要关注由两个与非门构成的振荡电路。R3是一个下拉电阻,在按键没有按下时,确保U1A的一个输入端是低电平,从而保持一个稳定的初始状态。U1B直接将与非门的两个输入短接其实就是一个反相器,也就是输出总是和输入保持相原创 2021-03-14 10:16:59 · 11806 阅读 · 3 评论 -
关于C/C++的include顺序问题
因为include顺序不同导致的编译结果不同原创 2022-04-21 20:56:23 · 3269 阅读 · 0 评论 -
近期C6000 DSP开发小结
使用C++开发DSP,初始化列表中的数组初始化,COFF和EABI,near和far,EDMA3的配置原创 2022-03-10 08:50:26 · 2425 阅读 · 0 评论 -
S34MS01G2 NAND Flash读写
NAND Flash 结构读写Page查看状态快速读写(通过Cache)驱动代码#include <nandflash.h>static inline void WriteCmd(Uint8 cmd){ *(Uint8 *)NAND_CLE_ADDR = cmd; return;}static inline void WriteAddr(Uint8 addr){ *(Uint8 *)NAND_ALE_ADDR = addr; return;}static i原创 2021-10-12 10:04:33 · 564 阅读 · 0 评论 -
ZYNQ MIO中断配置实现与中断响应过程
中断结构在进行中断相关的程序编写之前,首先需要了解zynq的中断框图。这部分内容建议直接看xilinx官方手册ug585的第7章,里面有非常详细的介绍。xilinx文档可以直接用DocNav查看,会很方便。从整体框图中可以看到,中断的来源主要分为三个部分,分别是软件中断、私有外设中断和共享外设中断。这里的顺序也是它中断ID编号的顺序,从前往后依次增大,总共有81个中断ID。软件中断ID 0~15私有外设中断ID 27 ~ 31,编号 16 ~ 26的ID是保留的共享外设中断ID 32 ~ 9原创 2021-03-02 11:17:12 · 2170 阅读 · 0 评论 -
CMake构建CCS工程与EMCV编译
用CMake构建CCS工程,以及编译EMCV Library(嵌入式计算机视觉库)原创 2022-01-06 22:03:45 · 2967 阅读 · 0 评论 -
TMS320C6455二维FFT和IFFT实现
目录FFT原理简介DSPLib配置图像数据生成DSPLib中的FFT和IFFT二维FFT和IFFT实现图像分析工具(Image Analyzer)测试结果相关资源链接参考资料:Rafael C. Gonzalez, Richard E. Woods, 数字图像处理(第三版)4.11,配套书内资源Alan V.Oppenheim, Ronald W.Schafer, 离散时间信号处理(第三版)9.5SPRUEB8B - TMS320C64x+ DSP Little-Endian DSP Librar原创 2021-06-06 11:52:41 · 1436 阅读 · 1 评论 -
分配对齐的堆区空间
利用malloc函数编写aligned_malloc与aligned_free函数,用于分配对齐的堆区空间原创 2022-02-13 12:52:28 · 1185 阅读 · 0 评论 -
SCCB与IIC的异同及FPGA实现的注意事项
本文主要参考了两种协议的规范文档和一个摄像头传感器(OV7725)的数据手册,文档链接如下:IIC规范:UM10204SCCB规范:SCCBSpec_ANOV7725数据手册:OV77251. 概述之所以写这篇文章,是因为我在使用SCCB接口控制的摄像头时,看到有的人说SCCB和IIC是兼容的,也有的人说它们有区别,但区别不大。网上众说风云,让我感觉很迷糊,所以在这里总结一下。IIC接口有比较广泛的应用,而SCCB接口主要用于摄像头控制,可以说SCCB是低配版的IIC。因为IIC可以实现多主多从原创 2021-02-23 15:29:08 · 1774 阅读 · 0 评论 -
Modelsim编译Vivado仿真库报错(vlog-12110)
关于Modelsim联合Vivado仿真的一些问题原创 2020-03-27 15:32:03 · 17378 阅读 · 16 评论 -
Xilinx SRIO_gen2关于时钟的问题
参考时钟(reference clock)在一开始,我一直不太清楚参考时钟是什么。其实看框图就很清楚,refclk是由系统时钟(sys_clk_p和sys_clk_n)经过差分信号输入缓冲(IBUFDS)得到的,因此refclk其实是和系统时钟同样频率的一个单端信号。从框图中还可以看出,refclk还连接到了串行收发器端,这也和手册中的文字描述是一致的。最让人费解的是,对于不同链路速率的传...原创 2020-04-03 11:15:38 · 6302 阅读 · 0 评论 -
NAND Flash批量数据烧录
NAND Flash的读写之前已经写过一篇NAND Flash驱动相关的文章了,处理器用的是TI的8核DSP TMS320C6678,为了后续用它做大批量的数据处理,而现在有苦于暂时没有数据源,所以想先在Flash里存好待处理的数据,后面用起来方便一点。 为了准备尽可能多的数据,128MB容量的NAND Flash,我准备往里面写125MB。 一开始我特别激动,我就准备把这些数据写成常量,然后放到工程里一起编译,最后用仿真器下载进去。这一个数据文件就得几百兆。 后来试了一下发现,这文件太大原创 2021-10-29 11:29:33 · 1829 阅读 · 0 评论 -
AXI协议与自定义AXI4-Lite外设
引言 之前在Xilinx的FPGA上做设计,只是知道AXI接口,但是没有详细地了解过这个协议,现在需要用AXI总线做整个系统的设计了,所以还是有必要详细了解一下这个协议。参考资料IHI0022H: AMBA AXI and ACE Protocol SpecificationIHI0051A: AMBA 4 AXI4-Stream Protocol Specification 上面这两篇都是ARM官方的文档,都可以在ARM的官网找到,这两个文档对AXI4、AXI4-Lite和AXI4-Stre原创 2021-11-25 00:35:44 · 1635 阅读 · 0 评论 -
基于Git和Tcl脚本的Vivado工程管理
用Git做Vivado的版本控制,早在2014年就已经有人做了相关的工作。网上也有很多相关的文章介绍这个,但总感觉不是很方便。用Git做版本控制,主要就是对工程存档备份,在需要的时候方便回退版本。综合实现后的Vivado工程动辄上百兆,不方便直接用Git管理,工程中大部分都是Vivado生成的文件,所以用Tcl脚本重建工程是主流的选择。本文主要分享我的Vivado工程管理方法。原创 2021-12-24 17:20:49 · 3318 阅读 · 1 评论 -
TMS320C6455采坑记录(不定期更新)
目录外设使能Flash查询ID外设使能 C6455有两个外设配置寄存器,PERCFG0和PERCFG1,大部分外设都由PERCFG0控制;PERCFG1只控制EMIFA和DDR,这个基本上在启动代码中就已经使能了。 PERCFG0中对应的外设的使能需要先往PERLOCK寄存器中写特定的值解锁后才能对PERCFG0的值进行修改,而且是有时间限制的,需要在16个SYSCLK3的周期内完成,也就是一般解锁后都紧跟着对PERCFG0的修改。修改后通过查询PERSTAT0寄存器来确认修改完成。Bool e原创 2021-05-18 22:01:00 · 315 阅读 · 0 评论 -
用于Vivado工程管理的Tcl语法学习
学习一样东西,很重要一点就是要知道学这个是为了什么。Tcl作为一种脚本语言,类似于Python,甚至可以用Tcl来简单地处理一些文件,只是不像Python有那么多库的支持。我也是昨天刚开始学习Tcl的语法,目的是为了用Tcl脚本重建Vivado工程,然后便于做版本管理。Tcl确实和很多人说的一样比较容易学,而且我觉得所有做FPGA开发的人应该都先学Tcl。学习方式 学习一种语法我觉得最好的方法就是边看边自己敲代码练习,就像RUNOOB上的教程一样,每一条知识点都有一个例子,而且可以在线编辑。学习T原创 2021-12-23 16:43:32 · 1638 阅读 · 0 评论