![](https://img-blog.csdnimg.cn/20210118095028931.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SylixOS应用开发手册
文章平均质量分 77
应用手册
cycy小陈
进一步有一步的欢喜。
展开
-
SylixOS---Qt 桌面级应用进程通信
SylixOS通信及机制原创 2022-08-22 14:29:28 · 378 阅读 · 0 评论 -
SylixOS --- 链路层AF_PACKET套接字通信程序
链路层传输途径:server端代码:/************************************************************************************************************* 中国软件开源组织**** 嵌入式实时操作系统****原创 2021-07-01 09:55:10 · 319 阅读 · 0 评论 -
SylixOS --- switch语句中缓存刷新问题
1.适用范围在使用多个输出函数连续进行多次输出时,有可能发现输出错误。因为下一个数据再上一个数据还没输出完毕,还在输出缓冲区中时,下一个printf就把另一个数据加入输出缓冲区,结果冲掉了原来的数据,出现输出错误。 在 print();后加上fflush(stdout); 强制马上输出,避免错误。2.原理概述问题描述:当一个任务往消息队列中发送一帧数据后,在另一个线程中读取数据并进入Switch进行判断,发现第一帧数据没有获取到,只有第二针数据发过来后,第一帧数据才能打印信息。解决描述:经排查发原创 2021-06-17 14:51:28 · 238 阅读 · 0 评论 -
SylixOS --- RMS调度详解
1.RMS调度简介任务按单调速率优先级分配(RMPA)的调度算法,称为单调速率调度(RMS)。RMPA是指任务的优先级按任务周期T来分配。它根据任务的执行周期的长短来决定调度优先级,那些具有小的执行周期的任务具有较高的优先级,周期长的任务优先级低。2.RMS调度实现介绍SylixOS目前关于RMS调度分为创建、删除、调度三个部分组成。创建和删除就不予介绍。重点关注下调度算法的实现。调度有两个去完成,一是计算调度前用掉的时间etime,二是睡眠剩余调度的时间temp,如程序清单 2‑1所示。程序清单2转载 2021-05-27 21:00:36 · 802 阅读 · 0 评论 -
SylixOS---socket属性
SylixOS 主要支持以下socket属性:协议族 Level(级别) optname(选项名) Get Set 说明 标志 数据类型 AF_PACKET SOL_PACKET PACKET_ADD_MEMBERSHIP * 加入多播组 PACKET_DROP_MEMBERSHIP * 离开多播组 PACKET_RECV_OUTPUT *原创 2021-01-19 09:58:15 · 365 阅读 · 0 评论 -
SylixOS---SD协议栈之五:SDM驱动管理
1. SDM的主要功能上一篇说道,SD Core设备主要是封装了底层的细节,为应用层提供唯一的传输接口。SDM,即SD Driver Management,是用来管理SD协议栈里的驱动的,包括硬件控制器驱动和设备类驱动(这与USB协议栈的设计非常类似),以此将两者隔离开来。SDM的功能主要有以下几点: 对上,提供Client层驱动注册的接口,包括SD 基础驱动和 SDIO子设备驱动 对下,提供Host层驱动信息注册的接口,这些信息一部分是应用驱动需要的,比如控制器类型,支持的位宽等等,由转载 2021-01-05 16:26:51 · 454 阅读 · 0 评论 -
SylixOS---SD协议栈之四:SD Core设备
1. SD Core设备的功能在第二篇【SD总体结构】中,介绍了系统的各个层次,其中的Core主要包含了Core Xfer和SDM两个重要组件。Core这个词在软件设计中通常隐含着【封装】和【隔离】两个意思。【封装】指的是将其他外部组件需要的通用操作包装为简单易用的模块(或接口),让其他组件达到“拿来即用”的效果,这些模块通常隐藏了很多繁琐的细节,通常这些细节不应该由使用它的组件关心。由于SD设备可使用SDI传输,但要通过SPI总线完成一次完整的会话(发送命令、获取命令应答、数据传输),将在软件上有比较转载 2021-01-05 16:25:11 · 199 阅读 · 0 评论 -
SylixOS---SD协议栈之三:SD总线适配器
1. 文件结构前面的两篇文章分别介绍了SD协议以及SylixOS SD协议栈的整体设计结构,在接下来将主要分析软件设计上的细节。为了让读者能够更方便的对照源码进行分析,这里首先简要介绍一下SD软件的文件结构。以上文件位于libsylixos/SylixOS/system/device目录下,该目录下为SylixOS所有设备驱动框架的源代码。名为sd目录下的文件为对SD总线传输协议的抽象和封装,即本篇将要介绍的SD总线适配器。在sd的同一目录下,还有一个名为spi的文件夹,它是spi总线适配器,两者处转载 2021-01-05 16:23:20 · 294 阅读 · 0 评论 -
SylixOS---SD协议栈之二:系统框架
1. 历史背景为了让读者在整体上对SylixOS SD 协议栈(以下称作SD Stack)有更深的理解,本篇将会把早期SD Stack与最新的进行对比说明。第一版本始于2010年,该版仅支持SD存储卡(SD Memory),同时支持SPI和SD传输模式。后来由于项目需求,需要支持SDIO WIFI设备,这就带来了多设备类支持的需求。原SD Stack 在这方面并未有相应的功能,并且存在诸多不足或缺陷,因此需要一个更加丰富和完善的SD Stack。2. 原有SD Stack分析2.1 原有SD S转载 2021-01-05 16:21:37 · 164 阅读 · 0 评论 -
SylixOS---SD协议栈之一:SD协议简介
1. 前言本系列博文将详细讲解SylixOS SD 协议栈涉及的诸多细节,以求达到读者能够更轻松地编写SD相关的驱动(应用层驱动和SD控制器驱动)。关于SD协议的解读,在网上已经有很多非常好的文章,但为了保持本博文的完整性,开篇还是从总体上介绍一下SD协议,在后续章节也会围绕SylixOS SD分析SD协议的一些重要细节。2. SD协议简介SD协议由MMC发展而来,可在软件上完全兼容MMC协议。其定义了一套完整的物理层规范和总线通信协议,并且在协议层支持SPI传输模式,其目的是为了在没有SD控制转载 2021-01-05 16:20:22 · 524 阅读 · 1 评论 -
SylixOS---消息队列
消息队列问题:有两个线程(线程 A、线程 B,线程 A 的优先级较线程 B 的高)和一个变量 V,线程 A 需要写变量 V,线程 B 需要读变量 V。我们假设只有在变量 V 的值改变时,线程 B 才需要读变量 V,在变量 V 的值不变时,线程 B 需要阻塞。如果我们继续使用条件变量进行线程间通信,在线程 A 快速频繁地修改变量 V 的值时,可能会造成线程 B 丢失一部分对变量 V 值改变的响应——应该被读出的旧值已经被新值所覆盖。解答:消息队列是一个可以存放多则消息的 FIFO(先入先出)队列。原创 2021-01-05 15:26:47 · 375 阅读 · 0 评论 -
SylixOS---TCP/IP的TCP socket通信
编写SylixOS系统下通过127.0.0.1回环地址进行TCP/IP通信,并测试发包速度。1.流程1.1服务器端流程1.2客户端流程2.代码:2.1服务器端代码/************************************************************************************************************* 中国软件开源组织****原创 2020-12-15 10:34:42 · 308 阅读 · 0 评论 -
SylixOS---互斥信号量与优先级反转问题
信号量是一种约定机制:在共享资源的互斥访问中,它约定当一个线程获得信号量(Wait)后,其他线程不可以再次获得该信号量直到信号量被释(Give);在同步机制中,它约定等待信号量(Take)的线程(或者说等待信号更确切)在收到信号量之前应该处于阻塞状态,直到其他线程发送该信号量(Post)。在介绍二进制信号量时,曾讨论到如果二进制信号量创建时设置参数 bInitValue 为 TRUE,则可以用于互斥访问共享资源。实际上,SylixOS 的二进制信号量实现的互斥性是将一个变量初始化标记为1,等待信号量(W原创 2020-12-31 17:46:10 · 296 阅读 · 0 评论 -
SylixOS---网络通信
TCP/IP协议的4层结构与OSI的7层结构的对应关系。TCP 和 UDP 是两种最为著名的传输层协议,二者都使用 IP 作为网络层协议。虽然 TCP使用不可靠的 IP 服务,但它却提供一种可靠的传输层服务。链路层:有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)相关的物理接口细节;网络层:有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP 协议族中,网络层协议包括 IP 协议(网际原创 2020-12-31 15:36:04 · 246 阅读 · 0 评论 -
SylixOS---电平触发和边沿触发
1、边沿触发边沿触发包括上升沿触发和下降沿触发,边沿触发检测的是电平变化,高电平转低电平或低电平转高电平时,触发一次中断。2、电平触发电平触发分为高电平触发和低电平触发;电平触发需要手动清除中断信号。3. 区别边沿检测外部中断:检测到电平变化会中断,但是如果中断检测口一直保持某一电平,则无法产生下次中断,需要等下次检测到电平变化才会中断。中断得到响应后由硬件自动清除。电平检测外部中断:检测到低/高电平会中断,但是如果中断检测口一直保持低电平,中断处理完成后,会继续产生下次中断,需要检原创 2020-12-01 15:16:26 · 1165 阅读 · 0 评论 -
SylixOS---什么是异步IO
什么是异步IO从API上来说,是一组非阻塞的IO API,不过这是废话。换个角度:程序不因为IO调用而被阻塞,就可以说程序是异步的。要理解这个回答,首先要知道什么是“异步”。编程或者架构模型有4种。1. 阻塞A调用B后,一直等着B返回结果。这是最广泛使用,也是最简单的一种模型。普通的函数调用、传统的阻塞IO都是如此。2. 轮询A调用B后,A不断去B那里查询返回结果。这在耗时任务中经常出现。比如一种资源的创建非常耗时,服务A通知服务B创建,B返回给A一个任务id或者资源转载 2020-11-02 10:24:20 · 250 阅读 · 0 评论