自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(270)
  • 资源 (11)
  • 收藏
  • 关注

原创 08 在ZStack里的led灯控制

在ZStack里已经在hal层里把led的功能封装起来了.在工程的HAL目录 include子目录 hal_led.h头文件里://下面的宏表示第几个led灯, 逻辑上的表示,与具体硬件并没有直接的关系#define HAL_LED_1 0x01#define HAL_LED_2 0x02#define HAL_LED_3 0x04

2017-07-25 13:37:45 3770

原创 07 在ZStack里创建自己的task

打开SampleApp工程后: 因在ZStack里有些资源只能供一个任务使用,所以先把原SampleApp任务的功能去掉(不是删除掉,而是让它不执行起来).在OSAL_SampleApp.c 里:const pTaskEventHandlerFn tasksArr[] = { ... // SampleApp_ProcessEvent 备注掉SampleApp任务的事件处理函数};v

2017-07-25 11:04:21 1024

原创 06 ZStack的task工作流程分析

安装ZStack-CC2530-2.5.1a.exe默认安装到”C:\Texas Instruments\ZStack-CC2530-2.5.1a”目录下. Components目录里实现 hal层、stack网络协议栈、mac层的封装, 而且也实现了osal操作系统的功能等. 通常情况下我们就是调用里面实现好的功能函数就可以了.Documents目录里存放有各个分层的的功能函数的说

2017-07-24 15:15:58 1683

原创 05 TI ZStack协议栈的分层及设备分类

协议栈里常见的英文缩写:SDK: software development kitBSP: board support package(板级支持包):硬件电路图,PCB. 相应的源码API: Application Programming Interface 编程应用接口CBC-MAC: Cipher Block Chaining Message Authentication CodeC

2017-07-24 11:24:51 3450

原创 04 基于TI官方CC2530 BasicRF的简单应用

解包”CC2530 BasicRF(TI 原文件).rar”到C:盘. 1) 无线点灯: 双击打开"C:\CC2530 BasicRF\CC2530 BasicRF\ide\srf05_cc2530\iar\light_switch.eww" 打开后,可以看出整个工程由4个目录组成. application: 应用程序, 即这里的代码是基于调用其它目录里提供的功能实现的

2017-07-20 11:36:28 5083

原创 03 TI cc2530外部中断的应用

在cc2530的中断控制器,共有18个中断源: 其中P0INT, P1INT, P2INT分别是P0, P1, P2组IO口的中断号. 外部中断其实就是指GPIO口的中断功能, 也就是当一个IO口的电平发生变化时自动产生一个硬件信号,自动暂停当前程序的执行,触发调用一个处理函数.一个IO口的电平状态有: 高电平, 低电平, 下降沿, 上升沿, 双边沿 CC2530外部中断线只能捕捉:下

2017-07-20 00:03:47 2447

原创 71 linux usb设备驱动

usb接口有大,小口之分 usb有主机(host,大口)/设备(otg, 小口)工作模式usb主机可以主动去操作设备, 主机接口由4根线(vcc, gnd, d+, d-)usb设备被主机操作, 有5根线(vcc, gnd, d+, d-, id), id线可用于区分设备接口// otg接口即可作主机角色,也可以作设备的角色usb接口可以像树型一样的进行扩展, 可用usb hub芯片(FE1.

2017-07-19 14:41:00 1842

原创 70 linux网络设备驱动之虚拟网卡及arp应答的实现

网络设备驱动的调用不像字符设备驱动,不是通过打开设备文件或属性文件的方式来操作的. 通常情况下用socket编程来实现网络通信, 当使用tcp/udp协议收发网络数据时,无需处理网络协议的包头。 因为网络设备驱动应用程序是无法直接调用, socket编程时是经过网络协议栈处理包头信息后, 再由网络协议栈调用网络设备来收发数据的.在linux内核里以结构体net_device的对象来描述一个网络设

2017-07-18 15:57:40 2042

原创 02 TI CC2530的uart控制器

