您的位置 首页 FPGA

《Cortex-M0威望攻略》之Cortex-M0编程入门

嵌入式系统编程入门微控制器是如何启动的为了保存编译号的二进制程序代码,大多数的现代微控制器都会包含片上flash存储器。有些微控制器还可能有一个独立的启动ROM,里面装有Bootloade

  嵌入式体系编程入门

  微操控器是怎么发动的

  为了保存编译号的二进制程序代码,大多数的现代微操控器都会包含片上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的寄存器映射到了体系空间,并且它们还操控这外设,外设的典型初始化过程如下:

  装备时钟操控回路,使能外设的时钟信号,假如有必要的话,初始化相应的引脚。在许多低功耗操控器中,时钟信号被分为了多路,并且为了下降功耗,它们能够独自开关。大多数时钟信号默许都是封闭的,装备外设前需求使能相应的时钟。有些情况下,还或许需求使能外设总线体系的时钟。

  装备IO口。大多数操控器的引脚都是复用的,需求对IO引脚进行相应的功用装备。

  装备外设。大多数外设有自己的操控寄存器,为了保证外设作业正常,需求对寄存器进行装备。

  装备中止。假如外设操作需求中止处理,需求装备中止操控器(NV%&&&&&%)。

  开发流程

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

   

 

  C/汇编经过对应的编译器生成相应的方针文件,链接器脚本加载涣散的方针文件生成可履行映像。

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

  C和汇编的挑选

   

  程序映像详解

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

  向量表

  C发动代码

  程序代码(运用程序代码和数据)

  C库代码(C库函数的程序代码,链接时刺进)

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/215944.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部