目录
文章目录
- 目录
- 摘要
- 1.Cortex-M3内核架构
- ![在这里插入图片描述](https://img-blog.csdn.net/20181009223510343?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![在这里插入图片描述](https://img-blog.csdn.net/20181009223623972?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ![在这里插入图片描述](https://img-blog.csdn.net/2018100922380950?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
- 2.Cortex-M3指令系统的开发
- 3.Cortex-M3简介
- 4.Cortex-M3寄存器组
-
- 5.Cortex-M3操作模式和特权级别
- 6.Cortex-M3中断
- 7.Cortex-M3的存储器
- 8.Cortex-M3的总线接口
- 9.存储器保护单元(MPU)
摘要
本节主要记录自己学习STM32汇编语言的过程。。
ARM Cortex-M3处理器基于最细腻的32位ARMV7架构,支持Thumb-2指令
1.Cortex-M3内核架构
![在这里插入图片描述](https://img-blog.csdn.net/20181009234341437?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009223510343?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009223623972?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/2018100922380950?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2.Cortex-M3指令系统的开发
![在这里插入图片描述](https://img-blog.csdn.net/20181009223940580?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009224219279?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
总结:Cortex‐M3 只使用 Thumb‐2 指令集。这是个了不起的突破,因为它允许 32 位指令和 16 位指令
水乳交融,代码密度与处理性能两手抓,两手都硬。而且虽然它很强大,却依然易于使用
3.Cortex-M3简介
![在这里插入图片描述](https://img-blog.csdn.net/20181009224802760?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
4.Cortex-M3寄存器组
![在这里插入图片描述](https://img-blog.csdn.net/20181009225050359?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009225253802?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009225333326?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
1.寄存器特性
![在这里插入图片描述](https://img-blog.csdn.net/20181009225832288?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2.特殊功能寄存器特性
![在这里插入图片描述](https://img-blog.csdn.net/20181009230021487?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009230131543?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3.具体学习
CM3 拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。 R0‐R12 是最“通用目的” 的, 但是绝大多数的 16 位指令只能使用 R0‐R7(低组寄存器),而 32 位的 Thumb‐2
指令则可以访问所有通用寄存器。 特殊功能寄存器有预定义的功能, 而且必须通过专用的指
令来访问
![在这里插入图片描述](https://img-blog.csdn.net/20181009232734749?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009232927203?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009233716295?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009233853985?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009233258251?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
寄存器的 PUSH 和 POP 操作永远都是 4 字节对齐的——也就是说他们的地址必须是
0x4,0x8,0xc,……。这样一来,R13 的最低两位被硬线连接到 0,并且总是读出 0(Read As Zero)。
这里可以对比:8086cpu的push和pop指令
![在这里插入图片描述](https://img-blog.csdn.net/20181009233200364?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
5.Cortex-M3操作模式和特权级别
![在这里插入图片描述](https://img-blog.csdn.net/20181009230458611?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/201810092305595?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
6.Cortex-M3中断
![在这里插入图片描述](https://img-blog.csdn.net/20181009230816700?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![在这里插入图片描述](https://img-blog.csdn.net/20181009231004509?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
7.Cortex-M3的存储器
总体来说, Cortex‐M3 支持 4GB 存储空间,如图 所示地被划分成若干区域。
![在这里插入图片描述](https://img-blog.csdn.net/20181009231219340?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpeGlhb3dlaW1hc2hpeGlhbw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
8.Cortex-M3的总线接口
Cortex‐M3 内部有若干个总线接口,以使 CM3 能同时取址和访内(访问内存),它们是:
有两条代码存储区总线负责对代码存储区的访问,分别是 I‐Code 总线和 D‐Code 总线。前者用
于取指,后者用于查表等操作,它们按最佳执行速度进行优化。
系统总线用于访问内存和外设,覆盖的区域包括 SRAM,片上外设,片外 RAM,片外扩展设备,
以及系统级存储区的部分空间。私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。
9.存储器保护单元(MPU)
Cortex‐M3 有一个可选的存储器保护单元。配上它之后,就可以对特权级访问和用户级访问分
别施加不同的访问限制。当检测到犯规(violated)时, MPU 就会产生一个 fault 异常,可以由 fault
异常的服务例程来分析该错误,并且在可能时改正它。
MPU 有很多玩法。最常见的就是由操作系统使用 MPU,以使特权级代码的数据,包括操作系
统本身的数据不被其它用户程序弄坏。 MPU 在保护内存时是按区管理的(“区”的原文是 region,以
后不再中译此名词——译注)。它可以把某些内存 region 设置成只读,从而避免了那里的内容意外被
更改;还可以在多任务系统中把不同任务之间的数据区隔离。一句话,它会使嵌入式系统变得更加
健壮,更加可靠.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)