2.3静态存储器SRAM的选择
外部扩展的两片SRAM,要求能满足上屏数据读取速度的要求,考虑到存储数据的宽度和容量,本设计选用ISSI(Integrated Silicon Solution Inc.)公司的IS61C1024芯片。该芯片存储容量为128 kB,8位数据宽度,最高读写速度为25 ns,电源电压为5 V,具有最高40 MHz的读写频率,可进行高速异步读写操作,无须等待时间,其容量满足一屏文字和图像数据信息的存储要求,两片SRAM采用双体切换技术来完成数据的存储和读取过程。
3 系统软件设计
3.1 ARM软件设计
根据该系统的设计需求,将软件划分如下几个模块分别形成独立的程序文件:启动代码模块、串口模块、时钟模块、温度和亮度传感器模块、FLASH管理模块、下载管理模块和显示模块。启动代码用于初始化系统配置、初始化各个处理器模式下的栈空间,初始化目标板,引导C程序运行,用汇编语言编写;串口模块实现串口的发送、接收等基本功能;时钟模块实现RTC时间的设置与读取等基本功能;温度和亮度传感器模块实现温度和亮度控制;Flash管理模块实现外部FLASH擦除、存储、分配的管理,将显示指令和显示信息进行存储;下载管理模块负责与上位机通讯,下载显示指令和信息;显示模块负责显示指令的解析以及显示信息的提取,显示效果的处理,包括出场模式和表演模式以及各种字体字形的产生,同时负责送灰度数据给FPGA,本设计以启动代码为例阐述源代码的编写。
通常将启动代码划分为5个文件:startup.s、IRQ.s、stack.s、heap.s和target.c。startup.s包含中断向量表和系统初始化代码;IRQ.s包含中断服务程序与C程序的接口代码;stack.s和heap.s保存C语言使用的堆和栈的开始位置;target.c包含目标板特殊的代码,包括异常处理程序和目标板初始化程序。下面给出几个关键的初始化程序段供参考。
1.中断向量表
2.系统初始化代码
ResetInit
BL Initstack;初始化芯片各种模式的堆栈
BL TargetResetInit:目标板基本初始化
B Main;跳转到ADS提供的_ain函数处,它初始化函数库并最终引导CPU进入main()函数