- 博客(30)
- 资源 (1)
- 收藏
- 关注
原创 笔记六:linux3.0以后自己实现i2c驱动probe探测函数不执行原因
先不上直接结果,随我娓娓道来。。一、回顾: 在笔记五:linux下i2c子系统学习中,是基于linux2.6.内核。在linux3.0一下,i2c的设备表示是使用的板级程序实现,及i2c设备使用i2c_client表示,将设备信息用struct i2c_board_info加载,用i2c_new_device函数将设备加载到i2c总线。exp:device.cstat...
2019-04-23 17:49:51
4443
2
转载 傅里叶变换,易懂有趣
记得上大学的时候的机械振动还有工程测试利用的傅立叶变化,当时感觉云里雾里的,感觉好难,也就没有去搞,浑水摸鱼也就过来了,然后现在到了研究生阶段,发现傅立叶变换呀,卷积呀非常的重要,也是学术研究最基础的工具。在做人脸识别的时候刚好用上,所以静下心来学习一下,找了一些资料,感觉不错,下面这篇文章写得非常的生动,记录如下:...
2019-01-15 09:13:53
723
原创 栈的实现(C语言)
栈的原理:先进后出原则!!!1、限定仅在表尾进行插入或删除操作的线性表2、栈顶:表尾端 3、栈底:表头端4、应用:数制转换,行编辑程序,树的遍历等5、凡是对数据的处理具有“后进先出(LIFO)”的特点,都可以用栈这种数据结构来操作demo:用链表实现栈!#include <stdio.h>#include <stdlib.h>#include <assert.h&...
2018-03-28 14:24:14
1126
原创 单向链表之逆序(C语言实现)
链表的创建查看逆序思想:1、链表为空时:不需要逆序;2、链表只有一个节点时:不需要逆序;3、链表的节点为两个以及两个以上时:需要逆序结构体节点:typedef struct student { int num; //学号 int score; //分数 char name[20]; struct student
2018-03-20 07:50:26
14450
原创 单向链表之有序插入节点(C语言实现)
链表的创建查看按特定值插入链表,要求链表本身使用某种排序方法排好序的。 链表的插入分四种情况:1、原链表为空时:使头结点head指向新插入的节点p_new; 2、在第一个节点前加入:使头结点head指向新插入的节点p_new,新插入的节点p_new的next指向第一个节点;3、在中间插入节点:使新加入的节点的前一个节点指向新加入的节点p_new,新加入的节点的next指...
2018-03-20 07:50:05
12562
4
原创 单向链表之排序(C语言实现)
链表的创建查看链表的排序有三种情况:1、链表为空时:不用排序;2、链表中有一个节点:不用排序;3、链表中两个及其以上节点时:排序。结构体节点:typedef struct student { int num; //学号 int score; //分数 char name[20]; struct student
2018-03-20 07:49:41
19415
17
原创 单向链表之删除节点(C语言实现)
链表的创建查看删除节点就是将某一节点从链中摘除。将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。步骤:1、链表为空:不用删除2、链表不为空:先循环找要删除的节点1)找到了1>找
2018-03-19 17:16:54
71280
18
原创 单向链表之释放(C语言实现)
链表的创建查看同遍历链表类似,区别在于p_mov每指向某个节点后都将该节点释放1、释放前要先保存下一个节点,释放后备份恢复给p_mov,否则释放了当前节点,下一个节点的地址就将失去;2、依次将所有节点释放后,最后返回NULL(标示释放完毕)。结构体节点:typedef struct student { int num; //学号 i
2018-03-19 16:54:49
18047
7
原创 单向链表之查询(C语言实现)
链表的创建查看查询步骤:1、得到链表第一个节点的地址,即head的值2、设一个临时指针变量p_mov,指向第一个节点head,即可获 取p_mov所指节点的信息3、比较是否是要查找的节点是,则返回相应节点地址,停止查找;不是,使p_mov后移一个节点,即可访问下一节点,直到链 表的尾节点(注意结尾判断条件),最后找不到返回NULL。结构体
2018-03-19 16:49:40
2200
原创 单向链表之遍历(C语言实现)
步骤:1、得到链表第一个节点的地址,即head的值;2、设一个临时指针变量p_mov,指向第一个节点head,即可获取 p_mov所指节点的信息;3、使p_mov后移一个节点,即可访问下一节点,直到链表的尾节 点(注意结尾判断条件)。demo:void link_print(STU *head){ STU *p_mov=head; while(
2018-03-19 16:35:19
22934
原创 单向链表之创建添加(C语言实现)
创建方式:顺序创建(新加入的放在尾部)、逆序创建(新加入的放在头部)1、顺序创建:两种情况:当链表为空时,将链表头直接指向新加入的节点及第一个节点;当链表不为空时,首先遍历链表找到链表尾节点,然后将新加入的点挂在尾部。 2、逆序创建: 两种情况:当链表为空时,将链表头直接指向新加入的节点及第一个节点;当链表
2018-03-19 16:32:12
3865
原创 直接插入排序法(C语言实现)
插入法排序:通过数据移动,留出合适位置插入顺序合适的值,而无须数据交换步骤:从第二个元素“i”开始缓存准备用于比较,并留出一个空位将空位前的元素“j”拿来与缓存值比较不满足则移动,直到向前找到头比较的目的是要让缓存值插入后成为从开头到插入点这个区间中的最值如果缓存值向前看不是最值,则往后移动,直到可以让缓存值插入后成为最值时停止将缓存值插入到最值位置(即内循环下一个将要移动的位置)。
2018-03-19 15:36:39
24901
3
原创 选择排序算法(C语言实现)
#include <stdio.h>void choice(int *a,int n){ int i,j,temp; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(a[i]>a[j]) { ...
2018-03-19 15:18:31
81122
30
原创 笔记五:linux下I2C子系统学习
一、i2c子系统框架:二、i2c子系统调用流程://+++++++++++++++++++++++++++++++++++++++++++设备端i2c_get_adapteri2c_new_device(相当于register设备)I2c_put_adapter驱动端填充i2c_driveri2c_add_driver(相当于re
2017-10-25 18:38:51
509
原创 笔记三:嵌入式板子读写寄存器的方法
注:下面描述以S5PV210(A8)板子为例。功能:点亮一个led灯(GPH0_3)。GPH0_3:GPH0的物理地址为:0xe0200c00分为控制寄存器和数据寄存器:分别占4个字节。//***************此处引出led灯的物理地址查找方法:如LED灯--->板子原理图(底板原理图--->到核心板原理图)--->找到对应器件I/O口--->查找芯片
2017-10-25 16:59:41
2925
原创 笔记二:字符设备之cdev方式注册字符驱动
一、字符设备核心:字符设备的核心包括cdev结构体和设备号!cdev结构体:驱动中用来描述一个字符设备。原型:struct cdev { struct kobject kobj;//内核对象,由内核管理 struct module *owner; const struct file_operations *ops;//字符设备驱动方法结构体,需自己填充
2017-10-25 16:34:47
516
原创 libjpeg库编码图片为jpg(ffmpeg解码视频存储图片:RGB格式位图压缩为jpg格式图片)
压缩流程(结合网上大家的资料以及libjpeg库的example.c示例:都大同小异):1、如何分配和初始化一个jpeg压缩对象: 在libjpeg中jpeg压缩对象被定义为struct jpeg_compresss_struct这样一个结构体(在这个结构体中有一些子结构体,而这些子结构体是通过malloc来分配的); 另外我们还需要定义一个错误处
2017-01-20 17:36:53
3871
原创 libpng库编码图片为png(RGB压缩为png图片:与ffmpeg视频解码存储为png图片)
//*======参考:1、http://blog.youkuaiyun.com/solstice/article/details/2062 2、libpng库的example.c文件======*// 一、压缩流程:结合下面的demo。1、定义png内部表述结构体和png图片信息结构体以及调色板: png_structp png_ptr; png_i
2017-01-20 17:14:51
5969
2
原创 实现Linux/Android双系统启动和重启切换的一个思路
双系统启动的方式不止一种。一、对于双系统的启动镜像来说: 1、Linux系统和Android系统的uboot、kernel镜像相同而文件系统(rootfs)不同; 2、Linux系统和Android系统的uboot镜像相同而kernel镜像和文件系统(roofts)不同。 这两种情况都可以实现对双系统的启动和切换。二、双系统启动和相互切换的实质是
2017-01-10 17:20:55
7036
2
原创 Linux下bootargs引导参数说明
本文是学习hisi芯片启动过程,不同的芯片启动方式不一样,但都大同小异。 =========================================设置系统启动参数========================================= 必须正确设置bootargs参数或者烧写bootargs镜像才能保证系统正常启动 这个参数
2017-01-10 16:35:19
15204
1
原创 Linux下vi/vim的使用(常用)
Vi/Vim 三种操作状态,分别是--命令模式(Command mode)--插入模式(Insert mode)--底线命令模式(Last line mode) 各模式的功能区分如下: Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
2017-01-10 12:26:24
583
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人