位置:51电子网 » 技术资料 » 嵌入式系统

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

发布时间:2008/5/27 0:00:00 访问次数:380

  摘  要:本文主要介绍了在不加载操作系统的情况下,如何使用iar软件平台进行基于arm的嵌入式系统开发,包括了底层驱动、i/o控制,中断控制等程序设计。

  引言

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


图1 系统硬件结构


图2 系统软件框架

  硬件构架

  系统的整体硬件框架如图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程序。

  驱动程序设计

  系统的软件框架如图2所示。驱动程序包括设备驱动程序、中断程序以及中断服务程序。首先以flash驱动设计为例。根据flash的datasheet及硬件设计,有以下定义:

  #define flash_base ((volatile ushort *)(0x01000000))
  /*flash的基地址*/
  /*定义flash的操作代码*/
  #define flash_seq_add1   (0x5555)
  #define flash_seq_add2   (0x2aaa)
  #define flash_code1     ((ushort)(0xaa))
  #define flash_code2     ((ushort)(0x55))
  #define id_in_code     ((ushort)(0x90))
  #define id_out_code     ((ushort)(0xf0))
  #define write_code     ((ushort)(0xa0))
  #define chip_erase_code   ((ushort)(0x10))

  然后编写flash功能函数。下面的函数用于验证flash的设备id号:

  -ramfunc-farfunc bool flash_test(void)
  {
  //输入命令序列,manuf_code表示生产编号,device_code表示设备编号
  ushort manuf_code,device_ code;
  *(flash_base + flash_ seq_add1) = flash_code1;
  *(flash_base + flash_ seq_add2) = flash_c

  摘  要:本文主要介绍了在不加载操作系统的情况下,如何使用iar软件平台进行基于arm的嵌入式系统开发,包括了底层驱动、i/o控制,中断控制等程序设计。

  引言

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


图1 系统硬件结构


图2 系统软件框架

  硬件构架

  系统的整体硬件框架如图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程序。

  驱动程序设计

  系统的软件框架如图2所示。驱动程序包括设备驱动程序、中断程序以及中断服务程序。首先以flash驱动设计为例。根据flash的datasheet及硬件设计,有以下定义:

  #define flash_base ((volatile ushort *)(0x01000000))
  /*flash的基地址*/
  /*定义flash的操作代码*/
  #define flash_seq_add1   (0x5555)
  #define flash_seq_add2   (0x2aaa)
  #define flash_code1     ((ushort)(0xaa))
  #define flash_code2     ((ushort)(0x55))
  #define id_in_code     ((ushort)(0x90))
  #define id_out_code     ((ushort)(0xf0))
  #define write_code     ((ushort)(0xa0))
  #define chip_erase_code   ((ushort)(0x10))

  然后编写flash功能函数。下面的函数用于验证flash的设备id号:

  -ramfunc-farfunc bool flash_test(void)
  {
  //输入命令序列,manuf_code表示生产编号,device_code表示设备编号
  ushort manuf_code,device_ code;
  *(flash_base + flash_ seq_add1) = flash_code1;
  *(flash_base + flash_ seq_add2) = flash_c

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!