1. boot = boot lo​​ad​​er =引导程序
  2. BOOT中含有代码:CPU、Memory、外围接口
  3. Flash中的Boot代码:初始化CPU、Memory、简单外设
  4. 把Flash中的OS移到内存里 → OS就会引导起来


  1. 最大的作用:
  1. 系统初始化,分配内存,
  2. 将应用代码(可以带OS,也可以不带)从FLASH中导入内存,
  3. 最后将运行指针指向这段代码,把控制权交给应用程序
  1. 本质:
  1.   Bootloader是在操作系统运行之前执行的一小段程序,
  2. 通过这一小段程序,我们可以初始化硬件设备、建立内存空间的映射表,
  3. 从而建立适当的系统软硬件环境,为最终调用操作系统内核做好准备。
  1.   意思就是说如果我们要想让一个操作系统在我们的板子上运转起来,
  2. 我们就必须首先对我们的板子进行一些基本配置和初始化,
  3. 然后才可以将操作系统引导进来运行。
  1. 简单嵌入式​​计算机​​,系统上电后,
  1. 没有操作系统的通常直接进入用户应用程序
  2. 有操作系统的计算机中,上电后首先运行的是一个标准化的软件—–引导程序(bootloader)
  1. 固化在​​ROM​​、FLASH中的软件称为固件。
  2. 嵌入式系统软件的四个层次。
  1. A,引导加载程序—bootloader。
  2. B,操作系统内核(任务管理,内存管理,设备驱动)
  3. C,文件系统,​​图形​​界面,
  4. D,应用软件。
  1. bootloader两种操作模式:
  1. 启动加载模式,自动加载并启动操作系统,不需要用户参与。
  2. 下载模式,用户可通过系统控制台命令行的方式向系统发出控制命令,用户常在该模式下使用下载命令,通过串口、以太网等从开发机下载文件。

  



MCU堆空间和栈空间

【​​关于MCU堆空间和栈空间,你了解多少? | MCU加油站 (eetrend.com)​​】

栈 stack 空间 堆 heap 空间

  • 栈 stack 空间:存储函数参数和局部变量,所需空间由系统自动分配,回收也由系统管理,无需人工干预

    堆 heap 空间:存储动态分配的内存块,分配和释放空间均由程序员控制,有可能产生内存泄漏

  • 栈 stack 空间:严格后进先出的数据结构,可用空间永远都是一块连续的区域

    堆 heap 空间:对空间在不断分配和释放空间的过程中,可用空间链表频繁更新,造成可用空间逐渐碎片化,每块可用空间都很小

  • 栈 stack 空间:默认大小只有几M的空间,生长方式是向下的,也就是向着内存地址减小的方向消耗空间

    堆 heap 空间:理论大小与几G的空间,生长方式是向上的,也就是向着内存地址增大的方向消耗空间

  • 栈 stack 空间:有计算机底层的支持,压栈和出栈都有专门的指令,效率较高

    堆 heap 空间:通过函数动态获取空间,涉及可用空间链表的扫描和调整以及相邻可用空间的合并等操作,效率相对较低

  

  单片机应用中,堆栈是个特殊存储区,堆栈属于RAM空间的一部分,堆栈用于函数调用、中断切换时保存和恢复现场数据。堆栈中的物体具有一个特性:第一个放入堆栈中的物体总是被最后拿出来, 这个特性通常称为先进后出 (FILO—First-In/Last-Out)。 堆栈中定义了一些操作, 两个最重要的是PUSH和POP。 PUSH(入栈)操作:堆栈指针(SP)加1,然后在堆栈的顶部加入一 个元素。POP(出栈)操作相反,出栈则先将SP所指示的内部ram单元中内容送入直接地址寻址的单元中(目的位置),然后再将堆栈指针(SP)减1。这两种操作实现了数据项的插入和删除。

嵌入式系统中的BOOT:引导程序(bootloader)_初始化