新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ARM嵌入式系统软件实时时钟的设计

ARM嵌入式系统软件实时时钟的设计

作者:时间:2012-10-25来源:网络收藏

1 引言
现在的许多设备对都有很高的要求,在片集成的往往只注意到了其使用的方便,而没有考虑在实际应用中还有很多特殊的要求。本文讨论如何使用独立的外扩,来满足这些要求。
什么是实时系统?就是系统运行时的反馈信息或者指令,必须在要求的时间内发出或者返回,否则视为无效。例如,数据采集的时候,必须在对应的时间内得到信号,以保证数据采集的有效性。那么什么是实时时钟?就是采用独立的晶振(或集成),拥有独立供电系统,永不间断的运行,从而给系统提供可靠的系统时间。
集成的实时时钟和独立实时时钟的比较:
以博创UP-NET3000开发板为例,它使用的是三星公司生产的S3C44B0X7处理器,该处理器内部集成了一个实时时钟,其中的2个中断源INT_RTC和INT_ADC中断源在26个中断源中优先级最低。RTC的电压要求2.5V或3V,但是不支持3.3V。也就是说开发板上的实时时钟不能脱离开发板独立地运行,同时中断级别低,电压范围窄,精度不可调,不具备通用性。而外扩的独立实时时钟电压范围宽,使用I2C总线,中断级别高,同时独立于开发板运行,通用性好。特别是精度是可以矫正调节的,这对实时性来说精度是很重要的指标。

2 处理器
ARM(Advanced RISC Machines)是一类微处理器的通称[1]。1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。ARM现在已遍及工业控制,消费类电子产品,通信系统,网络系统,无线系统等各类产品市场,基于ARM技术的微处理器应用占据了32位RISC微处理器75%以上的市场比例,ARM 技术正在逐步渗入到我们生活的各个方面。

3 PCF8563
PCF8563是PHILIPS公司生产的低功耗CMOS实时时钟/日历芯片, 芯片最大总线速度为400kbits/s,每次读写数据后,其内嵌的字地址寄存器会自动产生增量。PCF8563可广泛应用于移动电话、便携仪器、传真机、电池电源等产品中。PCF8563有16个8位寄存器,其中包括:可自动增量的地址寄存器、内置32.768kHz的振荡器(带有一个内部集成电容)、分频器(用于给实时时钟RTC提供源时钟)、可编程时钟输出、定时器、报警器、掉电检测器和400kHz的I2C总线接口。所有16个寄存器设计成可寻址的8位并行寄存器,但不是所有位都有用。当一个RTC寄存器被读时,所有计数器的内容将被锁存,因此,在传送条件下,可以禁止对时钟/日历芯片的错读。同时它还拥有PHILIPS的优良品质,在3V电压,25摄氏度下,功耗为250nA,非常低。本文选用PCF8563来外扩实时时钟,其硬件连接示意图如图1所示:



图1 PCF8563与S3C44B0X的连接图


4 I2C总线
在现代电子系统中,有为数众多的IC需要进行相互之间以及与外界的通信。为了提供硬件的效率和简化电路的设计,PHILIPS开发了一种用于内部IC控制的简单的双向两线串行总线I2C(Inter IC总线)。I2C总线支持任何一种IC制造工艺。作为一个专利的控制总线,I2C已经成为世界性的工业标准[2]。

5 uclinux系统[3]
uClinux是微控制器领域中的Linux系统。它通常用于具有很少内存或Flash的嵌入式操作系统。在GNU通用许可证的保证下,运行micro;Clinux操作系统的用户可以使用几乎所有的Linux API函数。它具有体积小、稳定、良好的移植性、优秀的网络功能、完备的对各种文件系统的支持,以及丰富的API函数等优点。uClinux除了不能实现fork()外,其余uClinux的API函数与标准Linux完全相同。
①.uClinux的内核加载方式
uClinux的内核有两种可选的运行方式:可以在flash上直接运行,也可以加载到内存中运行。Flash运行方式:把内核的可执行映象烧写到flash上,系统启动时从flash的某个地址开始逐句执行。内核加载方式:把内核的压缩文件存放在flash上,系统启动时读取压缩文件在内存里解压,然后开始执行。
②.uclinux的根(root)文件系统
uClinux系统采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。内核支持romfs文件系统比支持ext2文件系统需要更少的代码,romfs文件系统相对简单,建立文件系统超级块(superblock)需要更少的存储空间。romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理(ram盘将采用ext2文件系统)。

6 uclinux在S3C44B0X上的移植[4]
BootLoader引导程序是嵌入式开发很重要的组成部分。它是CPU 加电后第一个开始运行的代码,由它最终将操作系统启动起来并将控制权交给操作系统内核。BLOB(Boot Loader OBject)最初是由Jan-Derk Bakker和Erik Mouw为LART而写的引导代码,由于其良好的移植性和强大的功能被移植到了很多其它机器上。BLOB遵守GNU GPL licence。BLOB功能比较强大,它可以:
①.. 初始化诸如CPU的主频、SDRAM的控制管理、中断、串行口等硬件;
②.. 启动Linux内核并提供一个RAMDISK;
③.. 通过串口下载内核或者RAMDISK到板卡上;
④.. 可以将修改过的新的内核或者RAMDISK写到Flash上;
⑤.. 可以重新自由设定存储中不同的布局;
⑥.. 可以提供一个命令行接口给用户。
Blob常用的命令有:blob、boot、xdownload、flashreload、dump、reblob、status、flash等。xdownload命令用于下载内核和根文件系统到内存中,flash命令用来把它们烧到flash中。

分频器相关文章:分频器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