STM32类别概述、下载程序及启动过程分析
STM32类别
STM32下载程序STM32启动流程分析
STM32类别
STM32目前有5大类18个系列。
CMSIS应用结合STM32F1芯片的简单结构框图,包括实时操作系统和
中间装置及其他部件的结构如下图所示。
STM32下载程序
STM32常见的下载方式有3种
表中的BOOT0和BOOT1是STM32芯片上的两个引脚,用于控制STM32的启动模式。
由于它从系统内存启动并且不运行任何用户程序,因此该模式允许通过仿真器下载代码,无论用户程序如何编写。因此,该模式常被用来作为JTAG/SWD异常关闭而仿真器无法下载程序时的补救措施(该模式可以挽救不关闭JTAG/SWD接口的下载程序)。
STM32启动过程分析
这里的启动过程是指从STM32芯片上电复位时执行第一条指令到执行用户编写的main函数的过程。我们写程序的时候基本上都是用C语言来写,并以main函数作为程序的入口。然而,main函数实际上并没有首先执行。在此之前,启动该文件的程序必须完成一些准备工作。
我们知道的复位方式有三种:上电复位、硬件复位、软件复位。当发生复位并退出复位时,CM3 内核首先读取两个32 位整数值:
(1) 从堆栈起始地址0x0000 0000处获取堆栈指针MSP的初始值。
(2) 从地址0x0000 0004 获取程序计数器指针PC 的初始值,该指针指向复位后执行的第一条指令。示意图如下所示。
在上述过程中,内核从地址0x0000 0000和0x0000 0004获取堆栈指针SP和程序计数器指针PC。事实上,地址0x0000 0000 和0x0000 0004 可以重新映射到其他地址空间。
示例:将0x0800 0000 映射到0x0000 0000。也就是说,当从内部闪存启动时,内核会检索堆栈指针MSP的初始值,并从地址0x0800 0000处检索程序计数器的初始值。从地址0x0800 0004 开始指针PC。
CPU 开始执行程序,从PC 寄存器指向的地址空间中取出第一条指令。这将开始执行复位中断服务程序Reset_Handler。将0x0000 0000和0x0000 0004这两个地址重新映射到其他地址空间就是启动模式选择。
———————————————- 启动模式选择表- ————————————————– –
注:Boot 引脚电平:0:低电平,1:高电平,x: 的任意电平,即STM32F1 根据BOOT 引脚的电平选择启动模式。 BOOT 引脚根据外部施加的电平确定芯片的引导地址。 (0和1的准确电平范围在F103系列数据表的I/O特性表中给出,但最好将其设置为GND和VDD电平值)。
(1)内置FLASH启动方式
芯片上电后,当BOOT0引脚采样为低电平时,地址0x00000000和0x00000004被映射到内部FLASH的首地址0x08000000和0x08000004。因此,内核退出复位后,会读取内部FLASH0x08000000地址空间中存储的内容,并将其分配给堆栈指针MSP作为堆栈顶地址。接下来,读取地址0x08000004处存储的内容。它占用内部flash的空间,并将其分配给程序指针PC,作为要执行的第一条指令的地址。一旦这两个操作完成,内核就可以开始从PC指定的地址读取指令来执行。
(2) 内置SRAM启动模式
与内部Flash类似,芯片上电后,当BOOT0和BOOT1引脚都变高时,地址
0x00000000和0x00000004被映射到内部SRAM的首地址0x20000000和0x20000004,内核从SRAM空间检索内容进行引导。在实际应用中,这是由启动文件starttup_stm32f103xe.s决定的。
地址0x00000000和0x00000004存储了什么内容?链接时,这些内容的绝对地址由分散加载文件(sct)确定。即是分配到内部FLASH还是内部SRAM。
(3)如何启动系统内存
当芯片在上电后采样BOOT0=1 和BOOT1=0 的组合时,内核会从0x1FFFF000 处的系统内存中读取数据。
和0x1FFFF004来获取用于引导的MSP和PC值。系统内存是用户无法访问的特殊空间。
ST公司在芯片出厂前将其部分代码锁定到系统内存中。因此,采用系统内存启动方式
该核在执行代码时提供ISP(系统内程序)支持。
我们看到的是,它检测USART1发送的信息,并根据该信息更新其内部FLASH内容,从而实现升级。
对于级别产品应用来说,这种启动方法也称为ISP启动方法。
IAP是一种用户专有程序,在运行过程中写入部分用户闪存区域,旨在在产品发布后通过预留的通信端口轻松更新和升级产品内的固件程序。自定义加密为您使用IAP 提供了极大的灵活性。通常,如果您想实现IAP功能,即您的用户程序在运行时执行自己的更新操作,则在设计固件程序时需要编写两段项目代码。第一个程序检查是否有任何升级要求并检查是否需要升级。它通过某种通信方式(USB、USART等)进行通信,接收程序或数据,并执行第二部分代码的更新。第二个项目代码是实际的功能代码。两部分工程代码同时写入用户flash,当芯片上电时,第一部分工程代码开始进行以下操作:
1)检查您的代码的第二部分是否需要更新。
如何自学黑客网络安全
黑客零基础入门学习路线规划
初级黑客
1.网络安全理论知识(2天)
了解行业背景和前景,决定发展方向。
学习有关网络安全的法律法规。
网络安全运营理念。
等保制度介绍、等保法规、流程、规范。 (很重要)
2.渗透测试基础知识(1周)
渗透测试流程、分类及标准
信息收集技术:主动/被动信息收集、Nmap工具、Google Hacking
漏洞扫描、漏洞利用、原理、使用、工具(MSF)、IDS绕过、防病毒侦察
主机攻防训练:MS17-010、MS08-067、MS10-046、MS12-20等。
3.操作系统基础知识(1周)
Windows系统常用功能及命令
Kali Linux系统常用功能及命令
操作系统安全(系统入侵调查/系统加固基础设施)
4.计算机网络基础(1周)
计算机网络基础、协议、体系结构
网络通信原理、OSI模型、数据传输流程
常用协议分析(HTTP、TCP/IP、ARP等)
网络攻击技术和网络安全防御技术
Web漏洞原理及防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5.数据库基础操作(2天)
数据库基础
SQL语言基础
加强数据库安全
6. 网络渗透(1周)
HTML、CSS 和JavaScript 简介
OWASP前10名
Web漏洞扫描工具
Web入侵工具:Nmap、BurpSuite、SQLMap、其他(Chop Knife、Miss Scan等)
恭喜。学会了这些,基本上就可以找到渗透测试、Web渗透、安全服务、安全分析等与网络安全相关的工作了。另外,如果你研究好等级保护模块,你就可以得到下一份工作。等级保护工程师。薪资范围6,000-15,000
到现在已经过去一个月左右了。你已经成为一个“脚本小子”了。想要进一步探索吗?
如果你想参与网络安全黑客,作者为你准备了一份:282G,全网最全的网络安全资料包。评论区留言即可获取。
7. 脚本编程(初级/中级/高级)
在网络安全领域。编程能力是“脚本小子”与真正黑客之间的关键区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用的工具不能满足实际需求时,往往需要扩展现有工具或者可能需要创建工具或自动化脚本来满足要求。需要特定的编程技能。在分秒必争的CTF比赛中,需要具备一定的编程能力,才能高效地使用自制的脚本工具来实现各种目标。
如果您是从头开始,我们建议您选择一种脚本语言:Python/PHP/Go/Java 并学习对常用库进行编程。 Wamp 和XAMPP 是PHP 环境的推荐选择。IDE强烈推荐Sublime。 · 学习Python编程,学习内容包括:语法、正则、文件、网络、多线程等常用库。推荐:010至30000。不要阅读所有内容。创建漏洞利用并创建一个简单的网络爬虫。 · PHP 基础知识学习语法,创建简单的博客系统,并学习PHP 或Python 框架(可选)。 Bootstrap 或CSS 布局。
8.超级黑客
这部分内容对于没有基础知识的同学来说还是比较遥远的,所以我们就不细说了,附上学习路线。
网络安全工程师企业级学习路线
如果图片太大且被平台压缩导致看不清,请在评论区点赞留言。我一定会回复
视频支持材料国内外网络安全书籍和文档工具
当然,除了支持视频之外,我们还整理了各种文档、书籍、资源工具,并进行了分类。
有些视频教程是我购买的,其他平台上没有。
以上关于#STM32类别概述、下载程序、开机流程分析的相关内容来源网络,仅供大家参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91236.html