- 博客(7)
- 资源 (6)
- 问答 (1)
- 收藏
- 关注
原创 第3章 异常和中断
所有的cortex-m处理器都会提供一个用于中断处理的嵌套向量中断控制器(NVIC)。除了中断请求,还有其他需要服务的事件,将其称为异常。按照ARM的说法,中断也是一种异常。处理异常的程序代码一般被称作异常处理,它们属于以编译程序映像的一部分。
2022-12-21 15:20:26
156
原创 第2章 跳转 入栈出栈 pc lr的总结
bl 跳转时,会在寄存器 LR(R14)中保存 pc-4 值,即 bl 跳转指令的下一条指令地址,所以返回时只要 MOV pc,lr。中断和异常,都是不可预期的,在跳转前,没有pc-4就给了lr,所以中断和异常要在从中断返回函数时,lr-4给pc,跳到pc的地址。此时要进子函数b,执行bl,此时,lr的值被更新为pc-4,变为了子函数b的返回地址.此时在子函数b,lr的值是子函数b的返回地址,栈里也有子函数b的返回地址lr。函数的跳转,是可预期的,在跳转前,把pc-4给lr就是子函数的返回地址。
2022-12-21 15:12:21
1314
原创 gd32f470总结
在100M以太网速率中,MAC层每个时钟采样一次RXD[1:0]上的数据,在10M以太网速率中,MAC层每10个时钟采样一次RXD[1:0]上的数据,此时物理层接收的每个数据会在RXD[1:0]保留10个时钟。Data Area FLASH: 程序在这段flash运行时,每条语句都有延时, 最后的速度可能是以10M为时钟(举例) 这时候, 如果有与时序相关的语句在此执行(IIC等), 很有可能会出问题。Timer:timer,systick,watchdog,rtc(实时时钟,插电池用)
2022-11-16 14:54:36
6752
3
原创 模块化设计方案-20221114
对模块中无可移植方案的部分,采用接口抽象出一个可移植层,在不同的平台上分别实现此接口,此接口的实现就是整个模块的需要移植部分,在做移植工作时,只要将关注点放在此处。实际上真正跨平台的软件是不存在的,任何跨平台的软件必须有一个抽象的底层来支撑,这个支撑的部分是需要在不同的平台上重新实现的,也就是软件的需移植部分。弹性带来的问题是复杂性,过于复杂的软件会带来理解和维护上的困难,所以过度的弹性设计也是不可取的。在对模块所解决的问题的认识高度理解的前提下,抽象出模块的本质,是为软件的弹性设计。
2022-11-14 15:18:45
1438
原创 分层设计方案-20221114
在整洁的嵌入式架构中,我们会将这些用于设备访问的寄存 器访问集中在一起,并将其限制在固件层中。软件与固件之间的边界被称为硬件抽象层(HAL),不要向上层的用户暴露硬件细节,软件与固件之间的分割线往往没有代码与硬件之间的分割线那么清晰 ,为了给他上层的软件提供服务,以便隐藏具体的实现细节。嵌入式架构会在驱动模块以上,进行功能的整合,实现具体的外设模块。模块抽象层隐藏具体的模块实现,对上提供统一的功能服务。应用到开源的Lib和已有的公共模块不需要划分单独的层,根据功能放到对应层里。流程和功能都在App层。
2022-11-14 15:17:37
278
cola-os说明 模块化和抽象层的设计思路
2022-11-14
Image$$ARM_LIB_HEAP$$ZI$$Base.docx
2020-05-16
三种传感器常用算法.docx
2020-05-16
STM32操作写入FLASH信息出错
2015-05-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人