<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于IAR集成開(kāi)發(fā)平臺的ARM程序設計方法

基于IAR集成開(kāi)發(fā)平臺的ARM程序設計方法

作者: 時(shí)間:2012-10-29 來(lái)源:網(wǎng)絡(luò ) 收藏

  引言

  在項目開(kāi)發(fā),特別是中小型項目開(kāi)發(fā)中,為了降低開(kāi)發(fā)難度和開(kāi)發(fā)成本,常選擇不加載操作系統的方案。本文選擇嵌入式開(kāi)發(fā)平臺,在不加載操作系統的前提下,使用C語(yǔ)言(約95%)和匯編語(yǔ)言(約5%),對以ATMEL公司的AT91M40800芯片(ARM7TDMI內核)為主芯片的工業(yè)控制系統進(jìn)行了軟件開(kāi)發(fā)。


圖1 系統硬件結構



圖2 系統軟件框架

  硬件構架

  系統的整體硬件框架如圖1所示,該系統基本包括了目前工業(yè)控制系統所需要的各種功能,其軟件開(kāi)發(fā)十分具有代表性。

  集成開(kāi)發(fā)環(huán)境

  開(kāi)發(fā)平臺是瑞典IAR公司開(kāi)發(fā)的基于最新C/C++編譯和調試技術(shù)的綜合開(kāi)發(fā)平臺。該平臺是一套完整的集成開(kāi)發(fā)環(huán)境,可以完成創(chuàng )建工程、編輯文件、編譯、匯編、連接和調試應用程序的所有工作;同一個(gè)工作空間可放多個(gè)工程;可針對單個(gè)源文件,一組源文件或者全部源文件進(jìn)行配置;提供工程模板,支持幾乎所有ARM內核;提供ANSI標準C編譯器、ISO/ANSI C 和嵌入式C++庫;支持包括Wiggler JTAG接口等多種JTAG;提供了多種代碼優(yōu)化方式。

  IAR生成的目標代碼分為調試版本(Debug)和發(fā)行版本(Release)兩種。其中Debug目標代碼的地址定義在SRAM中,將被下載到SRAM中執行;Release目標代碼的地址定義在Flash中,最終大部分在Flash中執行。在程序編譯之前需要根據模板編寫(xiě)Debug.xcl和Release.xcl這兩個(gè)內存分配文件。在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
  //堆的大小

  啟動(dòng)代碼設計

  通常C語(yǔ)言是從main函數開(kāi)始執行的,在沒(méi)有操作系統的情況下,對main函數的初始化工作由啟動(dòng)代碼來(lái)完成,包括硬件初始化、堆棧初始化、各種寄存器的初始化等。

  在完成所有的初始化工作以后,用一條跳轉指令進(jìn)入C程序的main函數,程序的控制權轉移到C程序。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>