BootLoader与MCU启动过程
STM32那点事(1)_STM32F40_41xx启动文件详解
STM32 官方为广大开发者提供一套统一开发固件,主要是屏蔽寄存器封装,提供初始化等功能,较少开发者负担。只需要调用相关模块封装,对相关结构提初始化即可,较少开发调试时间。
ARM之Cortex M3的启动过程
目前,多数MCU厂商都提供一个启动文件。当然,编程者也可以自己编写启动文件,具体编写要求ARM的网站上都有相关文档进行说明。下面分析一下STM32启动文件startup_stm32f407xx.s
STM32F0单片机快速入门三 MCU启动过程 这篇可以好好看看,来龙去脉讲得比较清楚
最初芯片内是不能存储代码的,需要外挂EPROM,就是下面这种带个小玻璃窗的存储器。擦除 EPROM 中的代码需要用紫外线照射几分钟才行。
后来出现了 Flash 这种可电擦写的存储器,并集成在了单片机内部。
后来,有芯片厂商把这种代码在出厂时就固化在芯片里,极大的方便了代码下载和程序更新。STM32F030内部就固化了Bootloader。当我们把一个引脚 BOOT0 拉高的同时,重新给芯片上电或复位,就会触发Boootloader进入运行。此时我们通过单片机的串口就可以把新程序发送给单片机,发送完后把 BOOT0 拉低,再复位单片机,新程序就会运行起来。
Startup Code 可以译为启动代码。单片机上电或复位后最先执行的一段代码。一般主要会完成堆栈指针的设置,复位向量的获取和加载,然后初始化变量,最后跳转到用户代码。在详细看启动代码之前,我们先看一下 STM32F030 的内存映射。
STM32(一)之启动文件简介
本文以STM32F103为例,介绍STM32的启动文件。
一般而言,系统上电后第一个执行的是由汇编所编写的启动文件,其主要工作为一下五部分:
(1)、初始化堆栈指针SP=_initial_sp
(2)、初始化PC指针,令其=Reset_Handler
(3)、初始化中断向量表
(4)、配置系统时钟
(5)、调用C库函数_main初始化用户堆栈,从而最终调用main函数进入C的世界
这上述的五个功能一般都由STM32官方在它们提供的官方库里的ASM文件(汇编启动文件)startup_stm32f10x_hd.s实现,因此在实际中只需要根据所用编译软件的不同选择对应的ASM文件,然后将之加入编译的工程中,再编写自己的main文件便可,而系统时钟已在ASM文件中设为72M,以及向量表已经设置完成(向量表的介绍在别的文章里介绍)。
kEIL5环境下移置STM32库文件 打开Keil5新建工程,Project-New Project,并在新工程目录下新建5个文件夹,STARTUP、CMSSIS、FWLIB、USER、DOC;
启动文件、库文件是和自己写的c文件一起编译之后,一块烧到flash里面的。
库函数也是用到什么外设的库,才把它的库文件加入工程中。
BootLoader与MCU启动过程相关推荐
- 浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解
内容提要 注:本文摘自NXP工程师胡恩伟的微信公众号"汽车电子expert成长之路",大家感兴趣可以关注一下. 引言 1. S32K1xx系列MCU启动过程详解(startup_S ...
- TI OMAP Bootloader Project 关于启动过程
以下wiki详细讲解了启动过程 http://omappedia.org/wiki/Bootloader_Project http://omappedia.org/wiki/OMAP3_U-Boot_ ...
- Bootloader启动过程
1.作用 嵌入式系统的引导加载程序,系统上电后运行的第一段程序.在完成对系统的初始化任务后,它会将非易失性存储器(通常是FLASH)中的Linux内核拷贝到RAM中,然后跳转到内核的第一条指令处继续执 ...
- 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)
1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...
- Linux内核启动过程和Bootloader(总述)
1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader ...
- BootLoader(U-Boot)启动过程记录
BootLoader(U-Boot)启动过程记录 定义 Bootloader终极目的是引导内核,加载内核到内存然后跳转到内核的地方执行,在加载之前也会做一些硬件的初始化等等操作.启动模式分为两种:启动 ...
- linux系统需要占多大的内存,linux启动过程Bootloader、kernel
256M可以推1080P屏幕 128M可以基本运行并安装 256M可以勉强开启特效 512M流畅运行特效 当然内存越大越好,特效与显卡也有关系 和windows相比,当然linux对内存的需求小 Bo ...
- Tiva C(TM4C)的bootloader和启动过程与stm32对比
gossip: 最近在咸鱼捡了个123GXL的板子,板子没到就先装好了环境,然后看了看资料,前天板子到了,先点了个灯,然后把板子扔到一边又继续看资料去了emmm... 看资料的时候发现有些东西挺有意思 ...
- Analyzing the Linux boot process-分析Linux启动过程
本文翻译自Analyzing the Linux boot process. 箴言:了解运行良好的系统是将来处理不可避免的故障的很好准备 开源软件领域中流行的最为古老笑话:"the code ...
最新文章
- springmvc3.2+spring+hibernate4全注解方式整合(一)
- 干货|python基础知识总结
- hdu1874(畅通工程续)
- R语言获得所有Aesthetics(美学映射)参数:使用长表输出、使用宽表输出
- VTK:网格之HyperTreeGridSource
- 根据用户查进程_【磨叽教程】Android进阶教程之在Android系统下各进程之间的优先级关系...
- 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
- axure弹窗关闭_干货来袭,Axure插入图标的几种办法
- goroutine 相关知识8
- MySQL 对 CREATE TABLE IF NOT EXISTS SELECT 的处理
- 求100以内素数C++
- 使用maven打jar包
- ubuntu 安装 flash 软件 卸载
- 打印纸张尺寸的简单说明
- 读书笔记:《少有人走的路1----心智成熟的旅程》
- 实用网站推荐(3):菜鸟教程
- 动物网页html5设置思想,网站设计思想
- Hexo sakura整理
- 2022-2028全球与中国数据虚拟化解决方案市场现状及未来发展趋势
- 【python】详解pandas.DataFrame.resample根据时间聚合采样(一)
热门文章
- c语言combine函数,combine
- python2.7除法_对python中的float除法和整除法的实例详解
- 使用 Blender* 重新拓扑 VR 和游戏素材
- Android Studio 3.5 Canary 12 发布
- Elasticsearch 5
- 酷!一键构建我自己的PHP框架的开发环境
- VS2015配置并运行汇编(一步一步照图做)【vs2017的链接在最后】
- 比较Spring AOP与AspectJ
- 8)排序④排序算法之归并排序
- Python urllib和urllib2模块学习(一)