自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 树的快速记忆

概念:树是一种非线性结构,数据元素存在一对多的关系。度数:一个节点的子节点的个数二叉树:每一个节点最多只能有两个直接后继,因此二叉树的度数小于等于2.满二叉树:除了叶节点意外,其他节点都有左右子树,深度为K的满二叉树有个节点。(注意:叶节点不在同一层的也不是满二叉树)完全二叉树:n个节点的二叉树按照层次进行编号,如果编号为i的节点与同样深度的满二叉树中的编号为i的节点,在同一个位置的。树的存储: 【1】顺序存储 用数组存储,一般分配空...

2020-05-19 16:57:31 848

原创 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 747

原创 kfifo

在驱动编程中,经常会遇到异步数据处理的情况,比如采用中断或定时器处理数据输入输出等情况此时数据的采集与处理往往不同步,于是驱动编程中数据采集方需要将采集的数据暂时放到一个缓冲区中,使用方在需要处理数据时从缓冲区中将数据读出驱动编程中常采用队列这种数据结构来实现整个过程,我们可以选择自己编写一个队列,也可以利用内核中现有队列kfifo来实现#include <linux/kfifo.h> //头文件包含//kfifo结构体类型struct kfifo ..

2020-05-14 23:23:28 760

原创 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 180

原创 字符设备驱动接口——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 1398

原创 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 1332

原创 通过驱动中调用函数的方式在应用层创建设备文件

应用层的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 201

原创 创建设备文件

设备文件一般情况下,创建在/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 393

原创 字符设备驱动框架代码的编写

命令: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 163

原创 模块符号表导出

EXPORT_SYMBOL_GPL(sym) //导出符号表usr内核模块依赖,exp内核模块,所以在加载usr.ko之前,必须先加载exp.ko加载后的执行顺序:

2020-05-06 21:35:17 578

原创 内核模块传参

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 471

原创 内核模块使用

1】加载内核模块insmod命令:【2】查看内核消息日志命令——dmesgsudo dmesg -c //删除之前的日志消息【3】卸载内核模块——rmmod注意:格式 rmmod   内核模块名不包括扩展名【二】内核模块声明——作者、描述MODULE_AUTHOR(_author) //声明作者MODULE_DESCRIPTION(_description...

2020-04-30 21:39:59 229

原创 模块的编译

静态编译:将驱动直接编译进内核,与内核形成一个整体运行,生命周期从内核启动开始动内核运行结束。动态编译:以模块的形式编译,在内核运行以后,通过命令加载到内核里,和内核一起运行,通过卸载命令卸载模块。优点:使用灵活方便,适合开发过程中使用内部编译:在内核源码树中编译该方法,以后将系统移植的时候讲外部编译在内核源码目录外编译内核关于构建外部模块的...

2020-04-29 21:39:09 483

原创 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 368

原创 内核模块编写

内核模块格式: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 173

原创 linux驱动(1)

内核里的驱动一般不会主动完成对设备的操作,是用户层有需求的时候,用户层的应用程序操作硬件设备。用户提需求,内核代替用户执行对设备的操作。用户层调函数,通过系统调用,陷入内核态,有内核代替应用层进程执行相应的操作。驱动程序本身也是代码,但与应用程序不同,它不会主动去运行,而是被应用程序调用。应用与驱动程序在系统中所处位置不同,决定了它们代码运行模式也不一样。应用程序运行在用户...

2020-04-28 21:58:38 123

原创 sqlite触发器

SQLite的触发器是数据库的回调函数,它会在指定的数据库事件发生时自动执行调用1、只有每当执行delete,insert或update操作时,才会触发,并执行指定的一条或多条SQL语句2、触发器常用于保证数据一致,以及每当更新或删除表时,将记录写入日志表创建触发器:...

2020-04-28 21:56:02 768

原创 sqlite数据库高级

