积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 百科 >> 新手园地
  相关分类:
献给ARM初学者
 
作者:未知   来源:嵌入式技术网    点击数:207   更新时间:2008-1-28
您可以添加到网摘 让更多人关注此文章:

    

1.ARM简介(摘录)


  ARMAdvanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。技术具有性能高、成本低和能耗省的特点。适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
  ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
  目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括IntelIBMLG半导体、NECSONY、菲利浦和国民半导体这样的大公司。至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
  ARM架构是面向低预算市场设计的第一款RISC微处理器。
  2.产品介绍
  ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。典型的产品如下。
   ①CPU内核
   --ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。
  -- ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。该产品的典型用途是数字蜂窝电话和硬盘驱动器。
  --ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard总线。在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。常用于连网和顶置盒。
  ②体系扩展
  -- Thumb:16位系统的成本,提供32RISC性能,特别注意的是它所需的内存容量非常小。
  ③嵌入式ICE调试
  由于集成了类似于ICECPU内核调试技术,所以原型设计和系统芯片的调试得到了极大的简化。
  ④微处理器
  --ARM710系列,包括ARM710ARM710TARM720TARM740T:低价、低能耗、封装式常规系统微型处理器,配有高速缓存(Cache)、内存管理、写缓冲和JTAG。广泛应用于手持式计算、数据通信和消费类多媒体。
   --ARM940T920T系列:低价、低能耗、高性能系统微处理器,配有Cache、内存管理和写缓冲。应用于高级引擎管理、保安系统、顶置盒、便携计算机和高档打印机。
  --StrongARM:性能很高、同时满足常规应用需要的一种微处理器技术,与DEC联合研制,后来授权给IntelSA110处理器、SA1100 PDA系统芯片和SA1500多媒体处理器芯片均采用了这一技术。
  --ARM7500ARM7500FE:高度集成的单芯片RISC计算机,基于一个缓存式ARM7 32位内核,拥有内存和I/O控制器、3DMA通道、片上视频控制器和调色板以及立体声端口;ARM7500FE则增加了一个浮点运算单元以及对EDO DRAM的支持。特别适合电视顶置盒和网络计算机(NC)。


Windows CE
Pocket PC只支持ARMWindows CE可支持多种嵌入式处理器,但基于Windows CEPocket PC则只支持ARM一种。微软在对SH3MIPSARM等嵌入式处理器做了评估后认为,ARM是一种性价比较好的选择。由于目前ARM在手持设备市场占有90%以上的份额,只支持ARM,可以有效地缩短应用程序开发与测试的时间,也降低了研发费用。由于ARM开放其处理器授权,因此,用户在市场上可以在多家整机厂商中进行选择,从而保证了这一市场的竞争性。


2. ARM
芯片CL-PS7111主要特点

 

电平2.7v/3.3v.相对应CPU工作频率13MHz/18MHz. 13MHz位节电模式, 性能相当于33MHz Inter 486PC.

ARM710A内核

ARM7 CPU
8K 4
向缓存(cache)
MMU
带有64入口
TLB(Transition Look-aside Buffer)
DRAM
控制器

支持16位和32DRAM
ROM/SRAM/Flash Memory
控制

可译码4,56个独立的256M存储空间段
每个存储段支持8,16位和32位操作,并支持分页模式

可编程
ROM/SRAM/Flash Memory
支持两个低功耗CL-PS6700 PC(PCMCIA)控制器

2K 片内 SRAM用于程序快速执行

片内Boot ROM (128Byte)

两个同步串行接口

支持SPI,Microwire2兼容
音频解码器
(Audio Codec)
27
位通用接口GPIO(general-purpose I/O port)

38位和13GPIO port
支持键盘阵列扫描
(Scanning keyboard matrix)
两个异步串口 UARTs

支持高达115.2K 波特率
内有两个接收发送(TX,RX) 16Bytes FIFOs缓冲

支持MODEM控制信号

DC-to-DC
转换器接口

提供两个96KHz时钟输出,通过编程duty ratio(1/16---15/16)操作
LCD
控制器

直接信号扫描板接口,单色LCD
面板的大小可编程从161024个像素,16个像素为一个单位

视频帧大小可编程到
128K byte
每个像素点的位数可编程1,2,4

计时器和实时时钟

两个16位计时器(Timer counter)和一个32位实时时钟(RTC)
 

3. 调试工具及调试方法

