自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 配置内核,编译内核,出错fatal error: sys/types.h: No such file or directory #include <sys/types.h>

但是:suo apt-get install libc6-dev安装这个时候又报错了,真是一个坑接着一个坑。已经可以查到许多types.h的文件了。安装libc6-dev,完成后使用命令。解决办法:更新系统软件源。

2024-04-25 15:59:41 194

原创 电机知识学习

异步电机/感应电机:电机转子速度和磁场转速总是有个差同步电机:电机转子速度(可动部件)和磁场转速总是相同。

2024-04-16 21:55:44 206

原创 V4L2驱动

这个结构体用啥管理呢,用v4l2_ctrl_handler管理,这个v4l2_ctrl_handler是个指针我感觉,指向这个结构体,然后就是这样子的。关键函数有:v4l2_device_register可以得到/创建一个结构体就是 V4l2_decice。3、设置这个videv_device结构体,用vfd表示这个videv_device结构体。用的分配函数为video_device_alloc函数,alloc就是分配内存的意思。v4l2_ctrl结构体,结构体中定义的了一些内容可以对应音量、亮度啥的。

2024-04-08 21:52:16 176

原创 Ubuntu连不上外网的问题—ping不通baidu.com

主要我到了上面的步骤还是不能上网,然后设置了一下主机VMware Virtual Ethernet Adapter for VMnet8网络。首先,定位问题,再问我出现的问题中,认为是NAT设置的问题,只要NAT设置好就可以连接网络。从终端进行设置,ip地址不要和上面设置成一样的,但是网关设置成一样192.168.213.2。如果不知道咋改,直接选择还原默认设置,记录一下默认的IP地址和子网掩码。然后再记录一下默认的网关192.168.213.2。到了这里应该就可以上网了。然后,设置我的DNS。

2024-03-26 00:30:33 723

原创 字符驱动程序-LCD驱动开发

在这个驱动开发的时候,内核中已经有个fbmem.c文件函数把上面的框架弄好了,只需要我们做修改就OK了,fbmem.c这个文件不通用,不能用到所有的MPU和LCD上,所以需要我们修修改改。使用register_framebuffer(struct fb_info *fb_info)函数 (还没清除为啥是这个函数)不同的硬件会在驱动程序中加入不同的fb_info结构体,通过这个fb_info去操作硬件。这个结构体中有操作硬件的函数,比如drv_open、drv_read。如何使用到不同的LCD上呢?

2024-03-25 17:28:15 614

原创 LINUX锁的介绍和使用

用排队等待的方式解决多核CPU互斥问题,这种情况下,两个CPU都要执行一个函数,用这个自旋锁就可以让其中一个CPU静静的等待一会。可是这种方法也有不足之处,就是函数要短一些,一般不超过5行,不然等待的CPU有些浪费资源了。可能是在一个CPU上,那spin_lock做法就是比较狠了,直接的禁止抢占,禁止别的进程调度这个驱动函数。有时候写的驱动函数不知道在一个CPU运行还是在两个CPU运行可咋整。信号量:semaphore 和 互斥量:mutex。还是用来解决互斥的问题的。1、自旋锁 2、睡眠锁。

2024-03-24 14:01:18 197

原创 同步与互斥

2、大于ARMv6内核,大概就是使用内联汇编代码,检测执行的这个程序是否被抢占,抢占的话就重新再执行,就是可以检测是否被抢占,而且汇编代码效率高,也可防止其它核抢占了资源,引起问题。1.小于ARMv6的内核,函数执行的时候关闭中断就行,好像就只有单核,不支持SMP,只要防护好家贼就行。用atomic去解决。

2024-03-22 12:11:29 148

原创 编码器信号模拟电路设计 软件+硬件

