历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2020年01月07日 | cortex-M3粗略延时计算

2020-01-07 来源:eefocus

最近调试磁铁驱动程序时,遇到一个奇怪的情况:(问题描述在下边这个帖子中)


OSTimeDly在ucos最高优先级任务中,多次使用,有什么说法?


只是知道问题大概出现在哪块,没找到出现这种状况的理由。顺带着理清楚一些基本的常识性的东西。如下:


基本概念:

AHB:Advanced High performance Bus,先进的高性能总线,这是一种“系统总线”。AHB 是在地址/控制阶段和数据阶段之间具有固定流水线的总线协议。它只支持由

AMBA AXI 协议提供的功能性的子集。 完全的 AMBA AHB 协议规范包括许多对于主机和从机 IP 开发来说不是必需的属性,因此 ARM 公司建议通常只使用该协议的子集。这个子集定义为 AMBA AHB-Lite协议。 


AMBA:Advanced Microcontroller  Bus Architecture,先进的微控制器总线架构(AMBA),AMBA是描述互连策略的协议规范系列。它是 ARM 公开的片内总线标准,该片内总线规范详述了互连策略以及对组成片上系统(SoC)的功能模块的管理。它协助带有一个或多个 CPU或信号处理器和多个外设的嵌入式处理器的开发。 AMBA 通过定义一个用于 SoC 模块的通用骨干(backbone)来对可重复使用的设计方法作了补充。


SoC:System on Chip片上系统


APB:Advanced Peripheral Bus,先进的外设总线(APB) 。APB 是一个比 AXI 和 AHB 相对简单的总线协议。它是为配件,或诸如定时器、中断控制器、UART、I/O 口等通用外设而设计的。它与主要系统总线的连接是通过系统到外设总线桥来实现的,这样有助于降低系统功耗。


AHB-AP:AHB Access Ports,AHB 访问端口(AHB-AP) 。


AHB-Lite:AHB-Lite 是完全的 AMBA AHB 协议规范的子集。它提供大多数 AMBA AHB 从机和主机设计所必需的所有基本功能,尤其是与多层 AMBA 互连一起使用时。


内核:内核是处理器的一部分,包含 ALU,数据路径,通用寄存器,程序计数器以及指令译码和控制电路。


PLL:phase locked loop,锁相环。PLL的作用主要有频率合成和CDR(时钟数据恢复)。


HSI:High Speed Internal Clock Signal,高速内部时钟信号。


HSE:High Speed External Clock Signal高速外部时钟信号。




系统时钟配置:

void  BSP_Init (void)

{

   BSP_IntInit();

   RCC_DeInit(); /*将外设RCC寄存器重设为缺省值 */

   RCC_HSICmd(ENABLE);  //使能内部高速晶振

   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);//等待HSI就绪

   RCC_HCLKConfig(RCC_SYSCLK_Div1);   /*设置AHB时钟(HCLK) RCC_SYSCLK_Div1——AHB时钟 = 系统时*/ 

   RCC_PCLK2Config(RCC_HCLK_Div1);   /* 设置高速APB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟 = HCLK*/    

   RCC_PCLK1Config(RCC_HCLK_Div2); /*设置低速APB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟 = HCLK / 2*/     

   FLASH_SetLatency(FLASH_Latency_2);   /*设置FLASH存储器延时时钟周期数FLASH_Latency_2  2延时周期*/  

   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  /*选择FLASH预取指缓存的模,预取指缓存使能*/

   RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);/*设置PLL时钟源及倍频系数,频率为8/2*16=64Mhz*/   

   RCC_PLLCmd(ENABLE);   /*使能PLL */

   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; /*检查指定的RCC标志位(PLL准备好标志)设置与否*/   

   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  /*设置系统时钟(SYSCLK) */ 

   while(RCC_GetSYSCLKSource() != 0x08); 

    /*驱动初始配置*/

  OC_SPI_Init();

  DrawerInterfaceInit();

  //ReadFlash();

  CAN_Config();

  initStruct();

  OC_LED_Ctrl(0x0000);

}


