版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——AT91SAM9261处理器获得开始AT91SAM9261处理器获得开始
1.介绍
这个应用程序笔记是为了帮助读者成为AtmelARM?Thumb?-basedAT91SAM9261处理的熟悉者.
它详细描述了个简单工程,这个工程使用了浮现在AT91SAM9261芯片上的几个重要特性.这包括如何设置微处理器才能执行这个应用程序,以及如何添加自己的功能.通过这个指南,读者应当能够从零开始成功开始一个新工程.
这个文档也说明白为编译和运行一个软件工程,如何建立和使用一个GNUARM工具链.注意那个GettingStarted范例已经移植并并包含在IAR?EWARM4.41A中;当使用这个版本时,读者应当忽略‖建立工程‖部分.
为了能够有效地使用这个文档,读者应当有ARM内核方面的体验.对于更多有关ARM内核架构的资料,请参考从http://.得到的相应文档.
要求
这些软件提供这个应用程序笔记需要的几个组件:?AT91SAM9261-EK评估板
?运行在Microsoft?Windows?2000/XP下的计算机?一个ARM交织编译工具链(例如YAGARTO)?AT91-ISPV1.8或更高
3.用软件例子获得开始
这部分描述如何编程一个基本应用程序,这帮助你变成AT91SAM9261处理器的熟悉者.它分成两个主要部分:第一个覆盖例子的特性(它做什么,使用外设做什么);另一个描述编程方面.
3.1特性3.1.1特点
示范程序使得开发板上的两个LED以固定速率闪烁.对于第一个LED使用定时器产生速率;其次个使用基于1MS间隔的Wait函数.闪烁可以使用按键去中止(每个LED一个).虽然这个软件简单,但它用几个外设建立了一个基本的操作系统.正如此,它对于一些欲成为使用AT91SAM系列处理器的熟悉者是一个好的开始点.
3.1.2外设
为了执行上述部分的操作描述,软件例子使用了下面属性的设置:
?并行输入/输出(PIO)控制器?定时计数器(TC)
?周期间隔定时器(PIT)?先进中断控制器(AIC)?调试单元(DBGU)
板上LED和按键连接到芯片上的标准输入/输出引脚;这些是由PIO控制管理.此外,当一个引脚的状态改变时可能有一个控制器产生一个中断;按键被构造有此行为.
TC和PIT是用于产生两个基准时钟,以获得LED的闪烁速率.它们两者是使用中断模式;TC以固定的速率触发一个中断,每次时间触发LED状态(开/关).PIT每一MS触发一个中断,每一间隔一个变量加一;Wait函数监视这一变量为触发其次个LED的状态提供确切的延时.使用需要的AIC管理中断.它允许为每个源配置一个单独的向量;处理PIO,TC和PIT使用了三个不同的函数.
最终,使用一个附加的外设用于在一个串行线上输出调试跟踪:DBUG.具有在代码的关键点固件发送调试跟踪可以极大帮助调试进程.
3.1.3评估套件
引导
AT91SAM9261具有内部160KSRAM特点.此外,它提供一个外部总线接口(EBI),允许连接外部存贮器;在AT91SAM9261评估套件上一个64MBSDRAM芯片被提供.GettingStarted范例可以被编译并装载在外部SDRAM上.
按键
AT91SAM9261评估板具有四个按键特点,连接到脚PA24,PA25,PA26和PA27.当压下时,在相应的PIO线上促使一个规律低电平.
GettingStarted范例使用后面的两个按键(PA26和PA27).
LED
在AT91SAM9261-EK上有两个通用绿色LED,一样的一个黄色电源LED;它们被分别接到脚PA13,PA14和PA23.在一个绿色LEDPIO线上置规律AT91SAM9261-EK电平低开启它;相反,在黄色电源LEDPIO线上置规律高电平关闭它.范例使用了两个绿色的LED(PA13和PA14).
调试单元
在AT91SAM9261上,调试单元的DRXD和DTXD信号分别使用脚PA9和PA10.
3.2实现
依照从前的陈述,范例定义以上使用的几个外设.它还必需提供微处理器启动所必要的代码.在这个部分详细描述这两个方面,适当的时候,使用源代码解释.
3.2.1C-Startup
大多数嵌入式应用程序是用C写的代码.这使得程序简单明白,更可移植和模块化.无论如何,使用C语言要求初始化几个组件.这些初始化进程必需用汇编语言执行,并分类成一个文件作为C-startup的引用.C-startup代码必需:
?Provideexceptionvectors提供向量
?Initializecriticalperipherals初始化临界外设?Initializestacks初始化栈
?Initializememorysegments初始化存贮段
这些部分描述在下面的段落.关于启动代码更详细的资料可以在AT91AssemblerCodeStartupSequenceforCCodeApplicationsSoftware应用笔记(文献号2644)找到,availableonhttp://..
异常向量
当一个异常发生时(如数据中断,没有定义的指令,IRQ,等等),内核马上跳到位于地址0X00和0X1C之间8个之一的指令.
假使程序不需要处理异常,相应指令可以简单地设置为一个无限循环.即分枝到同一地址.对于被处理的向量,一个分枝指令到必需提供的函数.由于地址0X00是用于复位之后,安排的分枝总是跳到代码的开始.
在这个例子中,仅有关的向量是IRQ的一个(不包括复位向量).它必需简单地分枝到IRQ处理程序.这个描述在第4页的部分.所有8个向量的代码看上去像这样:reset_vector:
ldrpc,=reset_handlerundef_vector:
bundef_vector/*未定义指令*/swi_vector:
bswi_vector/*软中断*/pabt_vector:
ldrpc,=pabt_handler/*预捕获中断*/dabt_vector:
ldrpc,=dabt_handler/*数据中断*/rsvd_vector:
brsvd_vector/*保存*/irq_vector:
birq_handler/*IRQ:读AIC*/fiq_vector:
bfiq_vector/*快中断*/
异常向量:IRQ处理
IRQ处理的主要用途是为行将发生的中断捕获正确的跳转地址.这个信息在AIC的中断向量寄放器(IVR)中(见10页上的3.2.3部分).一旦地址被装载,处理仅仅分枝到它.做这个如下:ldrr14,=AT91C_BASE_AICldrr0,[r14,#AIC_IVR]bxr0
寄放器r0到12没有存入,这意味着它们所有模式(几乎)是共享.由于r0-r3和r12由ARMC调用约定定义为捕获寄放器,它们必需保存从前的跳转.r14包含中断处理返回地址加4,这样它也必需被减然后保存.下面的代码在栈上保存寄放器并跳转到中断向量:
subr14,r14,#4
stmfdsp!,{r0-r3,r12,r14}ldrr14,=AT91C_BASE_AICldrr0,[r14,#AIC_IVR]bxr0
最终步骤是应答AIC中行将的中断(由在中断命令寄放器的END中写入任何东西),恢复寄放器然后跳回到主程序:
ldrr14,=AT91C_BASE_AICstrr14,[r14,#AIC_EOICR]ldmfdsp!,{r0-r3,r12,pc}^
注意这样一个处理不允许更高级中断(由于当内核进入IRQ模式时IRQ被屏蔽).
低级初始化
初始化进程的第一步是配置临界外设:
?主振荡器和它的PLL?先进中断控制器?看门狗
这些操作经常被分组成一个C函数.由于函数可能尝试访问栈,栈指针(r13)必需在调用之前设置到存贮器的顶端:
ldrsp,=STACK_ADDR
ldrr0,=AT91C_LowLevelInitmovlr,pcbxr0
这些传递有效之后,程序可以跳到主应用程序.
下面的部分说明为什么这些外设组成临界区,并详述配置它们要求的正确操作.
低级初始化:主振荡器和PLL
复位之后,芯片使用慢时钟运行,节奏是32KHz.为了运行全速,主振荡器和它的锁相环A(PLLA)必需被配置.两者可以在电源管理器(PMC)中配置.
第一步是允许主振荡器并等待它稳定.写振荡器启动时间和PMC的主振荡器寄放器(MOR)的MOSCEN位,开始振荡器;当PMC状态寄放器的MOSCS位改变置位时,出现稳定.下随代码片断履行这两个操作:
AT91C_BASE_PMC->PMC_MOR=(AT91C_CKGR_OSCOUNT
while(!(AT91C_BASE_PMC->PMC_SR
通过查找产品手册中的DC特性,正确地计算振荡器启动时间值.这里是对于AT91SAM9261值的例子:
振荡器频率范围:3≤fOsc?20
EK板上振荡器频率:fOsc=18.432MHz
振荡器启动时间:2ms?tStartup?2ms
1.4ms启动的值:OSCCOUNT=(32768×0.0014)/8=62ms启动的值:OSCCOUNT=(32768×0.002)/8=84ms启动的值:OSCCOUNT=(32768×0.004)/8=16
一旦振荡器开始并稳定,PLLA可以配置.不过,为了加快余下操作,配置之前最好是切换到主振荡器:
//切换到主振荡器
AT91C_BASE_PMC->PMC_MCKR=AT91C_PMC_CSS_MAIN_CLK;
PLLA由两个连锁块组成:第一个是分频输入时钟,其次个是合成它.在PMC的PLLA寄放器(PLLAR)中设置MULA和DIVA因子.这两个值必需选择得适合主振荡器(输入)频率和欲求的主时钟(输出)频率.此外,合成块有一个最小输入频率,而主时钟有一个最大允许频率;这两个约束必需被考虑.在http://.上几个工具可以帮助正确计算MULA和DIVA的值.AT91SAM9261-EK上例子值:
4.2装载代码
一旦建立步骤完成,一个.bin文件可以使用并准备下载到开发板.
AT91-ISP解决通过USB,COM或J-TAG连接,提供一个简单的方法下载文件进Atmel评估套件上的AT91产品.目标编程是通过SAM-BA?工具做的.
一个DOS批文件(prog_sdram.bat)和TCL脚本文件(prog_sdram.tcl)提供处理装载二进制文件..bat文件以命令行形式发出SAM-BA.参数提供给SAM-BA是:使用连接,目标板,使用.tcl脚本文件.
.tcl脚本文件包含指示装载文件名,那个存贮器模块被使用,装载代码的地址,和在代码开始地址处操作命令.一个log文件在装载终止处显示.按下面步骤装载代码:
?执行prog_sdram.bat文件在外部SDRAM中测试代码运行.然后,代码开始运行,LED现
在由两个按键控制.
4.3调试支持
当使用GDB调试GettingStarted例子时,最好屏蔽编译器的优化选项.否则,源代码将不正确的匹配实际执行程序.对于这个,简单地解释掉(用一个#)makefile的“OPTIM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026六年级道德与法治下册 环保意识宣传
- 消防安全教育矢量图素材
- 妇科门诊健康宣教
- AI会议报名通道
- 2024届志存高远高考英语挑战模拟卷(新课标卷)
- 2023年土壤环境质量监测工作技术要求
- 2023年郑州小升初枫杨外国语招生动态
- 2024北京东城区高二(上)期末地理试题和答案
- 2023年宝鸡市凤县初级社会工作者考试《社会工作实务》全真模拟试题含解析
- 2023年小学综合素质考试知识点小学幼教综合素质重难点知识点
- 华为研发项目管理制度
- 河南省新未来2024-2025学年高二下学期期中数学试题(原卷版)
- 河南省公开招聘辅警笔试历年真题库
- 叶利钦的课件
- 小学语文三年级下册作文复习课件附范文
- 五年级下册数学重点题型长方体和正方体专项练习
- 数据中心暖通空调工程施工方案全文完整版
- 第五讲-铸牢中华民族共同体意识-2024年形势与政策(讲稿)
- PIE工程师培训技能
- 《数字媒体艺术概论》课件-交互影像装置综述
- 老年急性医疗照护模式
评论
0/150
提交评论