Ecos操作系統查看进程信息

2023-05-16

由于最近公司用到了ecos操作系统,所以简单的了解了一下这个RTOS,其相关的社区资源较少,国内基本不用,这里结合手册整理了一部分的内容。本文章主要两部分,一是建立基本的测试进程,而是枚举所有进程并查看相关信息。

如下代码是在原来的基础上增加的进程信息获取,其中堆栈使用的查看需要在ecos系统配置时启用测量堆栈使用,实际上就是启用一个宏定义。图形化配置如下,也可以直接配置宏(不推荐)。

启用堆栈测量1:启用堆栈测量

启用堆栈测量2:

#ifdef CYGFUN_KERNEL_THREADS_STACK_MEASUREMENT
        info->stack_used = thread->measure_stack_usage();
#else
#include <cyg/kernel/kapi.h>
#include <cyg/cpuload/cpuload.h>

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

/* now declare (and allocate space for) some kernel objects,
   like the two threads we will use */
cyg_thread thread_s[3];		/* space for two thread objects */

char stack[3][4096];		/* space for two 4K stacks */

/* now the handles for the threads */
cyg_handle_t simple_threadA, simple_threadB, calcpuHandle, cpuloadHandle, 
	     thread_handle;

/* and now variables for the procedure which is the thread */
cyg_thread_entry_t simple_program, calcpu, getTaskInfo;


/* and now a mutex to protect calls to the C library */
cyg_mutex_t cliblock;

cyg_uint32 calibrate;

cyg_cpuload_t cpuload;

cyg_uint32 time_100,time_1000, time_10000;

/* we install our own startup routine which sets up threads */
void cyg_user_start(void)
{
	printf("Entering twothreads' cyg_user_start() function,version is 0x01\n");

	cyg_mutex_init(&cliblock);

	//cyg_thread_create(1,calcpu, 0,"Thread1",stack[2],4096,&calcpuHandle,&thread_s[2]);

	cyg_thread_create(4, simple_program, (cyg_addrword_t) 0,
			"Thread A", (void *) stack[0], 4096,
			&simple_threadA, &thread_s[0]);
	cyg_thread_create(4, simple_program, (cyg_addrword_t) 1,
			"Thread B", (void *) stack[1], 4096,
			&simple_threadB, &thread_s[1]);
	cyg_thread_create(3, getTaskInfo, 0,"getTaskInfo", stack[2], 4096,
			&thread_handle, &thread_s[2]);


	cyg_thread_resume(simple_threadA);
	cyg_thread_resume(simple_threadB);
	cyg_thread_resume(thread_handle);


	cyg_thread_delay(10);


	cyg_scheduler_start();

}
void getTaskInfo(cyg_addrword_t data)
{
	cyg_thread_info info;
	cyg_handle_t info_handler;
	cyg_uint16 id = 0;

	while(1)
	{
		while(cyg_thread_get_next(&info_handler, &id))
		{
			cyg_thread_get_info(info_handler,id,&info);
			printf("id:%d\n name:%s\n state:%d\n set_pri:%d\n cur_pri:%d\n stack_used:%d\n",info.id,info.name,info.state,info.set_pri, info.cur_pri,info.stack_used);

		}
		cyg_thread_delay(2000);
	}


}
/* this is a simple program which runs in a thread */
void simple_program(cyg_addrword_t data)
{
	int message = (int) data;
	int delay;

	printf("Beginning execution; thread data is %d\n", message);


	cyg_thread_delay(200);

	for (;;) {
		delay = 200 + (rand() % 50);

		/* note: printf() must be protected by a
		   call to cyg_mutex_lock() */
		cyg_mutex_lock(&cliblock); 

		printf("Thread %d: and now a delay of %d clock ticks\n",
				message, delay);

		cyg_mutex_unlock(&cliblock);

		cyg_thread_delay(delay);
	}
}