不多解释,强调使用内部时钟作为系统时钟。内核时钟频率64MHz。


估算一段延时函数的时间:

for(u16 i=0;i<50000;i++);

反汇编:

  for(u16 i=0;i<50000;i++);

    0x8001fa6: 0x2000         MOVS      R0, #0

  for(u16 i=0;i<50000;i++);

??drawerStateCtr_0:

    0x8001fa8: 0xf24c 0x3150  MOVW      R1, #50000              ; 0xc350

    0x8001fac: 0xb280         UXTH      R0, R0

    0x8001fae: 0x4288         CMP       R0, R1

    0x8001fb0: 0xd201         BCS.N     ??drawerStateCtr_1      ; 0x8001fb6

  for(u16 i=0;i<50000;i++);

    0x8001fb2: 0x1c40         ADDS      R0, R0, #1

    0x8001fb4: 0xe7f8         B.N       ??drawerStateCtr_0      ; 0x8001fa8

 

 

  bitsClear(num);

??drawerStateCtr_1:

    0x8001fb6: 0x0020         MOVS      R0, R4

    0x8001fb8: 0xb2c0         UXTB      R0, R0

    0x8001fba: 0xf7ff 0xffb8  BL        bitsClear               ; 0x8001f2e


涉及到的指令 及其 相应的周期数(内核周期):

MOVS    1+P1

MOVW      1

UXTH       1

CMP         1+P1

BCS.N      1+P1

ADDS       1+P1

B.N           1+P1


其中,P1=流水线重载。


可知for延时的大概内核周期数:至少 = 1+6*50000=300000个内核周期;-----这么算有问题没?待定....


(300000*1/72000000)*1000=4.17ms   


关于延时可以参见:STM32在系统时钟为72M下的几个延时函数—V3.5库


其他:

Cortex-M3 处理器内核采用 ARMv7-M 架构,


关于指令的流水线:采用三级流水线  


参见: ARM流水线


时钟周期,机器周期,指令周期的区别:


对于cortex-M3 处理器:


时钟周期=1/内核时钟频率;


机器周期约等于1个时钟周期;


指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。


这几个概念,对于cortex-M3来说,未必这样子,以上纯属个人理解。

推荐阅读

史海拾趣

Degson Electronics Co Ltd公司的发展小趣事

随着市场需求的不断变化,Degson意识到只有不断创新和升级产品,才能在激烈的市场竞争中保持领先地位。因此,公司投入大量资金用于研发,并在技术上取得了重大突破。Degson成功研发出了一系列新型接线端子和精密模具,不仅提高了产品的性能和质量,还降低了生产成本。这些新产品迅速在市场上获得了广泛应用,进一步巩固了Degson在电子连接器领域的领先地位。

Fair Rite公司的发展小趣事

随着全球进入数字化、网络化、智能化时代,电子元器件市场发生了深刻的变化。Fair Rite积极应对市场变化,通过技术创新和产品研发,不断推出适应新需求的产品。例如,公司针对EMF/EMI干扰较严重或容易出现导漏流问题的情况,推出了EMI抑制铁芯线圈(SM-BL系列),帮助客户节省PCB空间并降低干扰信号。同时,Fair Rite还注重满足客户的性价比需求,为每个新产品进行定制化设计和质量验证(遵循ISO9001:2008标准),确保其在不同应用场景下稳定可靠。

这些故事展示了Fair Rite在电子行业中不断发展壮大的历程。通过不断创新、拓展市场和提升品质,Fair Rite已经成为电子行业中的佼佼者之一。

Fullywell Semiconductor Co Ltd公司的发展小趣事

Fullywell Semiconductor成立于2005年,由一群在半导体领域拥有多年经验的工程师和投资人共同创立。公司初期专注于研发高性能模拟集成电路,以解决当时市场上对于低功耗、高精度信号处理芯片的迫切需求。通过不懈的努力,Fullywell成功推出了其首款产品——一款针对移动通信设备的低功耗射频前端芯片,迅速获得了市场的认可。这一技术创新不仅为公司赢得了首批重要客户,也为后续的发展奠定了坚实的技术基础。

