发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
[问答] 在PSoC 4上使用ARM GNU ASM的第一步是什么?
271 PSoc ARM
分享
大家好,希望这个话题在这里很适合。
刚刚开始尝试学习ASM,所以有很多东西我还不知道,但我尝试了一个ASM的功能,并从这个程序的主文件调用该函数。大部分的功能只是NOP指令,所以我期望在每一个时钟周期上花费1或2个时钟周期(我在调试会话时测量内存视图中的SyBub值寄存器的周期),但是我在每一个上得到4个时钟周期:
这个函数似乎只需要16个时钟周期,但我大约52个。
优化设置为无,调试模式。
此外,我在ARM站点上找到了一个寄存器,DWT HTTP://FixCal.ARMCOM/Help/Nojx.jSP?主题=/COM.ARM.DOC.DDI037H/BIIFBHIF.HTML,它是一个循环计数器,但我在4200个家庭的注册文档中找不到,所以有人能告诉我,我在做什么好吗?关于测量时钟周期的另一种方法有什么想法?
该项目基于PSoC 4先锋套件
提前感谢,以及N900B问题的借口:D
Cyrkk.Access 01.ZIP
288.4 K
0
2019-9-20 13:30:48   评论 分享淘帖 邀请回答

相关问题

6个回答
使用SyCUL作为循环计数器(AN90799中的部分)。
HTTP://www. CyPress?COM/?ID=4和;RID=94607 PSoC 4
HTTP://www. CyPress?COM/?DoCID=49253 AN90799(SyBube)
问候,Dana。
2019-9-20 13:48:40 评论

举报

我做到了,这就是为什么我看到每个NOP指令使用4个时钟周期,而不是我预期的1或2个时钟周期。
2019-9-20 13:58:49 评论

举报

卡洛斯
DWT“时钟周期”(CYCCNT)仅在CORTEX-M3 CPU(PSOC5LP)上工作,而不是在-M0(PSoC4)上。
在PSoC4上,可以使用SytUL测量CPU周期的数量(见下文)。注意,最小计数器数量从3开始,即“零偏移”。这可能是你观察到4个时钟而不是你预期的1的原因。
{定义24位的SysTykxMax ValxxFFFFFF//max允许的Syle计数器值
UUNT32 SysNTVAL;/ /您试图检索的SyBar计数器的值
SysStKyCONFIG(SysTykMax VALL);//重置计数器设置为最大值,1次,将不重新加载。
做某事…
SysCntVal= SyStKyMax Val-(SytLo& & Gt;Valm);//获取经过的蜱(min偏移3滴答)SAMFETF(STRMSG1,“%D,%F\R\N”,SysCntVal,X);/ /报告结果UARTURL PATSHIPE(STRMSG1);
2019-9-20 14:05:28 评论

举报

nvwuwy 发表于 2019-9-20 16:39
卡洛斯
DWT“时钟周期”(CYCCNT)仅在CORTEX-M3 CPU(PSOC5LP)上工作,而不是在-M0(PSoC4)上。
在PSoC4上,可以使用SytUL测量CPU周期的数量(见下文)。注意,最小计数器数量从3开始,即“零偏移”。这可能是你观察到4个时钟而不是你预期的1的原因。

嗨,Odissey,
我用Syle来测量时钟周期,但不知道“零点偏移”,现在我知道了。
我深入研究创建者函数,得到Syle的计数值,并从这个寄存器中找到它。
定义CyReGracCM0SythCVR 0xE000 0E018U
因此,我在调试会话的内存视图中观察这个方向,并查看它向下计数。
我在哪里可以找到关于零偏移量的更多信息?
所有指令都有3个周期偏移?还是只是子程序上的第一个?
还有另一种更精确的测量时钟周期的方法吗?
将与5LP进行相同的测试并检查DWT和SyBar寄存器。
谢谢
2019-9-20 14:20:20 评论

举报

YAY,刚刚用PSoC 5LP和DWT做了,它给了我15个时钟周期。我不知道的是,如果我写的DWT寄存器的方式是最好的,在这里我的主要:
BlutQuald≫
项目包括:
外部空隙迟缓(UTUN16T T);外部Un64 64 T(UIT64 64 t);
In主体(){CyGalAcActuabess;(*(Req32*)CyrgIGraceCordeBdgExExcMnEnjultCTL)= CyeDebug GeDeCurvVCCHKErrysMSK;/*此掩码=0x01000**/(*(Req32*)CyrGeReDWTJCCTL)=DWTJCCTLLY-CYCCNTANAYMSK;/*此掩码=0x1*/(*(Req32*)CyrGeReWdttCyCyLyCo计数)=0;TrimDO(1);
对于(;;){}
/*[]文件结束*/
&BlutQuald≫
DWT init取自这里的HTTP://www. MuxBuield.Eu/PrimeSt/LPC1343ReavigeDease/DWTBaskMurk.ASPX
2019-9-20 14:34:54 评论

举报

卡洛斯
没有记录的“零偏移量”,3个周期是计算经过的蜱所需要的:
SysCntVal= SyStKyMax Val-(SytBand & Gt;Var);//获取经过的蜱(min偏移3蜱)
测量15个周期来调用外部过程(迟缓(1));停止和计算DWT计时器似乎是合理的。您可以记录此时间并使用它从后续测量中减去。
2019-9-20 14:46:32 评论

举报

只有小组成员才能发言,加入小组>>

371个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

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