LPC2300ADS开发摘录.docx
- 文档编号:26783252
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:16
- 大小:1.62MB
LPC2300ADS开发摘录.docx
《LPC2300ADS开发摘录.docx》由会员分享,可在线阅读,更多相关《LPC2300ADS开发摘录.docx(16页珍藏版)》请在冰豆网上搜索。
LPC2300ADS开发摘录
1、Debugtargetoverview--《DebugTargetGuide》
YoucandebugyourprototypesoftwareusingeitherofthedebuggersdescribedinAXDandarmsdDebuggersGuide,orathirdpartydebugger.Thedebuggerrunsonyourhostcomputer.Itisconnectedtoatargetsystemthatyourprototypesoftwarerunson.
Yourtargetsystemcanbeanyoneof:
·asoftwaresimulator,ARMulator,simulatingARMhardware–ARM硬件平台的仿真软件核
Asoftwaresimulator,ARMulator,issuppliedwithADS.ARMulatorrunsonthesamehostcomputerasthedebugger.Itincludesfacilitiesforcommunicationwiththedebugger.ARMulatorisaninstructionsetsimulator.ItsimulatestheinstructionsetsandarchitectureofARMprocessors,togetherwithamemorysystemandperipherals.
·anARMevaluationordevelopmentboard–ARM公司提供的评估板或开发板
·athird-partyARM-baseddevelopmentboard–第三方公司提供的开发板
·ARM-basedhardwareofyourowndesign.-用户自己设计的电路板
2、《ADS使用合集.pdf》
当将一个ADS工程文件从别处COPY过来的时候如果要想正常使用则应该注意以下事项:
1)、“Edit”->“DebugRelSettings”,在其中的“Linker”->“ARMLinker”的“Output”标签子选项里面应设置好RO,RW,“Options”标签子选项里面应设置好ENTRY地址;
2)、“Linker”->“ARMfromELF”设置好输出文件的格式和路径;
3)、执行“Project”->“RemoveObjectCode…”。
如果红圈内的.c文件前面没有勾的图标的话表示该工程已经编译链接通过,如果需要重新编译则需要先进行“RemoveObjectCode”操作以去除一些和路径、目标文件等有关联的信息。
3、《ARM映像文件、地址映射、启动文件分析》
arm映像文件其实就是可执行文件,包括bin或hex两种格式,可以直接烧到ROM里执行。
在axd调试过程中,我们调试的是axf文件,其实这也是一种映像文件,它只是在bin文件中加了一个文件头和一些调试信息。
域:
映像文件一般由域组成,域最多由三个输出段组成(RO,RW,ZI)。
所谓域,指的就是整个bin映像文件所处在的区域,它又分为加载域和运行域。
对于嵌入式系统而言,程序映像都是存储在Flash存储器等一些非易失性器件中的,而在运行时,程序中的RW段必须重新装载到可读写的RAM中。
简单来说,程序的加载时域就是指程序烧入Flash中的状态,运行时域是指程序执行时的状态。
一般来说flash里的整个bin文件所在的地址空间就是加载域,当然程序一般都不会放在flash里执行,一般都会搬到sdram里运行工作,它们在被搬到sdram里工作所处的地址空间就是运行域。
我们输入的代码,一般有代码部分和数据部分,这就是所谓的输入段,经过编译后就变成了bin文件中ro段和rw段,还有所谓的zi段,这就是输出段。
在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。
对于加载域中的输出段,一般来说RO段后面紧跟着RW段,RW段后面紧跟着ZI段。
在运行域中这些输出段并不连续,但RW和ZI一定是连着的。
ZI段和RW段中的数据其实可以是RW属性。
Code:
显示代码占用了多少字节
ROData:
显示只读数据占用了多少字节。
RWData:
显示读写数据占用了多少字节。
ZIData:
显示零初始化的数据占用了多少字节。
Debug:
显示调试数据占用了多少字节。
ObjectTotals:
显示链接到一起以后生成映像的对象占用了多少字节。
LibraryTotals:
显示已提取并作为单个对象添加到映像中的库成员占用了多少字节。
GrandTotals:
显示映像的真实大小。
GrandTotals=LibraryTotals+ObjectTotals
4、《深入浅出ARM7-LPC213x_214x(上).pdf》
5、《ARM汇编语言官方手册》P85;
《ARM®DeveloperSuitev1.2AssemblerGuide》P86
汇编语言的源代码行的一般格式是:
{label}{instruction|directive|pseudo-instruction}{;comment}
{标签}{指令|伪操作|伪指令}{;注释}
instruction为指令;directive为伪操作;pseudo-instruction为伪指令
Note
Instructions,pseudo-instructions,anddirectivesmustbeprecededbywhitespace,suchasaspaceoratab,evenifthereisnolabel.
{指令|伪操作|伪指令}之前必须加空白空间,如空格或者Tab键;
Allthreesectionsofthesourcelineareoptional.Youcanuseblanklinestomakeyourcodemorereadable.
Labels
Labelsaresymbolsthatrepresentaddresses.Theaddressgivenbyalabeliscalculatedduringassembly.
Theassemblercalculatestheaddressofalabelrelativetotheoriginofthesectionwherethelabelisdefined.Areferencetoalabelwithinthesamesectioncanusetheprogramcounterplusorminusanoffset.Thisiscalledprogram-relativeaddressing.
Labelscanbedefinedinamap.SeeDescribingdatastructureswithMAPandFIELD
directivesonpage2-51.Youcanplacetheoriginofthemapinaspecifiedregisteratruntime,andreferencestothelabelusethespecifiedregisterplusanoffset.Thisiscalledregister-relativeaddressing.
Addressesoflabelsinothersectionsarecalculatedatlinktime,whenthelinkerhas
allocatedspecificlocationsinmemoryforeachsection.
6、《第一章ARM嵌入式系统介绍.pdf》
基本的嵌入式系统硬件=ARM处理器+总线+外围接口+协控制器(常见如中断控制器、存储控制器)
不属于ARM核的,对ARM核来说都叫外设。
外设分为集成在芯片内部的和在芯片外部的。
所有的ARM外设都是memory-mapped,即在ARM内部看来要操作这些外设,ARM核只要给某几个寄存器赋值就行,这些寄存器是和相应的外设对应的,且这些寄存器的地址=某个专门基址+外设相应的偏移量。
控制器是一类用于实现复杂功能的外设,重要的控制器有memory控制器和中断(interrupt)控制器。
中断控制器分为:
标准中断控制器和矢量中断控制器(VIC)
标准中断控制器:
一个中断请求对应一个中断服务程序地址。
矢量中断控制器:
一个中断请求对应一个中断矢量(中断矢量=[中断服务程序地址,中断优先级])。
矢量中断控制器中引入了中断优先级概念。
7、《ARM映像文件、地址映射、启动文件分析.ppt》
Code:
显示代码占用了多少字节;
ROData:
显示只读数据占用了多少字节;
RWData:
显示读写数据占用了多少字节;
ZIData:
显示零初始化的数据占用了多少字节;
Debug:
显示调试数据占用了多少字节;
ObjectTotals:
显示链接到一起以后生成映像的对象占用了多少字节。
LibraryTotals:
显示已提取并作为单个对象添加到映像中的库成员占用了多少字节;
GrandTotals:
显示映像的真实大小。
GrandTotals=LibraryTotals+ObjectTotals;
8、《__irq的使用.pdf》
__irq为一个标识,用来表示一个函数是否为中断函数。
对于不同的编译器,__irq在函数名中的位置不一样,例如:
ADS编译器中:
void__irqIRQ_Eint0(void);
Keil编译器中:
voidIRQ_Eint0(void)__irq;
但是其意义一样,它所完成的任务是标识该函数为中断函数,在编译器编译是调用此函数时,先保护函数入口现场,然后执行中断函数,函数执行完毕,恢复中断现场,这整个过程不需要用户重新编写代码来完成,由编译器自动完成。
因而这也给不具备中断嵌套功能的ARM系统带来了问题,若使用__irq时有中断嵌套产生,这现场保护就会混乱。
在前一篇日志“LPC2000系列中断嵌套处理”中,自己编写中断入口现场保护代码,并不使用__irq标识符号,就是这个原因。
9、《ARM-CAN应用培训.ppt》
10、《LPC2300系列ARM-VIC.pps》
中断初始化:
IRQ中断应用流程(中断初始化+中断响应+中断执行完后续操作)
清除中断标志位--一般为该硬件设备对应的中断控制寄存器
清除向量优先级寄存器--表示向量中断结束
外设中断进行管理:
决定哪些中断源可以产生中断(中断使能)
产生哪种类型的中断(中断类型选择)(建议只设置一个FIQ中断)(IRQ具有可编程的中断优先级)
使用什么中断服务程序(ISR)
11、《LPC2300系列ARM-定时器计数器.pps》
12、《LPC2300系列ARM-UART.pps》
13、《LPC2300系列ARM-脉宽调制器.pps》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LPC2300ADS 开发 摘录
![提示](https://static.bdocx.com/images/bang_tan.gif)