快捷搜索:

ARM的开发步骤

1. 做个最小系统板:假如你从没有做过ARM的开拓,建议你一开始不要贪大年夜求全,把所有的利用都做好,由于ARM的启动要领和dsp或单片机有所不合,每每会碰到各类问题,以是建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位旌旗灯号的小系统板,留出扩展接口。使最小系统能够正常运行,你的义务就完成了一半,好在ARM的外围接口基础都是标准接口,假如你已有这些硬件的布线履历,这对你来讲是一件很轻易的工作。

2. 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分:

初始化端口,樊篱中断,把法度榜样拷贝到SRAM中;完成代码的重映射;设置设置设备摆设摆设中断句柄,连接到C说话进口。大概你看到给你的一些示例法度榜样傍边,bootloader会有很多器械,然则不要被这些繁杂的法度榜样所困扰,由于你不是做开拓板的,你的义务便是做段小法度榜样,让你的利用法度榜样能够运行下去

3. 仔细钻研你所用的芯片的资料,只管ARM在内核上兼容,但每家芯片都有自己的特色,编写法度榜样时必须斟酌这些问题。尤其是女孩子,在这儿切切别有依附生理,总想拿别人的示例法度榜样改动,却越改越乱。

4. 多看一些操作系统法度榜样,在ARM的利用开放源代码的法度榜样很多,要想前进自己,就要多看别人的法度榜样,linux,uc/os-II等等这些都是很好的原码。

6.假如你是作硬件,每个厂家基础上都有针对该芯片的DEMO板道理图。先将道理图消化。这样你今后做设计时,对资本的分配胸有定见。器件的DATSHEET必然要好好消化。

7.假如做软件最好对操作系统的机理要有所懂得。当然这对软件工程师来说是小菜一碟。但假如是硬件身世的就有点费劲。

问:做最小系统板是2层照样4层好?

答:只有AT91可以用两层板,其他的起码4层;44b0的地和电源处置惩罚好也可用两层板;

谈四层板和33欧电阻:

选用四层板不仅是电源和地的问题,高速数字电路对走线的阻抗有要求,二层板不好节制阻抗。33欧电阻一样平常加在驱动器端,也是起阻抗匹配感化的;布线时要先布数据地址线,和必要包管的高速线;

在高频的时刻,PCB板上的走线都要当作传输线。传输线有其特性阻抗,学过传输线理论的都知道,当传输线上某处呈现阻抗突变(不匹配)时,旌旗灯号经由过程就会发生反射,反射对原旌旗灯号造成滋扰,严重时就会影响电路的正常事情。采纳四层板时,平日外层走旌旗灯号线,中心两层分手为电源和地平面,这样一方面隔离了两个旌旗灯号层,更紧张的是外层的走线与它们所接近的平面形成称为“微带”(microstrip) 的传输线,它的阻抗对照固定,而且可以谋略。对付两层板就对照难以做到这样。这种传输线阻抗主要于走线的宽度、到参考平面的间隔、敷铜的厚度以及介电材料的特点有关,有许多现成的公式和法度榜样可供谋略。

33欧电阻平日串连放在驱动的一端(着实不必然33欧,从几欧到五、六十欧都有,视电路详细环境) ,其感化是与发送器的输出阻抗串连后与走线的阻抗匹配,使反射回来(假设解收端阻抗没有匹配) 的旌旗灯号不会再次反射回去(接受掉落),这样接管真个旌旗灯号就不会受到影响。接管端也可以作匹配,例如采纳电阻并联,但在数字系统对照少用,由于对照麻烦,而且很多时刻是一发多收,如地址总线,不如源端匹配易做。

这里梭说的高频,不必然是时钟频率很高的电路,是不是高频不止看频率,更紧张是看旌旗灯号的上升下降光阴。平日可以用上升(或下降) 光阴预计电路的频率,一样平常取上升光阴倒数的一半,比如假如上升光阴是1ns,那么它的倒数是1000MHz,也便是说在设计电路是要按500MHz的频带来斟酌。无意偶尔候要有意减慢边缘光阴,许多高速IC其驱动器的输出斜率是可调的

