自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (8)
  • 收藏
  • 关注

原创 uboot 驱动模型框架分析(DM)

本文只是简单记录自己对uboot 驱动模型框架的梳理,这些东西比较琐碎,由于时间原因,没有整理成为一个系统的东西,可以理解为一个笔记在uboot驱动模型中,有uclass,uclass driver,udevice, udevice driver结构体,每一个具体的设备,使用udevice结构体描述,udevice设备对应的驱动为driver。uclass描述一种设备类型的集合,udevice挂载uclass上,uclass driver为uclass对应的驱动。代码上,uclass,uc.

2021-04-15 09:31:09 2364

原创 linux select和poll系统调用源码分析

linux select内核实现原理:select系统调用定义,位置在\fs\select.c在看linux内核对select实现之前,最好先了解用户态程序是怎么使用的,这样有利于我们对select实现的理解,select函数的使用可以自行上网搜索。select系统调用格式定义如下:SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp, fd_set __user *, exp, struct

2021-04-11 15:55:06 255

原创 C语言实现两个有序链表的去重合并

有两种方式,第一种是将两个链表合并为一个新的链表。第二种方式是将一个链表合并到另一个链表上。#include<stdio.h>#include <stdlib.h>typedef struct node { int val; struct node *next;}Node,*Pnode;//creat listint create_list(Pnode *head, int *arr, int len){ int i; Pnode tmp, tail;

2020-10-15 10:25:23 1625

原创 linux 下设置svn diff命令为显示左右两个窗口对比差异

实现的效果如下图所示:1.在家目录下创建一个脚本diffwrap.sh脚本:脚本内容如下:#!/bin/bash# 去掉前5个参数shift 5# 使用vimdiff比较vimdiff "$@"2.膝盖家目录下的.subversion/config文件(注意是隐身文件)将#diff-cmd=diff_program(diff,gdiff,etc....

2020-03-27 16:49:52 2194

原创 TCA9548APWR芯片的使用

首先要阅读芯片手册,大概了解该芯片如何使用芯片功能:就是一个i2c的多路多路开关,可以把最多8个地址相同的i2c设备分别接在TCA9548APWR芯片上,通过i2c命令对TCA9548APWR芯片进行设置,即选择接通一个chanel,这样也就是选择了8个i2c设备中的一个设备。下图来自芯片手册TCA9548APWR芯片地址:既然TCA9548APWR芯片是一个i...

2020-03-21 18:52:59 7555 6

原创 linux内核专家学习

逐行分析linux5.15源代码,讲解内存管理,进程调度,文件系统,驱动,网络协议。我们的目标是成为linux内核专家,深入理解linux内核的人非常少,如果能够搞懂linux内核,绝对可以拿到高薪。有意向的可以联系:企鹅:1405790005...

2019-10-04 16:37:19 313

原创 最简单的宏开关

//#define DEBUG printf#define DEBUG(...)

2019-09-02 09:47:21 476

原创 使用gpio模拟i2c时序代码,亲测可用

参考:https://blog.csdn.net/huoyu_/article/details/53373815////////////////////////////////////这些代码是框架层的代码,无需修改直接使用即可/////////////////////////////////////////////#define DELAY 1typedef unsigned ...

2019-04-19 10:12:24 1866

原创 dpdk中的RTE_ETH_FOREACH_DEV宏分析