使用如上的工程,重新编译后,将生成的文件扔给redboot加载即可。本人暂时没有arm芯片,使用vmware虚拟机运行ecos,可以看到打印的线程名称,当前状态,设定的优先级和线程当前的优先级以及堆栈的使用情况,当然我这里没有全部显示,所有的线程信息都在cyg_thread_info结构体中,代码和运行结果如图所示:

typedef struct
{
    cyg_handle_t        handle;
    cyg_uint16          id;
    cyg_uint32          state;
    char                *name;
    cyg_priority_t      set_pri;
    cyg_priority_t      cur_pri;
    cyg_addrword_t      stack_base;
    cyg_uint32          stack_size;
    cyg_uint32          stack_used;
} cyg_thread_info;

虚拟机运行结果
另外我会写两篇文章介绍Ecos系统的结构,主要和freertos很不相同,以及在Vmware中运行ecos操作系统,权当普及一下。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ecos操作系統查看进程信息 的相关文章

  • ContentResolver.query详解

    1 查询手机的联系人 public void getContacts ContentResolver contentResolver 61 this getContentResolver Cursor cursor 61 contentRe
  • [ROS] 安装Gazebo 使用Gazebo 实现摄像头仿真 雷达仿真 Kinect仿真

    目录 安装Gazebo 1 添加源 2 安装gazebo 使用Gazepo 实现摄像头仿真 1 工作空间与功能包的创建 2 xff09 Gazebo配置文件 3 车体urdf建模与控制程序 4 launch文件 5 执行launch文件运行
  • jni开发-GetMethodID与CallObjectMethod的坑

    在java层中声明一个方法用于创建一个audiotrack xff0c 在C层中调用这个方法并获取audiotrack对象 先看下面的代码 xff1a SuPlayer java public AudioTrack createAudioT
  • 基于电信行业的AIOps应用与实践

    欢迎关注 程序杂货铺 公众号 xff0c 里面有精彩内容 xff0c 欢迎大家收看 1 摘要 xff1a 在大型互联网架构中 xff0c 为提升平台的计算能力及资源利用率 xff0c 普遍采用分布式技术 然而使用分布式技术也会带来一些潜在问
  • 关于解耦的理解

    在程序设计过程中 xff0c 最头痛的不是逻辑的编写过程 xff0c 更不是算法的设计 xff0c 最头痛的是如何设计出一个容易维护 xff0c 扩展性好的东西 而耦合问题是最令人烦躁的 xff0c 它的存在很多人发现不了 xff0c 所以
  • OFFICER: A general optimization framework for OpenFlow rule allocation and endpoint policy enforceme

    OFFICER gt 转发规则放置问题 gt 什么是规则放置问题 xff1f 一组规则如何放置到容量有限的交换机上 xff0c 以满足上层应用的策略 xff08 ACL 流转发 xff09 规则用来匹配流 xff0c 其action是策略的
  • 不带头节点的单链表如何头插(多图易懂)

    文章目录 缘起带头节点的头插不带头节点的头插错误的代码为什么错误如何修改返回新的头指针二级指针 缘起 本文想说的是单向非循环链表的头插 单向非循环链表 xff0c 可以是带头节点的 xff0c 也可以是不带头节点的 对于前者 xff0c 代
  • C语言中的匿名结构体

    在 C 的 C11 标准中 xff0c 添加了匿名结构和匿名联合 匿名联合 结构也称为未命名联合 结构 xff0c 由于没有名称 xff0c 因此不会创建它们的直接对象 xff08 或变量 xff09 xff0c 通常我们在嵌套结构或联合中
  • FreeRTOS 的命名规则

    文章目录 变量函数宏定义结语 如果是刚接触 FreeRTOS xff0c 看到它的命名 xff0c 简直是匪夷所思 xff0c 犹如天书 所以 xff0c 还是有必要了解它的命名规则 变量 uint32 t 定义的变量都加上前缀 ul u
  • sizeof 的结果取决于什么

    本文讨论的是 C 语言中的一个运算符 xff1a sizeof 注意 xff0c 是运算符 xff0c 不是函数 sizeof 的结果是在编译时就可以确定的 xff0c 于是有人认为 xff0c sizeof 的结果取决于编译器 这样说也对
  • Typora 页内跳转的语法

    页内跳转一般有 2 种情况 xff1a 跳转到某个标题处跳转到正文的某个地方 跳转到标题 跳转到标题的语法比较简单 xff0c 举个例子 我是一个标题 跳转到指定标题 我是一个标题 效果 xff1a 按住ctrl xff0c 鼠标点击第 6
  • Linux 0.11 实验环境搭建

    如果想学习Linux 0 11 xff0c 实验环境是必不可少的 最好是能编译 xff0c 能运行 xff0c 能调试 如今大家都是用64位的Linux操作系统 xff0c 而且是高版本的GCC xff08 4 0以上 xff09 xff0
  • ORA-7445(kgskhighthreshold)错误

    10 2 0 4 RAC 环境的ASM 实例出现这个ORA 7445 错误 64 more 64 错误信息为 xff1a Fri Dec 3 19 49 49 2010 Errors in file opt app oracle admin
  • 详解8259A

    详解8259A 可编程中断控制器 可编程中断控制器 xff08 PIC Programmable Interrupt Controller 是微机系统中管理设备中断请求的管理者 当PIC向处理器的INT引脚发出一个中断信号时 xff0c 处
  • 故障解决:error while loading shared libraries: libncurses.so.5

    故障解决 xff1a error while loading shared libraries libncurses so 5 问题的提出 在我准备调试 Linux 0 11 内核的时候 xff0c 出现了如下故障 xff08 真奇怪 xf
  • 故障解决:端口已被占用 1080

    更新记录 版本时间修订内容1 02018 3 28增加了方案二1 12019 8 9增加了方案三 问题的提出 实验环境 xff1a Win7 64bit 也许你会碰到以下错误 xff1a 本文给出2种解决方案 方案一 既然说端口已被占用 x