1.函数和聚合SQL语句支持利用函数来处理数据,函数一般是在数据上执行的,它给数据的转换和处理提供了方便常用的文本处理函数:length() 返回字符串的长度lower() 将字符串转换为小写upper() 将字符串转换为大写2.常用的聚集函数:使用聚集函数,用于检索数据,以便分析和生成报表avg() 返回某列的平均值count() 返回某...

2020-04-28 21:54:38 323

原创 sqlite数据库C语言编程

【1】.打开数据库int sqlite3_open(char *db_name,sqlite3 **db);功能:打开数据库。参数:db_name:数据库文件名,若文件名包含ASCII码表范围的之外的字符,则其必需是(UTF-8)编码。sqlite3:数据库标识,此结构体为数据库操作句柄。通过此句柄可对数据库文件进行相应操作。返回值:...

2020-04-26 21:12:14 607

原创 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 862

原创 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 176

原创 数据库

【1】概念 1.信息:信息是指对现实世界存在方式或运动状态的反映。 2.数据:数据是指存储在某一媒介上,能够被识别的物理符号 3.信息与数据的关系 数据是信息的载体,信息是数据的内涵 从数据处理的角度而言,信息是一种被加工成特定形式的数据【2】数据库系统 定义:数据库系统(DBS)是指计算机中引入数...

2020-04-22 21:07:18 259 1

原创 zigbee通讯

【一】单播 zigbee网络中协调器的短地址是0,其他设备的地址由协调器在组网的时候分配//终端节点单播消息给协调器,协调器接收终端无线消息后,显示消息内容和终端节点短地址/*地址模式为短地址单播模式*/My_DstAddr.addrMode = (afAddrMode_t)afAddr16Bit;My_DstAddr.endPoint = 21; ...

2020-04-22 20:45:15 467

原创 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 1915

原创 基于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 3560

原创 OSAL串口

OSAL串口使用void MT_UartInit () //串口初始化/********************************************************* *@port:串口号 0 --->>> usart0 1 --->>> usart1 *@buf :发送数据缓存区地址 *@len :发送数据的...

2020-04-21 19:28:11 505

原创 OSAL操作系统抽象层

OSAL,Operating System Abstraction Layer,即操作系统抽象层OSAL是一种基于任务事件驱动的轮询式操作系统OSAL操作系统抽象层://zmain.c--->>> main函数入口osal_init_system(); --->>>osalInitTasks();osal_start_system()...

2020-04-20 23:14:49 728

原创 CC2530F256_GPIO裸机操作

TI公司生产的一块8051核的单片机,专门用于zigbee通信。SOC内部集成的外设包括:usart0/1 、timer定时器、看门狗定时器、无线收发模块、Sram、256flash【1】最小系统: 【2】裸机GPIO操作:#include "iocc2530.h...

2020-04-17 20:45:07 573

原创 ZIGBEE介绍

ZigBee是一种新兴的短距离无线通信技术。【1】zigbee特性:低功耗,相比目前的wifi蓝牙功耗更低低成本,协议栈免专利费,IC结构简化低速率,工作在20~250kbps的速率近距离,在不增加功率放大器的情况下,一般介于10~100米之间短时延,无论是唤醒还是入网都在毫秒级高容量,同一协调器最多管理65000+节点自组网,因移动或信号干扰断网后自组自愈高安...

2020-04-17 20:38:19 1070

原创 物联网介绍及RFID

【一】物联网物联网的概念:物物相连的互联网,一种在互联网基础上延伸及扩展到物与物之间并进行信息交换与通信的网络。其目标是通过各种信息传感设备与智能通讯系统把全球范围内的物理物体、信息技术系统和人有机的连接起来,从“点”、“线”、“网”三种不同形态的物联网应用共同实现“智慧的地球”,从而能够通过数据采集、分析、预测、优化等技术,利用更透彻的感知、更全面的互联互通和更深入的智能化能力的新一代解...

2020-04-16 21:38:11 2019

空空如也

空空如也

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

TA关注的人

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