ARM Project Manager (APM) include ARM Debuger: 这个工具由ARM提供主要是开发程序, 编程调试ARM芯片, 有相当不错的开发环境和远端调试功能, 支持汇编和C. 它带有一个ARM自己的嵌入式操作系统ARM Angel, 用户可以在它的上面开发自己的嵌入式软件, 不过这个操作系统不是实时多任务的.

通过计算机串口与处理器UART相连,设置计算机的超级终端 ( Hyper Terminal ), 通过超级终端察看硬件情况(寄存器设置,数据等)和程序运行情况,当然程序重要加入向UART送出数据的指令, Beep报警也是经常用的. 这种调试方法是用于底层调试硬件,找出硬件存在的问题.

VxWorks Shell 不能正常运行前,也是采取这种方法来调试程序,不过一般不是硬件问题,而是BSP中存在的问题,需要根据硬件,修改BSP.

需要说明的是:上述方法是在没有硬件仿真器的情况下采用的,仿真器是底层调试硬件程序最好,最简便直观的办法。

 

4. ARM7 编程要点及示例

ARM编程可参考程序示例 ARM_Boot Flash ROM驱动

VxWorks image 装入ARM的过程:
ARM7
有两种运行模式, Boot 模式和 Normal 模式, Boot模式主要是把程序装入(down load load )Flash ROM中用的, Normal模式是一般运行程序用的.

ARM7 Boot 模式时, Flash 的地址是0x70000000片选型号是CS0 (Normal模式下,Flash地址为0x00000000)

ARM7内部有128byteBootROM2KSRAM,当需要Download VxWorks image,ARM启动采用Boot方式启动运行存在128byte BootROM中的程序初始化ARM内部的COM口,从COM口接受数据到2KSRAM,这2K程序是用来真正Load VxWorks的,2K程序Load完毕后系统自动跳转到这2K程序执行,它的作用是再次初始化内部的COM,通过COM口接受VxWorksDRAM,然后由DRAM写入FLASH。在主板2K SRAM运行的Boot Load程序执行过程,可参看程序示例中ARM Boot Load程序


写入完毕后,切换到Normal模式重新启动系统,系统自动跳到FLASH 0X00000000开始运行VXWORKS

PC机上的COM1ARM内部的UART1COM)通信来Download VxWorks


主要管脚定义
32
条数据线: D0-------D31

28条地址线: A0-------A27 little endian 定义, 相对应数据排列 0 1 2 3 4 5 6--------27

6条片选信号脚: CS0-------CS5, 其实作用相当于地址线 A28------A31

48位的PORT: PORT A, PORT B , PORT D主要用于外围芯片信号的控制. PORT E有双作用.

例如 PORT A 控制键盘的行信号, PORT B 用于RS232, PORT D 用于控制MODEM, FPGA..

外部中断信号EINT, EXTFIQ.

编程时要根据主板原理图和硬件手册进行.

看硬件图纸, 该芯片和CPU的那些管脚连结. 特别是 PORT 口和片选线.

CPU手册, 得到PORT 口和该片选的硬件地址.

编程: PORT口直接对芯片操作,如开,,RESET, 用片选地址和芯片内地址结合对该外围芯片操作.

 

Exception vectors, 中断向量表及中断分配


Vector
地址 Exception
Exception Mode Priority(1=High)
0x0 Reset
Svc 1
0x4 Undefined Instruction
Undef 6
0x8 Software Interrupt
Svc 6
0xC Prefetch Abort
Abort 5
0x10 Data Abort
Abort 2
0x14 Reserved
Not applicable Not applicable
0x18 Interrupt (IRQ)
irq 4
0x1C Fast Interrupt (FIQ)
Fiq 3

 

这个向量表必须要放置在系统地址0x00000000 (一般是逻辑地址, 即经过MMU映射后的地址).

一般是在这些地址上放跳转指令 BL, 跳到相应的地址空间执行相应的程序.

如系统执行从0x00000000 Reset开始, Reset 跳转到某一地址开始运行操作系统.

 

程序示例,中断向量表 (ARM asm):

 

__VectorStart ; Start of ARM processor vectors

LDR pc,ResetV ; 00 - Reset

LDR pc,UndefV ; 04 - Undefined instructions

LDR pc,SWIV ; 08 - SWI instructions

LDR pc,PAbortV ; 0C - Instruction fetch aborts

LDR pc,DAbortV ; 10 - Data access aborts

LDR pc,UnusedV ; 14 - Reserved (was address exception)

