
Zephyr
jacky_jin1
日拱一卒,笔耕不辍.
QQ:1570698943
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
zephyr flash shell
2.写数据:uart:~$ flash write flash-controller@4001e000 0x82000 0x1234。3,擦除:flash erase 0x82000 0x1000。原创 2024-03-12 16:49:54 · 548 阅读 · 1 评论 -
CIS一些参数
cisEventCounter是从0开始计数,每个cis event 到了,不管主从机有没有发送数据,都增加1。cisPayloadCounter 是从0开始计数,每到交互的数据的Subevent 就累加1 ,比如BN=2 ,那么不管主从机有没有发送成功数据,都进行累加。BN是多少,就累加多少。cisPayloadNumber 是从0开始计数,每个交互成功一次数据,也包括空包的数据,则进行累加。...原创 2022-01-15 14:16:17 · 531 阅读 · 0 评论 -
31个ISO channel 不同设备的原因
原创 2022-01-12 17:15:25 · 165 阅读 · 0 评论 -
【Zephyr】K_MSGQ
/** Copyright (c) 2016 Wind River Systems, Inc.** SPDX-License-Identifier: Apache-2.0*//*** @file* @brief Message queues.*/#endif /* CONFIG_POLL *///消息队列的初始化void k_msgq_init(struct k_msgq *msgq, char *buffer, size_t msg_size, ...原创 2022-01-11 10:26:32 · 330 阅读 · 0 评论 -
Zephyr线程调度锁
本文分析Zerphyr如何实现调度加解锁。最近在看Zephyr内核代码的时候,深入的看了一下调度加解锁的实现,虽然代码比较简练,但实现原理上比较有意思,这里做一个简单的记录。下面就是加解锁调度的主要代码,可以看到,就是在对sched_spinlock上锁的情况下对sched_locked字段进行加减完成 1234567891011121314151617181920212223242526 static inli原创 2021-12-24 17:30:45 · 698 阅读 · 0 评论 -
【Zephyr】nRF52840线程切换,动态内存分配所占用的时间
在NRF52840上,一直有一个疑问是,别人总是说,优化代码,有的互斥锁,信号量等,等都是有代价的 ,下面可以看出,在64M主频下,进行操作系统的各项操作所占用的时间。原创 2021-12-18 09:32:04 · 1039 阅读 · 0 评论 -
如何设置zephyr生成的bin文件的名字
默认的zephyr生成的bin文件的名字是zephyr.bin文件,通过配置kconfig,文件可以修改为任意的名字。CONFIG_KERNEL_BIN_NAME="zephyr_test"原创 2021-12-08 09:27:51 · 400 阅读 · 1 评论 -
【Zephyr】中断向量表
从图上看,黄色和距离00000地址处,还少了一部分,缺失的是hardfault的部分,此次没有显示,这个也是为啥黄色没有跟00000000 对其的原因。原创 2021-12-01 19:28:55 · 292 阅读 · 0 评论 -
关于LE Create BIG Command中 Max_Transport_Latency说明
LE Create BIG Command 和 LE Set CIG Parameters command 中的Max_Transport_Latency的参数的说明。其他的参数都大概了解了,就这个参数比较复杂,计算方法如下:原创 2021-09-05 15:25:28 · 323 阅读 · 0 评论 -
关于ISO_Intervla SDU_Interval说明
原创 2021-09-04 20:04:25 · 400 阅读 · 0 评论 -
setup.py安装
python setup.py install原创 2021-07-25 17:59:54 · 254 阅读 · 0 评论 -
关于LE AUDIO里面的BIG_Sync_Delay CIG_SYNC_DELAY CIS_SYNC_DELAY
BIG_Sync_Delay从下图中可以看出来,有两个概念,一个是BIG Anchor Point 一个是BIG Synchonization Ponit ,其中BIG Anchor Point是每次BIG事件到了,开始发送的BIS的数据包的时间点,其中BIG Synchonization Point是最后一个BIS Data Packet 发送的时间点,不包括Control报文。BIG_Sync_Delay是两个时间点的差值。BIG_Sync_Delay是固定的值,是可以计算出来的。是最大的BIG E原创 2021-05-08 17:18:52 · 838 阅读 · 0 评论 -
Central_hr_coded example
HCI Comamnd:BT_HCI_OP_RESET 0x03 0x0c 00 BT_HCI_OP_READ_LOCAL_FEATURES 0x03 0x10 0x00BT_HCI_OP_READ_LOCAL_VERSION_INFO 0x01 0x10 0x00BT_HCI_OP_READ_SUPPORTED_COMMANDS 0x02 0x10 0x00BT_HCI_OP_LE_READ_LOCAL_FEATU...原创 2020-12-04 11:05:47 · 147 阅读 · 0 评论 -
广播包扩展的HCI Command
BT_HCI_OP_RESET 0x03 0x0c 00 BT_HCI_OP_READ_LOCAL_FEATURES 0x03 0x10 0x00BT_HCI_OP_READ_LOCAL_VERSION_INFO 0x01 0x10 0x00BT_HCI_OP_READ_SUPPORTED_COMMANDS 0x02 0x10 0x00BT_HCI_OP_LE_READ_LOCAL_FEATURES 0x03 0x...原创 2020-12-03 10:45:56 · 393 阅读 · 0 评论 -
BT_HCI_OP_LE_CREATE_CONN
原创 2020-11-30 21:18:47 · 274 阅读 · 0 评论 -
扫描的功耗测试
原创 2020-11-30 17:09:36 · 198 阅读 · 0 评论 -
Public 地址
地址全为0的,Pbulic的地址原创 2020-11-30 15:40:05 · 262 阅读 · 0 评论 -
Connectable high duty cycle directed advertising
通过HCI 命令,配置广播类型为,ADV_DIRECT_IND定向广播,设置为高占空比的定向广播。原创 2020-11-30 15:08:48 · 430 阅读 · 0 评论 -
Link Controller commands
在Link Controller commands里面,针对BLE,目前找到了两个HCI Command,分别是0X0406:Disconnect command ,HCI_Disconnect和0X041D,Read Remote Version Information command .HCI_Read_Remote_Version_Information.原创 2020-11-27 20:16:14 · 145 阅读 · 0 评论 -
看各种空口包的类型
从图中可以看出,有LE-C是LLCP的包.LE-U是ACL Data包,都是L2CAP层及以上的包。周期性同步广播的包都是ADVB-U .BIS的包是LEB-C ,LE-S,LE-F .CIS的包是LE-S LE-F。可以看出来,BIS比CIS多了一种,LEB-C的包原创 2020-10-25 20:33:07 · 484 阅读 · 1 评论 -
BT_LE_ADV_OPT_USE_IDENTITY的使用
在广播参数设置中,有一个option是选择使用Identity的地址。所谓Identity的地址,指的是static random的地址,或者是public的地址。这个的使用方法是跟privacy相关的。1,如果在autoconfig.h文件中,使能了,#define CONFIG_BT_PRIVACY 1。那么,广播的地址是一个RPA的地址,也就是可以可解析的随机地址。是用bt_dev.irk[]中的IRK,根据bt_dev.id_addr[],产生的,变化间隔是,#define CONFIG_BT_原创 2020-10-19 21:05:53 · 592 阅读 · 0 评论 -
地址类型
原创 2020-10-12 14:03:10 · 494 阅读 · 0 评论 -
汇总部分的HCI Command实现广播和扫描的功能
bt_send的函数。BT_HCI_OP_RESET 0x03 0x0c 00 BT_HCI_OP_READ_LOCAL_FEATURES 0x03 0x10 0x00BT_HCI_OP_READ_LOCAL_VERSION_INFO 0x01 0x10 0x00BT_HCI_OP_READ_SUPPORTED_COMMANDS 0x02 0x10 0x00BT_HCI_OP_LE_READ_LOCAL_FEATURES ...原创 2020-10-08 13:42:06 · 684 阅读 · 0 评论 -
DEVICETREE基本概念
Device Tree(二):基本概念作者:linuxer发布于:2014-5-30 16:47 分类:统一设备模型一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file。通过DTC(Device Tree Comp.转载 2020-08-25 09:34:04 · 472 阅读 · 0 评论 -
Maping nodes to binding
Mapping nodes to bindingsDuring theConfiguration Phase, the build system tries to map each node in the devicetree to a binding file. The build system only generates macros for devicetree nodes which have matching bindings. Nodes are mapped to bindings b.原创 2020-08-24 16:17:29 · 115 阅读 · 0 评论 -
LE Add Device To Resolving List command
HCI_LE_Add_Device_To_Resolving_ListCommand Parameters: Peer_Identity_Address_Type ,Peer_Identity_Address,Peer_IRK ,Local_IRK可以看出来,一条Resolving List 是由4部分组成,对端的可被识别的MAC地址和地址类型,地址类型必须是Public的或者是Static Random的,本设备的IRK,和对端设备的IRK。如果使能了RPA ,本设备会查看是否有local ir.原创 2020-08-08 09:36:51 · 579 阅读 · 0 评论 -
找服务的几种方式的区别
1,FIND INFOMAITONFIND INFORMATION是在Start Hanlde和 Endle handle找属性。应答包是属性的Handle和UUID。format field指示只能是16bit的UUID或者128bit的UUID。如果在Start Handle 和Endle handle有连续的16bit uuid或者128bit的uuid,如果MTU还有剩余空间,那么就会返回。如果是16bit uuid或者128bituuid交替的话,那么就直接返回找到的。2,FIND BY.原创 2020-06-21 10:37:44 · 432 阅读 · 0 评论 -
zephyr beacon样例
1,修改beacon样例,5340PDK做Host。修改如下:第一步:v1.3.0-rc1\zephyr\boards\arm\nrf5340pdk_nrf5340,在此目录下,修改Kconfig文件,把BT_BUS_TYPE由BT_RPMSG修改为H4的接口总线。choice BT_HCI_BUS_TYPE default BT_H4 if BTendchoice第二步:修改v1.3.0-rc1\zephyr\samples\bluetooth\beacon目录下,prj.co...原创 2020-06-07 21:11:49 · 567 阅读 · 0 评论 -
HCI Command packet
HCI Command是有方向性的,从Host发给Controller。是2个字节的长度,OPCODE 其中,分为两部分,OCF和OGF,OGF,是上面的6bits,剩余的10个bit位是OCF。原创 2020-06-07 19:02:58 · 1004 阅读 · 0 评论 -
z_sys_device_do_config_level(_SYS_INIT_LEVEL_PRE_KERNEL_1)
在init.c中会初始化设备。z_sys_device_do_config_level(_SYS_INIT_LEVEL_PRE_KERNEL_1); DEVICE_DEFINE(uart_nrfx_uarte##idx, \ DT_NORDIC_NRF_UARTE_UART_##idx##_LABEL, \ uarte_##idx##_init, ...原创 2020-05-27 20:54:46 · 322 阅读 · 0 评论 -
Zephyr 内核Timeout模块简介
在Zephyr Tick Clock简介一文中分析tick clock的工作原理提到每个tick中断的时候将会调用z_clock_announce,通知现在已经走了一个tick了,同时也提到了tick clock是sheep time和wait timeout的基础设施,本文将分析Zephyr的Timeout模块,说明Zephyr如何管理timeout对象,以及如果驱动timeout。Time...转载 2020-04-28 09:52:03 · 685 阅读 · 0 评论 -
Ceil Floor Round
三个与取整有关的方法:ceil,floor,round,这些方法的作用于它们的英文名称的含义相对应:(1)floor()的英文含义是地板,所以是向下取整,方便记忆叫它地板函数。会取不大于自变量的最大整数,这样自变量是3.1或3.9是没有区别的,返回都是3;自变量是-2.1或-2.9也是没有区别的,返回都是-3;(2)ceil()的英文含义天花板,所以是向上取整,它就是天花板函数。会取不小于自...转载 2020-04-13 14:59:48 · 132 阅读 · 0 评论 -
Spinlock semaphore mutex的区别
spinlock是一种忙等待,也就是说,进程是不会睡眠的,只是一直在那里死循环。而mutex是睡等,也就是说,如果拿不到临界资源,那它会选择进程睡眠。那什么时候用spinlock,什么时候用mutex呢?首先,如果是在不允许睡眠的情况下,只能只用spinlock,比如中断的时候。然后如果临界区中执行代码的时间小于进程上下文切换的时间,那应该使用spinlock。反之应该使用mutex。 ...转载 2020-04-03 09:41:26 · 427 阅读 · 0 评论 -
zephyr学习三:启动过程
一.写在前面最近对zephyr这个系统很感兴趣,因此业余有时间的时候都在研究它的源码,而光看代码不去动手这不是我的风格,于是乎在网上淘了一块STM32F103C8T6的核心板和一块NRF52832的最小系统板。由于zephyr支持很多种开发板,因此一行代码都不用修改就直接可以在这两块板子上跑起来。zepyhr是一个年轻的嵌入式实时系统,目前发展的很快,从源码里可以看到主要代码贡献者来自Wi...转载 2020-03-11 20:10:37 · 2155 阅读 · 0 评论