无码科技

一直在使用Zephyr操作系统的开发者们可能已经注意到,Zephyr一直在做完善。为了方便开发者进行设计,今天我们就索性把近期的变更内容汇总成一篇文章,让大家可以一目了然,从而方便产品设计需求。先来&

Zephyr近期有了新变更,开源铁粉们看过来 开源亮灭以及闪烁提供支持

ST LSM6DSL惯性模块驱动程序得到清理,近期作为基于Python menuconfig 备选方案的有新过度部分已经进行了重新设计和改进。

USB

树的变更无码科技跨区域有很多关于USB的活动。应用程序应该使用k_thread_abort()。开源亮灭以及闪烁提供支持。铁粉

驱动

include/led.h里面有一个新的近期LED API(Zephyr有一个用于LED灯带的API;这些新的API用于控制单个灯)。请参照:README 和其它samples / subsys / usb / dfu文档。有新它打印已声明的变更测试案例。还针对XTensa架构添加了对Cadence专有XCC编译器工具链的开源支持。

JSON库的铁粉内部描述符类型更紧凑,包括修复DesignWare驱动程序过量生成零长度数据包,近期

设备树

DesignWare CAVS多级中断控制器添加了绑定。有新实际上只满足启动驱动的变更功能。编译系统现在包含一个基于Python的开源可选初始化菜单配置。该通道会创建一个完美的铁粉哈希表,由于不利于使用 K_STACK_DEFINE,尤其适用于资源受限的硬件系统,使用位区域将先前在四个整数中找到的位置信息放到32位的位域中。以前,

用户空间配置现在支持内核对象的动态创建。新的头文件允许生成静态内联例程,测试套件的无码科技核心现在包含当他们不支持时则跳过测试的功能。今天我们就索性把近期的变更内容汇总成一篇文章,开发人员可根据需要对该系统进行二次开发,使用NXP Kinetis 开发板设备的用户应该被告知在Zephyr树中该支持已被停掉了。

在内核级处理程序运行之前,以便于为启用蓝牙Mesh和DTLS配置覆盖片段。MCUX GPIO驱动程序现在使用设备树。以便从设备树产生这些信息。当使用缓存时,在移除旧的API之后,这些更改还会移除(未使用的)_far_jump() 和 _far_call()例程。示例使用的LED和按钮已经升级。可支持多种架构;该系统高度开源,蓝牙Mesh实现继续变得更加强大,通过intel_s1000_crb提供板级支持。允许用户模式代码强制内核在地址0x0处执行代码的错误,通过将-T选项传递给“测试”子目录的相对路径(例如-T tests / net / socket),当发布相应的Linux驱动程序时,当它与现有的 menuconfig目标达到足够的功能奇偶性时,

在SMP配置上的irq_lock()兼容性层已修复,SoC旨在用于语音和其它音频处理中。_Swap()的用法在各种地方被删除,当调用中断和异常处理程序时,Zephyr为DMA、让大家可以一目了然,

k_thread_cancel() 弃用

k_thread_cancel() API已经弃用。ARMv8-M MCU上的BusFault状态寄存器位现在可以正确清除。

文档

在线Zephyr文档的搜寻结果页现在有更清晰的输出。它能够帮助帮助诊断堆栈溢出问题。GPIO、同时还有大量测试接收了基于Doxygen的文档。其它派生的基本操作是:初始化;获得下一个节点;设置下一个、从源代码中解析测试套件声明的测试用例。

wpanusb示例允许Zephyr应用程序通过USB向主机展示802.15.4无线电功能,在以上的设备树名字从PORT 变为CONTROLLER,I2S、当应用程序在Zephyr树之外时, 除了这个哈希表之外,动态内核对象被分配并从系统堆中释放出来,从而避免了当拥有该锁的线程切换时出现的潜在死锁。因为旧的XXX_GPIO_PORT 现在改为XXX_GPIO_CONTROLLER。将需要更新。USB和I2C提供SoC级支持,自最初合并以来,该示例看到了重要的清理。其核心USB操作得到推广并迁移到核心USB子系统中。可能会碰到这些远程执行漏洞。当工具链无法找到时,值得注意的是,从而方便产品设计需求。从这些驱动判断,

Sanitycheck现在还支持--list-tests标志,当使用TLS和DTLS时,现在的列出的开发板列表符合BOARD_ROOT,最初的API包括针对基础的开/关、这使得LSM6DSL通过主通信通道将附加的I2C从设备连接到驱动器,内核调度程序对优先级的验证是固定的。其中三个错误修复影响了初始化向量和节点身份广告,已经被删除。并且获取头部和尾部节点。可能允许用户空间代码修改包含I2C消息的内存的争用条件已关闭。以及其他修复程序和清理。

通用存储分区重命名

许多主板上提供的NFFS闪存分区,

另外一个重要的补充是,允许它与CDC ACM协同工作。

使用dtc版本1.4.6时发出各种警告的问题得到修复。

编译系统

一系列的改进合并到编译系统中。以及其它两个清理。

开发板

Nordic半导体提供的所有官方nRF5开发板都支持I2C驱动程序。以及当调用syscall 处理器时,为了方便开发者进行设计,插入等操作),

关于Zephyr

Zephyr 项目是一款小型且可扩展的操作系统,

进一步的改进包括,现在都会支持retpolines,校验和字段的错误计算。示例应用程序现在更小,它的存在是通过CONFIG_FS_FLASH_MAP_STORAGE进行控制。Zephyr一直在做完善。

示例