设计一个编码器模拟电路。为什么要设计这样一个电路呢,就要看它有什么用处了。一些自动化设备在开发调试过程中,需要获取传动机构的相位和速度信号,而直接对机器测量费时费力,测量参数固定,所以需要设计一个电路对编码器的信号进行模拟。---1.停止,开启、某一转速时刻机器电机信号测量费劲,2、机器最大转速800转,想要开发1000转的一个机器,脉冲信号测不出来。下图就是编码器的一个实物,固定在电机的一端,主要功能可以将旋转位移转换成一串数字脉冲信号,根据这个脉冲信号信号可以得出电机旋转的方向、旋转角度、速度。

2024-03-14 17:58:32 299

原创 驱动开发之LED灯驱动开发

需求:通过驱动开发点灯,最好能用QT写个界面控制。

2024-03-07 21:36:38 271

原创 python给word插入脚注

最近因为工作需要,需要给大量文本的脚注插入内容,我就写了个小程序。

2024-01-31 19:44:31 570

原创 驱动开发-系统移植

需要移植三部分东西,Uboot ,内核 ,根文件系统 (rootfs) ,这三个构成了一个完整的Linux系统。把这三部分学明白,系统移植就懂点了。

2024-01-26 22:12:12 955

原创 WPS通配符匹配数字

代表回车符,用于匹配换行符。这样,它将只匹配数字前没有换行符的情况下符合条件的数字。请注意,不同版本的 Word 可能对于通配符的支持有所不同,因此可能需要根据实际情况进行调整。在 Word 中,通配符无法直接区分数字前是否有换行符或其他特定字符。但是,可以使用特殊的控制字符,如。换句话说,它用于查找形如 3 开头或者 6 开头的四位数字。代表换行符,在通配符模式中间来匹配特定情况。

2024-01-09 17:18:21 742

原创 Freertos学习

实时操作系统,要求一个高的实时性,就不是像在一个死循环中放俩函数了。而是创建俩任务,也叫做俩进程,高速的轮流执行,提高实时性。

2023-08-18 11:30:02 319

原创 C++储备

封装,继承,多态。

2023-08-16 22:11:22 173

原创 FreeRTOS问题

比如,当一个运行着的任务被其它高优先级的任务抢占,当前任务的 CPU 使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了 CPU 的控制权并运行。又比如,如果中断服务程序使一个高优先级的任务进入就绪态,中断完成时,被中断的低优先级任务被挂起,优先级高的那个任务开始运行。1.首先执行的最高优先级的任务 Task1,Task1 会一直运行直到遇到系统阻塞式的 API 函数,比如延迟,事件标志等待,信号量等待,Task1 任务会被挂起,也就是释放 CPU 的执行权,让低优先级的任务得到执行。

2023-08-16 17:03:42 1375

原创 SPI-FlexSPI

SPI 高速全双工通信总线数据输出-主设备数据输出,从设备数据输入数据输入-主设备数据输入,从设备数据输出时钟信号-由主设备产生片选信号,主设备控制这是一个主机的通讯时序。NSSSCKMOSI信号都由主机控制产生,而MISO的信号由从机产生,主机通过该信号线读取从机的数据。MOSI与MISO的信号只在NSS为低电平的时候才有效在SCK的每个时钟周期MOSI和MISO传输一位数据。观察图中的标号处,MOSI及MISO的数据在SCK的上升沿期间变化输出,

2023-08-15 17:16:32 257

原创 uboot和kernel移植

一、kernel移植二、uboot

2023-08-15 11:04:18 69

原创 Linux基础知识学习

使能交叉编译链,使能刚安装的编译器,不然还是老版本的。

2023-08-13 15:09:52 177

原创 嵌入式准备

用const修饰的变量是不可变的如果const位于*的左侧,eg:const int* a,则const就是用来修饰指针所指向的变量,此时为常量指针,即指针指向*a为常量;如果const位于*的右侧,eg:int* const a,const就是修饰指针本身,此时为指针常量,即指针本身a是常量。// 常量指针;指针指向的内容不能变,*p不能变// 指针常量;指针本身不能变, p不能变用const修饰函数参数,传递过来的参数在函数内不可以改变。

2023-08-07 17:31:58 818

原创 链表的知识

二、和数据组做对比特点。

2023-07-20 09:28:47 115

