![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SylixOS
文章平均质量分 53
stone8761
这个作者很懒,什么都没留下…
展开
-
基于 ACOEGC_T3(PF) 搭建 JLink 调试环境
3、在 JLink 安装目录下创建目录:JLink_V645a\Devices\ALLWIN\T3,在目录中放入脚本文件 Core0.JLinkScript、Core1.JLinkScript、Core2.JLinkScript、Core3.JLinkScript(见附件);5、使用同样的方式启动 core2 和 core3,4 个核都启动后可以通过 Debug 窗口切换调试对象,从而实现 4 核同时调试。1、这里仅介绍 4 核同时调试的情况,实际使用中可根据需要调试指定核即可;...原创 2022-08-30 18:25:16 · 1080 阅读 · 1 评论 -
VMware 中搭建 SylixOS 环境
重启即可,注意这里创建了两个虚拟硬盘,一个作为启动盘,一个作为文件系统盘。这样做是因为如果将一个虚拟硬盘分为两个区,则系统无法被正常引导,原因暂时还未知。插入U盘启动盘,点击“编辑虚拟机设置”,先改内存为1G。再次使用”打开电源时进入固件“的方式启动虚拟机,将100M分区作为第一启动项。制作成功后插入U盘。点击确定创建虚拟机,使用”打开电源时进入固件“的方式启动虚拟机。修改启动项到U盘启动,启动后进入U盘中的SylixOS。关闭虚拟机,删除虚拟机的U盘分区。...原创 2022-07-22 10:28:33 · 614 阅读 · 0 评论 -
SylixOS TCP 数据段发送流程简述
tcp_output_segment()--->ip_output_if()--->ip4_output_if()--->ip4_output_if_opt_src()(大部分IP层协议内容在这里完成)--->ethernet_output()--->netdev_netif_linkoutput()--->NETDEV_TRANSMIT()3)调用tcp_output()用于发送TCP段。1)调用write发送TCP数据。...原创 2022-07-18 17:16:24 · 580 阅读 · 0 评论 -
SylixOS 进程资源回收机制
SylixOS 中使用 t_reclaim 线程回收进程资源。t_reclaim 线程在系统启动时创建,优先级较低,为 253。线程执行流程非常简单,即接收消息队列值并执行 vprocReclaim() 进行回收,消息队列数据位待回收的线程控制块指针。如下图所示。 vprocReclaim() 执行流程如下:1)等待所有线程被彻底删除;2)回收线程全部资源(打开的文件、信号量、时间、定时器等);3)释放模块资源;4)回收进程控制块资源 通过调用 __resReclaimReq()原创 2022-07-13 16:42:54 · 200 阅读 · 0 评论 -
SylixOS TCP 数据段接收流程简述
1、数据包最初由网卡驱动中断接收,通过调用 tcpip_input() 送入 LwIP 协议栈;2、在 tcpip_inpkt() 中将 ip_input() 通过 mbox (本质为消息队列) 投递至线程 “t_netproto”,并在线程中执行 ip_input();3、在 ip_input() 中针对 IPv4 报文调用 ip4_input() 进行处理。针对 TCP 报文,tcp_input() 处理了基本的协议规则;4、针对有效数据包,通过调用 TCP_EVENT_RECV(即调用 tcp_rec原创 2022-06-17 15:19:38 · 334 阅读 · 0 评论 -
SylixOS ECS 启动过程
在 SylixOS ECS 中可以通过 SHELL 命令 “ecs“ 和 ”srtp“ 创建一个新的容器环境,其中 ”ecs“ 命令本质就是使用 ”srtp"。1、新容器环境的创建是在 SHELL 命令背景线程中创建的,注册命令 "srtp" 时会加上创建新容器标志 LW_OPTION_KEYWORD_NEW_CONTAINER,如下图所示:2、SylixOS 处理 shell 命令的调用链:API_TShellExec() ---> __tshellExec() ---> __tshellBgCreate原创 2022-06-01 11:47:20 · 242 阅读 · 0 评论 -
SylixOS 线程、进程退出流程
SylixOS 中进程、线程可能由于 ”自然退出“、”接收 SIGKILL 信号(9 号)“、”接收 SIGCNCL 信号(16 号)“、”接收 SIGTERM 信号(15 号)“、“执行 exit()”、“执行 pthread_exit()” 等原因退出。下面以此简单描述一下各种情况下的退出流程:1、自然退出自然退出意思是指进程 main 函数执行到结束(或执行到 return)导致的进程退出。当进程 ”自然退出“,即在 API_ModuleRunEx() 中从...原创 2022-05-07 17:54:05 · 644 阅读 · 0 评论 -
SylixOS 信号发送、接收机制
SylixOS 可以通过 kill() 或 sigqueue() 向线程发送信号(向进程发送信号相当于发送给进程的主线程)。kill() 与 sigqueue() 的区别主要在发送信号的类型不一样,kill() 发送非排队信号,sigqueue() 发送排队信号。kill() 中首先会调用 _doKill() 接口,在 _doKill() 中构建信号信息结构 struct siginfo 和 LW_CLASS_SIGPEND 结构,这里主要是保存信号值、信号产生源、发送信...原创 2022-05-05 20:04:04 · 272 阅读 · 0 评论 -
SylixOS x86 HPET 定时器驱动
HPET(High Precision Event Timer) 俗称高精度定时器,最低时钟频率为10MHZ,而且定义了比较严格的精确度(间隔 >= 1 毫秒的允许 +-0.05% 的误差,间隔 <=100 微妙的允许 +-0.2% 的误差)。x86 架构中一般支持 HPET 定时器。在 HPET 体系结构中规定 32 个定时器组成一个定时器块,最多可支持 8 个块,也就是 256 个定时器。实际设备中可使用的定时器数量可以从相关寄存器中查询。每个定时器均可以单独配置成一个中断。...原创 2022-01-14 17:57:18 · 359 阅读 · 0 评论 -
SylixOS 绑核操作
指定线程在某些 CPU 运行,SylixOS 中只能指定一个 CPULW_API int pthread_setaffinity_np(pthread_t thread, size_t setsize, const cpu_set_t *set); /* * 设置线程CPU亲和性 */ cpu_set_t cpuset; CPU_ZERO(&cpuset); CPU_SET(1, &cpuset); iRet = pthre原创 2022-01-14 17:02:15 · 422 阅读 · 0 评论 -
SylixOS CPU 利用率统计机制
SylixOS CPU 利用率统计基于 TCB 中的两个变量,TCB_ulCPUUsageTicks 和 TCB_ulCPUUsageKernelTicks。用于记录规定时间内的 CPU 使用 TICK 计数与 Kernel 使用计数。 top 命令首先清空所有的 TCB 的计数统计,然后开启统计数据更新,等待规定时间后(默认 1s)关闭统计数据更新。此时 TCB_ulCPUUsageTicks 与 TCB_ulCPUUsageKernelTicks 变量中就存放了这段时间内...原创 2022-01-14 17:00:18 · 266 阅读 · 0 评论 -
SylixOS SMP 中断实时性调优总结
设备使用全志 T3,搭载 SylixOS SMP。在使用过程中存在中断响应不及时问题。具体表现为周期 833us 的外部中断偶发性出现周期超过 900us,即中断响应不及时。中断响应不及时可能存在如下原因:1)中断碰撞,在触发核上存在其他中断正在执行,且占用时长较长;2)关中断时间过长,在内核调度过程中存在大量关中断自旋锁操作,如果多个锁碰撞就可能导致关中断时间过长;下面将针对如上原因罗列常用解决方案:1)提高中断优先级,开启中断抢占;2)中断绑核,且独占一个核资...原创 2022-01-14 16:57:49 · 435 阅读 · 0 评论 -
SylixOS x86 HPET 定时器驱动
HPET(High Precision Event Timer) 俗称高精度定时器,最低时钟频率为10MHZ,而且定义了比较严格的精确度(间隔 >= 1 毫秒的允许 +-0.05% 的误差,间隔 <=100 微妙的允许 +-0.2% 的误差)。x86 架构中一般支持 HPET 定时器。在 HPET 体系结构中规定 32 个定时器组成一个定时器块,最多可支持 8 个块,也就是 256 个定时器。实际设备中可使用的定时器数量可以从相关寄存器中查询。每个定时器均可以单独配置成一个中断。在 x86原创 2022-01-06 17:37:25 · 652 阅读 · 0 评论 -
SylixOS 不同容器(ECS)间使用信号量同步方案
1、概述 在 SylixOS 容器版本中由于容器间存在命名空间隔离的问题因此无法直接使用信号量进行同步操作,这在某些场合下可能无法完成实际需求,如共享内存通信时。本文介绍一种在容器间实现信号量同步功能的解决方案。2、解决方案 此解决方案思路是在 SylixOS 标准信号量的基础上封装一层字符设备,在内核层创建信号量并提供相关接口使容器内的 APP 可以通过字符设备接口获取内核信号量句柄,再通过标准信号量 API 进行操作。实现不同容器间的 APP 同步操作。基本框架如下图...原创 2021-07-24 15:24:05 · 354 阅读 · 1 评论 -
SylixOS 下 openssh 使用
1、编译编译工程 openssh,部署生成的相关文件(依赖 openssl);2、修改 passwd修改 /etc/passwd,在文件末尾添加如下内容:sshd:x:74:74:Privilege-separate::/var/empty/sshd:/sbin/nologin3、生成秘钥文件# cd /apps/openssh79P/# ./ssh-keygen -A执行结束后生成如下文件注意生成的文件的权限,这里需要使用 TpsFs 文件系统,若使用 FatF原创 2021-07-12 20:53:08 · 394 阅读 · 5 评论 -
SylixOS 防火墙相关命令使用
1、添加防火墙规则格式:npfruleadd [netifname] [rule] [input | output] [allow | deny] [args...]eg: npfruleadd en1 mac input deny 11:22:33:44:55:66 npfruleadd en1 ip input allow 192.168.0.5 192.168.0.10 npfruleadd lo0 udp input deny 0.0.0.0 255.255.255....原创 2021-07-10 10:57:56 · 319 阅读 · 0 评论 -
SylixOS 挂载 RAM 文件系统
mount -t ramfs 【空间大小(字节)】 【挂载位置】# mount -t ramfs 10000000 /mnt/ram注意:此空间从内核堆中分配,若需要较大的空间需要适当扩大内核堆空间。原创 2021-07-10 10:49:14 · 231 阅读 · 0 评论 -
SylixOS Module 中使用硬件浮点方式
1、在 BSP 中更改启动参数,打开内核FPU2、修改内核配置3、修改内核模块配置由于内核模块默认不能配置硬件浮点,因此首先需要将内核模块工程改为专家模式在mk文件的编译选项栏加入硬件浮点配置项,以T3为例(T3的FPU为VFPv4)...原创 2021-07-10 10:39:39 · 160 阅读 · 3 评论 -
SylixOS 中 free 命令含义
SylixOS 下 free 命令执行效果如下:heap show >> 部分显示 kernel 堆和 system 堆信息,一般二者合二为一显示为 “kersys"TOTAL 表示大小,即在调用 API_KernelStart() 接口时传入的 __heap_end 与 __heap_start 的差值(实际因为对齐会有一点偏差),如下图所示。USED 表示当前已使用的大小,MAX USED 表示曾经使用过的最大大小,SEGMENT 表示当前堆中的碎片块数,USED 表示当前已使用原创 2021-07-01 21:58:33 · 493 阅读 · 1 评论 -
SylixOS:T3 打包量产 IMG 文件手册
适用范围本文档主要介绍全志 T3 平台量产 SylixOS 系统的方法。区别于《AllWinnerT3量产使用手册.docx》,本文主要介绍如何生成可通过 Phoenixsuit 或 PhoenixCard 软件直接烧录的 img 文件。准备工作T3 平台设备,已在 EMMC 上固化 SylixOS、APP、运行环境,等待打包 USB 转串口设备一个 Ubuntu 虚拟机 T3 设备 lichee 开发环境概述整体打包流程大致由4步组成,如图 3.1所示。图 3.1 整体打包流程.原创 2021-06-01 13:51:02 · 926 阅读 · 0 评论 -
SylixOS ROMFS 使用手册
适用范围本文档主要介绍基于 SylixOS 的 RomFs 的使用方法。准备工作SylixOS 硬件设备 BSP 源码 USB 转串口设备一个操作步骤在 BSP 中添加编译项 romfs.S;拷贝文件 romfs.S 到 BSP 源码 SylixOS\bsp 目录下,在 Makefile 中增加编译项,如图 3.1所示。图 3.1在 BSP 中修改文件系统挂载点,如图 3.2所示。图 3.2这里将 /bin/、/apps/、/lib/、/usr/ 挂载到只读文件系统中原创 2021-06-01 13:38:37 · 463 阅读 · 0 评论 -
libamp_virnetdrv 虚拟网卡在 T3 AMP 上的移植案例
libamp_virnetdrv 可以方便的移植到各种平台,为 AMP 架构提供简单、高效的核间通信机制。下面以 T3 AMP(SylixOS + SylixOS)为例介绍具体的移植过程。1、驱动支持虚拟网卡包含 libamp_virnetdrv与 libamp_virnetdrv_config 两个部分。T3 是 ARM 平台,因此首先拷贝 libamp_virnetdrv\src\demo\arm_aarch64 下的四个文件到 T3 每个系统的 BSP 目录 bspallwinnert3\Sy原创 2021-05-15 19:23:47 · 285 阅读 · 0 评论 -
【SylixOS RMS 调度】
RMS(Rate Monotonic Secheduling)是一种可以提供固定任务周期的调度系统。与普通的随机式的、不可预测的调度系统不同,RMS可以提供固定的、可设置的调度周期,且精度可达到纳秒级。多个RMS调度之间优先级按照周期越小优先级越高的原则。函数原型: sched_rms_init()为线程 thread 创建一个rms调度器,sched_rms_d...原创 2019-10-16 11:38:00 · 481 阅读 · 2 评论 -
SylixOS 网络协议栈lwip介绍3-----udp数据接收
数据包接收包括两个部分。首先网卡获取一个数据包并使用中断通知系统,系统解析这个数据包放入缓冲队列中。再由应用层调用接口recv()或recvfrom()获取这个数据包。1、中断接收(1) 系统在初始化时会注册网卡中断,处理函数为dm9000IntIsr()。当接收到一个数据包时会执行中断处理,中断处理内容很简短,仅添加一个接收处理函数dm9000_receive()到任务队列中,数据包主要在...原创 2018-06-28 11:45:54 · 742 阅读 · 0 评论 -
SylixOS 网络协议栈lwip介绍2-----UDP数据发送流程
UDP数据包的发送是通过sendto()发起的(其他接口类似),整体实现流程如下:(1) 通过文件描述符fd获取文件结构,并提取lwipfd。再通过lwipfd从socket表中获取socket结构。Socket结构中包含了此udp链接中的connect信息;(2) 使用netbuf_alloc(),创建netbuf结构,这其中包含了pbuf结构。向这个结构导入需要发送的数据;(3) ...原创 2018-06-28 11:43:11 · 780 阅读 · 0 评论 -
SylixOS 网络协议栈lwip介绍1-----pbuf结构
SylixOS网络协议栈使用目前非常流行的嵌入式TCP/IP协议栈lwip。lwip是瑞典计算机科学院(SICS)的AdamDunkels 开发的一个小型开源的TCP/IP协议栈。lwip特点是对RAM与ROM的占用非常少,只需十几KB的RAM和40K左右的ROM就可以运行,非常适合嵌入式系统使用。pbuf结构pbuf是lwip中用来表示数据包的结构体,数据包在协议栈各层的流动也是通过pb...原创 2018-06-28 11:41:38 · 667 阅读 · 0 评论 -
DSP C6678调试SylixOS程序
使用RealEvo-IDE编译SylixOS DPS工程生成可执行文件,由CCS5.5进行烧录1、打开CCS 5.5,新建CCS工程2、新建目标配置文件选择对应目标并保存3、设置6678开发板拨码开关到如下位置,上电,接USB线,确认驱动正确安装4、测试5、只是用cpu0,关闭其他7个cpu,并给cpu0添加gel引导文件(在CCS安装目录下D:\ti\ccsv5\ccs_base\emulati...原创 2018-06-27 13:44:28 · 1533 阅读 · 0 评论 -
SylixOS error:No more processes or operation would block
error:No more processes or operation would block出现上述错误主要是因为应用程序中使用了太多了event。SylixOS中所有的锁包括互斥锁、信号灯都是event。可在/proc/kernel/objects中查看:从上图可以看出event已经达到了最大值3000,因此报错。在SylixOS中默认最大值是可以在源码中修改的,修改位置SylixOS/li...原创 2018-05-23 15:54:08 · 1475 阅读 · 0 评论 -
SylixOS下打开内核调试信息
打开文件sylixos-base/libsylixos/SylixOS/config/net/net_cfg.h将宏LW_CFG_LWIP_DEBUG置1原创 2018-06-04 10:53:55 · 218 阅读 · 0 评论 -
SylixOS下永久修改IP、掩码、网关、DNS
SylixOS下可通过修改 /etc/ifparam.ini来永久修改IP地址、掩码、网关、DNS等参数,具体格式如下:修改后重启即可原创 2018-05-04 09:24:26 · 656 阅读 · 0 评论 -
Linux下编译SylixOS
开发环境:Ubuntu 14.04 SylixOS源码版本:1.6.7一、搭建环境$ sudo apt-get udpate$ sudo apt-get install build-essential$ sudo apt-get install vim$ sudo apt-get install git 二、下载源码本实验以mini2440为例,源码包括以下内...原创 2018-09-10 17:21:33 · 1300 阅读 · 0 评论 -
SylixOS使用RAM文件系统大幅度提高系统性能
在某些特定使用场景中可使用RAM文件系统提高系统性能,解决业务问题。一下已MPC8313作为测试平台,测试使用RAM和yaffs2文件系统时,FTP文件传输速率与应用程序加载时间的性能变化。硬件平台:MPC8313base版本:V1.8.0FTP文件传输样本:bspmpc8313.elf 3.51MB应用程序加载样本:hellofile 104.37KB 应用加载时间测试样本...原创 2018-09-10 17:25:05 · 329 阅读 · 0 评论 -
ICE线程池数量配置
线程池配置属性必须在initialize()操作之前被创建。这里可以设置的值有两个默认线程数(Size)和最大线程数(SizeMax)。其中Size表示启动后默认创建的线程数量,ICE在通讯过程中会根据实际情况动态调整线程数量以达到最优性能,而SizeMax则限制了所能创建的最大线程数量。若SizeMax值小于Size则自动调整为与Size一致。 以下是具体的服务端和客户...原创 2018-12-26 16:36:18 · 1864 阅读 · 0 评论 -
【SylixOS之crashtrap命令使用方式】
1. 适用范围 本文档面向SylixOS应用程序开发工程师和相关测试人员,协助工作人员调试应用开发或中间件移植中出现的应用程序崩溃问题。2. 原理概述 SylixOS从base v1.9.9开始支持命令crashtrap,命令本质是在进程崩溃时将进程切换为STOP模式,此时可以通过ATTACH进行调试。3. 测试流程3.1 环境准备 这里使用x...原创 2019-03-05 15:45:20 · 372 阅读 · 0 评论 -
【SylixOS lite版——基于STM32F767计算资源使用情况】
基本概念:代码段(text):顾名思义是代码存放位置,在STM32中代码段一般存放于内置FLASH中;已初始化数据段(data):已初始化数据段会分别体现在FlASH中和RAM中。因为是全局变量,运行过程中需要进行读写操作,因此占用一段RAM空间。又因为有初始值,其初始值需要占用FlASH空间。未初始化的数据段(bss):bss与data相同的地方时它也是全局变量,运行过程中需要进行读...原创 2019-02-26 15:05:04 · 769 阅读 · 0 评论 -
【SylixOS之new_1型字符设备驱动设计】
本文介绍new_1型字符设备驱动基本软件框架,以imx6q的pwm驱动为例1、构建设备控制器结构 定义pwm控制器类型,其中需要注意的是第一个成员必须是LW_DEV_HDR类型,表示设备头。第二个程序为LW_LIST_LINE_HEADER类型,用于管理fdnode链表。后面可以添加任意与驱动程序有关的私有变量,如寄存器基址等。如程序清单1.1所示。...原创 2019-03-07 20:12:51 · 828 阅读 · 0 评论 -
【SylixOS之更新LITE版Base方式】
1.适用范围 本文档面向SylixOS Lite版程序开发工程师和相关测试人员,协助解决开发或测试过程中需要更换Lite版Base版本问题。2.原理概述 最新的SylixOS源码库可从git://sylixos.com/libsylixos.git处获取,但获取的代码默认为标准版Base,而非Lite版。Lite版Base与标准版Base代码完全一致,区别在于Lit...原创 2019-03-12 16:06:56 · 514 阅读 · 0 评论 -
【SylixOS之ipv6收发测试代码】
1、设备ipv6地址通过ifconfig查看2、SylixOS自带ping6命令测试ipv6网络通断状态注意:需要使用-I选项指定收发端口3、ipv6的tcp收发测试代码注意:client端需要使用SO_BINDTODEVICE指定数据收发端口server:#include <sylixOS.h>#include <stdio.h>#i...原创 2019-05-14 10:22:59 · 436 阅读 · 0 评论 -
【SylixOS之进程资源回收机制】
SylixOS在正常消亡时会回收与此进程所占用的相关资源,包括打开的文件fd、事件、事件组、posix命名信号量、定时器、RMS等。相关代码见libsylixos/SylixOS/kernel/resource/resourceLib.c:__resPidReclaim()。 此函数通过遍历对应的资源缓冲数组,搜索是否存在此进程PID占用的资源,如果存在则回收此资源。比如...原创 2019-09-18 17:45:54 · 230 阅读 · 0 评论 -
SylixOS 内核调试
1、printk()是最常用的,可以在内核态中打印响应调试信息;2、部分内核代码中无法使用printk()打印信息时就需要用到_DebugFormat(),申明如下:_DebugFormat(level, fmt, ...)level可选值如下:#define __LOGMESSAGE_LEVEL 0x1 ...原创 2018-05-03 09:57:37 · 416 阅读 · 0 评论