自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (21)
  • 论坛 (1)
  • 问答 (1)

原创 Linux 驱动模块依赖的问题

在Linux驱动开发过程中,一个产品的功能可能由好几个驱动模块组成。模块之间存在依赖的关系。那么怎么处理这种依赖的关系呢。比如一个产品由A和B两个模块组成。在B模块里面调用了A模块的test()函数。那么编译的时候,是怎么实现的呢?在编译模块的过程中,我们会发现有一个Module.symvers文件生成。这个文件,如果你的驱动代码里面没有调用EXPORT_SYMBOL这个宏,那么这个Module.symvers文件里面就是空的,如果调用了,那么里面就是对应的内容。下面的代码来自网友://内

2020-09-13 16:10:32 32

原创 Linux程序运行时自动输入交互命令

在Linux系统里面,我们有时运行程序时,程序在运行过程中,需要我们输入一些信息,程序才能继续向下执行。比如gdb启动程序后,必须输入:run 命令,gdb才会继续运行。很多时候,我们已经知道交互的信息是什么了,想要程序自动输入,那么可以使用以下方法:gdb < test.txttest.txt里面有如下2行内容:set args -platform eglfsr对test.txt里面的内容做解释:第1行是程序运行的参数第2行是运行再举个例子:我们写了一个hello程

2020-08-26 23:16:47 122

原创 串口错误标志位解读

串口错误标志位解读:FE:帧错误,指示当前字符是否存在帧错误(缺少停止位)并且可能已经损坏BRK:BREAK检测,指示当前字符是否为BREAK字符,数据位和停止位均为0OE:接收器超限,指示接收过程中,是否存在数据来不及接收的现象PRERR:RS-485模式下,它保存接收到的9位RS-485数据的第9个数据位。在RS-232/IrDA模式下,它是奇偶校验错误标志。指示是否检测到当前字符是否具有奇偶校验错误并且可能已经损坏Error Detect:错误检测,指示RX_DATA字段是否具有错误-OE

2020-07-29 09:16:56 82

原创 Linux patch的生成与使用

生成patch的方法:使用diff命令生成patchdiff -uprN org chg > patch2命令解释:上面的命令表示,将chg文件夹基于org文件夹操作修改的内容生成一个patch2简单点的就是:org文件夹是你的原始文件夹,chg文件夹是你在org文件夹的文件夹上面做了修改。那么现在你想把这些修改提取出来。就可以通过上面的命令把修改的内容放patch2里面。参数解释:-uprN 多个文件的patch合并在一起org 原始的代码chg 修改后的代码patch2 生

2020-07-28 20:43:59 37

原创 Linux 定时器+延时工作队列+外部中断例程

先上代码:#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/gpio.h>#include <linux/fs.h>#include <asm/uaccess.h>#include <linux/platform_device.h>#include <linux/of_gp

2020-06-08 22:19:10 112

原创 Linux 延时工作队列的简单使用

先上代码,代码如下:#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/gpio.h>#include <linux/fs.h>#include <asm/uaccess.h>#include <linux/platform_device.h>#include <linux/

2020-06-08 22:15:07 103

原创 Linux 定时器的简单使用

主要记录定时器的简单使用,先上代码:#include <linux/module.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/gpio.h>#include <linux/fs.h>#include <asm/uaccess.h>#include <linux/platform_device.h>#include &l

2020-06-08 21:59:21 77

原创 Linux complete的使用记录

之前使用complete的时候,程序总是wait_for_completion函数先执行,并且每次只有一个wait_for_completion在等待,因此对于complete函数也没有太多的深入了解。后面再次需要使用这个功能的时候,想到如果wait_for_completion函数在complete之后执行会出现上面问题?结论:如果wait_for_completion函数在complete之后执行,那么执行wait_for_completion函数时,添加就直接满足,不会再等待complete函数的

2020-06-08 21:27:27 94

原创 ps命令输出解析

