- 博客(31)
- 收藏
- 关注
原创 树的快速记忆
概念:树是一种非线性结构,数据元素存在一对多的关系。度数:一个节点的子节点的个数二叉树:每一个节点最多只能有两个直接后继,因此二叉树的度数小于等于2.满二叉树:除了叶节点意外,其他节点都有左右子树,深度为K的满二叉树有个节点。(注意:叶节点不在同一层的也不是满二叉树)完全二叉树:n个节点的二叉树按照层次进行编号,如果编号为i的节点与同样深度的满二叉树中的编号为i的节点,在同一个位置的。树的存储: 【1】顺序存储 用数组存储,一般分配空...
2020-05-19 16:57:31
859
原创 STM32介绍
stm32 :ST意法半导体 M微控制器 32:32bitARM分为三个系列:cortex-A :主打高性能,应用于多媒体 exynos s5p6818(cortex-A53)cortex-R : 高性能,实时性高cortex-M:主打高性能,低功耗 M0 M3 M4STM32F103C8T6 :内核使用的是Cortex-M3的核SOC(片上集成系统):CPU核:corte...
2020-05-14 23:24:39
761
原创 kfifo
在驱动编程中,经常会遇到异步数据处理的情况,比如采用中断或定时器处理数据输入输出等情况此时数据的采集与处理往往不同步,于是驱动编程中数据采集方需要将采集的数据暂时放到一个缓冲区中,使用方在需要处理数据时从缓冲区中将数据读出驱动编程中常采用队列这种数据结构来实现整个过程,我们可以选择自己编写一个队列,也可以利用内核中现有队列kfifo来实现#include <linux/kfifo.h> //头文件包含//kfifo结构体类型struct kfifo ..
2020-05-14 23:23:28
768
原创 ioctl
应用层:功能:应用层通过该接口来控制设备#include <sys/ioctl.h>int ioctl(int fd, unsigned long request, ...);该函数经过系统调用,一定会调用到驱动中file_operations操作方法集中的函数。确定调用的是哪一个接口:方法:追内核源代码,参看调用关系long (*unlocked_ioctl) (struct file *filp, unsigned int cmd, unsigned long a
2020-05-14 23:21:53
183
原创 字符设备驱动接口——read、write
应用层read函数调用内核驱动中file_operations结构体里面的read函数接口应用层write函数调用内核驱动中file_operations结构体里面的write函数接口ssize_t read(int fd, void *buf, size_t count);ssize_t write(int fd, const void *buf, size_t count);ssize_t (*read) (struct file *filp, char __user *bu..
2020-05-14 23:18:21
1409
原创 open系统调用
1.应用层出发调用open函数 --->>> 在进程里调用的在创建进程的时候,内核会为该进程创建一个结构体来描述当前进程的所有信息struct task_struct{ pid_t pid; pid_t tgid; ... /* open file information */ struct files_struct *files;};struct files_struct { struct file * fd_array[NR_OP.
2020-05-08 21:12:15
1343
原创 通过驱动中调用函数的方式在应用层创建设备文件
应用层的udev守护进程,会根据创建的属性文件信息,在/dev目录中创建设备文件<linux/device.h>class_create(owner, name)功能:在根目录下的sys目录中的class目录创建文件夹参数:@owner THIS_MODULE@name 名字返回值:成功返回struct class指针,失败返回ERR_PTR函数宏转换后的结果使用IS_ERR()函数宏进行判断,使用PTR_ERR()函数宏将指针转换成err错误码void cl
2020-05-08 21:08:36
207
原创 创建设备文件
设备文件一般情况下,创建在/dev目录下,但是也可以放在任何目录下【1】、通过shell命令的方式,创建设备文件设备文件也称作设备节点mknod —— make block or character special files (创建块设备或者字符设备文件的命令)命令格式:mknod NAME TYPE [MAJOR MINOR]NAME: 设备文件名TYPE:设备文件的类型c:字符设备b:块设备MAJOR:主设备号MINOR : 次设备号...
2020-05-08 21:07:33
398
原创 字符设备驱动框架代码的编写
命令:lsmod —— 查看当前内核中加载了那些模块#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/cdev.h>#include <linux/fs.h>#define BAS...
2020-05-06 21:38:40
194
原创 字符设备驱动框架
头文件:linux/cdev.h linux/fs.h//描述字符设备共性信息的结构体struct cdev { struct kobject kobj; //内核用于管理驱动的结构体 struct module *owner; //THIS_MODULE const struct file_operations *ops; //操作方法集,提供给用户层...
2020-05-06 21:36:50
167
原创 模块符号表导出
EXPORT_SYMBOL_GPL(sym) //导出符号表usr内核模块依赖,exp内核模块,所以在加载usr.ko之前,必须先加载exp.ko加载后的执行顺序:
2020-05-06 21:35:17
586
原创 内核模块传参
module_param(name, type, perm)功能:内核模块传参参数:@name 变量名/传参名@type 参数的数据类型,short ,ushort(无符号短整型),int ,uint ,charp(字符指针)@perm 权限(0644),在sysfs可见#define S_IRWXUGO (S_IRWXU|S_IRWXG|S_IRWXO)...
2020-04-30 21:43:45
476
原创 内核模块使用
1】加载内核模块insmod命令:【2】查看内核消息日志命令——dmesgsudo dmesg -c //删除之前的日志消息【3】卸载内核模块——rmmod注意:格式 rmmod 内核模块名不包括扩展名【二】内核模块声明——作者、描述MODULE_AUTHOR(_author) //声明作者MODULE_DESCRIPTION(_description...
2020-04-30 21:39:59
233
原创 模块的编译
静态编译:将驱动直接编译进内核,与内核形成一个整体运行,生命周期从内核启动开始动内核运行结束。动态编译:以模块的形式编译,在内核运行以后,通过命令加载到内核里,和内核一起运行,通过卸载命令卸载模块。优点:使用灵活方便,适合开发过程中使用内部编译:在内核源码树中编译该方法,以后将系统移植的时候讲外部编译在内核源码目录外编译内核关于构建外部模块的...
2020-04-29 21:39:09
485
原创 printk打印级别
内核的打印函数:#define KERN_EMERG "<0>" /* system is unusable */#define KERN_ALERT "<1>" /* action must be taken immediately */#define KERN_CRIT "<2>" /* critical conditions */#de...
2020-04-29 21:36:17
375
原创 内核模块编写
内核模块格式:1.入口函数(加载函数)#include <linux/init.h>#define module_init(x) __initcall(x); //注册加载函数#define __define_initcall(level,fn,id) \static initcall_t __initcall_##fn##id = fn;//static in...
2020-04-29 21:34:13
177
原创 linux驱动(1)
内核里的驱动一般不会主动完成对设备的操作,是用户层有需求的时候,用户层的应用程序操作硬件设备。用户提需求,内核代替用户执行对设备的操作。用户层调函数,通过系统调用,陷入内核态,有内核代替应用层进程执行相应的操作。驱动程序本身也是代码,但与应用程序不同,它不会主动去运行,而是被应用程序调用。应用与驱动程序在系统中所处位置不同,决定了它们代码运行模式也不一样。应用程序运行在用户...
2020-04-28 21:58:38
127
原创 sqlite触发器
SQLite的触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行调用1、只有每当执行delete,insert或update操作时,才会触发,并执行指定的一条或多条SQL语句2、触发器常用于保证数据一致,以及每当更新或删除表时,将记录写入日志表创建触发器:...
2020-04-28 21:56:02
776
原创 sqlite数据库高级
1.函数和聚合SQL语句支持利用函数来处理数据,函数一般是在数据上执行的,它给数据的转换和处理提供了方便常用的文本处理函数:length() 返回字符串的长度lower() 将字符串转换为小写upper() 将字符串转换为大写2.常用的聚集函数:使用聚集函数,用于检索数据,以便分析和生成报表avg() 返回某列的平均值count() 返回某...
2020-04-28 21:54:38
329
原创 sqlite数据库C语言编程
【1】.打开数据库int sqlite3_open(char *db_name,sqlite3 **db);功能:打开数据库。参数:db_name:数据库文件名,若文件名包含ASCII码表范围的之外的字符,则其必需是(UTF-8)编码。sqlite3:数据库标识,此结构体为数据库操作句柄。通过此句柄可对数据库文件进行相应操作。返回值:...
2020-04-26 21:12:14
618
原创 sqlite数据库匹配语法提高
一、in 操作符in 允许我们在 where 子句中规定多个值。匹配条件语法:where 列名 in (列值1, 列值2, ...)二、and 操作符and 可在 where 子语句中把两个或多个条件结合起来(多个条件之间是与的关系)匹配条件语法:where 列1 = 值1 [and 列2 = 值2 and ...]三、or 操作符or 可在 wher...
2020-04-26 21:06:58
868
原创 sqlite数据库
【1】sqlite数据库特性: 零配置、灵活、可移植、自由的授权、紧凑、可靠、简单、易用【2】SQLite3数据库管理系统安装: 本地安装:dpkg工具 sudo dpkg -i sqlite3_3.7.2-1ubuntu0.1_i386.deb(前提需要先下载deb的安装包) 在线安装:apt-get工具 sudo apt...
2020-04-26 21:00:17
179
原创 数据库
【1】概念 1.信息:信息是指对现实世界存在方式或运动状态的反映。 2.数据:数据是指存储在某一媒介上,能够被识别的物理符号 3.信息与数据的关系 数据是信息的载体,信息是数据的内涵 从数据处理的角度而言,信息是一种被加工成特定形式的数据【2】数据库系统 定义:数据库系统(DBS)是指计算机中引入数...
2020-04-22 21:07:18
265
1
原创 zigbee通讯
【一】单播 zigbee网络中协调器的短地址是0,其他设备的地址由协调器在组网的时候分配//终端节点单播消息给协调器,协调器接收终端无线消息后,显示消息内容和终端节点短地址/*地址模式为短地址单播模式*/My_DstAddr.addrMode = (afAddrMode_t)afAddr16Bit;My_DstAddr.endPoint = 21; ...
2020-04-22 20:45:15
473
原创 ztack协议栈
层次结构:PHY:从无线物理信道上为MAC层提供数据收发的服务MAC:保证协议数据正确收发NWK:兼容IEEE802.15.4标准,并为上层提数据NLDE和管理NLME服务APS :为ZDO访问NWK提供了通路AF :为各个用户自定义的应用对象提供了模板式的活动空间APL :基于zigbee协议栈,建立在ZDO基础之上的具体应用zigbee无线通信:信道:tools...
2020-04-21 19:44:29
1926
原创 基于CC2530的DHT11实现
DHT11官方数据手册,建议电路连接方式:在zigbee模块上的原理图上显示,DATA(数据线)接CC2530的P0_6引脚单总线时序:起始信号:响应信号(DHT11拉低data(P0_6)线80us):‘0’值的表示,高电平持续时间26-28us‘1’值的表示,高电平持续时间70us8bit 湿度整数8bit 8bit 湿度小数8...
2020-04-21 19:35:41
3574
原创 OSAL串口
OSAL串口使用void MT_UartInit () //串口初始化/********************************************************* *@port:串口号 0 --->>> usart0 1 --->>> usart1 *@buf :发送数据缓存区地址 *@len :发送数据的...
2020-04-21 19:28:11
513
原创 OSAL操作系统抽象层
OSAL,Operating System Abstraction Layer,即操作系统抽象层OSAL是一种基于任务事件驱动的轮询式操作系统OSAL操作系统抽象层://zmain.c--->>> main函数入口osal_init_system(); --->>>osalInitTasks();osal_start_system()...
2020-04-20 23:14:49
737
原创 CC2530F256_GPIO裸机操作
TI公司生产的一块8051核的单片机,专门用于zigbee通信。SOC内部集成的外设包括:usart0/1 、timer定时器、看门狗定时器、无线收发模块、Sram、256flash【1】最小系统: 【2】裸机GPIO操作:#include "iocc2530.h...
2020-04-17 20:45:07
581
原创 ZIGBEE介绍
ZigBee是一种新兴的短距离无线通信技术。【1】zigbee特性:低功耗,相比目前的wifi蓝牙功耗更低低成本,协议栈免专利费,IC结构简化低速率,工作在20~250kbps的速率近距离,在不增加功率放大器的情况下,一般介于10~100米之间短时延,无论是唤醒还是入网都在毫秒级高容量,同一协调器最多管理65000+节点自组网,因移动或信号干扰断网后自组自愈高安...
2020-04-17 20:38:19
1083
原创 物联网介绍及RFID
【一】物联网物联网的概念:物物相连的互联网,一种在互联网基础上延伸及扩展到物与物之间并进行信息交换与通信的网络。其目标是通过各种信息传感设备与智能通讯系统把全球范围内的物理物体、信息技术系统和人有机的连接起来,从“点”、“线”、“网”三种不同形态的物联网应用共同实现“智慧的地球”,从而能够通过数据采集、分析、预测、优化等技术,利用更透彻的感知、更全面的互联互通和更深入的智能化能力的新一代解...
2020-04-16 21:38:11
2047
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人