随机推荐

  • git cherry-pick 详解 —— Git 学习笔记 18

    git cherry pick 详解 初识 git cherry pick xff08 拣选 xff09 拣选会提取某次提交的补丁 xff0c 之后尝试将其重新应用到当前分支上 这种方式在你只想引入特性分支中的某个提交时很有用 假设你的项目
  • 问题解决: SSR 的 1080 端口被占用

    问题解决 xff1a SSR 的 1080 端口被占用 在我的博客 故障解决 xff1a 端口已被占用 1080 中已经讨论了一些方法 xff0c 但也不是每次都能成功 对于 SSR xff0c 我们完全可以换一种思路 xff1a 既然 1
  • USB开发简述

    由于工作需要 xff0c 接触了USB xff0c 经过这两三周的学习 xff0c 我只想说一句 xff0c 我们USB说简单也简单 xff0c 说复杂也有那么多知识 xff01 这怎么说呢 xff1f 简单 xff1a 无非就那几个结构体
  • 基于PX4六旋翼无人机百米悬停定点降落

  • 手把手教你实现ROS Melodic+Realsense D435i

    硬件配置 xff1a HP ProDesk 480 G6 MT 系统内存 xff1a 8G 处理器 xff1a Intel i7 8700 CPU 操作系统 xff1a Ubuntu 18 04 相机配置 xff1a Intel Reals
  • pixhawk调试过程中QGC报错显示问题及解决方案汇总

    1 室内环境下解锁无人机 xff0c 报错 xff1a Not arming geofence RTL requiers valid home 解决 xff1a 去掉安全设置里面的地理围栏 xff0c 否则只能在有GPS的环境下解锁
  • pixhawk4连接PX4 Flow光流传感器调试过程记录

    主控型号 Pixhawk4 光流型号 PX4 FLow V1 3 地面站 QGroundControl 1 拔掉PX4 Flow连接Pixhawk4的连接线 用USB连接PX4 Flow 打开QGC地面站 烧写固件 烧写完成后就可以在QGC
  • 使用Xshell连接Ubuntu主机失败

    1 问题 在将一台Ubuntu系统的电脑作为服务器 xff0c 使用Xshell连接时 xff0c 发生如下错误 此时使用ping工具检查是否能够ping通 说明能够连接上 xff0c 但是不能使用Xshell进行远程操作 2 解决方法 首
  • P900数传参数配置

    端口定义 xff1a xff08 从左往右 xff09 GND RX TX 5V 调试软件 xff1a X CTU 启动调试 xff1a 按住数传板上SW2 xff0c 同时按住SW1 xff0c 然后松开SW2 xff0c 再松开SW1
  • 利用ROS实现PX4 offboard板外控制

    基于ROS Melodic xff0c 以px4开发者手册实例程序为例 xff0c 实现gazebo下无人机起飞两米悬停 xff0c 具体操作分为三步 xff1a 1 创建工作空间 xff0c 建立offboard包 2 构建mavros
  • Jetson TX2开发板配置Intel T265环境的必要解决方式

    在Jetson TX2配置T265相关依赖时会发生错误 xff0c 因此需要提前对相关参数进行设置 xff0c 主要要将网络设置里面的相关参数改成下图的配置 xff1a
  • pixhawk日志ulg格式转matlab数据csv格式

    1 windows下打开Anconda Prompt xff0c 执行pip install pyulog安装pyulog包 2 在日志文件所在文件夹下执行ulog2csv 文件名 ulg即可生成相关的csv文件
  • 悲催的秋招之路

    个人情况 双非工科硕 民办本 专科起点 基础不行 专业知识不扎实 无技术无论文无项目 投递记录 企业名称 投递时间 岗位1 岗位2 岗位3 岗位4 国电南自 2021 5 19 嵌入式软件研发工程师 民生银行 2021 5 26 金融科技方
  • Matlab读取EXCEL文本中的数据并绘制二维三维曲线图脚本

    Matlab读取EXCEL文本中的数据并绘制二维三维曲线图需要将EXCEL保存为CSV格式 xff0c 然后取数据成矩阵进行处理 转CSV的方式 xff1a pixhawk日志ulg格式转matlab数据csv格式 1 导入文件 span
  • 零基础教会你用github创建个人博客网站

    1 创建账号 进入github网站 xff0c 在网站首页右上角进行用户注册 2 填写相关信息 按照提示填写相关信息完成用户注册 3 搭建个人博客库 进入个人主页 xff0c 在右上角选择 43 好 xff0c 进入 new reposit
  • SV2-4G移动终端使用配置与使用

    一 硬件连接 1接位置天线 xff0c 2接方向天线 xff0c 3接4G天线 xff0c 4接GPS配置专用线 xff0c 5接4G配置专用线 二 运行状态识别 1处为指示灯 xff08 运行 SIM卡 网络 电源 xff09 xff0c
  • yapi插件开发及安装的一些备注

    yapi官方文档有些缺失 xff0c 这里做一下补充 xff0c 官方文档地址 xff1a https hellosean1025 github io yapi documents redev html 插件开发需要调试 xff0c 这个需
  • VSCode修改编辑器(代码窗口)背景色

    VSCode 的背景色是放在主题里面定义的 xff0c 所以在vscode的设置中无法修改到编辑器也就是代码窗口的背景色 xff0c 对应想要自定义编辑器背景的同志们来说 xff0c 可以通过修改主题文件来实现 xff0c 操作起来也并不复
  • ros下tcp通信的过程

    ros框架下的tcp通信的过程 博主在编写一个需要通过wifi传输两个整数和一个状态的问题中 xff0c 通过构建ros xff08 Ubuntu16 04 框架下的tcp c 43 43 通信过程解决了问题 一 ros串口通信的实现 首先
  • Ecos操作系統查看进程信息

    由于最近公司用到了ecos操作系统 xff0c 所以简单的了解了一下这个RTOS xff0c 其相关的社区资源较少 xff0c 国内基本不用 xff0c 这里结合手册整理了一部分的内容 本文章主要两部分 xff0c 一是建立基本的测试进程