37
3382
1万
资深工程师
使用特权
27
2249
8405
VIP会员
1120
5万
版主
为什么不是说多核处理器核心设计和编程方法就有考虑此问题呢? 对内存不做保护的操作不要说多核,就是单核都会出问题。 t.jm 发表于 2011-8-29 13:17
唉。。。。。 刘前辈辛苦啦,码了这么多字来教俺,谢谢~~~ 只是,程序运行中出错的地方不在 if ( DPTR>250 ) { } 中的DPTR是一个私有变量,是一种避免与ISR共享变量的解决方法。根本无法取消的(当然可以定义另 ... Cortex-M0 发表于 2011-8-29 13:20
102# lxyppc 说正经的,我也有个简单的测试: if(count == 0) { error++; } t.jm 发表于 2011-8-29 14:04
多核单核都不是靠内存保护来完成这个功能的.而是靠软件设计.. icecut 发表于 2011-8-29 14:05
24
1038
3272
中级工程师
#63楼 还用往下教?没事,菜鸟喜欢关中断,关几个字节谁也不好说什么。上面一句: EA=0; DPTR=count; // 能把高手设的临界区缩小到1 / 3 甚至更小,是件了不起的事。 EA=1; // 只有一条语句,临界区已经最小了。 if ( DPTR > 250 ) // count = 251~260 {……} 这也要刘前辈讲课?
count 对 DPTR 的赋值过程中,万一当中发生中断,并且在中断过程中 ,count 变量中间有半进位发生,中断返回后,再继续执行 count 对 DPTR 赋的值就杯具了~~~ 这个问题转了好大的一个圈,又回到了原地,再讨论下去又有神马意义? 至于本式中的 DPTR,可用任何 int变量代替,执行结果相同~~~
222
4万
技术总监
7
4820
不要把这些东西推给硬件,推给指令集.软件就能解决 icecut 发表于 2011-8-29 14:06
#100楼 M0版主 DPTR = count ; // 所长是不是什么都要让刘前辈告诉你?一点都不长进。 count 对 DPTR 的赋值过程中,万一当中发生中断,并且在中断过程中 ,count 变量中间有半进位发生,中断返回后,再继续执行 count 对 DPTR 赋的值就杯具了~~~ 这个问题转了好大的一个圈,又回到了原地,再讨论下去又有神马意义?至于本式中的 DPTR,可用任何 int变量代替,执行结果相同~~~
开中断时错误记录37.JPG (158.98 KB )
下载附件
2011-8-29 18:24 上传
关中断时错误记录为0.JPG (146.75 KB )
190
1614
4967
19
1222
4552
唉~~~ 俺真笨,今天才明白,刘前辈的小儿科问题,为什么这么有市场~~~ 因为,懂的都笑笑,打酱油路过,不值的回答~~~ 不懂的总有一大堆理由,答非所问的解释一件很简单的小儿科问题~~~ 所以,刘前辈的小儿科问题,才能在二姨家所向披靡~~~
10
375
1161
助理工程师
多线程自旋锁迫使进程进入临界区从而解决临界区非原子操作所导致的资源冲突问题,是八维宇宙交变场由于熵减造成黑洞嬗变在第四维空间所产生的异常波动。... highgear 发表于 2011-8-29 21:17
发表回复 本版积分规则 回帖后跳转到最后一页
等级类勋章
发帖类勋章
时间类勋章
人才类勋章
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号