uint16_trte_eth_dev_count(void){ uint16_t p; uint16_t count; count = 0; //统计可用的port RTE_ETH_FOREACH_DEV(p) count++; return count;}/*rte_eth_find_next返回的p是一个临时中间变量,每次返回一个满足(un...

2019-03-26 19:08:17 2207

原创 正确使用/dev/mem映射寄存器地址到用户空间

在使用/dev/mem设备节点将寄存器地址映射到用户空间时,使用mmap函数将寄存器地址映射到用户空间,但是在使用mmap函数时需要注意一下一点:使用mmap函数时,物理地址的起始地址有一些讲究,不是随便给个地址就直接映射了,而是给的地址需要是页对齐的,即4K对齐,例如下面的例子中,某个gpio的地址是0x11000000 + 0x100,基地址是0x11000000,偏移是0x100,但...

2019-02-01 10:04:42 2037

原创 NXP lx2160ardb 的ERROR: linux-qoriq-4.9-r0 do_menuconfig: No valid terminal found, unable to open dev

环境:ubuntu16.04在LX2160ARDB的sdk中执行如下命令bitbake -c menuconfig virtual/kernel时,出现如下错误: ERROR: linux-qoriq-4.9-r0 do_menuconfig: No valid terminal found, unable to open devshell.Tried the following ...

2019-01-19 15:26:53 1882 3

转载 Linux 内核 hlist 详解

参考如下链接的文章:Linux 内核 hlist 详解

2019-01-15 11:32:14 266

原创 将NTP软件移植到64位的mips上遇到问题

在服务器x86架构上编译NTP软件时,没有发现任何问题,但是使用交叉编译工具链编译NTP时,却发现错误,具体过程如下:1.首先先要到处交叉编译工具链,也就是修改/etc/environment中的内容,将交叉编译工具链的路径添加到最后,最后执行source /etc/environment即可,即可在当前终端直接使用交叉编译工具链的内容,使用Tab来补全从而查看是否生效。2.然后执行配置命令...

2019-01-15 07:30:53 472

原创 linux字符设备的alloc_chrdev_region函数和cdev_add函数 分析

int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name){ struct char_device_struct *cd; cd = __register_chrdev_region(0, baseminor, count, name); if (IS...

2019-01-14 20:35:18 1647

原创 linux ioctl 函数的cmd命令不能为2,否则无法执行内核态的ioctl。

最近在写一个linux驱动时,为了省事,ioctl的cmd参数直接使用宏定义的方式从0开始定义,但是调试程序时发现,当cmd=2时,在用户层调用ioctl却始终无法调用与用户态对应的内核态的ioctl函数,经常查阅资料发现,ioctl的cmd参数等于2是给内核使用的,当ioctl的cmd参数为2时,直接在虚拟文件系统那一层就直接返回给用户空间了,不会执行内核态的ioctl函数。因此要想定义cmd参...

2019-01-10 22:52:37 905

原创 C语言常见错误记录

 在C语言中定义了一个变量,如下所示:static unsigned char switch;但是在编译的时候,总是提示如下的错误,找了很久也找不到语法错误,最终发现原来将变量名与关键字取得一样了。work/gpio_led/led.c:22:22: 错误:expected identifier or ‘(’ before ‘switch’ static unsigned cha...

2019-01-03 10:15:32 379

原创 常用linux 链表分析

本文仅仅记录比较常用的操作内核链表接口 static inline void __list_cut_position(struct list_head *list, struct list_head *head, struct list_head *entry){ struct list_head *new_first = entry-&gt;next; list-&gt;...

2018-12-19 15:48:58 314 1

原创 Ubuntu下测试虚拟摄像头

V4l2框架中的结构体中的各个含义可以参考如下文档,写的比较细D:\linux-3.4.2\linux-3.4.2\Documentation\video4linux\v4l2-framework.txt 虚拟摄像头测试 二、测试虚拟驱动vivi准备工作:安装xawtvsudo apt-get install xawtv  Xawtv默认打开的是/dev/v...

2018-12-18 23:00:34 2241

原创 linux 内核klist分析

记录一下内核的的klist实现,以防以后忘记。内核目录文件所在位置:\include\linux\klist.c和\include\linux\klist.h本文仅仅是对源代码进行分析,分析的部分参看每段代码的注释部分。关于klist详细的文字介绍,请参考其他文章:Linux内核中的klist分析linux内核源代码分析----内核基础设施之klistLinux内核链表list...

2018-12-18 08:08:36 2796

原创 安装centOS时识别不到硬盘问题的解决

在x86架构下,使用U盘作为启动盘,安装centOS7.4时,总是识别不到硬盘,仅仅能识别U盘,试了网上各种办法都没有解决,最终尝试各种版本后,发现只有centOS7.0可以识别出本机器的硬盘。所以只能安装centOS7.0版本,但是在安装的过程中会出现以下错误,在“安装目标位置”界面的中,如果我们设置了安装源,和选择软件后,就不会出现这个问题,最终可以成功安装。注意:如果安装cent...

2018-08-10 13:55:02 52196 8

转载 交叉编译器的版本兼容

问题1、arm交叉编译器各版本的兼容性,如使用3.4.5编译的动态链接库,可否用4.4编译应用程序,并成功调用动态库?问题2:拿到一个陌生的arm版,如何从arm板上获取编译器版本,(原PC端开发信息丢失)?问题一,最好配套使用,否则会出现莫名其妙的问题问题二,陌生的arm板,找它的厂家要编译器,厂家提供的编译器都是经过验证的,如果自己学习就无所谓了,可以自己做一个我们首先要弄清楚指令集的概念,J...

2018-03-23 17:38:08 2140

原创 source insight4.0支持中文字体

问题:之前使用的source insight3.5,也是可以支持中文的,只是在编辑中文注释时是可以正常显示,但是如果查看是由在Ubuntu中使用的中文编辑的中文注释时,却是乱码,在网上查看了很多的博客,尝试了很多的方法,最终还是不行,浪费了很多时间,最后请教同事,同事给我发了他使用的source insight软件,我安装后还是不行,但是发现了一个现象,那就是把原来的source insight工...

2018-02-11 10:42:04 2866

原创 解决linux上的时间同步问题:NTP

本篇文章主要讲的是自己在工作中遇到的问题及如何解决,对于什么是NTP和如何使用NTP这些概念都没有涉及,因为这些都是网上有的内容,我也是参考的这些内容。在windows下自己下载了ntp-4.2.4p4.tar.gz压缩包,按照http://www.51testing.com/html/28/116228-202637.html这篇文章,在Ubuntu虚拟机中解压,编译和安装之后,但是并没有在

2018-01-29 15:10:23 6615

原创 解决xshell下vim支持中文

图文并茂的详细教程地址:https://wenku.baidu.com/view/3552b65d42323968011ca300a6c30c225801f041打开~/.vimrc文件从到最后添加如下内容,如果没有该文件则在家目录下创建该文件。set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936set termencodin

2018-01-29 10:25:01 732

原创 交叉编译时64位的程序时,需要编译选项和连接选项需要添加那些参数

编译选项:额外添加的参数 -mabi=64 -EB链接选项:额外添加的参数 -mabi=64 -EB -m elf64ltsmip

2018-01-25 14:57:01 909

原创 解决安装NTP服务器时,没有/etc/ntp.conf配置文件问题

本人是在windows下下载ntp-4.2.8p10.tar.gz压缩包,然后通过如下命令完成NTP的安装,但是使用这种方法安装后,就没有/etc/ntp.conf配置文件tar zxvf ntp-4.2.4p4.tar.gzcd ntp-4.2.4p4./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-pa

2018-01-23 17:55:10 11232

原创 int型变量转化为char型变量问题

int a = 0x1ff;char b = (char)a; char c = a & 0xff;printf("a = %x\n", a);printf("b = %x\n", b);prin

2018-01-19 11:53:30 950

转载 c语言中16进制转换为十进制

方法1:使用进制转换转载:https://zhidao.baidu.com/question/51006929.html#include #include /* 十六进制数转换为十进制数 */long hexToDec(char *source); /* 返回ch字符在sign数组中的序号 */int getIndexOfSigns(char ch); int main(){

2018-01-17 09:30:56 168611 6

原创 c语言实现找出字符串str2在字符串str1中的首地址

char * location(char *str1, char * str2){ char *p = str1; char str3[1024] = {0}; strcpy(str3,str2); int len = strlen(str3);// while ( (*p++ != *str2) && (*p++ != '\0') ) 错误的写法,p会自加两次 while

2018-01-16 19:36:00 1401

原创 C语言实现计算一个文件中的单词个数

void count_world(){ int nl, nc, nw, state, c; nl = nc = nw = 0; FILE *fp; state = OUT; fp = fopen("./a.txt","r"); while((c = fgetc(fp)) != EOF) { DEBUG("c:%c\n",c); nc++; if(c == '\n')

2018-01-16 13:50:19 4252

原创 约瑟夫环问题(joseph)

typedef int data_t;typedef struct node { data_t val; struct node * next;}Node, *Pnode;void fun(int n, int k, int m){ //创建链表 Pnode p,r,L = NULL; int i; for (i = 1; i <= n; i++) { p =

2017-09-29 22:10:29 762

原创 用C语言编写一个去除C代码中所有的注释的部分

/* 本程序是在原有的c文件上删除注释,并不是将源文件中的注释删除然后将无注释的内容存放在新的文件中 */运行环境是在linux上#include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h&g...

2017-09-27 15:26:35 3146 2

转载 source insight 如何支持汇编文件或者其他的文件

在使用SourceInsight的过程中,发现使用SourceInsight建立的工程在ADD TREE时,默认设置并没有把该TREE里面所有汇编文件都包含进来,比如.s和.S汇编文件,这样导致搜索时,搜索不到.s和.S汇编文件中的内容,导致查看代码何不方便。       解决方法是在Options->Document Options里面,点左上的Document Type下拉菜单,选择x

2017-08-02 22:28:33 991

原创 自己写coms_ov7740驱动

设备文件#include &lt;linux/kernel.h&gt;#include &lt;linux/module.h&gt;#include &lt;linux/platform_device.h&gt;#include &lt;linux/i2c.h&gt;#include &lt;linux/err.h&gt;#include &lt;linux/regmap.h&gt...

2017-07-30 15:27:05 2283

原创 自己写的uvc驱动支持IP2977/ip2970

 /* 作者: [email protected] * 此驱动程序是基于linux2.6.31.14内核 * 上一篇自己写的uvc驱动程序是针对环宇飞扬6190来写的,有一些缺点,这些缺点在本次的驱动 * 中进行了修改此uvc驱动是针对IP2977进行了支持,根据IP2977芯片厂商提供的修改手册进行了修改。 * 此驱动程序虽然支持IP2977摄像头,但是显示效果不太好,此驱动只是针...

2017-07-27 22:35:49 912

原创 自己写的uvc摄像头驱动程序

  该文件中的一些宏定义来自内核中的uvcvideo.h文件/* 作者: [email protected] * 注:此usb摄像头驱动程序是基于linux2.6.31.14内核。 * 功能:这个uvc驱动程序仅仅是为了帮助学习uvc驱动的结构而已,这个程序有很多不足 * 比如,很多参数是我们通过手工来去读取设备描述符来获得的。读很多临界资源没有加锁等。 * 我们应该使用内核中...

2017-07-27 09:54:03 10140 3

原创 基于linux2.6.31.14内核自己写虚拟摄像头驱动myvivi.c

   /* 仿照linux2.6.31.14内核中的vivi.c */#include &lt;linux/module.h&gt;#include &lt;linux/delay.h&gt;#include &lt;linux/errno.h&gt;#include &lt;linux/fs.h&gt;#include &lt;linux/kernel.h&gt;...

2017-07-11 22:42:52 1098

原创 分析vivi.c

从入口函数看起:static int __init vivi_init(void)struct vb2_queue *q;/* 找到支持的字体格式 */const struct font_desc *font = find_font("VGA8x16");/* 创建一个实例 */ret = vivi_create_instance/* 封装的结构体 */struct

2017-06-28 13:50:10 1099

原创 JZ2440块设备驱动------用ram模拟块设备

/* 参考:drivers\block\xd.c * drivers\block\z2ram.c * 功能:便于实验观察,无论是向磁盘读写,都是先把所有的读操作完后, * 然后在完成所有的写操作 *  * 2016年6月26日22:41:51 */#include #include #include #include #include

2016-07-01 18:49:59 455

原创 S3C JZ2440 USB 驱动程序完整

/* 参考例子:drivers\hid\usbhid\usbmouse.c * 功能:完整的USB驱动程序 *  * 2016年6月23日21:37:10 */#include #include #include #include #include #include static struct input_dev * uk_dev;s

2016-06-23 21:43:57 2811

两个有序链表的去重合并

两个有序链表的去重合并,

2020-10-15

make_pmt.c

c语言实现kmp算法,可直接运行,亲测可用,可以直接运用在项目中,或者当做库函数使用。

2020-08-30

elasticsearch源码.rar

Elasticsearch(ES)是一个基于Lucene的近实时分布式存储及搜索分析系统,其应用场景广泛,可应用于日志分析、全文检索、结构化数据分析等多种场景,既可作为NoSQL数据库,也可作为搜索引擎。由于ES具备如此强悍的能力,因此吸引了很多公司争相使用,如维基百科、GitHub、Stack Overflow等。 对于ES的写入,我们主要关心写入的实时性及可靠性。本文将通过源码来探索ES写入的具体流程。

2019-08-23

OpenYuma-master.rar

yuma开源工具是一个基于NETCONF协议开发的软件包 yuma开源工具是一个基于NETCONF协议开发的软件包

2019-08-23

klish-master.zip

klish (Kommand Line Interface SHell) 是一个在 Unix 系统上实现了 Cisco 方式的命令行接口的框架,可通过XML进行配置。是 clish 的衍生版本。-The klish is a framework for implementing a CISCO-like CLI on a UNIX systems. It is configurable by XML files. The KLISH stands for Kommand Line Interface Shell. I know that "command" starts with "c" :) .

2019-08-23

source insight4.0

source insight4.0支持中文显示,无需任何配置,支持安装就可使用,重点是直接就可以支持使用类似于Ubuntu的linux发行版中编译的中文注释

2018-02-11

ntp-4.2.4p4.tar.gz

该软件时NTP客户端和服务器都可以使用,配置,编译,安装都是没有错误的,亲测,使用方法参考:http://blog.csdn.net/zhangjianjun521/article/details/79195169

2018-01-31

linux NTP客户端源码

该文件是简单版的NTP客户端的代码,可用于学习NTP协议,也可以正常编译,然后直接运行与NTP服务器进行时间同步。亲测可用。

2018-01-31

空空如也

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

TA关注的人

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