• 本科生学习嵌入式的心路历程:探究自学、实践与项目经验对于成长的重要性

    为毕业后能找到工作而读书,本着务实精神,从入学那一刻起就要开始准备找工作了。

    4小时前 20浏览
  • 学习嵌入式绕不开的技术点

    很多人STM32嵌入式学习都有些迷茫,不知道从哪里入手,不知道自己的水平位于哪个层次,不知道从哪方面提升

    4小时前 18浏览
  • 学习STM32必备:为什么要学习汇编语言?

    不同的平台的汇编代码是不一样的,最早的汇编在50年代就发明了

    4小时前 17浏览
  • 单片机解密是什么?

    单片机解密,又叫单片机破解、芯片解密、IC解密

    5小时前 21浏览
  • 探索最佳混合动力总成配置:技术和趋势分析

    最佳的混动动力总成配置研究。

    9小时前 21浏览
  • 无线充电板拆解解析:揭秘STM8+发送线圈的构成与工作原理

      可能很多人对无线充电不太熟悉,前几天买了一套无线充电板,拆开了分析了一下,原来也不复杂,不用多说,看看图大致就明白了。为大家科普一下,无线充电技术又称作感应

    昨天 57浏览
  • 探究cortex-m内核的2种软件复位方式:深入理解嵌入式系统开发技术

    这里只讨论内核的软件复位方式。像STM32的备份域复位里面也有软件复位,则不在本文讨论范围。额外提一

    昨天 36浏览
  • MCU最开始一启动后去哪里读代码?

    MCU最开始一启动后去哪里读代码? CPU上电启动后被设计为去地址0x00000000位置处读取代码;首先会连续读取两个字,分别是栈指针初始值和复位异常处理函数的地址;然后跳去执行复位异常处理函数。 当然在一些早期的ARM处理器设计中,如Arm7TDMI,复位后会直接读取0地址处的代码进行执行,由软件初始化栈指针,0地址处存放的直接就是中断处理函数,而不是函数地址。 所以我们可以有理由推测出,第一个字是栈地址是因为接下来的复位中断处理函数涉及函数跳转,可能已经需要存放内容在栈里了。 0x0地址处是bootROM代码吗,还是用户bootloader代码? 答案是都可以。这其实取决于用户的代码是存放在哪里的。比如说对于一些性能强的MCU(如Cortex-A系列)来说,代码本身体积比较大,存放在SD卡里或者QSPI/SPI Flash里都有可能,这些MCU启动一定是先去bootROM执行代码。因为SD卡、SPI Flash的储存不在MCU的统一编址空间里,没初始化这些外设前根本无法访问,bootROM这块Nor Flash就一定是可以被MCU直接通过总线地址访问的,0地址的代码位于bootROM中。代码从bootROM中起来后,通过启动引脚判断从哪个外设中搬用户程序,并去初始化相应外设,将外设中存储的用户代码搬到内部SRAM中执行。后续的启动流程不赘述。对于一些小容量的MCU来说,比如Cortex-M3/M4,他们的芯片里有内置Flash,这个Flash的特点跟上面说的bootROM很像,是MCU可以直接通过地址总线去访问到的,不需要进行外设初始化的。当然,这些MCU内部也是有bootROM的,因此这些MCU一上电可以选择从bootROM中启动,也可以选择从内置Flash中启动,是通过外部引脚进行选择的,选择了谁,就把谁的起始地址映射到0地址处。 类似Cortex-M3/M4是如何保证Flash起始地址是栈指针和复位异常处理函数指针的? 这一点实际是通过编译的链接文件制定的。比如说如下是我截取的IAR的链接文件.icf。 MCU有可能不从0地址开始读代码吗? M7内核芯片比较灵活了,改变了固定从0x0000 0000地址读取中断向量表的问题。以STM32H7为例,可以从 0x0000 0000 到 0x3FFF 0000 所有地址进行启动。专门安排了个选项字节来配置。感兴趣的话,可以查阅手册。

    昨天 34浏览
  • 嵌入式光学指纹识别系统设计方案解析:技术要点与实现策略详解

    本文介绍了一种基于ARM的光学指纹识别系统的设计方案。本方案采用ARM处理器作为控制核心,构建指纹识别算法的嵌入式系统的设计方法及过程。

    12-04 38浏览
  • 深入分析MCU堆栈空间:基于Keil MDK的探索与优化策略解析

    堆栈对于程序来说非常重要,程序能够快速运行,堆栈起到非常大的作用,但你了解堆栈吗?概述我们都知道堆栈位于RAM中,现在MCU的RAM相对较大(几十上百K),所以分配的堆栈也是足够大,很多人都不怎么关...

    12-04 39浏览
正在努力加载更多...
EE直播间
更多
广告