- 博客(12)
- 资源 (33)
- 收藏
- 关注
原创 linux C语言 调用命令行 管道文件指针
/ 设置要运行的shell命令为"pwd"(列出当前路径)printf("%s", buffer);// 将每一行输出到控制台上。// 存放要运行的shell命令。// 读取输出内容的缓冲区。printf("无法打开管道\n");FILE* pipe;
2024-02-29 15:39:12 430
原创 嵌入式Linux开发与单片机开发的区别
在某些平台上看到很多人鼓吹嵌入式Linux开发比单片机开发要好,让所有人都去做嵌入式Linux开发。说这种话的人大多数是嵌入式Linux的培训机构,或者是一开始就以嵌入式Linux入门的那一批人,当然,也有很多的大佬。 我认为最有发言权的是在单片机行业待了三年以上,然后在嵌入式Linux行业也待过三年以上的人,显然笔者不是,不过笔者还是想把自己的理解写出来。 一个以单片机为主控的产品开发步骤:画原理图---画PCB---在Keil上编程---软硬件Debu...
2021-10-13 17:08:33 4657
原创 自制的Linux开发板,也算是入个门吧,嘻嘻
!这是我做的第一块Linux开发板,主控是全志V3s,外挂的ROM是1Gbit的spi flash,wson8那种封装,芯片自带ram。板子是双层板,9.8×9.8,那个5元包邮,你懂的。然后液晶的接口是通用rgb40pin,摄像头接口有预留出来,不过手头上没有东西。自己板子也没有画过几块,让大伙见效了在这里插入图片描述...
2021-06-13 00:26:59 1941 2
原创 浅谈C++的虚函数
本人一直从事嵌入式开发,包括单片机,FPGA,偶尔测试或者数据显示会用到QT。大家知道单片机一般是C语言开发,FPGA一般用verilog、vhdl开发,所以我很少用C++。C++与C语言最大的区别就是,一个是面向过程,一个是面向对象。类,封装性,继承性,多态性,虚函数都是C++的特点,虚函数我理解了好久。/***************************************************/class mybase{public: myte...
2021-02-25 16:11:43 167
原创 STM32-DP83848-RMII-FREEOS-LWIP-UDP调试笔记
由于工作之后大部分时间都是在调试FPGA,所以对于MCU这块很久都没有进展了。昨天就拿了同事画的STM32网络开发板来调试,调试的过程还是比较顺利的。硬件:STM32F407ZET6+DP83848+RJ45(带网络变压器)操作系统:FREEOS协议栈:LWIP应用协议:UDP实现功能:上位机下发一帧数据,STM32可以返回对应的指令信息调试过程: 我是直接用的cubemx(5.6.1),第一步就是要看板子上的晶振,是多少兆,可能是25兆,也有可能是20兆。...
2021-02-09 16:24:22 1201 1
原创 初学者浅谈FPGA的时序约束
接触FPGA已经差不多两年了,在学习的过程中总能偶尔听到FPGA需要时序约束。那个时候就是什么都不懂,不懂为什么要约束,以及约束的是什么东西,以及代码的风格对约束有什么影响。直到在后来的一次调试中踩了雷,才明白时序约束的重要性,如下verilog代码。/********************************************************************************************/reg [31:0]get_num;reg [7:0
2021-02-03 17:20:34 888
原创 cyclone iv e系列FPGA通过串口更新程序
cyclone iv e系列FPGA通过串口更新程序已经调试通过了(纯verilog)。1.烧写BOOT程序。(默认地址是0x0000-0x7ffff)2.在BOOT程序中通过ymodem协议下发RPD文件(512KB)。3.烧写RPD文件之前需要将标志位置0。4.通过ASMI ip核烧写RPD文件(APP文件)到0x80000-0x100000,烧写前需要擦除扇区。(0x0000-0x80000是装BOOT的,我用的是EP4CS16)。5.烧写完成后标志位置1。6.启动REMOTE
2020-12-10 17:46:00 1643 10
原创 将一个32bit的数据,颠倒过来,bit0与bit31交换,bit1与bit30交换,C语言实现与verilog实现。
将一个32bit的数据,颠倒过来,bit0与bit31交换,bit1与bit30交换。C语言实现void sw(uint val){ int i,valx=0; for(i=0;i<32;i++) { valx+=val<<(31-i); } return valx;}verilog 实现方案一:module sw(a,b);input wire [31:0]a;output w...
2020-11-05 19:52:11 3185 1
原创 FPGA开发与ARM(单片机)开发的区别
我是同时做过FPGA开发(verilog)与ARM(c)开发,有很多人说学了单片机再学习FPGA会比较好过度。理由是单片机的C语言与FPGA的verilog语言很像。我不太赞成这一个说法,理由是:单片机的C语言是串行执行的,FPGA的verilog是并行执行的。虽然两者看上去语法差不多,但是语言所代表的含义完全不同。C语言最终到芯片中后是二进制代码,verilog语言最终到芯片是电路。举个例子,同样实现两个led灯的闪烁,一个是10hz,一个是5hz。/*************************
2020-11-02 16:27:58 3019
原创 FPGA实现开根号,仿真通过,算一次需要34个时钟周期
/******************************************verilog开平方操作******************************************/module mysqrt(clk,//时钟indata,//输入待开平方数outdata,//输出开平方的结果flag_ok,);input wire clk;//时钟input wire [31:0]indata;//假设数据为32bitoutput reg [15:0]outdata=
2020-08-04 18:39:08 5121
原创 ALTERA系列的FPGA通过RS232串口在线升级
ARM系列的芯片(例如STM32系列)可以通过YMODEM协议实现在线升级,在芯片中写入BOOT程序、APP程序就可以实现。那FPGA可以这样做吗,答案是可以的。要想搞清楚流程就必须了解FPGA的启动过程。FPGA一般会外挂一个FLASH,FLASH中装的就是FPGA的配置信息。FPGA一上电首先会读取FLASH的配置信息,保存在RAM然后通过这些配置信息来运行逻辑,所以FPGA在运行过程中与外挂...
2020-03-31 18:20:51 2556
原创 FPGA 16位除法器
quartusii 中“/”是可以综合的,不过特别耗费资源。这时候在运算速度要求不是很高的前提下,自行实现除法器就是很有意义的事情了。 此除法器完成一次运算需要耗费18个时钟周期。赋值缓存一个时钟周期,移位减法16个时钟周期,输出一个时钟周期。为什么要缓存呢(a需要缓存到ax,b需要缓存到bx)?因为如果不做缓存,在运算期间a,b值改变会影响结果的正确性。 ...
2019-10-19 17:13:45 2054
激光枪自动射击装置
2018-08-06
倒立摆控制系统
2018-08-06
风力摆控制系统
2018-08-06
FDC2214手势识别
2018-08-06
USB协议.zip
2019-06-17
FPGA作为从机与STM32用SPI的方式进行通信,结果显示在OLED上
2018-11-30
QT Creator dll 大全,解决QT无dll问题
2018-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人