基于ARM7的新型嵌入式心电监护仪的研制
3.2.2、系统程序存储器Flash ROM和SDRM扩展
S3C44B0X自身不具有ROM,因此必须外接ROM器件来存储掉电后仍需要保存的程序代码和数据。我们采用了SST公司推出的容量为1MB×16的CMOS多用途Flash ROM,它具有可靠性好、功耗低、读取速度快等优点。系统复位后,首先从0X00000000地址处开始执行,系统启动代码应该以此地址开始存放,所以Flash映射在处理器的Bank0区域内。
采用Linksmart公司的一种容量为8MB的SDRM L43L16064作为系统程序的运行空间、数据区和堆栈区,供系统快速读写。它的存储方式为4Bank×1MB×16,采用多Bank和管道结构,具有自动刷新、低功耗和掉电模式。其存储空间映射在S3C44B0X的Bank6上,地址范围为:0XC000000H-0XCFFFFFFH。
3.2.3、液晶显示LCD和键盘模块
为了使用户能够对采集到的心电信号有一个直观的印象和进行常识性的观察,我们采用了EPSON公司的EG1147型FSTN单色液晶显示模,对时间、波形、心电参数和系统菜单进行显示,同时配合按键进行仪器控制和设定。它的显示器点阵为240×320,采用EL背光源,自带驱动器,通过对S3C44B0X内置LCD控制器编程,将定位在存储器的显示缓冲器内的图像数据传送给外部LCD的驱动器中,PC口和PD口作为LCD驱动接口,设置PC口工作在第三功能状态,PD口工作在第二功能状态。
3.2.4、以太网模块设计
S3C44B0X没有集成网络接口控制器NIC(Network Interface Controller),因此我们为系统扩展了一个REALTECK公司的RTL8019AS控制器,它与NE2000兼容,软件移植好,接口电路简单。RTL8019AS工作原理:驱动程序把要发送的数据按照指定格式写入芯片并启动发送命令即可。反之,芯片从物理通道上收到信号会直接根据以太网协议把他们转化成相应格式的数据,并发出中断,请求CPU读取数据。
四、系统软件设计
软件设计主要包括嵌入式操作系统uClinux在S3C44B0X上的移植,心电数据的采集和存储,基于S3C44B0X的嵌入式GUI的实现,网络设备驱动程序开发等。
4.1、嵌入式uClinux操作系统在S3C44B0X上的移植
uClinux是专门针对无MMU(Memory Management Unit 内存管理单元)的处理器而设计的一种免费开放源代码的操作系统。支持多任务,采取模块化设计。系统移植可分为bootloader和内核的移植两大部分。
Bootloader从本质上讲它不属于系统内核,在CPU上电启动后即开始运行,创立初始化环境和引导内核。这部分代码用汇编语言编写,主要完成硬件初始化,对系统的存储映射(memory map)进行初始化设置等操作,同时改变PC值,使得CPU开始从SDRM执行操作系统的内核。
内核移植时首先RedHat Linux环境下下载源代码文件包建立交叉编译环境,接着进入uClinux-dist文件夹进行内核配置,系统配置主要由三部分组成:Makefile、配置文件(config.in)和配置工具(在/script目录下)。运行make menuconfig命令,会现顶层菜单,选择硬件系统、内核版本和C库的选择,我们在这里vendors选Samsung的S3C44B0X,内核版本为Linux-2.4-x,C库选uClibc。接着要修改源代码,对应于各个硬件的子目录中,例如在uClinux-dist/linux-2.4-x/drivers/修改或增加驱动程序;保存设置退出后运行再执行make dep和make lib_only命令,生成C库;运行make user_only生成应用程序;接着运行make romfs和make image,生成rom文件系统,拷贝内核文件到uClinux-dist/images中;最后运行make,生成可供嵌入式系统运行的内核文件,这时可以在uClinux-dist/images中出现三个文件:含"rom"是压缩内核,含"ram"是直接运行的内核,romfs.img是uClinux的文件系统。"ram"和"rom"文件可以通过超级终端从PC串口下载到嵌入式系统的内存中直接运行,这时超级终端上也将显示uClinux的启动信息。
4.2、基于S3C44B0X的嵌入式GUI的实现
屏幕驱动的程序设计主要是PSD(Pointer to Screen Device)的结构指针,指针所指向的结构中记录了有关的一切属性,根据显示属性判断选择那个子函数来提供有关的显示函数。图形引擎调用PSD完成矩形,圆形等作图函数,这些函数调用底层的屏幕驱动基本作图函数来完成图形显示。
4.3、RTL8019AS驱动程序在uClinux下的实现
在uClinux中,网络接口被看作是一个发送和接收数据包的实体,用一个net_device的数据结构表示,在数据结构中定义对网络接口的各种操作。程序我们是在uClinux网络驱动文件的基础上修改而成,主要修改在/drivers/net下的两个文件:ne.c和8390.c,包括芯片的初始化、收包、网络注册等大部分工作。内核在初始化时会自动调用函数ne_probe(),读取RTL8019AS标识寄存器,检测设备是否存在以决定是否启动驱动程序,配置和初始化硬件,然后初始化net_device结构中的变量,再调用Rtl8019as_init()对RTL8019AS做寄存器的相关设置,最后根据starp的值来启动和关闭RTL8019AS。
ARM7 嵌入式 心电监护仪 ARM uClinux 相关文章:
- 基于ARM7核处理器VxWorks系统BSP设计 (02-27)
- ARM7和ARM9双核平台的技术分析(02-27)
- LPC2294的实时时钟显示工程设计分析(05-03)
- 基于LPC2292的手持JPEG图像显示器设计(10-28)
- ARM7与FPGA相结合在工业控制和故障检测中的应用(11-17)
- ARM7&ARM9双核平台的技术分析(05-12)