今天看书的过程中,看到了对ps输出内容的解析,记录一下:执行命令:ps -axj输出如下:root@imx6qsabresd:/# ps -axjPPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 1 1 1 ? -1 Ss 0 0:...

2020-01-02 21:13:02 397

原创 设备树里面#address-cells 、#size-cells、reg三者的关系

在linux设备树里面,我们经常看到如下描述:regulators { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <0>; reg_usb_otg1_vbus: regulator@0 { ... //其他一些信息 reg = &l...

2019-08-03 16:21:59 2502

原创 从零安装windows10操作系统

今天电脑炸了。重新安装了一下操作系统。这里记录一下。操作步骤:一、下载镜像:https://www.microsoft.com/zh-cn/software-download/windows10进入这个网站,下载里面的立即下载工具。二、运行工具:1、选择给其他电脑安装。2、选择下载ISO文件。之后这个工具会下载一个镜像。三、下载软碟通。UltraISO软碟通四...

2019-07-29 01:09:44 93

原创 epit driver

https://blog.csdn.net/wince_lover/article/details/54577898#commentsIMX6Q提供了一个General Purpose Timer (GPT)和两个Enhanced Periodic Interrupt Timer (EPIT),共三个定时器中断,但是GPT已经用作系统的时钟中断了。如果我们要用到其他的时钟中断,就只能用两个...

2019-07-25 21:17:23 344 1

原创 ARM 执行应用程序提示 -sh : no such file or direction

遇到这个问题,是因为我自己交叉编译了QT的库,然后再根据这个库,交叉编译了QT的应用程序,将应用程序拷贝到板子上时,提示了这个问题。我使用之前的环境编译的程序就不会出现这个问题。首先根据网友的提示,我确定了我的文件是有可执行权限的,我的可执行文件和我的系统也是匹配的,都是32位的。同时我使用相同的编译器进行编译,其他程序是可以执行的。后面根据以为大佬的提示,使用readelf查看信息,最终...

2019-07-24 08:46:07 126

原创 source insight 删除工程后,旧工程信息还是保留在工程打开选项的解决办法

使用ultraedit32这个工具,打开你的\Source Insight\Projects\PROJECTS.DB3文件这个时候你可以看见左边部分显示的是十六进制的数据,右边部分显示的是你工程的信息。(需要你下拉查看,工程和工程之间有很多的0)找到你删除掉的对应的工程。然后将左边的十六进制数据全部替换为0,然后你再打开你的source insight,就看不到对应的信息了。亲测有效。...

2019-07-20 14:54:17 1062 5

原创 linux arm 寄存器进行读写的操作

之前对寄存器读写进行过操作,后面又忘了,这次做个记录:当我们知道寄存器的物理地址时,我们不可以直接使用物理地址。不使用物理地址是因为我们使用了虚拟内存地址对实际的物理地址进行虚拟化管理。假设我们知道某个寄存器的物理地址是:0x302c0038如果我们要操作这个寄存器,就需要对这个地址进行内存映射:ioremapvoid reg_set(u32 phy_reg_addr, u32 ...

2019-07-20 14:19:42 1024

转载 串口相关操作信息

这篇文章是转载别人的。转载地址是:https://blog.csdn.net/specialshoot/article/details/50707965linux下串口通信主要有下面几个步骤Linux串口通信流程串口通信流程图下面我会一一介绍这几个步骤。1.打开串口代码(串口为ttyUSB0) //打开串口 int open_port(void)...

2019-07-17 11:33:46 86

原创 版本控制工具 svn 与 git

svn简单使用指令:从服务器下载代码:svn co addr //co--checkout addr--服务器地址从服务器上下载指定版本的代码:svn co addr -r num //从服务器地址addr上面下载版本好为num的代码提交代码:svn commit -m "这是提交信息" //提交代码,引号里面是提交时的日志 查看当前代码的版...

2019-06-29 19:54:25 124

原创 imx7d 修改CPU频率

CPU频率相关的信息主要保存在:/sys/devices/system/cpu/cpu0/cpufreq 路径下面。更改CPU的频率调节模式performance. 不考虑耗电,只用最高频率。interactive. 直接上最高频率,然后看CPU负荷慢慢降低。powersave. 通常以最低频率运行,流畅度会受影响,一般不会用这个吧!userspace. 可以在用户空...

2019-06-21 09:25:15 505

原创 QT 5.9 交叉编译提示 error: insn does not satisfy its constraints 以及交叉编译链各个版本的下载链接

今天在交叉编译QT5.9.8版本的时候,提示widgets/qtextedit.cpp:1080:1: error: insn does not satisfy its constraints:错误。后面觉得这个问题可能是交叉编译工具链版本太低导致。之前使用的是4.9版本的,提示这个错误。后面将交叉编译链更改为5.4.1版本后,就成功通过了编译。下面附上交叉编译链的下载链接:https:/...

2019-06-20 21:48:49 502

转载 原 Qt 交叉编译的路径设置

在交叉编译Qt源码时,需要设置部署路径。但是部署路径有三个变量,分别是-prefix, -extprefix 和-hostprefix。那这三个变量分别是什么意思呢?-prefix:目标板的引用路径。 这个路径有两个作用,一个是指定目标机的Qt库路径,也就是说,当你把Qt库部署到目标机时,需要把Qt库拷贝到这个路径下,Qt程序就可以自动找到库。第二个是,如果你没有指定extprefix, in...

2019-05-31 20:51:50 418

原创 linux 设置CPU的占用率

在开发过程中,我们测试程序的时候,需要CPU在一定的占用率下进行测试,但是在测试的时候,CPU的占用率不一样符合我们的要求。那么我们可以借助其他的方式来设置CPU的占用率。主要借助工具 cpulimit +死循环 来进行设置。原理如下:cpulimit的作用是用来设置一个进程CPU占用率的上限。我们通过死循环让CPU占用率达到100%,然后通过cpulimit去限制进程的上限,那么就可以得...

2019-05-22 19:32:23 949

转载 QT 屏幕旋转的两种方式

1、方式一:#include "mainwindow.h"#include <QApplication>#include <QGraphicsView>#include <QGraphicsProxyWidget>int main(int argc, char *argv[]){ QApplication a(argc, argv);...

2019-05-11 23:48:34 2510

原创 arm 通过 uImage + dtb 启动

之前都是使用 uboot 通过 zImage+dtb的方式来启动内核。后面需要通过 uImage来启动。方式如下:先编译好 uImage  参考我之前的一篇博客编译uImageuboot传递设备树uboot从v1.1.3开始支持设备树,为了使用设备树,需要在config文件里配置#define CONFIG_OF_LIBFDT在uboot中可以从nandflash mmc s...

2019-05-11 23:22:36 754

原创 编译生成uImage

 因为各种原因,需要生成uImage镜像。本来以为挺简单的,只需要make uImage就可以了。结果发现并不是。生成方式如下:make -j 16 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- LOADADDR=0x10800000 uImage解析:-j 16 多线程编译ARCH=arm 指定平台CROSS_COMPILE=ar...

2019-05-11 21:36:09 606

原创 source insight 4.0添加新的文件类型

在阅读内核代码的时候,需要阅读设备树相关的代码,其后缀是 .dts .dtsi 像这种后缀,source insight 默认是不识别的。因此需要手动添加。添加的方式:在 option ->file type option里面在下图位置添加你想新增的文件类型:然后project->add and remove这样,我们新增的文件类型就可以添加进来了。同...

2019-05-06 11:53:34 2779

原创 ubuntu 通过ssh链接ARM板 及 IMX6使用调试串口通信

先说第一个,ubuntu通过SSH链接ARM板。之前在windows上面都是通过ssh工具进行的链接。在linux上面,对于命令怎么去链接反而不不知道了。现在记录一下命令如下:sudo ssh root@192.168.1.123分析:1、sudo ssh 使用超级用户的权限执行ssh2、root ARM的用户名3、@192.168.1.123 链接到ARM板。IP...

2019-05-04 20:10:15 585

原创 IMX系列设备树引脚复用解析

在linux3.0之后,硬件信息都在设备树里面描述。寄存器也是在设备树里面进行设置。在imx系列的设备树里面,一般都是如下:pinctrl_i2c2: i2c2grp { fsl,pins = < MX7D_PAD_I2C2_SDA__I2C2_SDA 0x4000007f MX7D_PAD_I2C2_SCL__I2C2_SCL 0x4000007f >;};...

2019-05-01 13:51:20 820

原创 定义在结构体里面的宏

测试代码如下:#include <stdio.h>struct Test{ int a; int b;#define ST_DEFINE 10};void func(){ int num = 0; num = ST_DEFINE; printf("1=%d\n",num);}#define ST_DEFINE...

2019-04-24 19:12:00 863

原创 设备树的interrupts属性

在设备树里面,中断使用interrupts来描述。interrupts属性后面,会有不同的参数,有时是两个,有时是三个两个的时候一般是这样出现:interrupt-parent = <&gpio2>;interrupts = <29 0>;一般这样表明:中断控制器是GPIO2,然后使用它的29号中断。(这里的29号,就是指29号引脚),0是指触发...

2019-04-24 19:01:24 4276 1

原创 linux 通过命令控制GPIO

linux 4.9.88在linux里面,可以通过命令去控制GPIO的状态,这种方式可以快速简单的测试GPIO。配置内核:Device Drivers > GPIO Support [*] /sys/class/gpio/... (sysfs interface)重新编译,烧录,重启。进入 /sys/class/gpio目录假如你想操作GPIO5-IO3这个...

2019-04-14 13:22:33 2256 2

原创 自己动手编译交叉编译链

这篇文章主要记录一下自己编译 交叉编译链工具的过程。其实很多工作都是别人已经帮我们做好了的,我只是使用一下别人做好的工具。编译的过程中,主要使用到的工具是:crosstool-ng 编译的流程主要是: 1、先编译安装 crosstool-ng 2、配置 crosstool-ng 3、crosstool-ng 这个工具就把剩下的工具都帮你做了。 //...

2019-03-09 21:54:07 671

原创 linux 内核出现 oops 如何调试

正儿八经上了半年的班了,也接触linux驱动几个月了,不过今天之前还是不会调试。今天也还是没有彻底学会。这篇博客主要是把今天的收获记录下来,方便以后参考。我的内核版本是:4.9.88我在3.14.52里面也实验过。先贴我内核打印的错误信息:Unable to handle kernel NULL pointer dereference at virtual addre...

2019-03-07 22:11:27 1125

原创 linux 下编译,区分程序、库是debug还是release版本。同时以编译freetype为例

在linux里面怎么区分debug和realease版本1、使用 readelf -S filename //filename这里指的是你想要查看的程序,或者库 如果是debug版本的话,你会看到很多debug相关的信息。 如果是release版本的话,按理说是看不到debug信息的。//但是我使用交叉编译链编译程序后,会看见 .debug_frame...

2019-03-02 14:30:34 3056 1

原创 goto 在 linux 里面简单使用

本文主要是简单介绍一下goto语句的简单使用,写这篇博客的目的主要是记录一下。之前学C语言的时候,老师就不提倡使用goto,所以一直知道goto大致是个什么作用,但是一直没有用过,今天在写驱动的时候,需要使用到goto,在网上查了一下,发现大家都是说goto的好处和坏处,没有介绍它的用法,然后就自己写了个程序,测试下。 程序代码如下:void test_goto(void){ ...

2019-01-22 23:00:13 2056

转载 在linux内核里面新添加一个驱动模块

这篇文章完全参考:原文:https://blog.csdn.net/u012247418/article/details/83684126  原文讲解的特别详细,希望大家都去看原文发这篇博客的原因完全只是为了方便自己以后查阅。 1. 构建测试模块:hello1.1 在linux-3.4/drivers/下新建目录hellocd linux-3.4/drivers/mkd...

2019-01-09 23:37:02 813 1

原创 QT undefined reference to 'vtable for Test' Q_OBJECT

前两天在写测试程序的时候,直接把类定义在了cpp文件里面。如: class Test{    Q_OBJECTpublic:private:    int m_a;};在没有使用Test这个类时,进行编译没有问题,可是当我后面使用这个类时,就提示:undefined reference to 'vtable for Test'在网上查了下资料,网友提示说与什么moc...

2018-12-28 21:19:48 140 1

原创 QT Q_DISABLE_COPY 宏的用处

前几天,公司领导审核代码时,问到了代码里面的Q_DISABLE_COPY这个宏的作用是什么。当时就懵逼了。只知道他不让复制,但是不知道为啥不让复制。后面讨论过程中,有位同事说出了他的见解,觉得挺有理,因此记录一下。Q_DISABLE_COPY禁止复制是因为:如果类里面有指针,复制的时候,指针被复制。要是在某一个时刻,你对这个指针进行了释放。那么这个指针就危险了。就可能会导致二次释放。...

2018-12-27 19:51:02 1935 2

原创 ARM char 类型的使用

今天在做编码转换的时候,遇到了一个很奇怪的现象。我的char数组里面,在linux PC上面,里面的值有负数,但是到了ARM开发板上面,里面的值就全变成了整数。调了半天都不知道到底是咋回事。后面在网上百度的时候,偶然看见有位网友说:在arm上面,char类型默认为unsigned char  。看到这位网友的话后,瞬间就想明白了。然后赶紧去测试了一下,发现还真的是这样。后面我把char改成...

2018-12-27 19:43:54 323

原创 QT平台的移植(IMX7D)

系统平台:ubuntu 16.04QT源码信息: QT版本:QT5.5.1 下载地址:http://download.qt.io/archive/qt/5.5/5.5.1/single/ 下载包名: qt-everywhere-opensource-src-5.5.1.tar.gz交叉编译工具: 下载地址:htt...

2018-09-07 11:30:10 772

原创 IMX7 通过Linux使用SDCard烧录UBOOT、kernel、dtb、rootfs详解

开发板使用的是NXP官网的开发板,芯片信号是:MCIMX7D7DVM10SCLinux版本:Ubuntu14.04SDCard大小:2G(最小使用2G,因为根文件系统比较大)通过VM虚拟机进行的操作uboot、kernel、rootfs、dtb的镜像文件是通过在NXP官网提供的MFGTools工具里面找到的,该工具里面有很多镜像,对应的镜像通ucl2.xml和cfg.ini去分析找到的...

2018-08-09 09:38:00 1498 2

git.tar.gz

NXP官方imx7d-linux4.9.88内核最原始的源码。主要是用来提供给技术支持。

2020-03-18

Writing_udev_rules.tar.gz

这个压缩包里面是写udev规则的说明,包含了两个pdf,一个是它的英文原版,一个是翻译后的中文版本。里面介绍了udev相关的信息。例如:KERNEL、NAME、SYMLINK等关键字。

2019-07-28

Linux命令行与shell编程.tar.gz

这个资源里面是关于linux命令行操作和shell编程的资料。里面的PDF前面介绍了linux命令行操作,后面部分介绍shell编程。内容由与至难,是本不错的书。

2019-06-22

程序员的自我修养-链接-装载-库.zip

资源是程序员的自我修养-链接-装载-库。里面的PDF是高清扫描版,带书签。刚刚看了前面的一部分,感觉不错。上传分享一下。

2019-05-31

cpulimit-master.tar.gz

这个压缩包里面实现的代码是设置进程占用CPU的上限。通过这个编译里面的代码加上死循环程序,可以控制CPU的占用率。在测试部分程序,需要CPU在一定的占用率下测试。可以通过这种方式实现。

2019-05-22

嵌入式Linux应用开发完全手册

这个资源是《嵌入式Linux应用开发完全手册》高清扫描版,是购买视频里面的光盘里面的文档。这个文档带书签。讲解很仔细

2019-03-11

linux设备驱动4.0

该压缩包是宋宝华编著的linux设备驱动开发4.0版的PDF。非扫描版本,高清,带书签,可复制。

2019-01-14

Linux设备树使用手册

里面介绍了设备数的基本数据格式,基本概念,如何编址,中断如何工作等。

2019-01-13

QT Creator 第三版 高清+书签+源码

压缩包里面有QT Creator第三版高清PDF,该PDF包含了书签,同时该压缩包里面包含了书中讲解例子的源码,在阅读学习的过程中,结合源码更容易理解。

2018-12-28

stm32f4文档

这个压缩包里面是st官方的chm文档,这个chm文档是英文版原版的。是stm32f4系列的。压缩包里面附带了一个readme文件,这个文件里面介绍了怎么把chm这个英文文档变成中文的,方便阅读。

2018-12-27

skype-Linux聊天软件

skype聊天工具包。这个是Linux版本的。上传至CSDN做个备份。

2018-10-14

提取BMP图片的数据

这个压缩包是一个BMP图片数据提取的C源代码。代码通过读取BMP图片文件,对BMP头信息进行分析,提取图像数据并完整保存到另一个文件,可以直接将图片加载到FB内存显示。 里面有详细的使用说明,同时也提供来部分格式的BMP图片作为验证。

2018-10-13

IMX7-MFGTools

这个文本里面包含了一个MFGTools的官网下载,因为MFGTools下载大概550M,所以放置的是MFGTools的下载链接。亲测可以为IMX7下载。

2018-08-06

IMX7文档集合 Yocto使用教程

压缩包里面包含了多个文档,同时里面有个text文本,文本里面简单的描述了每个文档里面的内容。 主要包含的文档有:i.MX_Linux_User's_Guide、i.MX_Yocto_Project_User's_Guide_Linux、 i.MX_BSP_Porting_Guide、 i.MX_Graphics_User's_Guide、 i.MX Reference Manual、 i.MX Linux® Release Notes等一系列文档。

2018-08-06

STM32F0标准外设函数库手册

里面包含chm原版文件以及解压后的网页文件,原版文件为全英文,中文可通过网页文件使用浏览器进行中文翻译。

2018-04-21

STM32F407+LWIP+DP83848+多端口

这个demo的功能是:stm32f407+DP83848的硬件环境移植LWIP的无操作系统的TCP/IP的server例程。这个例程不仅实现了TCP/IP的server功能,同时还绑定了多个端口,即一个IP地址,多个port。压缩包里有详细介绍,有技术上问题可联系我: ,欢迎大家相互探讨,相互学习。

2018-01-15

Altium designer 15 破解教程+破解文件

压缩包里面含有Altium designer破解方法+破解文件,操作简单易懂

2018-01-14

STM32F407+LWIP+DP83848移植例程

该例程是stm32+LWIP+DP83848的一个移植完成的TCP/IP server的无操作系统服务例程。实现了TCP/IP数据的收发。硬件方面,没有使用外部内存,更大众化,只要一块407+DP83848就可以实现。压缩包里面有具体说明文件。

2018-01-13

source-insight4安装破解+图片教程

最新版本的source insight。压缩包里有安装包,licence,破解截图教程。一次安装破解,操作简单,无后续累赘。

2018-01-02

can学习资料

有多个文档介绍,主要介绍了can协议,can的报文格式,can的帧类型等

2017-12-12

ISO-15765-1-4-中文版

IS0-15765-1-4中文版,详细的翻译了IS0-15765-1-4英文版的内容。

2017-12-04

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