构造嵌入式Linux

Linux自身具备一整套对象链,轻易自行建立嵌入式系统的开拓情况和交叉运行情况,并且可以超过嵌入式系统开拓中的仿真对象(ICE)的障碍。内核的完全开放使人们可以自己设计和开拓出真正的硬实时系统,软实时系统在Linux中也轻易获得实现。强大年夜的收集支持使得可以使用Linux的收集协议栈将其开拓成为嵌入式的TCP/IP收集协议栈。

Linux供给了完成嵌入功能的基础内核和所必要的所有用户界面,它是多面的。它能处置惩罚嵌入式义务和用户界面。

一个小型的嵌入式Linux系统只必要下面三个基础元素:

* 向导对象

* Linux微内核,由内存治理、进程治理和事务处置惩罚构成

* 初始化进程

假如要让它醒目点什么且继承维持小型化,还得加上:

* 硬件驱动法度榜样

* 供给所需功能的一个或更多利用法度榜样。

再增添功能,或许必要这些:

* 一个文件系统(大概在ROM或RAM)中

* TCP/IP收集客栈

下面我们就从精简内核、系统启动、驱动法度榜样将、X-Window换成MicroWindows四个步骤先容嵌入式Linux的实际开拓。

精简内核

构造内核的常用敕令包括:make config、dep、clean、mrproper、zImage、bzImage、modules、modules_install。敕令阐明略。

现在举个例子阐明一下:

我应用的是 Mandrake内附的 2.2.15。我没有改动任何一行法度榜样码,完全只靠改动组态档获得这些数据。

首先,应用 make config 把所有可以拿掉落的选项都拿得。

不要 floppy;不要SMP、MTRR;不要 Networking、SCSI;把所有的 block device 移除,只留下 old IDE device;把所有的 character device 移除;把所有的 filesystem 移除,只留下 minix;不要 sound 声援。信托我,我己经把所有的选项都移除了。这样做之后,我获得了一个 188K 的核心。

还不敷小吗? OK,再加上一招,请把下列两个档案中的 -O3,-O2 用 -Os 取代。

./Makefile

./arch/i386/kernel/

Makefile

这样一来,全部核心变小了 9K,成为 179K。

不过这个核心生怕很难发挥 Linux 的功能,是以我抉择把收集加回去。把General中的.network support 加回去,从新编译,核心变成 189 K。10K就加上个 TCP/IP stack,彷佛是很上算的买卖。

有stack没有driver也是徒然,以是我把 embedded board常用的RTL8139的driver加回去,195K。

假如你必要 DOS 档案系统,那大年夜小成为 213K。假如 minix 用 ext2 换代,则大年夜小生长至 222K。

Linux所需的内存大年夜约在600K~800K之间。1MB内存就可能可以开机了,但不太有用,由于连载入C法度榜样库都有艰苦。2MB内存应该就可以做点事了,但要到 4MB以上才可以履行一个对照完备的系统。

由于Linux 的filesystem 相昔时夜,大年夜约在 230K 阁下,占了 1/3 的体积。内存治理占了80K,和核心其它部分的总和差不多。TCP/IP stack 占了65K,驱动法度榜样占了120K。SysV IPC占了 21K,需要的话可以拿掉落,核心档应该可以再小个10K阁下。

假如要裁剪核心大年夜小,应该动那里呢? 谜底很显着,当然是文件系统。Linux 的 VFS简化了档案系统的设计,buffer cache, directory cache增添了系统的效率。但这些embedded系统根本就用场不大年夜。假如可以把它们拿掉落,核心可以顿时缩小 20K 阁下。假如跳过全部 VFS,直接将文件系统写成一个 driver 的型式,应该可以将 230K缩减至50K阁下。全部核心缩到100K阁下。

系统启动

系统的启动顺序及相关文件仍在核心源码目录下,看以下几个文件:

./arch/$ARCH/boot/

bootsect.s

./arch/$ARCH/boot/setup.s

./init/main.c

bootsect.S 及 setup.S

