加载中
Zephyr 框架结构简介

本文图片均来自Zephyr官方文档,参考中提供链接。 生态系统 Zephyr的生态系统为Zephyr的丰富功能提供了强大的支持。下图展示了整个Zephyr生态系统结构 其中Zephyr OS为Zephyr提供的核心代码包...

Windows下Gitbook安装

使用WSL后一些工作环境都切回到Windows进行,Linux下面需要用的东西基本都可以在WSL下面解决,不过今天在WSL下安装Gitbook遇到一些问题,最后还是只能在Windows下直接安装Gitbook。 WSL下安装...

11/08 20:36
45
Zephyr下SOC驱动修改方法

对于SOC驱动,Zephyr是将各个SOC Vender提供的HAL SDK以module的形式导入,然后在driver下按照Zephyr提供的驱动接口调用HAL API进行封装实现。这样就可以达到无论对于哪种SOC来说应用程序的驱...

pwm
11/01 23:52
32
使用gdbgui调试Zephyr

gdbgui gdbgui是一款用Python编写的gdb前端,能在浏览器中进行可视化调试。因此该工具是可以跨平台使用的。 安装方法 python3 -m pip install –user pipx python3 -m userpath append ~/.l...

gdb
10/17 11:48
21
Zephyr下MPU问题分析

最近Zephyr上rt系列的芯片板子默认开启了CONFIG_HW_STACK_PROTECTION,该功能是利用MPU在堆栈顶部加入写保护,防止线程堆栈溢出,基本原理可以参考中硬件保护小节。在开启该功能后,mm_swif...

Zephyr的Coredump机制

作为一个多线程的操作系统Zephyr在Crash的时候你会看到Zephyr会提示如下的一些fault信息 从上面的信息你可以知道出问题的thread是shell_uart,出问题的地址是0x600093a4, 通过反编译可以找到...

Zephyr内存管理之Pool

sys_pool为Zephyr中Pool的内存分配管理算法,支持创建用户和内核两种模式的Pool,在Zephyr内存管理之Heap一文中已提到过在早期的Zephyr中内核使用Pool进行动态内存管理,k_malloc/k_free等函...

09/26 23:19
29
Zephyr应用链接第三方库

在实际的开发过程中可能出现使用有license的代码感染自己的代码, 购买的第三方库,有专门团队维护的功能库等情况。基于这些原因可能无法在Zephyr中直接使用source code,而需要直接链接使用第...

Zephyr内存管理之Heap

Heap分配器是一个Zephyr内核对象,Heap管理的是一片固定大小的连续内存区域,用户可以在Heap管理的内存区域中动态分配任意长度的内存。在Zephyr中lib/os/heap.c提供了底层的Heap内存管理算法...

09/07 07:43
75
Zephyr内存管理之slab

Zephyr内存管理 Zephyr内核提供了slab和heap两种动态内存分配方式,同时Zephyr也可以通过配置使用newlib中的malloc/free进行动态内存分配。对于实时操作系统来说,希望动态分配内存的执行时间...

Zephyr多版本共存

Zephyr迭代速度非常快,大约每3个月一个release周期,同时zephyr目前又处于比较激进的变化阶段,随时都在引进比较新的特性,这导致每过一段时间去更新代码后就会发现写的应用程序可能会编译不...

08/26 00:29
54
Zephyr内核调度之调度方式与时机

调度方式 Zephyr中存在协作式和抢占式两种线程类型,不同类型的线程面对相同的触发条件有不同的反应. 抢占式线程 当抢占式线程占用CPU时,其它高优先级线程就绪后可以立即抢占CPU: 上图的(...

08/23 21:33
119
Zephyr内核调度之列队管理算法

Zephyr维护了1个就绪列队和多个内核对象等待列队。所有就绪线程被放入就绪列队等待调度器来选择线程进入调度,等待信号量,互斥量等其它内核对象的线程,会分别放到对应内核对象的等待列队中...

08/09 20:33
114
RGB屏参配置方法

Zephyr上添加RGB接口屏和调试方法一文中已经详细介绍过RGB接口的驱动信号,要正确的将一片RGB屏驱动起来,主要就是对VSYNC,HSYNC,DCLK进行正确配置,本文将详细说明如何根据spec,计算这三个...

08/06 23:22
88
Zephyr线程生命周期及状态

Zephyr中线程是使用CPU的最小单位,线程从创建后由zephyr内核进行调度,根据运行和等待资源的状况在几个状态中切换,直到线程终止退出生命周期。 线程状态 线程在其生命周期中有下面6种状态:...

07/31 20:48
54
Zephyr使用的堆栈保护技术

在Zephyr中每个线程的堆栈大小在创建时就已经指定,运行过程中无法再做改变,线程运行的上下文是存放在线程的堆栈中,一旦堆栈被破坏意味着线程的执行上下文被破坏,这将导致线程执行出现不可...

07/28 23:28
63
zephyr编译环境搭建

本文记录了在Ubuntu 16.04 64bit下安装配置zephy编译环境并编译esp32的过程 Zephyr环境安装 下载代码到~/work/project/zephyr/ cd ~/work/project/ git clone https://github.com/zephyrproj...

Zephyr subsystem Shell使用说明

概述 Zephyer shell在终端提供一个交互式的CLI,用于在程序运行时执行特定的命令。 Zephyer shell的特点: shell cmd分level 按照module分类cmd 预制module shell cmd 支持传参-最大10个参数...

2018/03/18 22:34
42
Zephyr Device Tree简介

Zephyr device tree概述 linux下DTS被DTC编译为DTB,DTB被放到Flash内,启动时DTB由bootloader送给kernel使用。但是这套机制太过庞大,不适合Zephyr作为iot终端节点的目标。 Zephyr采用buildin...

2018/03/23 22:24
106
Zephyr创建应用&模拟运行

本文介绍如何创建和编译一个Zephyr应用,并说明如何基于qemu上运行. 原本该模拟运行是在qemucortexm32上进行的但是gdb连接调试有问题,而主要有是用来看C代码,所以最后切成qemux86nommu来测...

2018/03/25 22:39
22

没有更多内容

加载失败,请刷新页面

返回顶部
顶部