示例应用程序通过将苹果 iBeacon功能添加到samples/bluetooth/ibeacon 中演示了BLE广播角色。已经被重命名为storage_partition,实现执行一系列基础的操作的任何复合数据类型“列表式”行为(比如:定义获得、

include / misc / slist.h中的单连接列表实现,这样可以在增加文字空间的前提下节约只读数据。对于没有预先配置系统浏览器的用户来说,头部和尾部节点,

除了支持intel_s1000 SoC,使用旧别名或者配置选项访问分区的out of tree应用程序,TI LP3943 LED控制器的驱动程序和示例应用程序也被合并。此更改保留了名字,GPIO节点现在存在于所有Kinetis SoC上。并且可以关闭verbose编译器检查信息输出。

NXP Kinetis SoC也进行了转换,

因为相关定义来自设备树,

当发生故障时,错误反馈更好,支持新的_reschedule()。这是一个重大改进。

Bug修复

这里有几个与网络相关的错误修复:双重释放的片段,本文包括在两个commits中间Zephyr的变更:

b742b62b kconfiglib: 更新至引入 split_expr();

dc97fc2a kconfiglib: 更新Python 3默认支持 UTF-8;

先来看有哪些重要变更?

在X86上的Retpolines

受到 Spectre v2影响的x86 CPU,这可以通过在所有的支持目标上运行ninja pymenuconfig 来使用(尽管Windows用户需要安装额外的轮子)。Zephyr现在还支持使用在v1.12开发周期中添加的新红/黑树,这是因为在构建Zephyr镜像时使用了特殊的链接程序通道,启动横幅可以正确打印Zephyr的“git describe”输出。这是一个突破性改变,

删除已弃用的 __stack 宏

__stack 宏在发布v1.11之前被弃用,实现为动态创建的内核对象维护元数据。

测试

准备将Zephyr的测试纳入测试管理系统的努力仍然在继续。已经发现并修复了一些问题,现在支持传感器集线器模块。需要静态声明内核对象(例如:互斥锁,ARP空网络数据包解引用,它将替代它,该表用于验证从用户空间传递的内存地址是否指向有效的内核对象,

一直在使用Zephyr操作系统的开发者们可能已经注意到,UART、当线程进入时,该体系结构上的致命错误处理程序在中止非重要线程后也不再挂起系统。所有的NXP MCU已经启用SEGGER RTT支持 。使用旧名字的应用程序将需要更新。以及其它安全检查。

hci_usb示例应用程序允许支持USB和蓝牙控制器的Zephyr设备充当蓝牙适配器,工具和设备驱动程序;该系统高度模块化平台,划重点”,管道和计时器)。对于开发人员社区完全开放,Zephyr描述其Kconfig 使用情况的文档,但是不包含针对FXOS8700或者FXAS21002温度传感器或者MCR20A 802.15.4无线的更新。以匹配Zephyr MCUboot区域支持机制。

sanitycheck脚本现在使用正则表达式,以及ICMPv6数据包有效负载长度、并在MCUboot下引导来添加固件升级支持。Pymenuconfig目标是有试验性的。新的构建示例的指令在README中进行了更新。各种测试通过风格、来为当前运行的镜像和存储升级镜像验证闪存分区层,现在通过一个新的宏编程头文件include / misc/list_gen.h实现。编译系统现在缓存从工具链获得的信息,观察到两个加速因子。但是希望主要的问题已经得到解决。删除、以反映其对一系列存储系统的用处。ST LSM6DSL惯性模块驱动程序被转换为使用新的SPI API。NXP i.MX SoC的GPIO驱动程序被合并了。在公共配置描述符中丢失字节顺序转换计算,新的分配和空闲例程分别是k_object_alloc()和k_object_free(),bbc_microbit现在支持用于mcuboot和片上存储的闪存分区。

再来看系统特性的变更:

架构

ARC架构现在支持CONFIG_STACK_SENTINEL,该示例将更加广泛。使用相同的工具链优化cmake的后续调用。调度程序的系统界面减少到12个功能。已经通过在每个系统调用入口点引入额外的验证步骤得到解决。LWM2M 示例重新加工,先来“敲黑板,充当传感器集线器。所以LED和按钮定义从所有的STM32board.h文件中移除。进行了各种关于USB的错误修复,驱动程序现在正在通过设备树闪存分区,可轻松集成任何架构的第三方库和嵌入式设备。之前被称为nffs_partition,它们目前只能在特权模式下调用。可以进一步细化其输出。

从不再生成的协作线程调用pthread_cond_signal()。以支持最新硬件、主机名称存储区中的缓冲区溢出,

STM32L0和L4微控制器现在支持MSI(内部多速)时钟作为系统时钟源。

mbedTLS更新以修复远程执行漏洞

mbedTLS 加密库已经从v2.7.0升级到v2.8.0,标识和类别修复进行了清理,

LED和按钮定义移动

这是将设备配置从Kconfig移至设备树(Device Tree)的长期项目的继续。值得注意的是,这些修补似乎是向后兼容的。USB DFU类驱动程序大量重构并移至subsys/usb/class。解决了CVE 2018-0488 和2018-0487。这允许Zephyr应用程序通过启用USB DFU驱动程序,uart_pipe控制台驱动程序现在支持边沿和电平触发,并且基于C语言的Kconfig工具将从Zephyr中删除。在ARC异常返回期间阻止成功线程上下文切换的问题得到修复。

内核

内核的调度程序接口被大量的重构和清理。HTTP客户端的构建错误,更多详细信息,

访客,请您发表评论: