熊仔 发表于 2023-8-25 12:18:22

UCOSIII临界代码保护
为了保护一些代码完成运行,不被打断。这些不能被打断的代码称为临界段代码,也叫临界区。

使用宏 OS_CRITICAL_ENTER()进入临界区代码;使用宏 OS_CRITICAL_EXIT()和
OS_CRITICAL_EXIT_NO_SCHED()退出临界区代码。

在 UCOSIII 中可以通过关闭中断和任务调度器上锁两种方式来保护临界段代码。

OS_CFG_ISR_POST_DEFERRED_EN 为 0,使用关中断的方式进入临界区;
OS_CFG_ISR_POST_DEFERRED_EN 为 1,使用锁定调度器方式进入临界区。

OS_CFG_ISR_POST_DEFERRED_EN 在 os_cfg.h 文件中定义。


UCOSIII 通过上锁方式



UCOSII 没有这个方式


杨为民 发表于 2023-8-25 12:21:55

熊仔 发表于 2023-8-25 11:36
这个问题是能解决,我在19#有说到:需要保存IE入栈,出来的时候判断是否开中断
中断处理和任务切换的时候就 ...

(1)好的,加油!相信你会成功的。

(2)这是一个我写的能通过临界区保护嵌套测试的范例程序,供你观察对比效果。作为老师,肯定是我自己通过了,然后才会出题给学生的:


(3)这是范例运行的视频效果。嵌套效果就是前面我给出的正确的那张图一:


(4)程序压缩包解开后的目录如下:


其中“0000_长缨x51”子目录下是“长缨8_V33.exe”C351编译器,我写的。

“0012_TSx51_RTOS”子目录下是“泰山x51 实时多任务操作系统(TSx51-RTOS) V1.1”,我写的。
(5)在测试程序目录下有以下文件:




其中采用Keil作为IDE。当程序编辑完成并保存后,双击“长缨x51_MakeFile.bat”这个MakeFile批处理文件,就可以对编译出HEX烧录文件了。

熊仔 发表于 2023-8-25 12:30:52

杨为民 发表于 2023-8-25 12:21
(1)好的,加油!相信你会成功的。

(2)这是一个我写的能通过临界区保护嵌套测试的范例程序,供你观察 ...

好的,谢谢,晚上研究下。

杨为民 发表于 2023-8-25 12:31:31

熊仔 发表于 2023-8-25 12:18
UCOSIII临界代码保护
为了保护一些代码完成运行,不被打断。这些不能被打断的代码称为临界段代码,也叫临 ...

(1)开始解决问题的时候,先看看别人和别的事是怎么解决问题的,这是正道!
(2)“UCOSII 没有这个方式”,所以才是一般人和你的天花板呀,所以才需要突破呀
(3)希望你能把你解决问题的过程和想法不断地发布出来,让大家一起分享这个解决问题的过程。这比你闷着头干几天后只拿出一个最终成功的成果来要有意义。就像课堂上回答问题,受益的是全体听课的同学。

神农鼎 发表于 2023-8-25 12:48:41

跟着我们 两位 【荣誉版主:杨老师,熊仔】 一起前进 !

熊仔 发表于 2023-8-25 16:27:48

突然想到一个方法,学习中断嵌套的做法,增加一个变量。
进入临界区++。退出--。到0的时候才开启中断

晚上试试。先忙活

杨为民 发表于 2023-8-25 17:38:03

本帖最后由 杨为民 于 2023-8-25 17:50 编辑

熊仔 发表于 2023-8-25 16:27
突然想到一个方法,学习中断嵌套的做法,增加一个变量。
进入临界区++。退出--。到0的时候才开启中断


(1)终于开窍了,不再坚持原汁原味移植了?

(2)这个方法在“操作系统原理”中是一种普遍的方法,叫做“加锁/解锁”。
(3)所以为什么要设工程硕士研究生,就是要先学这些理论课程,学完后一身武艺,然后下山再行江湖。
(4)虽说加锁解锁的原理都一样,但实现起来各有不同,尤其是针对不同的CPU指令集可以不同。相信你能做成,期待你做出自己的特色

(5)补充一点,uC/OS-II的方法3已经用在RTT中做临界区嵌套保护方法,作为其特色了。而加锁解锁方法是FreeRTOS的标准的临界区嵌套保护方法,只是STC移植版只采用了最简单的不支持临界区保护嵌套的简单的关闭和打开EA的方法1。所以多看才知山外有山,遇事才有解决的方法

熊仔 发表于 2023-8-26 00:17:39


今天比较忙,挺晚才开始弄。终于弄好了临界区保护方法4


data:image/png;base64,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

data:image/png;base64,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