这个法度榜样是Linux kernel的第一个法度榜样,包括了Linux自己的bootstrap法度榜样,然则在阐明这个法度榜样前,必须先阐明一样平常IBM PC开机时的动作(此处的开机是指“打开PC的电源”)。

一样平常PC在电源一开时,是由内存中地址FFFF:0000开始履行(这个地址必然在ROM BIOS中,ROM BIOS一样平常是在FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROM BIOS中的位置,开始履行一系列的动作。

紧接着系统测试码之后,节制权会转移给ROM中的启动法度榜样(ROM bootstrap routine)。这个法度榜样会将磁盘上的第零轨第零扇区读入内存中,至于读到内存的哪里呢? --绝对位置07C0:0000(即07C00h处),这是IBM系列PC的特点。而位于Linux开机磁盘的boot sector上的,恰是Linux的bootsect法度榜样。

把大年夜家所熟知的MS DOS 与Linux的开机部分做个粗浅的对照。MS DOS 由位于磁盘上boot sector的boot法度榜样认真把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel --MSDOS.SYS载入内存的重任。而Linux则是由位于boot sector 的bootsect法度榜样认真把setup及Linux的kernel载入内存中,再将节制权交给setup。

驱动法度榜样

在Linux系统里,设备驱动法度榜样所供给的这组进口点由一个布局来向系统进行阐明。

设备驱动法度榜样所供给的进口点,在设备驱动法度榜样初始化的时刻向系统进行挂号,以便系统在适当的时刻调用。Linux系统里,经由过程调用register_chrdev 向系统注册字符型设备驱动法度榜样。

在Linux里,除了直接改动系统核心的源代码,把设备驱动法度榜样加进核心里以外,还可以把设备驱动法度榜样作为可加载的模块,由系统治理员动态地加载它,使之成为核心的一部分。也可以由系统治理员把已加载的模块动态地卸载下来。Linux中,模块可以用C说话编写,用gcc编译成目标文件(不进行链接,作为*.o文件存在)。为此必要在gcc敕令行里加上-c的参数。在成功地向系统注册了设备驱动法度榜样后(调用register_chrdev成功后),就可以用mknod敕令来把设备映射为一个分外文件。其它法度榜样应用这个设备的时刻,只要对此分外文件进行操作就行了。

将X-Window换成MicroWindows

MicroWindows是应用分层布局的设计措施。容许改变不合的层来适应实际的利用。在最底一层,供给了屏幕、鼠标/触摸屏和键盘的驱动,使法度榜样能造访实际的硬件设备和其它用户定制设备。在中心一层,有一个轻巧的图形引擎,供给了绘制线条、区域添补、绘制多边形、裁剪和应用颜色模式的措施。在最上一层,供给了不合的API给图形利用法度榜样应用。这些API可以供给或不供给桌面和窗口形状。今朝,MicroWindows支持Windows Win32/WinCE GDI和Nano-X API。这些API供给了Win32和X窗口系统的慎密兼容性,使得其余利用法度榜样可以很轻易就能移植到MicroWindows上。

何谓嵌入式系统

嵌入式系统被定义为:以利用为中间、以谋略机技巧为根基、软件硬件可裁剪、适应利用系统对功能、靠得住性、资源、体积、功耗严格要求的专用谋略机系统。

嵌入式系统是面向用户、面向产品、面向利用的,假如自力于利用自行成长,则会掉去市场。嵌入式处置惩罚器的功耗、体积、资源、靠得住性、速率、处置惩罚能力、电磁兼容性等方面均受到利用要求的制约,这些也是各个半导体厂商之间竞争的热点。嵌入式处置惩罚器的利用软件是实现嵌入式系统功能的关键。软件要求固化存储,软件代码要求高质量、高靠得住性,系统软件(OS)的高实时性是基础要求。

在制造工业、历程节制、通讯、仪器、仪表、汽车、船舶、航空、航天、军事设置设备摆设、破费类产品等方面均是嵌入式谋略机的利用领域。

您可能还会对下面的文章感兴趣: