zoukankan      html  css  js  c++  java
  • 《Cortex-M0权威指南》之Cortex-M0编程入门

    转载请注明来源:cuixiaolei的技术博客


    嵌入式系统编程入门 

    微控制器是如何启动的

      为了保存编译号的二进制程序代码,大多数的现代微控制器都会包含片上flash存储器。有些微控制器还可能有一个独立的启动ROM,里面装有Bootloader程序。微控制器启动后,再执行flash的用户程序前,Bootloader会首先运行。

      在复位流程中,处理器会取出MSP的初始化值和复位向量,然后开始执行复位处理,这些信息都放在一个叫做启动代码的程序文件中。启动代码中的复位处理可能还会旅行初始化的职责,比如时钟控制电路和锁相环PLL的初始化。有些情况下,系统初始化的工作是放在C程序的main()函数中进行的。

      对于用C开发的应用程序,在进入主流程之前,启动代码已经开始执行,并且对应用程序用到的变量和内存等进行初始化。启动代码无需编程者担心,C开发工具会将其自动插入程序映像中。

      执行完C启动代码后,应用程序就开始执行了,应用程序通常包含下面几个部分:

    • 硬件初始化(如时钟,PLL和外设)
    • 应用程序的处理部分
    • 中断服务程序

      另外,应用程序可能会用到C语言库,此时,C编译器/链接器会将所需要的库函数加入编译好的程序映像中。

      硬件初始化可能会涉及到一系列的外设、系统控制寄存器和中断控制器。如果在复位处理时没有进行处理,系统时钟控制和PLL此时也需要进行初始化。外设初始化完成后,程序就可以继续执行应用程序部分了。

    嵌入式程序设计

      应用程序处理流程的实现方式如下:

    • 轮询,如图4-4
    • 中断驱动,如图4-5
    • 轮询和中断组合使用,如图4-6
    • 处理并发任务(操作系统),如图4-7

     

      对于复杂的应用程序,可以使用实时操作系统(RTOS)。RTOS将处理器时间划分为多个时间片,在有多个应用进程运行时,只有一个进程会获得时间片。使用RTOS,需要有定时器产生周期性的中断请求,当一个时间片的时间到时,RTOS的任务调度器会由定时器中断触发,调度器判断是否需要执行上下文切换。如果需要进行上下文切换,调度器会暂停当前执行的任务,并切换到下一个准备就绪的任务。


    输入和输出

      在许多嵌入式系统中,输入或输出可能会局限与简单的电子接口,如uart、IO、LCD、SD卡等,这些接口由微控制器的外设控制。

      Cortex-M0的寄存器映射到了系统空间,并且它们还控制这外设,外设的典型初始化步骤如下:

    1. 配置时钟控制回路,使能外设的时钟信号,如果有必要的话,初始化相应的引脚。在许多低功耗控制器中,时钟信号被分为了多路,而且为了降低功耗,它们可以单独开关。大多数时钟信号默认都是关闭的,配置外设前需要使能相应的时钟。有些情况下,还可能需要使能外设总线系统的时钟。
    2. 配置IO口。大多数控制器的引脚都是复用的,需要对IO引脚进行相应的功能配置。
    3. 配置外设。大多数外设有自己的控制寄存器,为了确保外设工作正常,需要对寄存器进行配置。
    4. 配置中断。如果外设操作需要中断处理,需要配置中断控制器(NVIC)。

    开发流程

       在嵌入式开发中,可以使用C、汇编、C和汇编混合编程。程序代码的生成流程如下图所示。

      C/汇编通过对应的编译器生成相应的目标文件,链接器脚本加载分散的目标文件生成可执行映像。

      混合编程的实现是因为C编译器提供了内联汇编器,以便在C程序文件中内联汇编代码。


    C和汇编的选择


    程序映像详解

      Cortex-M0的程序映像一般包括以下几部分:

    • 向量表
    • C启动代码
    • 程序代码(应用程序代码和数据)
    • C库代码(C库函数的程序代码,链接时插入)

     向量表

  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/xiaolei-kaiyuan/p/6064666.html
Copyright © 2011-2022 走看看