|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
因为涉及到编程,学习ARM单片机系统对于从事电子电路的设计者来说是有些困难的,学习知识不难,难的是理清其中的开发思路,找到一个好的起点。本文就将从这一步入手,为大家介绍初次接触ARM开发应该从哪几方面来理清开发思路。
# p: w8 I/ o0 q! G1 U4 H+ D8 x! x' x* h( L7 j% L& s9 x
做个最小系统板:如果从没有做过ARM的开发,建议一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和DSP或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash、SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果已有这些硬件的布线经验那就更好了。
7 N n# Z( K9 @! J3 R( n/ ?! r" V" r+ \
1 写启动代码
# @( V( v( R" T( n q( T* |9 F* d% D
根据硬件地址先写一个能够启动的小代码,包括以下部分:初始化端口、屏蔽中断、把程序拷贝到SRAM中、完成代码的重映射、配置中断句柄,连接到C语言入口。也许一些示例程序当中bootloader会有很多东西,但是不要被这些复杂的程序所困扰,因为这是设计开发板过程中需要设计,并不包含在ARM设计范畴中。
) g5 q! s3 d$ F4 W v! U* x1 x# X* X* H0 x2 N! y8 ^
2 研究芯片资料
/ M9 g; M, G6 w% X/ I( n U, i9 C' O% c# n( L# _2 z) W
尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必须考虑这些问题。尤其是女孩子,在这儿千万别有依赖心理,总想拿别人的示例程序修改,却越改越乱。
1 }% p& v4 W% e$ l( B8 S, F' E: i& d( j0 M
3 了解操作系统程序
R- [* t6 u2 c5 d
4 ?3 @: {8 |: k, G3 J& t在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,Linux,uc/os-II等等这些都是很好的原码。
% K! z; z) \8 V
8 u/ I `8 s; d9 u" o4 硬件; B. l; P' v; H' L9 {* Y0 G0 v
' Q7 | G, X' S5 f9 f如果设计者自己制作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。如果先将原理图消化。在以后做设计时就能做到对资源的分配心中有数。器件的DATSHEET一定要好好消化。1 T: _" ~3 L @. D& Q, _7 ]. U4 E
8 ~" D' E/ b) z. S' j5 {+ n1 d
5 最小系统板
) i/ g9 j8 m) q y( S0 D
& L* b: ]0 S9 b* T很多人会问,做最小系统板是2层还是4层好?答:只有AT91可以用两层板,其他的最少4层;44b0的地和电源处理好也可用两层板;谈四层板和33欧电阻:选用四层板不仅是电源和地的问题,高速数字电路对走线的阻抗有要求,二层板不好控制阻抗。33欧电阻一般加在驱动器端,也是起阻抗匹配作用的;布线时要先布数据地址线,和需要保证的高速线;在高频的时候,PCB板上的走线都要看成传输线。% m' x. \) Z r4 h
7 D' W9 |& y6 o: H, y _$ E( ?传输线有其特征阻抗,学过传输线理论的都知道,当传输线上某处出现阻抗突变(不匹配)时,信号通过就会发生反射,反射对原信号造成干扰,严重时就会影响电路的正常工作。采用四层板时,通常外层走信号线,中间两层分别为电源和地平面,这样一方面隔离了两个信号层,更重要的是外层的走线与它们所靠近的平面形成称为“微带”(microstrip)的传输线,它的阻抗比较固定,而且可以计算。0 @2 i, e# `$ C' }6 M7 s. I
2 W; P/ H# k+ c3 e
对于两层板就比较难以做到这样。这种传输线阻抗主要于走线的宽度、到参考平面的距离、敷铜的厚度以及介电材料的特性有关,有许多现成的公式和程序可供计算。33欧电阻通常串连放在驱动的一端(其实不一定33欧,从几欧到五、六十欧都有,视电路具体情况),其作用是与发送器的输出阻抗串连后与走线的阻抗匹配,使反射回来(假设解收端阻抗没有匹配)的信号不会再次反射回去(吸收掉),这样接收端的信号就不会受到影响。
( [) @8 n0 g9 T' J) v( z: ]: Z# Y: i( B' V+ N; V* W$ y
接收端也可以作匹配,例如采用电阻并联,但在数字系统比较少用,因为比较麻烦,而且很多时候是一发多收,如地址总线,不如源端匹配易做。这里梭说的高频,不一定是时钟频率很高的电路,是不是高频不止看频率,更重要是看信号的上升下降时间。通常可以用上升(或下降)时间估计电路的频率,一般取上升时间倒数的一半,比如如果上升时间是1ns,那么它的倒数是1000MHz,也就是说在设计电路是要按500MHz的频带来考虑。
. W( b/ ~5 b8 ^8 O
" L( ~; R7 ?' R0 K1 U0 N4 s
% S+ I! D& T0 f& V
8 O" s. i3 X5 n9 `
有时候要故意减慢边缘时间,许多高速IC其驱动器的输出斜率是可调的。Linux自身具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中的仿真工具(ICE)的障碍。内核的完全开放使人们可以自己设计和开发出真正的硬实时系统,软实时系统在Linux中也容易得到实现。强大的网络支持使得可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,它是多面的。它能处理嵌入式任务和用户界面。( y7 {$ t( b/ u4 n, s+ H! A
# ?8 i) H5 U& w1 b一个小型的嵌入式Linux系统只需要下面三个基本元素:*引导工具*Linux微内核,由内存管理、进程管理和事务处理构成*初始化进程如果要让它能干点什么且继续保持小型化,还得加上:*硬件驱动程序*提供所需功能的一个或更多应用程序。再增加功能,或许需要这些:*一个文件系统(也许在ROM或RAM)中*TCP/IP网络堆栈。
; \- ^+ T. C% C6 w' t
/ H1 V3 i# Y! ]- p @) S本文从启动代码、芯片资料、操作系统程序、最小系统版这四个方面来为新手进行讲解,在针对ARM开发思路时首先需要从这四个方面来进行入手,那么在之后的学习过程中就会觉得豁然开朗而不是一头雾水,因此建议各位新手花上几分钟来阅读本文,相信会有意想不到的收获。) z$ Y" K4 a/ a3 S# _4 A9 ]9 q
# t1 t- N% {- Y' ]2 W0 v* k |
|