硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4845|回复: 12
收起左侧

[ThreadX全家桶] ThreadX的Win32移植版本优化

[复制链接]

42

主题

328

回帖

454

积分

高级会员

积分
454
发表于 2021-6-14 18:24:20 | 显示全部楼层 |阅读模式
ThreadXWin32移植版本优化

由于近期项目需要,对Win32版本的ThreadX进行研究,发现官方提供的范例和移植存在如下三个方面问题

A.周期调度线程的时间间隔精度差
1.png

B.Demo线程1涉及到线程阻塞,如果线程0优先级低于线程1,系统卡死
2.png

C.线程调试缺少名称
3.png

对此进行了处理,分享一下处理过程,抛砖引玉

===========================================================

1. 测试工具
使用Win32的API获得高精度时间戳
QueryPerformanceFrequency
QueryPerformanceCounter

范例:
获取高精度系统时间戳(单位:毫秒)
LONGLONG hrt_get_ms(void)
{
LARGE_INTEGER freq;
QueryPerformanceFrequency(&freq);
  LARGE_INTEGER temp;
  QueryPerformanceCounter(&temp);
  return 1000 * temp.QuadPart / freq.QuadPart;
}

2. 使用多媒体定时器(修改文件tx_initialize_low_level.c
该部分内容主要参考ucOS-IIIWin32移植版本,代码详见os_cpu_c.c

改动为两处(详细代码见附件)
A.新增多媒体定时器初始化函数(init_multimedia_timer
B.调整系统时钟周期调度函数(_tx_win32_timer_interrupt

测试效果如下:
4.png

3. 新增线程名称功能
_tx_thread_stack_build函数增加如下代码
5.png

优化后线程界面:
6.png

4. Demo例程防止线程“饿死”
7.png
如上图,增加休眠函数

关键的两个文件代码详见附件

tx_thread_stack_build.c (7.8 KB, 下载次数: 13)


tx_initialize_low_level.c (15.47 KB, 下载次数: 13)


排版有点乱,见谅。


回复

使用道具 举报

42

主题

328

回帖

454

积分

高级会员

积分
454
 楼主| 发表于 2021-6-15 08:23:39 | 显示全部楼层
插图都没有了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2021-6-15 08:43:57 | 显示全部楼层

你的是直接拖动上传的,图片实际上都在的,这种方式,别人打开非常慢,最好使用论坛带图片功能上传

QQ截图20210615084242.png

回复

使用道具 举报

42

主题

328

回帖

454

积分

高级会员

积分
454
 楼主| 发表于 2021-6-15 10:45:57 | 显示全部楼层
eric2013 发表于 2021-6-15 08:43
你的是直接拖动上传的,图片实际上都在的,这种方式,别人打开非常慢,最好使用论坛带图片功能上传

这个帖子删了吧,我待会儿再重新整理发帖
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2021-6-15 10:48:46 | 显示全部楼层
wanglehui_12 发表于 2021-6-15 10:45
这个帖子删了吧,我待会儿再重新整理发帖

晚上有时间,我帮你整理下吧,不用重新发帖了。
你的图片太多了,还得专门腾个时间弄
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2021-6-15 10:54:10 | 显示全部楼层
wanglehui_12 发表于 2021-6-15 10:45
这个帖子删了吧,我待会儿再重新整理发帖

已经帮你修改好了。
回复

使用道具 举报

42

主题

328

回帖

454

积分

高级会员

积分
454
 楼主| 发表于 2021-6-15 10:55:08 | 显示全部楼层
eric2013 发表于 2021-6-15 10:48
晚上有时间,我帮你整理下吧,不用重新发帖了。
你的图片太多了,还得专门腾个时间弄

回复

使用道具 举报

4

主题

1403

回帖

1415

积分

至尊会员

积分
1415
发表于 2022-8-4 20:51:40 | 显示全部楼层
这个帖子要点赞,标记一下
回复

使用道具 举报

1

主题

20

回帖

23

积分

新手上路

积分
23
发表于 2022-8-19 08:46:16 | 显示全部楼层
楼主能否把更改的sample_threadx.c发上来?参考一下跟踪时间。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2022-8-19 10:46:35 | 显示全部楼层
see-flying 发表于 2022-8-19 08:46
楼主能否把更改的sample_threadx.c发上来?参考一下跟踪时间。

https://github.com/azure-rtos/th ... ports/win32/vs_2019
回复

使用道具 举报

1

主题

20

回帖

23

积分

新手上路

积分
23
发表于 2022-8-19 11:06:50 | 显示全部楼层
eric2013 发表于 2022-8-19 10:46
https://github.com/azure-rtos/threadx/tree/master/ports/win32/vs_2019

谢谢硬汉,这个工程我知道,我是想要楼主改的带观察线程执行时间的程序,官网提供的没有这个功能。
回复

使用道具 举报

42

主题

328

回帖

454

积分

高级会员

积分
454
 楼主| 发表于 2023-3-10 13:00:51 | 显示全部楼层
ThreadX 新版本 v6.2.1 增加了win32移植版本中使用高精度定时器功能

有兴趣的同学可以测测
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2023-3-10 13:19:25 | 显示全部楼层
wanglehui_12 发表于 2023-3-10 13:00
ThreadX 新版本 v6.2.1 增加了win32移植版本中使用高精度定时器功能

有兴趣的同学可以测测

好消息。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:00 , Processed in 0.269431 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表