uart原理参考 uart接口: 发出数据时,就是根据波特率的位时间来改变tx脚的电平. 如二进制数据是’1’则用高电平表示, ‘0’则用低电平表示. 接收数据时,根据位时间来判断rx脚的电平, 如是高电平则表示’1’, 低电平表示’0’.作这样的工作比较麻烦,要求也比较高。所以一般情况下, CPU芯片里都会提供uar控制器,用于帮我们根据要传输的数据自动控制tx脚的电平和判断rx脚的

2017-07-16 09:02:46 1439

原创 01 TI cc2530的IO口控制

计算机里归根到底就是使用二进制0/1, 在电路上就是用高低电平(3.3v, 0v)来表示。一个IO口就是相当于从CPU芯片里引出的一根导线, 用于连接输入输出设备,由代码来控制/获取它的电平。 也就是说我们可以通过代码控制一个IO口是高电平还是低电平(IO作输出功能)。 还是通过代码来判断IO口是处于高/低电平状态(IO作输入功能).CC2530里共分成三组IO口: P0, P1, P2

2017-07-15 10:22:53 4362

原创 QT 支持多客户端网络视频监控的实现

QT里获取摄像头的单张数据: cam = new QCamera; capture = new QCameraImageCapture(cam); connect(capture, SIGNAL(imageCaptured(int,QImage)), this, SLOT(image_ready(int,QImage))); //当捕捉一张图像数据后,触发槽函数,并传递图像数据作为

2017-07-13 16:05:31 6820 11

原创 qt for android 在windows下搭建开发环境

下载所需的工具包: 链接: https://pan.baidu.com/s/1gfYBWm3 密码: jjbw1 安装qt-opensource-windows-x86-android-5.4.1.exe //注意最好是以管理员的身份来安装, 安装路径不要有中文2 安装jdk 32位系统安装: jdk-7u51-windows-i586.exe 64位

2017-07-11 23:51:09 3181

原创 69 linux i2c设备驱动之ft5306电容触控芯片驱动

lcd的显示部分与触摸部分实际是分开的。电容屏的触摸相当于在lcd屏上覆盖一个透明的矩阵键盘, 当用户按下时,可以获取用按下的坐标位置. 通常情况不管是电阻还是电容屏,现都使用一个触控芯片,用于处理用户的操作坐标及实现与SOC的坐标数据的交互.电阻的触控芯片有: tsc2046, 还有国内的: xx2046 电容的触控芯片有: ft5x06(9寸屏以下使用), gt9271(9寸屏以上用) 注

2017-07-06 16:09:34 2304

原创 68 linux framebuffer设备驱动之spi lcd屏驱动

前面驱动的spi lcd仅仅是刷了一下图而已, 如果要让QT图形程序在此lcd上显示的话,还需要实现标准的framebuffer设备驱动才可以.实现一个fb设备驱动好, QT程序就可以在显存里显示出来。 只需要在设备驱动把显存的数据通过spi控制器发送到屏的驱动ic,就可以让QT程序在spi lcd屏上显示出来. 但显存的数据有可能经常发生变化(界面切换), spi lcd屏也应跟着显示出改变过的画

2017-07-06 11:41:32 9851 5

原创 67 linux内核里的framebuffer设备驱动模型

紧接上一博文 ,实现一个最基本功能的fb设备驱动,需实现如下步聚:1) 从内存里分配出禁用数据缓存功能的缓冲区,用于作显存.2) 动态分配struct fb_info对象空间, 每个fb_info对象表示一个fb设备.3) 初始化fb_info对象里的fb_var_screeninfo成员里的分辨率, 位色,每个像素的rgb位域等信息.4) 初始化fb_info对象里的fb_fix_screenin

2017-07-06 01:24:58 938

原创 66 最简单的linux framebuffer设备驱动实现

