自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (3)
  • 收藏
  • 关注

原创 内核将驱动编译成模块报函数或者变量undefined的错误

linux 内核编译

2022-11-16 16:07:19 1099

原创 virtualbox 命令行模式创建虚拟机

virtualbox命令行创建虚拟机

2022-08-16 16:43:06 927

原创 iproute2 ipv6地址设置源码分析

iproute 作为网络接口的设置工具具备我们大部分需要的功能。以设置ipv6 地址为例来分析一下它的源码它的实质其实是与内核建立一个socket通信,通过建立的fd进行网络接口的设置和信息读取。简单来说,就四步:建立与内核的连接-> 发送数据到内核 -> 从内核读取数据 -> 关闭连接建立与内核的连接int rtnl_open(struct rtnl_handle *rth, unsigned int subscriptions){ return rtnl_open

2021-11-29 14:43:50 1949

原创 记录遇到的内存泄漏

记录一下内存泄漏线程使用pthread_create()创建线程时,设置属性为NULL,线程退出时该线程占用的资源不会释放。比如遇到过反复创建某个线程后返回,会导致其占用的虚拟内存不断增加,最终导致系统资源不可用。设置线程属性 pthread_t recv_pthread; pthread_attr_t attr; pthread_attr_init(&attr); /*free pthread sources*/ pthread_attr_setdetachstate(&amp

2021-06-02 15:16:46 192

原创 i2c 16位寄存器的读写

/* Ensure address is not busy */int set_slave_addr(int file, int address, int force){ /* With force, let the user read from/write to the registers even when a driver is also running */ if (ioctl(file, force ? I2C_SLAVE_FORCE : I2C_SLAVE, address)..

2021-04-30 15:30:04 4464 1

原创 主线程传实参给子线程的时效性问题

主线程传实参给子线程后,主线程退出,这时候如果参数实在主线程启动时才定义的,那么主线程退出,传给子线程的参数也失效了。解决方法参数定义为全局变量,传到子线程时,再开一个变量接收保存这个参数static int a;void *pthread(int *a){ int b; b=*(*a);}还一种方法就是在主线程开辟一片内存空间,存储变量,在子线程用完了在释放struct test{ int c; int d;};vo.

2021-03-19 17:29:10 254

原创 linux 在shell脚本截取log文件内容

应用在后台跑,log需要保存下来,但是很多时候只需要最后出现的log,所以清除log,释放空间就变得很重要清除log很简单,但是要保证log文件还可以继续保存log就有问题了。如果用sed去保存的话,会改变文件id,导致应用不能继续写这个文件,你可以在应用里面判断文件描述符是否失效,要重新fclose,fopen如果只想在脚本执行,不想改应用代码,那样就要保证文件id不变,可以把截取好的log保存到一个临时文件截取log,可以根据文件大小来判断log_szie=$(du -b $log_

2021-01-08 17:16:03 1187 1

原创 yocto编译do_rootfs: Could not invoke dnf. Command

ERROR: fsl-image-validation-imx-1.0-r0 do_rootfs: Could not invoke dnf. Command '/home/imx8_release/imx8_yocto_bsp/imx8mmevk_wayland/tmp/work/imx8mmevk-poky-linux/fsl-image-validation-imx/1.0-r0/recipe-sysroot-native/usr/bin/dnf -y -c /home/imx8_release/i.

2021-01-06 17:28:03 4810

原创 利用strstr来定位并且读取文件中的数据,strncpy和memcpy内容不对

while (fgets(buf, sizeof(buf), fp) != NULL) { JRD_OEM_LOG_INFO(JRD_OEM_LOG_ERROR,"%s",buf); point=strstr(buf," "); if(point==NULL){ JRD_OEM_LOG_INFO(JRD_OEM_LOG_ERROR,"can not find space\n"); fclose(fp);...

2020-11-06 09:56:45 386 1

原创 yocto编译,文件系统同一个命令,执行结果不一样

yocto编译,同一个命令,执行结果不一样这个是因为这个命令来自的命令集合不一样busybox是linux其中一个命令合集,如果把packagegroup-core-full-cmdline这个包去掉,很多命令就来之busybox里面在没有去掉这个包的文件系统查看lrwxrwxrwx 1 x root 12 9月 16 09:47 tar -> /bin/tar.tar-rwxr-xr-x 1 x root 416280 9月 20 2019 tar.tarlrwxr...

2020-09-17 09:39:31 500

原创 C语言malloc和free中的bug

malloc和free都是搭配着使用,防止内存泄漏的,而且释放内存空间,能够让系统有更大空间处理更多事件但是最近在使用时遇到这么个问题 unsigned char *head_info_buf; head_info_buf = (unsigned char*)malloc( sizeof(unsigned char) * (head_size) ); fseek(fp,head_pos,SEEK_SET); fread(head_info_buf,head_size,1,fp); head

2020-06-04 11:10:38 490

原创 linux下 gpio 模拟 串口uart 驱动

linux下 利用gpio口模拟 串口uart接收数据设计思路串口数据类型在没有校验位的情况下,串口第一位数据(起始位)是一个低电平,接着是8位的数据位,然后接着一个结束位(一个高电平)。所以我们设计是:1.利用起始位作为一个触发中断的条件,就是将接收数据的gpio口作为中断口,下降沿触发;2.定时器开启,这里需要开启两个定时器,第一个计时器是时钟周期的一半(1/(波特率*2))第...

2020-05-06 09:53:23 3245 7

原创 mcp2518驱动调试

只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效The SPI in the microcontroller must be configured in mode (0,0) or (1,1) in 8-bit operating modeSpi-imx.cspi_imx 30830000.ecspi: mode_bits = 71(0x47)...

2020-04-13 11:15:20 8759 10

原创 解决:内核没办法正常挂载文件系统,错误log:devtmpfs: error mounting -2

s32v234sbc的升级后第一次总是出现文件系统没办法挂载的情况错误log:devtmpfs: error mounting -2跟踪代码,他在内核 drivers/base/devtmpfs.c中/* * If configured, or requested by the commandline, devtmpfs will be * auto-mounted after ...

2020-02-27 10:53:49 7087

原创 imx6q:在应用层对视频输入源做裁剪(crop)不生效

在应用层中,经常需要用到裁剪视频的输入源,网上给的接口都是VIDIOC_S_CROP,多数人在使用这个接口都是没生效的在内核驱动层mxc_v4l2_capture.c可以找到这个 /*! * V4l2 VIDIOC_S_CROP ioctl */ case VIDIOC_S_CROP: { struct v4l2_crop *crop = arg; struct v4l...

2019-11-26 09:54:58 349

原创 利用C语言寻找类型相同的文件

利用C语言寻找后缀相同的文件#include <string.h>void main(){ char str1 = "aa.exe"; char str2 = ".exe"; int a; a=strncmp(str1+strlen(str1)-strlen(str2),str2,strlen(str2));}若str1==str2,则返...

2019-10-24 16:02:40 445

原创 devm_gpio_request_one申请gpio失败,返回-16

在驱动中调用devm_gpio_request_one()函数失败,返回错误值是-16如下是错误码对应的描述 EBUSY 16 Device or resource busy 说明这个接口处于繁忙状态,大致推测是在被使用了。通过搜索设备树,发现这个gpio号确实被另一个驱动调用了,先把他注销掉,释放出来给我试用下面...

2019-09-11 10:09:34 13150 3

原创 imx6 驱动中mipi csi 与 parallel选择

在imx6q这款芯片中使用mipi csi或者parllel来传输数据给imx6q是需要对寄存器做一定的修改的否则数据会没办法传输在36.4.2中的寄存器GPR (IOMUXC_GPR1)的20和19位就是描述选择mipi csi或者parallel具体代码在arch/arm/mach-imx/mach-imx6q.c移植到驱动中需要添加如下头文件#include ...

2019-09-08 14:46:00 3461

原创 读写i2c寄存器(8位)

在linux系统中经常会用到i2c的操作,但是i2c寄存器的写在不同系统层面代码有所不同,直接使用应用层的代码到内核中就会常常报找不到函数的错误。分享一下自己的不同层面i2c写寄存器的代码。针对8位的,16位在研究。在内核驱动中写操作static int i2c_write(unsigned char reg_addr,unsigned char value){ ...

2019-06-21 15:48:33 7099 1

原创 imx6q基于ov5642调试du913/914摄像头,摄像头偏绿调试

imx6q,基于ov5642调试du913/914摄像头硬件设备树(dts)的配置ov5642.c代码修改硬件camera senor -> 913 -> 914(parallel并行接口) -> imx6913的din[x]对应914dout[x]数据脚pclk像素时钟vsync场同步时钟hsync行同步时钟这里的csi0_data8-19对应的就是914的d...

2019-06-17 15:10:09 2728 2

原创 socket传输文件过程中recv函数接收数据包不完全

socket传输文件过程中recv函数接收数据包不完全recv函数接受包不完全,即当recv()返回的大小如果等于请求的大小,那么很有可能是缓冲区还有数据未读完,也意味着该次事件还没有处理完,所以还需要再次读取。比如通过消息知道下一个包大小为3584,却发现recv函数返回值(recv返回值就是实际接收到的数据大小)却小于3584。int recv( In SOCKET s, Out cha...

2019-04-24 10:23:27 7854

mcp2518.zip

mcp2518.zip

2021-01-26

linux嵌入式开发教程.txt

基础的linux嵌入式开发教程,从代码到实践,一步步教会你,还有linux应用层的实现,还有通用驱动设备的介绍和讲解

2020-04-17

ds90ub914a驱动代码.tar.gz

imx6平台,ds90ub914a-q1驱动代码,摄像头端是913,包含设备树(dts),这个是基于ov5642.c代码修改

2019-06-18

空空如也

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

TA关注的人

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