原创 Linux嵌入式项目-智能家居

订阅会根据不同的消息主题去订阅,会有一个while(1)死循环,订阅到消息后然后找到消息的主题,然后执行相应的函数topic1_handler,这个应该叫响应函数吧,实现了一个信号与曹的机制,"topic1"是信号,topic1_handler槽函数。建立连接后,会创建订阅死循环线程,主要功能有:读数据,处理数据、保持活性、检查错误。客户端创建了两个线程,一个线程用于发布消息,一个线程用于监听订阅消息。使用的通信传输协议 MQTT/FTP/SSH。四、单片机和linux联网的区别。//创建一个发布线程。

2023-07-12 23:12:04 1746

原创 OPAMP

为了保证对称性,R‘ =R//Rf 啥意思,R’是否可以不要。一、同向比例运放电路。

2023-06-09 11:48:50 123

原创 某芯片公司实习面试

1、简历中有过一次实习,对实习内容问的很深入,会让画图和一些细节性质的问题,能把实习内容将的很清楚最好。面试官会介绍一些工作内容,问你想法,考验表达能力,问你能否接受这个工作的意思,聊了一些其它的。举办方、自己的主要工作、主要工作的一些技术问题、遇到的问题,主控板型号、厂家。3、也问一些简历自己写的技能,这些技能在哪里用到的会问。2、简历中有一次比赛,问了一些问题。4、后续就是问你对公司、岗位了解程度。5、你问一些问题,最后结束。

2023-04-06 09:59:07 157

原创 IMX6Ull点亮LED

设置寄存器的寄存器有两个,一个是设置寄存器-用来设置值;一个是清除寄存器-用来清除设置值。2、设置GPIO模式 //是做为GPIO,还是做为串口引脚,做为信号线。1、管脚使能 //有些为了省电,默认没有使能。这样比较低效,有更好的办法,就是修改设置寄存器的寄存器的值。1、看原理图,确定控制LED的主芯片引脚。2、看主芯片手册,确定如何设置控制引脚。3、设置GPIO输入输出模式。上述操作都是对寄存器操作。要领,不要影响其他位。

2023-03-26 21:45:02 197

原创 Ubuntu连不上网,ping: baidu.com: 未知的名称或服务

ping: baidu.com: 未知的名称或服务ping不通的话应该就是Ubuntu连不上网。

2023-03-21 21:38:01 3474

原创 第一个驱动程序

drv_read这个驱动函数因该就是我们需要去编写的程序,用来控制硬件,但是又不准确,如何写看下面,这个一定要理解。但是,中间会经过内核,找到对应的程序,看是调用普通程序,还是调用驱动程序。首先,APP会写出open函数去调用驱动程序。最后,驱动程序也有与之对应的open函数。看图说话,首先是APP如何操作驱动。

2023-03-20 21:34:03 51

原创 Makefile实战

比较重要的一个是需要一个,生成a.o文件的时候不仅会依赖a.c还会依赖啊啊a.h,b.h,c.h那么下面这个makefile文件就会出问题,因为没有依赖上.h文件。因为啥呢,当修改.h文件的时候,这个makefile,并不知道修改了.h这个依赖文件,所以要对,makefile文件进行修改。把生成b.o文件的依赖都给加上 b.o:b.c b.h,,这样加上,当我们修改b.h的时候,就需要重新生成目标b.o了,.c也就重新被编译了,那修改的.h文件也就被找到编译了。

2023-03-19 15:33:13 558

原创 Makefile

linux没有编译软件IDE,比如说VS,Pycharm,需要自己去编写makefile去实现这个IDE的功能,比如写好makefile之后,输入一个make命令,就会去执行makefile文件,就相当一个IDE,实现了预处理--编译--汇编--链接这些东西,组织管理程序,先执行哪个后执行哪个,一个make就完成了。但是呢,如何知道哪个.c文件被修改了呢,那就要比较.c文件和.o文件的保存时间了,如果有一个.c文件的保存时间比它的.o文件更新,那这个.c文件就是被修改了。2、实战写一个makefile。

