Bruceoxl
BruceOu,于2017年10月13日开始在CSDN上写博客,博客专注于嵌入式开发、人工智能等。欢迎各位朋友来访!
邮箱: ouxiaolong@bruceou.cn
展开
-
《嵌入式 - 嵌入式大杂烩》ARM Cortex-M寄存器详解
ARM Cortex-M提供了 16 个 32 位的通用寄存器(R0 - R15),如下图所示。前15个(R0 - R14)可以用作通用的数据存储,R15 是程序计数器 PC,用来保存将要执行的指令。除了通用寄存器,还有一些特殊功能寄存器。特殊功能寄存器有预定义的功能,而且必须通过专用的指令来访问。原创 2024-08-06 23:04:05 · 947 阅读 · 0 评论 -
《嵌入式 - 嵌入式大杂烩》SVC和PendSV异常详解
在讨论PendSV和SVC异常前,需要先了解Cortex-M的模式和两个特权等级。Figure 1 1 操作模式和特权等级两种模式为handler模式和线程(thread)模式,这两种模式是为了区别正在执行代码的类型;handler模式为异常处理例程的代码;线程模式为普通应用程序的代码。两种特权级包括特权级和用户级,两种特权级别是对存储器访问提供的一种保护机制,然后用户代码不能访问特定的存储区域;在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU的禁地之外),并且能够执行所有指令;原创 2023-08-12 17:40:47 · 825 阅读 · 0 评论 -
《嵌入式 - 嵌入式大杂烩》CoreMark性能测试
CoreMark是由EEMBC(Embedded Microprocessor Benchmark Consortium)的Shay Gla-On于2009年提出的一项基准测试程序,CoreMark的主要目标是简化操作,并提供一套测试单核处理器核心的方法。测试标准是在配置参数的组合下单位时间内运行的CoreMark程序次数(单位:CoreMark/MHz),该数字值越大则说明测试的性能越好。原创 2022-11-06 12:54:09 · 2614 阅读 · 0 评论 -
《嵌入式 - 嵌入式大杂烩》基于VS Code开发嵌入式
很多朋友在开发嵌入式的时候,一般常用Keil MDK、IAR等IDE工具,不过这些都是收费的,而且非常笨重,跨平台开发不方便,依次笔者将推荐使用VS Code开发嵌入式。如果想要使用VS Code开发嵌入式,则需要以下工具:(1) GNU Arm Embedded Toolchain:ARM用的GNU工具链,包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具,支持Windows、Linux、Mac。GCC(GNU Compiler Collection)。(2) Git/make:代码管原创 2022-05-23 22:29:49 · 2026 阅读 · 0 评论 -
《嵌入式 - 嵌入式大杂烩》详解J-Link RTT打印
开发环境:J-Link版本:V9.4J-Link驱动版本:V760h_x86_64Keil:V5.30在嵌入式开发过程中,经常需要进行打印调试,通常使用串口进行打印输出,但通常串口资源有限,这时就可以通过J-Link工具里面自带的RTT实现打印,从而节约一个串口资源。1 RTT简介RTT全称是Real Time Transmit(实时传输)**,是Segger公司推出的调试手段之一。它是一种用于嵌入式中与用户进行交互的技术。使用RTT可以从MCU快速输出调试信息和数据,且不影响MCU的实时性。原创 2022-02-12 14:53:31 · 2087 阅读 · 0 评论 -
《嵌入式 - 嵌入式大杂烩》详解常见的二极管
二极管是很常用的电子元件之一,它很大的特性就是单向导电,也就是电流只可以从二极管的一个方向流过,二极管的作用有整流电路,检波电路,稳压电路,各种调制电路等。二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件。它具有单向导电性能, 即给二极管阳极和阴极加上正向电压时,二极管导通。 当给阳极和阴极加上反向电压时,二极管截止。 因此,二极管的导通和截止,则相当于开关的接通与断开。二极管的种类很多,本文就一些常用的二极管做一些介绍。1普通二极管1.1二极管的特性理想情况下,二极管可以看成一个开原创 2021-10-06 18:14:02 · 6205 阅读 · 0 评论 -
《嵌入式 - 嵌入式大杂烩》详解ROM和RAM
内存是计算系统最重要的元素,因为没有它,计算机就无法执行简单的任务。计算机内存有两种基本类型 - 主内存(RAM 和 ROM)和辅助内存(硬盘驱动器、CD 等)。随机存取存储器 (RAM) 是主要的易失性存储器,只读存储器 (ROM) 是主要的非易失性存储器。我相信,很多朋友都会把手机的运行内存、数据存储等混为一谈。在智能手机还没普及时,手机中有个可移动的存储设备,它的名字就是‘TF’卡,当时也叫‘内存卡’。TF卡是用手机存储数据的,并不是手机的运行内存,这也导致了现在很多人都以为手机内存就是手机内部储原创 2021-08-15 19:36:28 · 6065 阅读 · 2 评论 -
《嵌入式 - 嵌入式大杂烩》PNP与NPN三极管的原理与使用方法
三极管是电子电路中最重要的器件,它最主要的功能是电流放大和开关作用。三极管按材料分有两种:锗管和硅管。而每一种又有NPN和PNP两种结构形式,但使用最多的是硅NPN和PNP两种三极管,两者除了电源极性不同外,其工作原理都是相同的,常见的三极管为9012、s8550、9013、s8050.单片机应用电路中三极管主要的作用就是开关作用。其中9012与8550为pnp型三极管,可以通用。其中9013与8050为npn型三极管,可以通用。NPN型三极管,由2块N型半导体和1块P型半导体组成,P型半导体在中间,原创 2021-07-11 17:25:42 · 1872 阅读 · 5 评论 -
《嵌入式 - 嵌入式大杂烩》Keil反编译入门(二)
在阅读本文之前,你需要有汇编和寄存器的基础知识,请参看笔者以前的文章。ARM汇编入门深入理解ARM寄存器4 反汇编代码全解析进入debug模式,在View下选择disassembly window。这样就可将机器码和对应的代码对应起来。当程序运行起来了,也就从异常向量表中跳转到Reset_Handler中,然后跳转到main函数中,而main函数是在栈中,因此需要设置占空间的起始位置。根据STM32的参考手册,SRAM的其起始地址和大小如下:因此栈顶为起始位置加上栈的大小即可,只要不超过S原创 2021-07-01 23:40:40 · 2950 阅读 · 4 评论 -
《嵌入式 - 嵌入式大杂烩》Keil反编译入门(一)
我们在写单片机裸机程序时,在主函数之前,会有一段启动代码,而启动代码是用汇编写的,有些朋友可能看到汇编头都大了,当时要想深入研究底层架构,这快硬骨头就必须去啃。汇编:汇编文件转换为目标文件(里面是机器码)。反汇编:可执行文件(目标文件,里面是机器码),转换为汇编文件。关于汇编的基础知识,请看笔者以前的文章。今天笔者以STM32F1的点灯程序为例,带领大家进行反汇编,并阅读反汇编后的代码。1新建LED裸机程序关于STM32裸机程序的创建,请看笔者博文:Keil新建工程但是今天这个程序非常简单,原创 2021-06-28 23:54:50 · 5459 阅读 · 2 评论 -
《嵌入式 - 嵌入式大杂烩》ARM汇编入门
我们在学习ARM的时候,一般都不用看汇编启动代码,直接使用芯片厂商提供的汇编启动代码,但是要想深入了解ARM内部原理,就必须掌握一定的汇编知识。我们在前面总结了处理器架构与指令集,那么汇编和处理器架构、指令集有什么关系呢?先看下图:从上图可以看出,不同的处理器架构、不同指令集合对应不同汇编指令。可以说,一种指令集就对应一种汇编指令,汇编是开发者与计算机交互的接口,总结一下,汇编语言是指令集构架的机器码一对一的人类可以理解的翻译,是用人类看得懂的语言来描述指令集。否则指令集的机器码都是一堆二进制数字,原创 2021-06-14 10:31:28 · 3666 阅读 · 7 评论 -
《嵌入式 - 嵌入式大杂烩》深入理解ARM寄存器
1引言我们在学习STM32的时候,把被控单元的 FLASH,RAM,FSMC和AHB 到 APB 的桥(即片上外设),这些功能部件共同排列在一个 4GB 的地址空间内。我们在编程的时候,可以通过他们的地址找到他们,然后来操作他们(通过 C 语言对它们进行数据的读和写)。它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射。我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器。给已经分配好地址的特定功能的内存单元取别名的过程就叫寄存器映射。然原创 2021-06-13 08:03:37 · 5634 阅读 · 4 评论 -
《嵌入式 - 嵌入式大杂烩》 处理器架构与指令集
大家天天都在使用手机,你知道你的手机使用的什么处理器?处理器又是何种架构呢?今天笔者就来谈谈处理器的架构和指令集。我们知道一台手机最重要的就是处理器,也就是处理器,那么什么是处理器呢?处理器就是一堆数字电路(架构)以高低电平的各种组合实现了各种基本的运算(指令)。接下来我们看看要想设计出处理器,需要哪些东西,先看下图。要想设计出处理器,就需要有指令集,也就是规定处理器的相应操作,通过指令集去控制处理器实现相应功能。但处理器是一堆硬件电路,只能识别二进制数据,所以指令集是由一堆二进制数据组成。处理器原创 2021-06-07 23:33:35 · 1957 阅读 · 7 评论 -
《嵌入式 - 嵌入式大杂烩》一文搞懂CPU、MPU、MCU、SOC的联系与区别
1 CPUCPU(Central Processing Unit),是一台计算机的运算核心和控制核心。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。主要功能是解释计算机指令以及处理计算机软件中的数据。计算机的可编程性主要是指对中央处理器的编程。1970年代以前,中央处理器由多个独立单元构成,后来发展出由集成电路制造的中央处理器,这些高度收缩的组件就是所谓的微处理器,其中分出的中央处理器最为复杂的电路可以做成单一微小功能强大的单元,也就是所谓的核心。差不多所有的CPU的原创 2021-06-06 20:31:51 · 8354 阅读 · 21 评论 -
《嵌入式 - 嵌入式大杂烩》深入理解单总线协议
1单总线简介目前常用的微机与外设之间进行数据传输的串行总线主要有I2C总线、SPI总线和SCI总线。其中I2C总线以同步串行2线方式进行通信(一条时钟线,一条数据线),SPI总线则以同步串行3线方式进行通信(一条时钟线,一条数据输入线,一条数据输出线),而SCI总线是以异步方式进行通信(一条数据输入线,一条数据输出线)的。这些总线至少需要两条或两条以上的信号线。本文要介绍的总线协议和以上总线都不同,只有一根线,也就是单总线。单总线技术(1-Wire Bus)是美国的达拉斯半导体公司(Maxim全资子公司原创 2021-05-22 21:28:17 · 3979 阅读 · 12 评论