COMPUTAR公司的发展小趣事

随着技术的不断进步和市场需求的扩大,CBC株式会社开始寻求更广阔的发展空间。1960年,CBC香港公司成立,这标志着CBC的镜头产品开始走向国际市场。香港作为当时亚洲的金融中心和贸易枢纽,为CBC提供了宝贵的国际资源和市场机遇。通过香港公司的努力,CBC的镜头产品逐渐在国际市场上获得认可。

AC Photonics Inc公司的发展小趣事

随着技术的成熟,AC Photonics Inc开始积极拓展市场。公司不仅在国内建立了完善的销售网络,还积极开拓海外市场。同时,AC Photonics Inc还与其他知名电子企业建立了战略合作关系,共同推动光电技术在各个领域的应用。这些合作不仅提升了公司的知名度和影响力,还为公司的长远发展提供了有力支持。

Flamar公司的发展小趣事

在追求经济效益的同时,Flamar公司始终不忘履行企业社会责任。公司积极响应全球绿色可持续发展号召,将环保理念融入产品研发、生产和销售的各个环节。通过采用环保材料、优化生产工艺、推广节能产品等措施,Flamar公司有效降低了产品生命周期中的环境影响。此外,公司还积极参与公益事业和社会活动,为推动电子行业的绿色可持续发展贡献自己的力量。

问答坊 | AI 解惑

IAR安装与使用.pdf

本帖最后由 paulhyde 于 2014-9-15 03:39 编辑 IAR安装与使用.pdf    …

查看全部问答>

GPS导航仪使用的路径规划算法一般是什么?

RT。 是dijkstra么? 可是o(n^2)的复杂度就算是一个城市,GPS导航仪的芯片也承受不下来啊。 或者是什么近似算法?…

查看全部问答>

高分求助:Ardence RTX下网卡驱动只能收不能发

在Ardence RTX 8.1(一个windows下的实时平台,www.ardence.com)开发环境下, intel 82566 mm网卡的驱动程序,能收到数据,但是发送失败 据说是AMT的影响,但是我们明明在BIOS里禁用了这个东西。 而且windows下和linux下的驱动程序都是工作的好 ...…

查看全部问答>

keil运行时变量值是多少

大家好:     最近使用KEIL V3运行一代码,我设着一断点,使用Run命令运行到断点处,我想看到断点时各变量的具体数值,请问怎么能看的到,查看哪个窗口?谢谢 急!! …

查看全部问答>

S3C2410 驱动编写的问题,急急急?

arm-linux-gcc -D__KERNEL__ -I/friendly-arm/kernel/include -Wall -Wstrict-prototypes -Wno-trigraphs -Os -mapcs -fno-strict-aliasing -fno-common -fno-common -pipe -mapcs-32 -march=armv4 -mtune=arm9tdmi -mshort-load-bytes -msoft-floa ...…

查看全部问答>

求教!如何设计一阶或者二阶全通滤波器?

如何设计一阶或者二阶全通滤波器?或者给一些参考资料,谢谢!…

查看全部问答>

st最便宜的mcu是什么型号,可以做到什么价格?

量30K每月,rom 4k,带adc和pwm,14pin就够,基本上的ic都有…

查看全部问答>

梦之旅同学松鼠1.0学习笔记(二)之流水灯

  呵呵,这些天连续在弄cortex-m3,所以嘿嘿,对cortex-m3的流程很清楚,虽然没怎么之前没怎么用过stm32,不过,还是很容易上手的,下面是用stm的模板来修改的流水灯,呵呵,板子很好,相关的引脚都已经标好了,呵呵,这个设置流程和lm系列差 ...…

查看全部问答>

大家啊来说说都有哪些比较好的MSP430学习的网站吧

EG3关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。强烈推荐http:// ...…

查看全部问答>

9B96的以太网PHY接隔离变压器后能直接接光模块吗

9B96的以太网PHY接隔离变压器后能直接接光模块吗?求解啊…

查看全部问答>