找回密码
 立即注册
楼主: 杨***

STC单片机 uC/OS-II核心技术(12):关于临界区保护和函数可重入的测试题

[复制链接]

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10971
 楼主| 发表于 2024-3-23 19:27:45 | 显示全部楼层
本帖最后由 杨为民 于 2024-3-23 19:30 编辑
CosyOS 发表于 2024-3-23 19:06
这个方法不仅实现起来非常容易,运行效率也会很高。
既不用关中断,也不用临界区,更不用重写,也不必压栈 ...

不急,好戏要留到最后,所以最后等我把其他方法介绍完,再介绍你的思路后,你再补充
回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10971
 楼主| 发表于 2024-3-23 20:33:03 | 显示全部楼层
tzz1983 发表于 2024-3-23 13:16
Keil C51自然是优秀的,好用的,采用固定地址传递参数,调用树,覆盖。对于C51来说,这些都是闪闪发光的优 ...

介绍你的“可嵌套的关闭总中断的临界区保护方法”发出来了,我觉得可以用到解决裸机编程问题中去。

这只代表我的看法,先没让你说,谢谢配合,现在你可以自由谈你的看法了
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

122

回帖

679

积分

高级会员

积分
679
发表于 2024-3-23 22:28:18 | 显示全部楼层
tzz1983 发表于 2024-3-23 13:16
Keil C51自然是优秀的,好用的,采用固定地址传递参数,调用树,覆盖。对于C51来说,这些都是闪闪发光的优 ...

LAOXU的强项在汇编和优化上
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

122

回帖

679

积分

高级会员

积分
679
发表于 2024-3-23 22:32:49 | 显示全部楼层
总看杨老师在给别人出测试题,谁能给杨老师也出出测试题?

点评

本水贴, 没一点技术含量, 讨论了 N天, 得出一个傻子都会的结论, 使用万金油 关中断. 我是没本事给 X老师出测试题. 既然大家讨论的这么热烈, 我不出点有些难度的题, 对不起大家了. 这里的大虾都是 OS专家, 我就  详情 回复 发表于 2024-3-24 03:35
说明:这就是LAOXU考我的测试题,我是考生,不是我考大家的测试题,2楼是我的答案。由于这个问题很典型,我希望大家也来参与而已。 为避免误会,我刚在1楼做了说明  详情 回复 发表于 2024-3-23 23:07
回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10971
 楼主| 发表于 2024-3-23 23:01:09 | 显示全部楼层
CosyOS 发表于 2024-3-23 19:06
这个方法不仅实现起来非常容易,运行效率也会很高。
既不用关中断,也不用临界区,更不用重写,也不必压栈 ...

好了,谢谢配合,等了那么久,下面由你来展示了。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

66

主题

714

回帖

1万

积分

荣誉版主

积分
10971
 楼主| 发表于 2024-3-23 23:07:34 | 显示全部楼层
zxcv1973 发表于 2024-3-23 22:32
总看杨老师在给别人出测试题,谁能给杨老师也出出测试题?

说明:这就是LAOXU考我的测试题,我是考生,不是我考大家的测试题,2楼是我的答案。由于这个问题很典型,我希望大家也来参与而已。

为避免误会,我刚在1楼做了说明
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:39
  • 签到天数: 185 天

    [LV.7]常住居民III

    5

    主题

    604

    回帖

    2485

    积分

    荣誉版主

    积分
    2485
    发表于 2024-3-23 23:18:36 | 显示全部楼层
    我已经看了杨老师在2楼的讲解,原来是临界区嵌套保护和分别关闭各个中断。
    果然与我的方法不同。
    下面我公布一下我的方法。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:39
  • 签到天数: 185 天

    [LV.7]常住居民III

    5

    主题

    604

    回帖

    2485

    积分

    荣誉版主

    积分
    2485
    发表于 2024-3-23 23:26:09 | 显示全部楼层
    首先声明:我所说的方法仅适用于本次讨论的题目,如果换一个题目可能根本就不行了,
    具有很强的针对性。

    strncpy (bb, a1, 8);
    替换为:
    memcpy (bb, a1, 8);



    仅此而已!

    点评

    @CosyOS 你这个答案可馋死我了,思考了许久未果。 本以为你会以队列+服务的方式来调用不可重入函数。 但仔细想想也不对呀。如果不用OS,服务必然是一个中断。 但是要使别的中断也能调用这个服务,那服务中断就必须是  详情 回复 发表于 2024-3-24 09:07
    我随手例了一个不可重入函数的例子, 你改换成其他可重入函数. 当然没事了 这跟我将 strncpy 函数, 改写成可重入函数. 其实是一回事, 对吗?  详情 回复 发表于 2024-3-24 01:47
    “memcpy当然是可重入的了”,怎么证明?可否将反汇编的分析分享给大家  详情 回复 发表于 2024-3-23 23:44
    你觉得“memcpy”函数是可重入的或者是不可重入的?  详情 回复 发表于 2024-3-23 23:39
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    66

    主题

    714

    回帖

    1万

    积分

    荣誉版主

    积分
    10971
     楼主| 发表于 2024-3-23 23:39:37 | 显示全部楼层
    本帖最后由 杨为民 于 2024-3-23 23:41 编辑
    CosyOS 发表于 2024-3-23 23:26
    首先声明:我所说的方法仅适用于本次讨论的题目,如果换一个题目可能根本就不行了,
    具有很强的针对性。

    你觉得“memcpy”函数是可重入的或者是不可重入的?

    “memcpy”函数如果是不可重入的,那就没有解决问题

    点评

    [attachimg]39431[/attachimg]  详情 回复 发表于 2024-3-23 23:45
    memcpy当然是可重入的了  发表于 2024-3-23 23:42
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 84 天

    [LV.6]常住居民II

    0

    主题

    222

    回帖

    542

    积分

    高级会员

    积分
    542
    发表于 2024-3-23 23:42:27 | 显示全部楼层
    rtos真的很难学好啊
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-30 08:29 , Processed in 0.067739 second(s), 65 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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