LDR pc,IRQV ; 18 - IRQ interrupts

LDR pc,FIQV ; 1C - FIQ interrupts

中断号分配 (FIQ, IRQ)

中断类型中断号 Name
说明

FIQ 0 外部中断 EXTFIQ 管脚 NEXT FIQ
… … …
IRQ 5
外部中断 EINT1 管脚
NEINT1
IRQ 6
外部中断 EINT2 管脚
NEINT2
IRQ 7
外部中断 EINT3 管脚
NEINT3
… … …
IRQ 12
内部中断 UTXINT1 UART1 TX FIFO 为空

… … …

 

中断号也是寄存器INTMRINTSR的位,所以在ARM中中断的编程要点是

看硬件图纸, 该外设和CPU的那一个管脚连结.

CPU手册, 得到中断号及INTMR,INTSR的地址.

编程

: 如果不是写底层driver, 只是在系统上层编程(VxWorks, Linux) 知道中断号即可.

程序示例(VxWorks):

//登记中断号 5, 和相应的中断例程 ComISR.

intConnect ( ( VOIDFUNCPTR * ) 5, ComISR, 0 ) ;

//使能这中断

intEnable ( ( VOIDFUNCPTR * ) 5 );

……

ARM Interrupts: ARM processors implement fast and normal level of interrupt,signalled externally, synchronise interrupts before an exception is raised. A fast interrupt requst (FIQ) will desable subsequent normal and fast interrupt by setting the I and F bit in CPSR,and a normal interrup request(IRQ) will disable subsequent normal interrupt by setting I bit in CPSR.

 

计时器中断编程过程

ARM7一般内部有两个16位计时器(Timer counter)和一个32位实时时钟(RTC),计时器中断属于IRQ中断,这里以计时器1为例叙述一下中断的编程过程

设置interrup mask INTMR1寄存器 0x80000240 8TC1OI计时器1为使能. 0x800000300 计时器 1 的数据寄存器TC1D写入指定数据,这样数据开始从这个给定的数开始递减计数,计数递减至 0 ,会产生一个溢出underflow IRQ中断请求,中断状态寄存器INTSR1 0x80000240 8TC1OI置位.系统会跳到中断向量表地址 0x00000018 ,执行相应的中断程序,中断程序通过判断中断的类型(判断中断状态寄存器的位),来执行相应的中断服务程序ISR. 中断状态寄存器标志位复位,计时器开始重新开始计时.

存储空间管理单元(MMU)
物理地址映射

重点在于片选地址CS的选取,另外MMU映射需要参考这个物理地址

ARM7 物理地址映射表

地址内容
大小
备注

0xF000.0000 Unused 256Mbytes
0xE000.0000 Unused 256Mbytes
0xD000.0000 DRAM Bank 1 256Mbytes
0xC000.0000 DRAM Bank 0 256Mbytes
外接DRAM
0x8000.2000 Unused --1Gbytes
0x8000.0000
内部寄存器地址 8Kbytes 主要的I/O和控制

0x7000.0000 Boot ROM 128 bytes
片内,封有Boot程序

0x6000.0000 On-chip SRAM 2 Kbytes
片内,存放Load程序

0x5000.0000 PCMCIA-1(NCS[5]) 4*64 Mbytes
0x4000.0000 PCMCIA-0(NCS[4]) 4*64 Mbytes
0x3000.0000
外部扩展
(NCS[3]) 256Mbytes
0x2000.0000
外部扩展
(NCS[2]) 256Mbytes
0x1000.0000 ROM Bank 1(NCS[1]) 256Mbytes
0x0000.0000 ROM Bank 0(NCS[0]) 256Mbytes
外接Flash ROM

MMU 虚拟(逻辑)地址和物理地址的映射实例

Vxworks支持的ARM架构的处理器,一般是RAM的起始位置为0x0,而实际上ARM的物理地址0x0ROM的起始地址,RAM在高位地址.这就需要系统在Boot过程中,执行MMU程序,重新映射RAMROM的地址.RAM起始地址为0x0.

MMU主要有ARM7中协处理器coprocessor 15控制,coporocessor主要控制:

片内的MMU

指令和数据缓存(IDC)

Write Buffer(WB)

MMU有两层页表(two-level page table)用来进行虚拟地址向物理地址转换,CP15定义16个寄存器,只有MRCMCR指令才能对它们操作.

