嵌入式
paul_zhang0932
这个作者很懒,什么都没留下…
展开
-
cdev_init和cdev_alloc的区别
struct cdev *cdev_alloc(void) { struct cdev *p = kzalloc(sizeof(struct cdev), GFP_KERNEL); if (p) { INIT_LIST_HEAD(&p->list); kobject_init(&p->kobj, &ktype_cdev_dynamic);原创 2014-10-31 21:33:11 · 403 阅读 · 0 评论 -
BLE4.0核心规格(四)之BLE 广播状态的四种事件类型
Advertising State:在广播状态下, 链路层在广播事件中发送广播 PDU 。 广播事件共有 4 种:非定向可连接事件(ADV_IND)定向可连接事件(ADV_DIRECT_IND)非定向扫描事件(ADV_SCAN_IND)非定向不可连接事件(ADV_NONCONN_IND)1. 广播通道的选择:在广播事件中, 每一个广播事件都会在 3 个广播信道中进行数据传输, ...原创 2018-11-29 16:05:13 · 2965 阅读 · 0 评论 -
BLE4.0核心规格(三)BLE链路层的状态机
一 .链路层状态链路层的操作可以根据状态机来描述,分为以下五种状态• Standby State• Advertising State• Scanning State• Initiating State• Connection State1.1 同一时间只允许一种状态机。1.2 链路成处于Standby状态下不能发送或接受任何的包。Standby状态能转换成任意的其 ...原创 2018-11-28 17:49:15 · 890 阅读 · 0 评论 -
BLE4.0核心规格(五)BLE UUID的定义以及相互转化
UUID做为通用唯一识别符,它是128bits的。 为了减少存储和传输128bit的数据,UUID的值别预处理为16bits或32bits的值。有三种类型的uuid,一种是32bits,一种是16bit,一种是自定义的128bit的uuid。那么缩短的uuid是怎么表示128bits的值呢?蓝牙技术联盟规定了一个计算公式。计算公式如下128_bit_value = 16_bit_value * ...原创 2018-12-28 17:11:47 · 4982 阅读 · 0 评论 -
BLE4.0核心规格(六)BLE 概述
基带 band像BR/EDR射频一样,LE射频采用非许可的2.4G ISM 基带。LE系统采用跳频来对抗干扰和衰减,并提供很多跳频载体。字符传输数据到达1Ms/s。通道 chanelLE采用了两种多用配置方案:频分多址(FDMA)和时分多址(TDMA)。40个物理地址,相隔2MHZ,采用频分多址。其中3个用来作为广播通道,37个作为数据通道。时分多址基于轮询方案,每个设备在预定义的时间发送一...原创 2019-01-02 17:31:42 · 870 阅读 · 0 评论 -
BLE4.0核心规格(七)蓝牙低功耗(BLE)协议栈介绍
转自蜗窝科技,如有冒犯,请联系删除1. 前言因此,本文将换个视角,从协议栈设计者的角度,思考如下问题:为什么会有蓝牙协议栈(Why)?怎样实现蓝牙协议栈(How)?蓝牙协议栈的最终样子是什么(What)?另外,我们知道,当前的蓝牙协议包含BR/EDR、AMP、LE三种技术,为了降低复杂度,本文将focus在现在比较热门的BLE(Bluetooth Low Energy)技术上(物...转载 2019-01-07 16:04:17 · 2057 阅读 · 3 评论 -
MT7688 openwrt之helloworld
之前有一个同事给我介绍一个MT7688的板子( LinkIt Smart 7688 Development Board),放久了,落尘了。今天找出来热一下板子【手动捂脸】。1 .编写hellow_world.c#include <stdio.h> int main(int argc, char** argv) { printf("Hello, World!\n"); return ...原创 2019-05-01 14:22:30 · 977 阅读 · 0 评论 -
Nordic系列芯片讲解十(修改nordic系列芯片的广播名)
修改nordic系列芯片广播名一、local name 和device name的区别关于local name 和device name,很多人可能有疑惑,为什么蓝牙有两个名字。可以这样简单地区分:1.Local Name是广播出来的。Device Name是GATT service中的一个特性,需要连接后才能读或写。。2.Local Name不能过长,因为广播包数据长度有限。Local ...原创 2019-07-29 19:15:30 · 3403 阅读 · 5 评论 -
STM32 BootLoader升级固件
原文链接 https://blog.csdn.net/u011303443/article/details/53378602BootLoader关于Bootloader,从书上的文字描述,很难理解这个名词是什么,有什么用。这次用到了,算是有了更进一步的认识。一、知识点1、BootLoader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下程...转载 2019-09-02 23:55:37 · 1323 阅读 · 0 评论 -
RO段、RW段和ZI段 --Image$$??$$Limit 含义
RO段、RW段和ZI段 --Image$$??$$Limit 含义转自http://www.cnblogs.com/heart-of-eagle/archive/2011/04/28/2032240.html IMPORT |Image$$RO$$Limit| IMPORT |Image$$RW$$Base| IMPORT |Image$$ZI$...转载 2018-07-27 15:51:20 · 259 阅读 · 0 评论 -
常用头文件
#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include 在linux-2.6.31_TX244转载 2014-10-31 21:34:33 · 446 阅读 · 0 评论 -
用GDB调试程序
转:用GDB调试程序(一) 2014-09-22 17:38:29| 分类:常用工具 |字号 订阅用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC转载 2014-10-31 21:36:37 · 326 阅读 · 0 评论 -
led驱动
linux设备驱动--LED驱动最近正在学习设备驱动开发,因此打算写一个系列博客,即是对自己学习的一个总结,也是对自己的一个督促,有不对,不足,需要改正的地方还望大家指出,而且希望结识志同道合的朋友一起学习技术,共同进步。作者:liufei_learning(转载请注明出处)email:flying0216@foxmail.com IT学习交流群:160855096转载 2014-10-31 21:34:47 · 502 阅读 · 0 评论 -
IIC和SPI的区别
转载自 http://blog.csdn.net/skyflying2012/article/details/11910173 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(fo转载 2015-08-14 18:37:04 · 1617 阅读 · 0 评论 -
编译出错:找不到头文件
在kei mdk环境下开发嵌入式软件时,有时候会遇到类似下面的错误:..\User\stm32f10x_it.c(22): error: #5: cannot open source input file "usb_int.h": No such file or directory这主要是头文件管理目录混乱造成的,通常,我们会把不同类型的文件,如src 文件,inc文件,project文原创 2016-03-06 21:50:49 · 1137 阅读 · 0 评论 -
STM32串口发送问题
stm32USART_SendData()原创 2016-06-11 16:36:52 · 1298 阅读 · 0 评论 -
用函数指针的方式来简化串口指令解析
嵌入式项目常常都会用到串口收发数据,有时候我们需要解析接收到的数据很多人会用到if –else if–else的方式来处理相关命令,也有人会用到switch case的方式,但都够简洁,特别是在多层指令嵌套的情况下,在这里介绍一种我在项目中常用到的方法——使用函数指针。1.首先定义函数指针类型:typedef bool (*pFun)(const Message_t message_f...原创 2018-06-28 12:01:34 · 457 阅读 · 0 评论 -
C语言字节对齐 __align(),__attribute((aligned (n))),#pragma pack(n)
转自 : https://blog.csdn.net/21aspnet/article/details/6729724 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要...转载 2018-07-17 17:30:02 · 778 阅读 · 0 评论 -
失传的C结构体打包技艺
原文链接https://github.com/ludx/The-Lost-Art-of-C-Structure-Packing谁应阅读本文本文探讨如何通过手工重新打包C结构体声明,来减小内存空间占用。你需要掌握基本的C语言知识,以理解本文所讲述的内容。如果你在内存容量受限的嵌入式系统中写程序,或者编写操作系统内核代码,就有必要了解这项技术。如果数据集巨大,应用时常逼近内存极限,这项技术会有所...转载 2019-09-10 16:53:24 · 399 阅读 · 1 评论