zephyr
记录基于nRF52840的zephyr2.2.99学习过程。
霍宏鹏
霍宏鹏,主要从事物联网开发,嵌入式系统设计。
展开
-
第20篇 zephyr 时钟之Timers
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要timer是一个内核对象,它使用内核的系统时钟(基于tick)测量时间。当计时器达到指定的时间限制时,它可以执行应用程序定义的操作(回调函数),或者它可以简单地记录过期时间并等待应用程序读取其状态(不执行回调函数)。原创 2020-04-22 22:16:13 · 1634 阅读 · 0 评论 -
第19篇 zephyr 时钟之Kernel Clocks
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要内核的时钟是所有基于时间的服务的基础。原创 2020-04-22 22:13:39 · 853 阅读 · 0 评论 -
第18篇 zephyr 内存管理之Heap Memory Pool
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要堆内存池是一个预定义的内存池对象,它允许线程以类似malloc()的方式从公共内存区域动态分配内存。类似于上一篇memory pool的一个特例。整个内核中只维护一个Heap Memory Pool。而使用方法与mallcoc和free基本一样。原创 2020-04-22 22:11:56 · 762 阅读 · 0 评论 -
第17篇 zephyr 内存管理之Memory Pools
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要memory pool是一个内核对象,允许内存块可以动态的从指定的内存区域分配。内存块在指定的内存中是可变的大小。因此,当应用程序需要为不同大小的数据结构分配存储时,可以减少浪费的内存数量。内存池使用“伙伴内存分配”算法来有效地将较大的块划分为较小的块,从而允许有效地分配和释放不同大小的块,并且限制内存碎片问题。原创 2020-04-22 22:09:51 · 1079 阅读 · 0 评论 -
第16篇 zephyr 内存管理之Memory Slabs
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840概要memory slab是一个内核对象,它允许从指定的区域分配一个内存块。所有在内存中的内存块大小都是固定的,允许这些内存块被高效的分配和释放,并且避免了产生内存碎片。简单的来说就是,有一大块内存,分成N个大小固定的小块,这些块由memory slab去管理。应用程序中使用都已一个或多个小块为单位。原创 2020-04-22 22:08:22 · 998 阅读 · 0 评论 -
第15篇 zephyr 数据传递之Pipes
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要PIPE(管道)是一个内核对象,可以用于发送数据流到另一个线程。管道用于同步或者异步传输一整块数据,或者一部分数据。原创 2020-04-22 22:06:51 · 489 阅读 · 0 评论 -
第14篇 zephyr 数据传递之Mailboxes
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840内容比较多,也不常用,后面有时间不上,先占位。。。原创 2020-04-22 22:05:30 · 498 阅读 · 0 评论 -
第13篇 zephyr 数据传递之Message Queues
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要消息队列是一个内核对象,简单的实现了消息队列的功能。允许线程和ISR异步的发送和接收固定大小的数据项。原创 2020-04-22 22:02:54 · 927 阅读 · 0 评论 -
第12篇 zephyr 数据传递之STACK
目录摘要1 概念2 实现2.1 定义一个stack2.2 入栈2.3 出栈3 参考链接本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要stack是一个内核对象,它实现了后进先出队列( last in, first out),允许线程和ISR添加或移除有限个整数值。1 ...原创 2020-04-22 21:59:46 · 467 阅读 · 0 评论 -
第11篇 zephyr 数据传递之LIFO
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要LIFO是一个内核对象,实现了传统的后进先出(last in, first out)队列,允许线程和ISR添加或者移除任意大小的数据项。原创 2020-04-21 22:42:15 · 451 阅读 · 0 评论 -
第10篇 zephyr 数据传递之FIFO
FIFO是一个内核对象,实现了传统的先进先出(first in, first out)队列,允许线程和ISR添加或者移除任意大小的数据项。原创 2020-04-21 22:39:31 · 1046 阅读 · 0 评论 -
第9篇 zephyr kernel之互斥锁Mutexes
互斥锁(mutexes)一般用于资源访问的互斥,简单的互斥通过信号量去做也可以,但是在基于优先级调度的实时系统使用信号量做资源保护,容易引发优先级翻转的的问题,而互斥锁会动态的调整调用线程的优先级,从而避免了优先级翻转的问题。原创 2020-04-21 22:37:43 · 1067 阅读 · 0 评论 -
第8篇 zephyr kernel之信号量Semaphores
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要信号量是一个多任务系统的标配,基本上任何多任务kernel都会有信号量接口。信号多用于同步,比如ISR和线程之间的同步,由ISR释放信号量,由线程等待信号量,这样ISR和线程就能同步执行。原创 2020-04-21 22:35:37 · 1092 阅读 · 0 评论 -
第7篇 zephyr kernel之工作队列Workqueue
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要 熟悉Linux的童鞋可能对工作队列比较熟悉,zephyr中的工作队列与Linux的工作队列功能类似,用于实现中断的底半部。也就是说中断ISR中比较耗时的操作,放到工作队列中去执行。zephyr中工作队列是基于线程的,简单来说,就是有一个线程一直在等...原创 2020-04-21 22:32:24 · 1345 阅读 · 0 评论 -
第6篇 zephyr kernel之多线程
目录摘要1 zephyr线程的分类1.1 协作线程1.2 抢占线程2 线程的状态3 自动创建的线程3.1Main thread3.2Idle thread3.3 其他自动创建的线程4 线程创建5 线程挂起与恢复6 延时函数6.1s32_tk_msleep(s32_tms)6.2k_usleep(s32_tus)6.3k_b...原创 2020-04-21 22:20:16 · 1907 阅读 · 0 评论 -
第5篇 zephyr 日志系统logging
目录摘要1 使能logging2 头文件3 定义模块名称3.1 定义时指定输出等级3.2 使用默认等级输出4 输出LOG4.1LOG_DBG4.2 LOG_INFO4.3LOG_WRN4.4LOG_ERR5 printk6 参考链接本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf528...原创 2020-04-20 18:10:27 · 2752 阅读 · 0 评论 -
第4篇 zephyr 设备树(devicetree)
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04,开发平台 nrf52840dk_nrf52840摘要 zephyr类似于Linux通过设备树来管理硬件,但是与Linux不同,zephyr不是直接使用DTB(设备树编译后的二进制文件),因为运行zephyr的硬件大部分是资源受限的嵌入式系统,很多MCU的资源都不够支撑运行一个DTB框架,所以ze...原创 2020-04-20 12:06:09 · 5672 阅读 · 2 评论 -
第3篇 zephyr 工程配置(Kconfig)
目录摘要1 图形化配置界面1.1 menuconfig启动1.2 guiconfig启动2 工程相关的Kconfig文件2.1 .config文件2.2prj.conf文件2.3Kconfig.defconfig文件2.4nrf52840dk_nrf52840_defconfig文件本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubunt...原创 2020-04-16 22:22:29 · 2474 阅读 · 0 评论 -
第2篇 zephyr 添加用户的应用程序
本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04摘要如何添加用户应用程序? 如何添加用户板级资源?1 添加用户应用程序我的工程路径如下:zephyr工程树: ~/zephyrproject/zephyrzephyr工作空间: ~/zephyrproject/1.1 zephyr工程树(Zephyr repository a...原创 2020-04-15 22:29:58 · 1282 阅读 · 2 评论 -
第1篇 zephyr基于ubuntu环境搭建
说明:本学笔记基于zephyr 工程版本 2.2.99,主机环境为ubuntu18.04详细内容参考:https://docs.zephyrproject.org/latest/getting_started/index.html主要记录学习中遇到的问题1 ubuntu配置1.1 ubuntu需求ubuntu需要使用18.04及以上版本,当时用其他低版本时会出现各种各样的问题。主...原创 2020-04-13 22:46:38 · 2100 阅读 · 0 评论