下面是了逻辑分析仪的波形图
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABiAAAANdCAIAAACS+SNiAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nOzde3SV530n+r0lbV3YG3QBIUBcZLDBAV+AOMY2tWM7sR07iZsVO4lzaZNm0pM1PZ3pTGdOp7Oa1bSdZM1MTifruGmnZ2rnYvcky7GdpI2TOnFqx45jk/juCUZcAhEIAbKAYIMIoNv5Qx1VI5AQr9B+ngd/Pn+hrVfv/vLsZ79bfNH+Kb9w4aIcAAAAAGRVVc476+vrO378+NDQ0GQOzufzNTU1hUJhulMBAAAAMBUV5byzybdLuVxuaGjo+PHj05oHAAAAgKkr608wTb5dynY8jCgWi8uXLz/vvPMaGuo3bnzlmWeeCZ2IJC1evHj9+qvq6xtyudz+/fs3bNjQ1dUVOhTpWb58+VvectmsWfVDQ0M2ElO0fv1VF1988aFDr913332hs5Ck66677k1vunD4zwMDgy+++KJvk8hm7do1F1988YwZxc2bN//whz8MHYf0XH755WvWrKms/Oefemlvt5fSVtaCCaZPqVRqbW09evRoZ2dnLpd729vedsstN8+fP79UKt13332+c2KSxmyk97znPTfeeOPu3buLxRkNDQ3FYvGee+4JnZEEjNlIt9323quvvrqzs3PGjBkNDY0NDfV33/3F0BlJQEtLS2NjQ0/P/gMHDgzf0tbW9sEPfnD16tU7d+5UMDFJYzbSDTe8ff369c8999xrr702MDBQW1sbOiBpGLORrrjiit/4jY8sWbJkz549e/fuDZ2OZIzeSLW1tXPmzK6srMzlcitWrFi4cOG9996rYEqagolzxIUXXnjHHXd0dHT85V/+ZS6X6+vre/HFl2bOnNnQ0DDmyKVLl15//fVNTU2Dg4O7du167LHH9u/fHyIyMRq9kZqbm88///xDh37593//d6tWrbr11ltXrVo5cuQll1x89dVXF4ul/v7+bdu2fv/7j5w4cSJgcqIy5orU3f3qo48++uSTP77hhhtuuunGtrbzRo60kZjA9ddfv27d5Y888sg//MPDw7e8+93vuuCCC07+CW8biQmM2UjFYunIkSPf//7329s3Dw0NvfbaayNH3nTTTatWraqqqjp6tPenP33m2WefDZea6IzeSNXV1e9973tXrFjx6KOPPfzww7t37x59pI3EBEZvpBdffHHHjh35fH7p0qXLly9/9dVXf/zjH48caSOlKGjB9PkbDn2gbfQNrz39wJL3HQqUhrTNmTNn9epLq6v/aSr8008//fTTT69atXLhwoVjjrz11nffcMMNGze+0tTUdNlll73++uvf+973yp6XSI3eSMeOHbv33nvz+VxHx84rr7xyYGCwq2vPyJHve9/7165d8+yzz11wwfkXX3zR7t1dL774YrjgxGXMFemhhx5avXr1DTfccNFFq/bv3z/6mycbiQm0tbWtWbPmlVdeGf5w/fr1b33rW3fu3Hn++eePOdJGYgJjNtLMmTNrampuvvnmyy9ft2vXrocffvjw4cO5XO6iiy760Ic+VFtbs2nTpiuvvKKlZd7LL7+sqWTE6I104YUrVqxYPjg4uGjRwne/+91dXV0PPfRQT09PzkbidEZvpMOHDw9ff66//vp58+Y98cQT27fvGD7MRkpU0ILpnid+++mnchde/Of/8pJD3/nqZ36QO7bnaMg8pGnp0qW333778uXLq6trli1b9tnPfmb79h1f+tKXxju+VJpZKpVmz5596NAvX3755fb29nKmJVoTbKQPfOADa9as6ej4xbe+9a2R4+vr62fMKM6ZM3vv3r0/+9nGPXv2jH9u3kDG20g7d+5csWL50aNHGxubFi5sHTneRuKU3v72t11zzTWrVq2qrKy87rrrFi1a9MILL1x77bWDg4NPP71h6dKlY463kTilkzfSj370o/b29t7eI3v37luzZvW6dZcfPnx4+NWttra2vr6+UCiUSjPb29sfe+yxgYGB0H8DonDyRnr99cN1dTMGBwcOHjy4cuWbrrzyiqNHjw6/b9dGYjynvCL94z8+Onfu3CuvvOLYsWNPPvlkf3//8ME2UqLK+lvkxnr5xAMPHn2g+0QulzvWe/SBB48+9HTIOCSqoiJfKpUGBweGhgb7+vpmzZo1Y0bdBMd/7Wtf/e53v1soVC1btuzSSy9pa2srV1KiNt5GuuOOOz7wgQ8cOHDgL/7iC7t27Ro5/otf/OITTzzR0NCwbNmytWvXzp3bHC47ETl5I82aNeviiy+uq6u7776vP/bYD6urC295y1tGjreROKVCoXrmzFnD/1Xb19c3c+astWvfvHLlysbGxre97fqampqWlpZPfvKTI8fbSJzSyRupoaGxvb39kUd+cO+9977wwouzZtUvW7Zs+OAtW7bcc889P//5zxcvXrRixYrLLrvMP+cYdvJGqqysGBoafP311++6667nn3++VCqNTI63kRjPyRupUKjO5XLXXHPN0qVLt27d+vzzL4wcbCMlKmjBBGfD7t1dd91112OP/bC/v3/v3n3/7b99/sEHvzHB8bfffvvKlSufe+653bt3X3DBBSMvh7zBnXIj/fqv3/r+979vaGjw8cefqKmpWbVq1fDBixcvvv322xYvXvToo48dPnxk5co3nXfe2B8o4I3p5I30wx/+8GMf++jv/u7/+fa3v23RokWVlZW9vb3DB9tIjGfDhg133nnntm3bBgcHX3zxpTvvvPP73//+Aw88+I1vfHPLli39/f1HjvSODD2xkRjPyRtpx44dN954w7ve9c4rr7xywYL5+Xzu+PHjwwevW7fuHe+4aXBw4NFHHysWi2vXrpk7d27Y/ETi5I304IPf6OnpKRaLq1evbmlpGRoaOnTon+ac2EiM5+SNtGHDhpqamquvvjqfz2/YsGH47XLDbKREGfJN8o4dO9bZ2dnV1dXV1bVnT1dHR8fEx3d1da1bt+66666rqanZuXPXM88YF0cuN85Guvnmm+fOnXviRN873/nOW265ubOz89/9u3+fy+V6enr27du3evXqm29+x8yZM7du3fbcc88F/gsQh5M3Uk1Nzc9+tvG229774Q9/uLKycufOnffff//wwTYS4zl06NChQ4f27Nmze/furq6ujo6OvXv3bty4MZ/PX3PNNddee+3Ro72PP/748ME2EuM5eSN1d3dv2bLllltu+djHPlZTU71x4yvf/va3hw/evHnzkSO9K1asaG1dODg4NPxr5sLmJxInb6SKiooHHnjwIx/58Mc//vGamppXXtn0zW/+0xgBG4nxnLyRcrncLbfcsmLF8s7Ozkce+cHog22kROUXLlxUtjsbXUn+s99es/NPLtv39bvW/f4pPjlz5szpTsW5oVgsNjU1nThxoru7e+TGhQsX1tXVHTx4cOQXPOdyuVmzZjU1NVVXF4aGcseOHevu7jYujhFjNlJb25Lq6pqRz544cbyjY+fwnxsbGxsbG6uqKoeGhnp7j+7bt29wcDBMaOIzZiPNmjVrzpw5VVWVJ192bCQmMHv27GKx+Prrrx069M/fVc+aNWvu3Ln9/X0jl6OcjcSExmyk8XZL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


