|
发表于 2024-4-14 01:00:22
|
显示全部楼层
本帖最后由 杨为民 于 2024-4-14 01:07 编辑
请大神不要在乎我下面说话的语气,我不是生你的气,我实在是生LAOXU的气。
哥们,你的看法和建议都很正确,不过STC在STC32G单片机上早就这样做了,并且已经写在芯片手册里了。
同时姚总多次在帖子里以各种方式告诉大家CPU的主频和DPU的主频是分开的:
这些STC早就做到、已经做得正确的事情,姚总在帖子里已经两次明确地回复了LAOXU。
然而在此情况下,LAOXU像着了魔,仍然忽悠着你们要不停地讨论“TFPU/DPU/DSP运算期间CPU继续执行指令”这个问题,
我使用“跟风车打架”来形容他的行为已经是很文雅了。
最令我不耻的是LAOXU 是“不怀好意”的挑唆。
大家请看,对于他推崇的“执行运算时不停止CPU”的MDU16,他自己写的库函数如下:
?PR?_UIDIV?UIDIV SEGMENT CODE
PUBLIC ?C?UIDIV
RSEG ?PR?_UIDIV?UIDIV
?C?UIDIV:
CLR_EA
MOV DPTR, #MD1
LD_MD R6, +1
LD_MD R7, +1
LD_MD R4, +1
LD_MD R5, +1
// MOV DPTR,#ARCON
LD_MD #0xA0, +1 // 16位/16位除法(clock:9)
WAIT
MOV DPTR, #MD1
ST_MD R6, +1
ST_MD R7, +1
ST_MD R4, +1
ST_MD R5, 0
SETB_EA
RET
其中又是关闭总中断,又是用“WAIT”的死循环等待MDU16运算的完成:
WAIT MACRO
MOV A,#0x01
MOVX @DPTR,A
MOVX A,@DPTR
JB ACC.0,$-1
ENDM
这说明LAOXU他当然知道在“执行运算时不停止CPU”所要付出的代价,而且知道的一清二楚,否则不会写出避免你说的“硬件重入的问题”的正确措施:“关闭总中断”的语句!
同时在他为的STC32G单片机上采用了他提倡废除的“执行运算时停止CPU”工作模式的 MDU32模块所写的库函数:
?PR?ULDIV?ULDIV SEGMENT CODE
PUBLIC ?C?ULDIV
PUBLIC ?C?ULIDIV
RSEG ?PR?ULDIV?ULDIV
?C?ULIDIV PROC NEAR
XRL WR0,WR0
?C?ULDIV :
MOV DMAIR,#0x04 // 32位无符号除法
RET
总共3行汇编指令(其中“XRL WR0,WR0”这条指令还是错的,根本不该有这条指令),
通过他这个亲自编写得库函数,说明LAOXU他当然知道在“执行运算时停止CPU”的优点:既无需关闭总中断,又无需用软件死循环等!
既然LAOXU很清楚这两种情况的效果,为什么却忽悠你们不停地向STC提出人家早已采用的技术路线的建议,要求STC放弃已经做好的成功的MDU32的技术路线,回到MDU16的工作模式?
这是什么意思?我猜他是想用你们的“中招的笨”,来衬托他自己的“下套的聪明”! 自己躲在后面偷偷地乐
|
-
|