LAOXU
发表于 2024-3-24 12:10:43
tzz1983 发表于 2024-3-24 10:04
关于库函数个人的一些感想:
经常在书本上看到表达这样一个意思:合理的利用库函数,不但可以提高效率 ...
我自已用, 怎么方便随意使, 都没问题, 推荐给大家的, 除了提供外挂标准库, 还提供源代码, 用以直接替代标准库函数,
你想用就在项目中加入外挂标准库或源代码, 自动替代原标准库.
不想用就直接删除 外挂标准库或源代码, keil 找不到 外挂标准库或源代码, 就会自动搜寻内部 标准库使用.
用户选择用与不用, 在于用户 是否 在项目中 外挂标准库或源代码, 很简单的。
杨为民
发表于 2024-3-24 12:17:32
tzz1983 发表于 2024-3-24 08:34
问:关了中断EA, OS就不能工作了.
答:目前本坛三个常见的RTOS"FreeRTOS, uCOS, CosyOS" 都依赖中断切换 ...
你好,我新开了一个贴来回答这个问题,你这楼的意见我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的3楼了。请前往观看,谢谢
杨为民
发表于 2024-3-24 12:18:34
fanxsp 发表于 2024-3-24 09:14
确实如此,我个人理解,不用太纠结于是否关中断这样的问题,该关还得关。其实是否关中断不是本质,问题的 ...
你好,我新开了一个贴来回答这个问题,你这楼的意见我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的4楼了。请前往观看,谢谢
杨为民
发表于 2024-3-24 12:21:09
LAOXU 发表于 2024-3-24 03:35
本水贴, 没一点技术含量, 讨论了 N天, 得出一个傻子都会的结论, 使用万金油 关中断.
我是没本事给 X老师 ...
你好,我新开了一个贴来回答你的这个问题,你在这楼出的题目我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的1楼了。请前往观看,谢谢
杨为民
发表于 2024-3-24 12:21:39
LAOXU 发表于 2024-3-24 09:34
你把我的意思理解错啦~~~
要让你们 OS大虾出马, 当然要有点难度的.
你好,我新开了一个贴来回答你的这个问题,你在这楼出的题目我已复制到
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的1楼了。请前往观看,谢谢
杨为民
发表于 2024-3-24 12:40:57
LAOXU 发表于 2024-3-24 03:35
本水贴, 没一点技术含量, 讨论了 N天, 得出一个傻子都会的结论, 使用万金油 关中断.
我是没本事给 X老师 ...
LAOXU,你好,你在这楼出的题目我已经解决了,我的答案已经放在
《许出题我来答:写(或移植)个 OS系统, 无论何时何地关中断, 都不能影响 OS系统的运行》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7416&page=1&extra=#pid67261)
帖子的2楼了。请你前往进行评判,看我的答案是否及格?谢谢。
=================================================
LAOXU出的“有些难度的题”其实是我早就解决的问题,结果见我2023年10月4日的帖子:
《挑战者x51(3):不使用任何中断的uC/OS-II移植版》(https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4506)
帖子的简介如下:
一、梦想照亮现实(1)有个人说:“我有一个梦”,然后那个梦就实现了。有个网友有个理想:
对于单片机应用中断是最重要的实时响应技术手段。我理解他理想的RTOS系统是:如果一个硬件中断的条件成立,就应该让该中断立刻发生,实现实时响应。具体地说,对于STC32G单片机,理想的RTOS系统在任何时候都不应该关闭总中断(EA=0),哪怕关闭的极短的时间也不行,因为这个极短的关闭总中断的时间就成了限制RTOS系统的实时响应时间的上限。(2)根据前文介绍的中断外任务切换方法,笔者认为V1.20版本的“挑战者x51 uC/OS-II移植版”已经实现了这个理想。二、不使用任何中断的uC/OS-II移植版(3)在前文范例的基础上,笔者删去了挑战者x51 V1.10版本中的与中断有关的程序,形成了V1.20版本,形成了本文的范例。
CosyOS
发表于 2024-3-24 12:54:30
本帖最后由 CosyOS 于 2024-3-24 13:41 编辑
其实,善用标准库函数,在一定程度上是可以取得良好的效果的。
针对本次的题目,我给出的方法可以称之为“库函数替换法”,把一些不可重入的库函数替换为其它可重入的库函数,实现相同的功能。
不仅是strncpy,还有一些其它的不可重入库函数都可采用该方法。
示例:
strncpy( s1, s2, n ) <==> memcpy( s1, s2, n )
strncat ( s1, s2, n ) <==> memcpy( s1 + strlen(s1), s2, n )
strcat ( s1, s2 ) <==> strcpy ( s1 + strlen(s1), s2 )
然而,“替换法”不是万能的,只是在恰当的时候可以应用。
另外,strncpy、strncat,在应用时都需考虑是否要追加字符串尾'\0',因为不同厂家或版本的库函数不一定会不会自动加'\0'。
杨为民
发表于 2024-3-24 13:17:39
CosyOS 发表于 2024-3-24 12:54
其实,善用标准库函数,在一定程度上是可以取得良好的效果的。
针对本次的题目,我给出的方法可以称之为“ ...
赞同。
对于实际程序员,编的程序不是用来说服和教育别人的,捡自己掌握的方法和程序用,解决自己实际的问题的方法就是最好的方法
fjstcmcu
发表于 2024-3-24 15:07:28
话说 keil 怎么定义一个可重入函数?
fjstcmcu
发表于 2024-3-24 15:54:39
fjstcmcu 发表于 2024-3-24 15:07
话说 keil 怎么定义一个可重入函数?
是的,我是想我自己定义的函数希望成为可重入函数
页:
1
2
3
4
5
6
7
8
[9]
10