struct fb_info 的一个对象表示一个framebuffer设备 struct fb_info结构体成员比较多, 最起码需要初始化下面列出的几个成员struct fb_info fbi { ... struct fb_var_screeninfo var; /* Current var */ struct fb_fix_screeninfo fix; /

2017-07-05 18:42:44 1434 3

原创 65 linux spi设备驱动之spi LCD屏驱动

SPI的控制器驱动由平台设备与平台驱动来实现. 驱动后用spi_master对象来描述.在设备驱动中就可以通过函数spi_write, spi_read, spi_w8r16, spi_w8r8等函数来调用控制器."include/linux/spi/spi.h"//让spi->master指向的控制器对象发出len个字节数据,数据缓冲区地址由buf指针指向static inline int sp

2017-07-05 12:52:57 15736 46

原创 64 linux spi设备驱动之mcp2515(can控制器)驱动

mcp2515是一个spi接口的can控制器, 也就是我们通过spi接口把数据交给mcp2515, 它再到数据转换成can数据发出.MCP2515的接口: INT 中断线 ---> GPIOA(10) SCK 时钟线 ---> SPI0_CLK SI ---> SPI0_MOSI SO ---> SPI0_MISO CS

2017-07-04 17:42:36 7727 8

原创 63 linux内核的SPI设备驱动模型及应用程序调用SPI控制器的方法

SPI设备驱动模型与I2C设备驱动模型基本一样.SPI的控制器驱动由平台设备与平台驱动来实现. 驱动后用spi_master对象来描述. spi的设备也是先用spi_board_info来描述,在spi_master对象注册时再生成相应的spi_device对象. spi设备驱动由spi_driver对象描述. spi_device对象与spi_driver都是挂载到spi总线上的.描述spi设备

2017-07-04 15:19:34 4363

原创 62 linux内核里基于GPIO口的SPI控制器驱动

当SOC里的spi控制器不稳定,或者spi控制器不够用时,可以基于GPIO口扩展出SPI控制器. 在Linux内核里已提供了相应的代码,是一个平台驱动,只需写平台设备描述相关资源即可.make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-Device Drivers ---> [*] SPI support --->

2017-07-04 14:16:55 2235 2

原创 61 OrangePi Linux内核里的spi控制器驱动

在全志H3里有2个spi控制器, 每个控制可有4个片选信号: //////////////////////////script.bin里的spi控制器,spi设备相关设置:[spi0]spi_used = 1spi_cs_bitmap = 1spi_mosi = port:PC00<3><default><default><default>spi_miso = port:PC01<3><d

2017-07-04 12:37:06 3595 1

原创 60 spi通信协议

SPI(Serial Peripheral Interface–串行外围接口), 由摩托罗拉公司发明. SPI的接口组成: 数据线,每个时钟周期传输一位数据: MOSI:  master output slave input(主机输出,从机输入) MISO: master input slave output(主机输入,从机输出) //两根数据实现全...

2017-07-04 10:00:53 1629

原创 59 linux i2c设备驱动之dht12驱动

dth12的工作模式除了单总线外,还可以使用i2c接口的工作模式. dht12的引脚说明 ////////////////////////// 上图说明dht12芯片内部有5个寄存器,寄存器地址从0x00 ~ 0x04, 分别存放湿度数据,温度数据,校验和 同时需要特别注意:上面说dht12的设备地址为0xB8, 此地址已是包含读写位了,通常设备址地址只是7位的. 所以dht12的i2c

2017-07-03 15:11:18 2101

原创 58 linux i2c设备驱动之eeprom驱动

eeprom是i2c接口的at24c04芯片, at24c04中的”04”表示容量是4k位.at24c04的设备地址: 上图表示设备地址前4位是固定的”1010”, 后三位是由芯片的引脚A2、A1,A0的电平来决定。通常A0~A2脚都是接地址,表示设备地址为”0x50”. 4K容量则分成两个2K, P0脚用于区分是访问前2K, 还是后2K. 8K容量则分成4个2K, P0和P1脚则是用于

2017-07-02 22:54:55 6155 5

原创 57 linux内核的i2c设备驱动模型

为了实现设备驱动的可移植性及可重用性,在linux内核的驱动模型里, device_driver设备驱动只需实现驱动方法和使用device设备提供的硬件资源(如用到的io口,中断号等). bus总线用于装载device设备与device_driver设备驱动,并管理设备与设备驱动的匹配.为了方便我们,内核里基于设备驱动模型又扩展出平台设备驱动模型. 在嵌入式里,平台设备驱动模型是使用率最高的驱...

2017-07-01 23:19:16 1599 2

原创 56 linux内核里声明I2C设备的方法

I2C控制器驱动好后,由i2c_adapter对象来描述, 我们只需通过函数调用控制器来实现数据传输就可以了。 但i2c控制器上接的i2c设备,需要我们来声明才可以.在linux内核里,每个i2c_client对象表示一个i2c硬件设备"include/linux/i2c.h"struct i2c_client { unsigned short flags; //没用. 如设备地址为10

2017-06-30 14:31:22 1659

原创 55 linux内核里基于GPIO口的I2C控制器驱动

当SOC里的I2C控制器不稳定,或I2C控制器不够用时,我们可以基于GPIO实现I2C控制器的功能.在linux内核里已提供了相应的代码,是一个平台驱动,只需写平台设备描述相关资源即可. make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Device Drivers ---> <*> I2C su

2017-06-30 11:49:44 1311 5

原创 54 OrangePi linux内核里的i2c控制器驱动

在全志H3平台里的”TWI Controller”就是I2C控制器. 共有4个i2c控制器 script.bin里的i2c控制器配置 :[twi0]twi_used = 1twi_scl = port:PA11<2><default><default><default>twi_sda = port:PA12<2><default><default><default>[twi1]twi_u

2017-06-30 11:11:50 2071

原创 53 I2C传输协议

同步: 共用一个时钟信号进行数据传输。 如一个时钟周期信号可进行收发一位数据. 即按已约定好的方式进行工作,工作开始前不需要再发出通知信号 异步: 工作开始前需要再发出通知信号。 没有共用时钟信号,收发两端都有自己的时钟信号(uart: tx, rx, gnd, cts, rts) 中断是异步的 ////////// 主机(master): 发起操作方,一般是i2c控制器

2017-06-29 17:03:40 2110

原创 52 linux设备驱动模型的sysfs接口

除了在proc目录里实现驱动的简单接口外,还可以/sys目录下实现驱动接口//在linux内核里很多结构体都包含有kobject成员. 通常每个kobject对象在/sys/目录下有对应的目录struct kobject { const char *name; //显示的目录名 struct list_head entry; //内核里用于管理kobject对象用,通

2017-06-29 14:10:12 1578 3

原创 51 linux设备驱动的proc调用接口

前面实现的设备驱动提供给用户调用的接口基本都是基于字符设备接口, 用户需要应用程序来调用设备驱动. 但一些比较简单功能的设备驱动,如只需读写功能,可以使另一种用户接口.在系统下的proc目录, 有些文件是可读写的,而且可通过读写改变系统的配置,也可以改变设备驱动里的设置. 如改变printk的输出级别”echo “11 8” > /proc/sys/kernel/printk”如硬件功能比较简单

2017-06-29 11:00:32 1867 1

原创 50 使用linux内核源码里的led驱动<LED Support for GPIO connected LEDs>

这个设备驱动适用于,连接到一个IO口的led灯. 需要在linux内核配置里选上相关的配置。在内核源码目录下: make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Device Drivers ---> [*] LED Support ---> <*> LED Class

2017-06-28 17:03:30 3032

原创 49 使用linux内核源码里的矩阵键盘驱动<GPIO driven matrix keypad support>

这个设备驱动适用于,矩阵键盘的每行,每列都是接到一个IO口, 行线接的IO口有中断功能. 需要在linux内核配置里选上相关的配置。在内核源码目录下: make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Device Drivers ---> Input device support --->

2017-06-28 15:42:58 3569

原创 48 使用linux内核源码里的按键轮询驱动<Polled GPIO buttons>

这个设备驱动适用于,每个按键是连接到一个io口, 驱动里是通过定时查询io口的电平来确定按键的状态的,不使用io口的中断功能/ 需要在linux内核配置里选上相关的配置。在内核源码目录下: make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Device Drivers ---> Input devi

2017-06-28 13:25:14 2979

原创 47 使用linux内核源码里的按键驱动<GPIO Buttons>

这个设备驱动适用于,每个按键是连接到一个io口, 而且这个io口还有中断功能的需要在linux内核配置里选上相关的配置。在内核源码目录下: make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- Device Drivers ---> Input device support --->

2017-06-28 10:41:05 4496

原创 46 dht11/dht12 linux platform驱动实现

在全志h3平台上,外部中断的时钟源需要通过设置相应的配置寄存器选择高频率的时钟源才可以用中断的方式来获取数据位的时间. 为了保证平台驱动代码的可移值性,设置时钟源的代码应在平台设备这边完成.在头文件里, 封装出结构体类型mydht12_pdata_t用于平台设备里指定,平台驱动应当对此平台设备所需作的初始化/结束工作, 也就是由平台驱动在probe和remove函数里调用mydht12.h#if

2017-06-27 15:18:35 1516

原创 45 超声波测距模块的linux platform驱动模型实现

//用一个头文件封装结构体表示超声波测距模块所用的io口 distancer.h#ifndef __DISTANCER_H#define __DISTANCER_Htypedef struct { int trigger_io; //表示trigger的引脚 int echo_io; //捕捉数据的引脚 }mypdata_t;#endif /* __DISTAN

2017-06-26 17:20:47 1620 15

原创 44 linux内核里的platform设备驱动模型

内核里的设备驱动模型分成三部分: bus(struct bus_type), device(struct device), driver(struct device_driver)我们最常用的设备驱动模型是基于上面的模型封装出来的,叫platform驱动模型,也是分成三部分: platform_bus_type(struct bus_type) , 内核里已实现好这个总线,并且总线匹配函

2017-06-26 16:41:39 1336

原创 43 linux的驱动模型,实现设备驱动代码的可移植性

struct bus_type 的对象来表示一个总线, 管理挂载到总线上的设备与设备驱动, 包括它们的配对 struct device 的对象来表示一个挂在总线上的设备, 描述硬件部分的资源(包含IO口, 中断号,键码等) struct device_driver 对象来表示一个挂在总线上的设备驱动, 描述硬件的驱动方法注意: bus总线在linux内核里仅仅是用一个结构体对象来表

2017-06-24 17:40:31 1647

原创 42 linux内核里的输入子系统分析

linux里的子系统: linux内核里把某种功能类型的源码划分成一个源码模块, 也就是把一类相关的源文件集中起来封装出的功能模块. 如内核源码目录下”drivers/input”里就是输入子系统的源码, “drivers/i2c”就是i2c子系统./////////// 输入子系统的主要入口在”drivers/input/input.c”源文件:static const struct file_

2017-06-24 15:51:08 735

基于QCamera, QTcpServer实现网络视频监控

基于QCamera, QTcpServer实现网络视频监控. 支持多客户端. 文档说明: http://blog.csdn.net/jklinux/article/details/75072993

2017-07-13

qt mp3录音程序

qt里简单的mp3录音程序,使用lame编码库. 程序执行时开始录音并编码成mp3存放在”/my.mp3”, 直到程序退出执行 说明文档: http://blog.csdn.net/jklinux/article/details/72815790

2017-05-31

ffmpeg桌面图像h264编码并封装avi

ffmpeg桌面图像h264编码并封装avi. http://blog.csdn.net/jklinux/article/details/72519344

2017-05-19

ffmpeg摄像头数据h264编码并封装avi

ffmpeg摄像头数据h264编码并封装avi http://blog.csdn.net/jklinux/article/details/72478004

2017-05-18

原创 qt 组播实现的屏幕共享程序 

原创qt 组播实现的屏幕共享程序. 更多例子: blog.csdn.net/jklinux 

2017-05-16

原创 qt数据库操作简例

原创 qt数据库操作简例 教程: http://blog.csdn.net/jklinux/article/details/72081872

2017-05-15

qt网络组播程序 

qt网络组播程序 

2017-05-15

qt实现的tcp网络聊天室

qt实现的tcp网络聊天室

2017-05-14

qt录屏程序源码

qt录屏程序源码

2017-05-12

qt贪吃蛇游戏源码

qt贪吃蛇游戏源码

2017-05-12

qt贪吃蛇源码

2017-05-11

空空如也

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

TA关注的人

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