什么是启动代码?
    启动代码是系统上电或者复位后运行的第一段代码,是进入C 语言的main 函数之前需要执行的那段汇编代码。STM32的启动代码在startup_stm32f10x_hd.s
启动代码有何用?
    它的作用是在用户程序运行之前对系统硬件及软件环境进行必要的初始化并在最后使程序跳转到用户程序。它直接面对ARM 处理器内核及硬件控制器进行编程,所执行的操作与具体的目标系统紧密相关。
    C语言程序的运行需要具备一定的条件,如分配好外部数据空间、设置初始堆栈指针、配置时钟、设置中断向量入口、设置初始程序计数器(指向main())等。另外,汇编代码可以更直接地对硬件进行操作,效率更高,这对启动中断等对时间要求更高的情况是非常必要的
什么是Bootloader?
    Bootloader 不是一段代码,它是一个具有引导装载功能的完整的程序,如可以引导装载linux的vivi,uboot,以及通常PC机上的BOIS程序等。
启动代码和Bootloader关系?
    Bootloader 包含了相应的启动代码,也就是说,启动代码是Bootloader的一部分,是所有相应应用程序的一部分。
 
 
 
  bootloader的一个很重要的能力是能实现程序跳转,即从一个完整的程序跳转到另一个完整的程序进行运行;在嵌入式系统中,bootloader一个很重要的功能是更新程序,要求bootloader不仅能接收数据,还能把数据写入flash中
  在STM32中,ST官方在单片机内部嵌入了一个bootloader,所以可以使用UART进行下载;如果ST官方的bootloader有哪一点我们不满意,也可以自己编写bootloader,当然也可以实现几乎和官方bootloader一样的功能,一般我们编写自己的bootloader用于在单片机不断电的情况下通过网络等方式远程更新单片机的程序(不是自己编写的bootloader),自己编写的bootloader也称为IAP
 
 
  不同于bootloader的接收数据,数据写入FLASH(无法直接写入flash,因为数据的接收是用UART等方式)从而实现更新程序,ST-LINK仿真器更新程序的方式是直接操作flash,类似于操作EEPROM等存储器,ST-LINK从下载程序角度来看也是bootloader,
  
 
 

STM32 启动代码 bootloader的更多相关文章

  1. STM32启动代码分析 IAR 比较好

    stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在c ...

  2. STM32启动代码分析及其汇编学习-ARM

    STM32 启动代码 Author By YuCloud 边看启动文件边学汇编 汇编 see ARM: Assembler User Guide see: https://blog.csdn.net/ ...

  3. STM32启动代码分析

    STM32启动文件简单分析(STM32F10x.s适用范围)定时器, 型号, 名字在<<STM32不完全手册里面>>,我们所有的例程都采用了一个叫STM32F10x.s的启动文 ...

  4. STM32启动代码详细分析

    最近需要学习iap的功能,因此离不开stm32的启动代码的分析,以前看了很多遍,都看不懂,读书百遍,其义自见,因此我有看了一遍,下面的文章,挺好的,因此转载: 在上电复位后,我们都知道会先运行启动代码 ...

  5. iar stm32 启动代码片段分析

    今天查看了 iar 上面的启动文件,好奇堆栈指针到底是什么时候赋值的,所以就仔细的阅读了代码和相关手册,找到了答案. 首先,芯片启动后,会从ROM的首地址处进行执行,那么我们从 linker 里面找找 ...

  6. bootloader启动代码init.s解析----IRQ中断处理函数

    bootloader启动代码init.s解析----IRQ中断处理函数 init.s源代码如下: ;///////////////////////////////////////////// ;opt ...

  7. 启动代码和Bootloader区别

    很多人都会把两者混淆,所以这里稍微说一下. 启动代码和Bootloader有点类似于类和结构体的关系,也就是说结构体只是一种很特殊很特殊的类,但不能说类是一种结构体. 也就是说可以说启动代码是Boot ...

  8. STM32启动文件深度解析

    STM32启动过程全面解析,包括启动过程的介绍.启动代码的陈列以及深入解析.相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化.ARM7/ARM9 ...

  9. 专家揭秘:STM32启动过程全解

    电子发烧友网核心提示:本文主要阐述了STM32启动过程全面解析,包括启动过程的介绍.启动代码的陈列以及深入解析. 相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方 ...

随机推荐

  1. Jetson tx1 安装cuda错误

    前两天安装Jetpack3.0的时候,看着网上的教程以为cuda会自动安装上,但是历经好几次安装,都安装不上cuda,也刷了好几次jetpack包.搜遍了网上的教程,也没有安装上.错误如下图所示: 这 ...

  2. idea添加源代码目录,编译代码出现时钟样式

    项目结构需要有一个target目录,需要一个src目录,

  3. (数据科学学习手札04)Python与R在自定义函数上的异同

    自编函数是几乎每一种编程语言的基础功能,有些时候我们需要解决的问题可能没有完全一致的包中的函数来进行解决,这个时候自编函数就成了一样利器,而Python与R在这方面也有着一定的差别,下面举例说明: P ...

  4. 45-Identity MVC:注册逻辑实现

    1-注册页Register.cshtml <h3>Register</h3> @model MvcCookieAuthSample.ViewModel.RegisterView ...

  5. Oracle 完全理解connect by-详细脚本-可实战

    狒狒Q971751392 未来星开发团队--狒狒(QQ:9715234) oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们 ...

  6. Android之线程安全的单例模式,Adapter注意事项之引用传值

    线程安全的单例模式单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static Fe ...

  7. iOS-Debug Symbol(调试符号)

    Debug Symbol(调试符号) 编译警告 从svn下载下来的文件,到处都是编译警告,看着不爽,找下原因,没想到还是一条大鱼 warning: (i386) /UsersLibrary/Devel ...

  8. 最火的.NET开源项目[转]

    综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...

  9. [Binary Search] Leetcode 35, 74

    35. Search Insert Position Description Given a sorted array and a target value, return the index if ...

  10. 点击查看大图Activity

    1.使用方式 Intent intent = new Intent(FriendCircleActivity.this, ImageGralleryPagerActivity.class);//0,索 ...