VxWorks系统中,MMU表分成两部分:boot up tablefinal table.在文件ramAtHigh.h中定义.该表在文件romInit.s中初始化,语句为:

BL _ramAtHigh_1(2)

MMU映射实例

虚拟(逻辑)地址(VxWorks系统) 硬件物理地址

RAM 首地址 0x0000.0000
Low Address 0x0000.1000
High Address 0x0060.0000
ROM
 
0x0100.0000
 

其他的地址逻辑地址和物理地址映射地址不变
0x8000.0000
内部寄存器

..................
.................

相同的颜色映射对应的地址
ROM 0x0000.0000 VxWorks image
和文件系统
RAM
首地址 0xC000.0000 存放LCD,MMU表等

0xC004.0000
中断向量表等

0xC004.1000 VxWorks
运行位置

0xC064.0000 VxWorks
ROM解压后Copy的位置

其他的地址映射地址不变
0x8000.0000
内部寄存器

..............
..............

学好ARM开发的意义

你只要学习一种处理器的就有许多ARM内核的处理器供你使用,从上面你看到有许多公司提供基于该内核的芯片,象世界著名的INTELTIMOTOROLA等公司都提供各种ARM芯片。在嵌入式领域,8位处理器已经不再胜任一些复杂的应用,比如GUITCP/IPFILESYSTEM等,而ARM芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。所以现在越来越多的公司在产品选型的时候考虑到使用ARM处理器,从这个角度来说,对于在校大学生来说,如果你掌握了ARM开发技术,对于寻找一份好的工作也十分有利。
如何开始进入ARM学习
ARM
学习可以分为基于ARM内核的COS开发设计和基于ARM SOC的开发应用。由于站长是做ARM SOC应用的,所以我就讨论ARM芯片的应用开发,不谈ARM芯片设计。

我想首先应该对ARM内核做一些了解,不用太深入,毕竟不是从事芯片设计。然后就是熟悉一下ARM指令集,这点比较重要,虽然现在都是使用C开发程序,但是很多初始化程序是使用汇编写的。
然后要掌握一个集成开发环境(IDE)的使用,务必做到比较熟练的使用。推荐使用IAR EWARM和ADS1.2。使用手册在IDE安装完成后在安装目录下都有,如果看英文吃力,就安装个金山词霸。不要老想着中文指导书,这个东西可遇不可等,现在很多书籍的质量大家也明白。

然后根据自己的学习方向和兴趣购买一款ARM学习板(如果你对硬件比较熟悉,现在一般开发板都免费提供原理图,可以按照开发板的原理图自己做一版),比如想做一些网络方面编程,你可以选择S3C4510B,这个带有100M网络(很多ARM处理器也都可以外扩一个网口,一般是10M的,比如RTL8019ASCS8900等)的芯片价格不到50元,非常合适。如果你要做PDA,可以选择S3C44B0XS3C2410等这些带LCD接口的芯片。

一般开发板都会带有一些简单例程,通过这些例程慢慢熟悉ARM程序设计步骤和IDE的使用,在这个过程你会逐步消除对ARM的神秘感,最后当你比较熟练的时候,ARM就是一个被你控制的工具,一个廉价而又强大的工具。



相关文章
没有相关文章
热门评论排行
·VHDL设计中电路简化问题的
·江苏嵌入式Linux教育培训
·锐极LINUX驱动培训班定于
·基于实时操作系统μC/OS-
·ARM处理器应用开发4步骤

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
爱立信与意法半导体成立合资公司,打造
安森美半导体扩大全球分销代理产品阵容
Siimpel 为摩托罗拉
英特尔研发的世界首款32纳米芯片将面
对我国集成电路产业新政策的期待和建议
赛普拉斯任命业界资深人士 
“英飞凌杯”第二届太阳能应用设计校园
ST-NXP Wirele
20余年资本姻缘结束 飞利
多伦多大学与IBM合作研制猛犸计算机
 
热门下载 [更多]
 
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
[ ] 实用电源电路集锦
 
论坛新帖 [更多]
 
ARM汇编伪指令介绍(2)...
ARM汇编伪指令介绍(1)...
三菱伺服系统的原理和应用视频教...
三菱触摸屏原理应用技术视频教程...
三菱PLC通信技术视频教程 变...
[转帖]学习嵌入式系统的经验...
到外企应聘如何准备英文简历...
6个面试的经典英文问题...
有人在设计仪表吗?...
口译笔译中100句经典口语...

 
赞助商 [更多]
 


ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网