嵌入式C语言开发

这是我的第一篇对ARM有有疑问并展开调查的文档总结,以备之后查阅。

首先的疑惑是发现之前的源码中都是在对寄存器做操作,所以对寄存器的地址是怎么被确定的就很疑惑。
搜索引擎关键词:嵌入式 寄存器 基地址 使用
参考《嵌入式15——HAL 库中寄存器地址名称映射分析》(https://zhuanlan.zhihu.com/p/91331682),

可以看到这个地址是跟字长、总线相关的。
然后参考《嵌入式C语言开发—存储器与寄存器》(https://blog.csdn.net/weixin_30439067/article/details/98448978),可以到有关的内容是在ARM的存储器映射相关的,
然后参考《内存或寄存器定义和赋值》(https://blog.csdn.net/tianya58198/article/details/7176043),说了一下以下的写法:

#define rDISRC0     (*(volatile unsigned *)0x4b000000) //DMA 0 Initial source
rDISRC0 = 0x38000000  //将0x38000000数据赋值给rDISRC0

当然还有ARM 寄存器基本概念,参考《嵌入式-ARM寄存器基本概念》(https://wenku.baidu.com/view/0092ddd1d5d8d15abe23482fb4daa58da0111cb0.html),注意区分ARM自身寄存器(37个)和各家公司芯片中自己实现的外设寄存器。

《嵌入式-ARM寄存器基本概念》(http://news.eeworld.com.cn/mcu/2012/0703/article_9308.html)

无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。
ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。
这里尤其要注意区别的是ARM自身寄存器和它的一些外设的寄存器的区别。
ARM自身是统一架构的,也就意味着37个寄存器无论在哪个公司的芯片里面都会出现。但是各家公司会对ARM进行外设的扩展,所以就出现了好多外设寄存器,一定要与这37个寄存器区别开来!!!

还有嵌入式驱动开发的理解:《嵌入式驱动开发是不是相当于寄存器编程?》(https://www.zhihu.com/question/467749782)

总结,
以及接触到的这些芯片(8051、stm32)、操作系统、架构(rsiv)、
esp32 、arm cortex m4、ARM 11、linux、Windows
片内资源,片指的是啥?

区分芯片、CPU、MCU、ARM产品线、操作系统内核、架构。

参考:
《嵌入式linux-ARM体系结构及接口技术,ARM产品线》(https://www.pianshen.com/article/4634155382/)

《ARM架构—— Cortex-M3与Cortex-M4特点概述》(https://blog.csdn.net/weixin_42092278/article/details/102884186)

处理器和微控制器差别
微控制器包含处理器,处理器只是其中一小部分,具体包含存储器、时钟生成、分配逻辑、系统总线以及外设(I/O接口单元、通信接口、定时器、ADC、DAC等等),如图1-1所示:
微控制架构

即使处理器相同,但是不同芯片厂商根据不同的应用场景选择不同的特性模块就能设计出不同特性的微控制器。
Cortex-M3与Cortex-M4处理器均使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位。Cortex-M处理器使用的指令集架构(ISA)为Thumb ISA,基于Thumb-2技术并同时支持16位和32位指令。

还有重磅级的arm开发者网址(https://developer.arm.com/ip-products/system-ip),
还有arm cortex-M系列处理器对比表:
在这里插入图片描述
在这里插入图片描述
For more information, contact your Arm account manager today or explore the processors in more detail here: developer.arm.com/ip-products/processors/cortex-m。快捷链接

还有IP的概念:(https://developer.arm.com/ip-products/system-ip)

The Foundation for Building Better Systems
Arm System IP enables system designers to configure and build performant, power efficient SoCs whilst further differentiating by combining Arm processors with their own IP elements via industry standard AMBA interfaces. Arm interconnects, debug and trace components and controllers are scalable across many different applications, from tiny IoT devices to large enterprise SoCs.
在这里插入图片描述

以及STM32,STM32就是采用ARM cortex-M4处理器的微控制器,
ST即STMicroelectronics,意法半导体,
可查看意法半导体网站中stm32的产品主页(https://www.st.com/zh/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html)

《测试驱动的嵌入式C语言开发》是一本探讨嵌入式C语言开发中测试驱动开发(TDD)方法的书籍。TDD是一种先写测试用例,再编写代码实现这些测试用例的开发方式,其主要目的是保证代码的质量和可维护性。 这本书主要通过实例演示如何实现嵌入式C语言项目的测试驱动开发过程。它介绍了如何使用Unity测试框架和CMock模拟框架来进行单元测试,使得嵌入式软件开发过程中的测试更加简单且高效。书中还详细讨论了如何使用不同的测试策略和设计模式来提高代码的可测性和可维护性。 此外,书中还介绍了如何使用版本控制系统和持续集成工具来增强测试驱动的嵌入式C语言开发过程。通过使用这些工具,开发人员可以更好地管理代码库的版本,并及时发现和修复潜在的问题。 《测试驱动的嵌入式C语言开发》适合具有一定嵌入式开发基础的读者,特别是那些希望学习如何应用测试驱动开发方法来提高嵌入式软件质量的开发人员。这本书内容丰富,实例详细,可以帮助读者更好地理解和掌握测试驱动开发方法在嵌入式C语言开发中的应用。 总之,这本书通过具体实例和详细讲解,向读者展示了如何使用测试驱动开发方法进行嵌入式C语言开发,并提高软件质量和可维护性。阅读本书可以使开发人员更好地理解和掌握测试驱动开发的技巧和方法,从而在嵌入式开发中取得更好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值