基于ARM和DSP的嵌入式智能仪器系统设计

  作者:孟菊 王金海 赵雷新 张丽丽 时间:2008-06-02来源:微计算机信息

  3.2 ARM与以太网控制器之间的通信设计

  系统平台实现了以太网接口。提供了以太网芯片的驱动,支持网络功能。以太网控制芯片的数据、地址和控制信号与EP7312的总线相连,如图3所示。片选信号使用EP7312的扩展片选信号nCS2。

 

图3 以太网接口原理图

  RTL8019默认的I/O基地址是300H,用到的地址空间为300H~3FFH,因此使用到EP7312的低4位地址线,将RTL8019上的SA19~SA10和SA7~SA5接为地,SA9、SA8接为VCC。RTL8019AS使用的是16位数据总线方式,因此,将RTL8019上的IOCS16B引脚通过10K的上拉电阻接为VCC;通过IO模式读写以太网控制器,所以SMEMRB和SMEMWB引脚通过上拉电阻接为VCC。

  当EP7312向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令;当RTL8019AS完成了上一帧的发送后,再开始此帧的发送。RTL8019AS接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区;收满一帧后,以中断的方式通知EP7312。FIFO逻辑对收发数据作16字节的缓冲,以减少对本地DMA请求的频率。

  以太网控制器有两个指针寄存器来控制缓冲区的存储过程,当前页面指针curr和边界指针bnry。curr指向新接收到帧的起始页面,即接收缓冲环的写页面指针;bnry指向读过的最后一个页面,即接收缓冲环读页面指针。自定义指针next_page,表示存储分组缓冲区的边界,初始值为next_page=bnry,读取一页数据后由软件执行bnry加1,curr自动加1。curr不等于bnry时,表示有新的数据包在缓冲区中,读取一包的前四个字节,前四个字节并不是以太网数据包的内容。分别表示数据包存放的页地址和已接收的数据的字节数。如果curr=0,表示读取出错,返回null。如果bnry>0x7f,则bnry=0x4c。

  4 嵌入式系统软件设计

  4.1 BootLoader的设计

  该嵌入式系统引入了Linux操作系统,可以给系统下的任务提供调度机制,简化任务中的需求操作,当需求变化时只需要改变任务内容,然后重新和操作系统发布即可。

  本系统中EP7312采用的是外部启动方式,也就是从CS[0]片选的外部NORFLASH启动,系统启动后,执行启动代码,即初始化CPU、内存控制器以及片上设备,然后配置存储映射。启动代码随后执行一个引导装载程序bootloader,将内核从FLASH中解压到SRAM中,然后跳转到内核的第一条指令处执行,内核运行。

  bootloader完成从硬件启动到操作系统启动的过渡,用于初始化硬件和启动操作系统。在内核运行之前需要bootloader作为系统驱动程序完成加载内核和一些辅助性的工作,然后跳转到内核代码的起始地址并执行。对于该系统来说选择EP7211所使用的bootloader—Shoehorn,然后做一些改动。如调整系统各个寄存器的地址值;设定SDRAM控制器;调整UART1的波特率等。Shoehorn代码分为host端和target端两部分,一部分由eth.c、serial.c、shoehorn.c和util.c组成,由这些文件编译生成host端的可执行文件shoehorn;另一部分由ini.s和loader.c组成,编译生成一个小于2KB的文件loader.bin,这个二进制文件会被下载到target端的SRAM中用来引导系统的启动。通过一系列的主机与开发板之间的握手通信、下载程序的方式使得代码相对分散,减小开发板上起始代码的大小,以满足目标板上下载代码的限制。

  4.2 内核的配置

  该嵌入式系统选择了较成熟稳定的Linux-2.4.13版本内核。为了避免修改内核定制代码

  时造成代码的不稳定和失去代码的灵活性,可以通过选择合适的版本内核,修改该配置文件,裁剪不必要的功能,再编译出符合新配置的内核,得到既满足应用功能要求同时体积又小的内核,产生一个隐藏文件/usr/src/linux/.config。该文件记录了对内核具体功能模块的选择和配置。

  内核配置时,大部分的选项都可以使用缺省值,只有小部分需要根据需求选择,将与内核关系比较近且经常用到的功能代码直接编译进内核;将不经常用到的代码编译为可加载模块,有利于减小内核的长度,增加灵活性。

  4.3 驱动程序的设计

  在Linux操作系统中驱动程序是操作系统内核与硬件设备直接的接口。驱动程序屏蔽了硬件的细节。在应用程序看来硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。

  设备驱动程序可以设计模块化方式。不必编译进内核,而是被分别编译并链接成一组目标文件,这些文件可以被载入正在运行的内核,或从正在运行的内核中卸载。可以减少内核的长度,具有很大的灵活性。

1 2 3

关键词: 嵌入式 智能仪器 DSP ARM

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版