改动挺多的,os_cpu_a.A51 还需要优化,今天太晚了,先这样吧。

杨为民 发表于 2023-8-26 01:36:31

本帖最后由 杨为民 于 2023-8-26 01:38 编辑

熊仔 发表于 2023-8-26 00:17
今天比较忙,挺晚才开始弄。终于弄好了临界区保护方法4



(1)首先祝贺,方法4通过临界区保护嵌套验证。

(2)下面是FreeRTOS的标准临界区保护方法,请对照你自己的点评一下:
/*-----------------------------------------------------------*/
void vPortEnterCritical( void )

{
    portDISABLE_INTERRUPTS();// 杨注:关闭中断
    uxCriticalNesting++;


    /* This is not the interrupt safe version of the enter critical function so
   * assert() if it is being called from an interrupt context.Only API
   * functions that end in "FromISR" can be used in an interrupt.Only assert if
   * the critical nesting count is 1 to protect against recursive calls if the
   * assert function also uses a critical section. */
    if( uxCriticalNesting == 1 )
    {
      configASSERT( ( portNVIC_INT_CTRL_REG & portVECTACTIVE_MASK ) == 0 );
    }
}
/*-----------------------------------------------------------*/
void vPortExitCritical( void )

{
    configASSERT( uxCriticalNesting );
    uxCriticalNesting--;


    if( uxCriticalNesting == 0 )
    {
      portENABLE_INTERRUPTS();   // 杨注:打开中断
    }
}
/*-----------------------------------------------------------*/

(3)你要不要再挑战一下方法2和方法3?如果不试,建议把它们删掉


杨为民 发表于 2023-8-26 02:08:08

本帖最后由 杨为民 于 2023-8-26 02:55 编辑

“最新版本uC-OS2许可改成 APACHE 2.0 也就是可以商业使用不用授权。”

按我的理解“uC/OS-II”不是免费开源软件,原创作者已经声明作为商用必须获得授权(笔者在论坛里有专门的帖子介绍)。楼主不是原创只是移植着,楼主应该没有有权利取消授权,然后修改许可把它提供给商用的。
那么是不是有STC或者别的公司像“Silabs把uC-OS3版权买了,license改为Apache2”了,请楼主介绍一下,落实一下,这样有利于STC uC/OS-II的发展。



也就是说要提供一个“版权声明”的原始版
2. 版权声明:被许可软件的副本必须包含原始版权声明和许可声明。

页: 1 2 3 [4] 5 6 7 8 9 10 11 12
查看完整版本: 最新版本uC-OS2-2.93.01已移植到STC8上,请帮忙查错