×
嵌入式开发 > 详情

基于IAR集成开发平台的ARM程序设计方法

发布时间:2020-06-29 发布时间:
|

引言

在项目开发,特别是中小型项目开发中,为了降低开发难度和开发成本,常选择不加载操作系统的方案。本文选择IAR嵌入式开发平台,在不加载操作系统的前提下,使用C语言(约95%)和汇编语言(约5%),对以ATMEL公司的AT91M40800芯片(ARM7TDMI内核)为主芯片的工业控制系统进行了软件开发。



硬件构架

系统的整体硬件框架如图1所示,该系统基本包括了目前工业控制系统所需要的各种功能,其软件开发十分具有代表性。

IAR集成开发环境

IAR开发平台是瑞典IAR公司开发的基于最新C/C++编译和调试技术的综合开发平台。该平台是一套完整的集成开发环境,可以完成创建工程、编辑文件、编译、汇编、连接和调试应用程序的所有工作;同一个工作空间可放多个工程;可针对单个源文件,一组源文件或者全部源文件进行配置;提供工程模板,支持几乎所有ARM内核;提供ANSI标准C编译器、ISO/ANSI C 和嵌入式C++库;支持包括Wiggler JTAG接口等多种JTAG;提供了多种代码优化方式。

IAR生成的目标代码分为调试版本(Debug)和发行版本(Release)两种。其中Debug目标代码的地址定义在SRAM中,将被下载到SRAM中执行;Release目标代码的地址定义在Flash中,最终大部分在Flash中执行。在程序编译之前需要根据模板编写Debug.xcl和Release.xcl这两个内存分配文件。在IAR提供的工程模板基础上,需要修改的地方有:

-DROMSTART=2000000
-DROMEND=200FFFF
//ROM的地址段
-Z(CODE)INTVEC=00-3F
-DRAMSTART=2010000
-DRAMEND=207FFFF
//RAM的地址段
-D_USR_STACK_SIZE=20000
//栈的大小
-D_SVC_STACK_SIZE=50
-D_FIQ_STACK_SIZE=100
-D_ABT_STACK_SIZE=50
-D_UND_STACK_SIZE=50
-D_IRQ_STACK_SIZE=1000
-D_HEAP_SIZE=2000
//堆的大小

启动代码设计

通常C语言是从main函数开始执行的,在没有操作系统的情况下,对main函数的初始化工作由启动代码来完成,包括硬件初始化、堆栈初始化、各种寄存器的初始化等。

在完成所有的初始化工作以后,用一条跳转指令进入C程序的main函数,程序的控制权转移到C程序。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
scsi接口