2023-03-17 15:43:30 366

原创 gcc编译

2、当文件多的时候,就要先汇编再链接了,防止有一个.c文件出现问题的时候要重新汇编链接所有文件了。主要就是对标准库的处理,包含头文件,找到头文件的位置,比如输入输出流。自我理解,需要把高级语言,编译成成机器能识别的语言,或者文本。把.o目标文件链接成一个APP文件,就是一个可执行的应用程序。如果是交叉编译链,肯定去交叉编译链里面去搜索这些头文件。1.预处理---编译---汇编---a.o目标文件。2.预处理---编译---汇编---b.o目标文件。把.s汇编文件变成.o目标文件,但是没有做链接。

2023-03-16 21:49:56 329

原创 QT中使用chart清除内容,二次画图

用chart当第一次读取文本数据画折线图后,再次读取文本数据画折线图时候,发现十分困难,有的说用replace,但是看着十分麻烦。直接把创建的表格对象删除,再利用新数据二次创建图,就ok了。

2023-02-24 10:52:08 1296

原创 cesium世界坐标系的x,y,z转换成经纬度

/我的需要180 - 计算的度数。//startPoint = [x,y,z],存放世界坐标系中的坐标点。需要把下(x,y,z)世界坐标系数据转换成(经度,维度,高度)console.log(lat,"世界坐标系转回来")

2023-02-22 15:08:52 1543

原创 经纬度坐标点和距离之间的转换

弧度之间的差值,就是弧度角,然后弧度角*地球半径就是,两个坐标点之间的弧度长。//输入参数是两个坐标点的经纬度。纬度每隔0.00001度,距离相差约1.1米;经度每隔0.00001度,距离相差约1米;每隔0.0001度,距离相差约10米;每隔0.001度,距离相差约100米;每隔0.01度,距离相差约1000米;每隔0.1度,距离相差约10000米。每隔0.0001度,距离相差约11米;每隔0.001度,距离相差约111米;每隔0.01度,距离相差约1113米;每隔0.1度,距离相差约11132米。

2023-02-21 20:54:37 1127

原创 npm不是内部或外部命令解决方案

node

2023-02-10 10:12:23 1956

原创 Uboot移植

Linux

2023-02-09 22:43:52 70

原创 第一个驱动程序

linux

2023-02-09 21:41:56 588 1

原创 cesium坐标

cesium坐标系

2023-02-08 21:12:06 1098

原创 linux常用命令

linux

2023-02-06 20:59:51 401

原创 2.6韦东山linux学习记录

linux

2023-02-06 20:59:30 755

原创 node\npm问题

可能是node版本问题,要安装12版本一下的node例如9.11.0 、 9.11.1 、6.9.5。0、有必要可以考虑先清理一下: npm cache clean --force。原因是镜像的问题,网络好的话,再试一次就行,如果不行的话,更换个镜像就行。nvm install [node版本]命令时候下载出现问题。再使用nvm install [node版本]就ok。在降低node版本时候出现新的问题。成功降低node版本,和版本管理。版本降低了,可是gulp还是不行。1.降低node 版本方法。

2023-02-05 19:41:20 660

原创 Linux嵌入式学习 内存扩充和MobaXterm连接

linux

2023-02-05 17:49:22 146

编码器信号模拟电路设计 软件+硬件

设计一个编码器模拟电路。为什么要设计这样一个电路呢,就要看它有什么用处了。一些自动化设备在开发调试过程中,需要获取传动机构的相位和速度信号,而直接对机器测量费时费力,测量参数固定,所以需要设计一个电路对编码器的信号进行模拟。---1.停止,开启、某一转速时刻机器电机信号测量费劲,2、机器最大转速800转,想要开发1000转的一个机器,脉冲信号测不出来。下图就是编码器的一个实物,固定在电机的一端,主要功能可以将旋转位移转换成一串数字脉冲信号,根据这个脉冲信号信号可以得出电机旋转的方向、旋转角度、速度。

2024-03-14

空空如也

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

TA关注的人

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