蓝宇PC104产品支持USB等多种存储
1、 完全自主版权的BIOS
我公司完全自行编制的BIOS,不需要支付版费,降低了成本,蓝宇BIOS具有如下特点:
A、支持多种DOS操作系统,用户可以自由选择免费的操作系统如DR-DOS、FREE-DOS,一般的ROM-DOS 和MS DOS 都是需要付费的。
B、BIOS不需要用户配置参数,启动时间短,1.8秒可启动小的应用程序,复位=0.5S,BIOS=1.2S,DOS=0.1,与专用嵌入式系统相当,实现了快速启动特性。
C、BIOS启动配置参数存储在FLASH中,不需要电池,电池掉电仅仅影响RTC时间,因此不会出现传统的工控板掉电后无法启动的问题
D、双BIOS备份,主要用于升级bios或者写入参数时意外断电,参数意外损坏后,仍然可以从主bios启动,无需返厂维修,进一步提高了产品可靠性和现场可维护性。
E、有开机LOGO,提供工具,客户可以自行自定开机画面,开机不显示自检画面,于专用系统相同。
由于编制BIOS 的技术复杂,不易掌握,国内真正自己编制的其他公司的BIOS 在市场上还没有见到。
2、 独创的虚拟显示技术
虚拟显示是我公司独特的一项技术,用串口把BBPC4X86 与一台普通电脑连接起来,在电脑上使用键盘和屏幕显示,就像BBPC4X86 是一台完整的PC一样,开发测试简单,不干扰应用显示设备,生产维护方便。一般嵌入式应用,在开发阶段需要完整的开发环境,系统交付使用后,这些环境就没有用了,如果为了开发方便买一个带显示和键盘的X86主板,实际上就增加了不必要的成本。一般嵌入式开发,经常会需要直接调试硬件设备,很多用户习惯使用DEBUG 等工具,直接操作端口,甚至编一段小的测试程序,还有用户喜欢使用一些直接写屏的软件进行开发,比如Q 编辑器,TUBROC2.0,DEBUG 等,对用户开发非常方便。用户开发完成后,需要对电子盘进行格式化、传系统、拷贝文件等等,可以自由使用免费的DOS 操作系统,方便生产,降低成本。
3、 大常规内存
一般X86 体系,在DOS 下只能直接寻址640KB 内存,高端内存只能用作数据,无法直接作为程序区使用,使用ROM-DOS 的系统只有512KB 可用内存。BBPC4X86 系列产品独有大内存技术,在大内存模式下可以直接使用896KB 内存,使用Borland C 开发时不需要任何特殊操作,您的天空一下子大了很多!注意此模式下,不能使用直接写屏的软件,如Q 编辑器、TC2.0,但是DEBUG 可以正常使用。小内存模式下可以直接使用736KB 内存,直接写屏的软件如Q 编辑器、TC2.0 都可以使用。
4、 支持标准的IDE硬盘、软驱和CF 卡
直接支持低价格、大容量的ide硬盘/高速中等容量CF卡和小容量软驱,在需要大量数据存储的应用中使用方便,成本低廉,一般相同容量的CF 卡比DOC 电子盘价格低得多,而标准硬盘的价格之低就更不需要说了。嵌入式应用有时会需要使用大容量存储介质,CF卡价格便宜,接口标准,运行无噪音,速度快,抗震,容量大,是一种理想的解决方案,IDE 接口也可以挂接标准硬盘,但是一般电子盘在嵌入式应用中使用较为普遍。
5、 内置大容量电子盘
同类内置电子盘的产品,一般只有300KB 的电子盘,与PC 系统的寻址能力(1MB)不匹配,用户程序和数据稍微大一点就不够用了,使用汉字显示的时候,汉字库就有256KB,用户基本无法使用,只能去购买昂贵的DOC,成本增加100 多元,这时的300KB 电子盘形同虚设。我公司产品板载360KB~7MB电子盘,存放操作系统和应用程序,不需要频繁修改数据,抗震动,可靠性高,与PC 系统的寻址能力(1MB)相匹配,绝大多数情况下,用户不必另外购置电子盘,节约了成本。
6、 内置2级汉字库
在汉字应用中,一般的300K 电子盘不能满足用户要求,因为16 点阵汉字库256KB,再加上操作系统64KB,应用程序和数据空间所剩无几,为此使用电子盘需要增加100 元成本,而且字库加载到内存后需要占用256KB 内存,减少了用户内存。BBPC4X86 内置二级16 点阵汉字库和字符库,不占用用户内存和电子盘空间,还可以作为掉电保持存储器使用,用于存放小时级别更新的用户数据,节约了系统成本。
7、 实时时钟
内置的RTC 实时时钟完全与DOS 和BIOS 兼容,使用系统函数很容易访问,对于需要日历时间的应用是必不可少的。
8、 支持标准PC键盘
标准的PS/2 键盘,编程简单,价格便宜量又足,很多用户都非常喜欢使用,我公司提供了标准的驱动程序,可以直接支持标准键盘(包括大键盘和小键盘),节约了成本。对于需要矩阵键盘的用户,我公司也提供完整软硬件方案,使用方法和标准键盘一样。
9、多种显示方案
虽然BBPC4X86 系列产品可以直接支持液晶显示模块,但是有一些高端用户需要动态的画面显示或者使用真彩液晶屏,此时液晶模块就不能满足要求了。我公司配套的液晶显示卡,可以直接支持128*64~1204*768 的单色、彩色液晶屏,显示速度快,适合动态画面的显示,同时提供图形库,用户编程极为方便。
在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断出来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。
在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内容SPSR_<mode>寄存器中,同时设置适当的CPSR 位、改变处理器状态进入ARM 态和处理器模式,从而进入相应的异常模式。在设置中断禁止位禁止相应中断(如果需要)后,ARM核保存返回地址到LR_<mode>,同时设置PC为相应的异常向量。当异常返回时, 异常处理需要从SPSR_<mode>寄存器中恢复CPSR的值,同时从LR_<mode>恢复PC,具体的异常返回指令如下:
Ø 从SWI和Undef异常返回时使用:
movs pc, LR;
Ø 从FIQ、IRQ和预取终止返回时使用:
SUBS PC, LR,#4;
Ø 从数据异常返回时使用:
SUBS PC, LR,#8
在使用上述指令异常返回时,如果LR之前被压栈的话使用LDM “∧”, 例如:
LDMFD SP!, {PC}∧
理解了ARM异常处理的过程以后,Realview MDK中__irq关键字的作用就容易理解了。下面的函数为一个中断处理函数,其前面加了__irq关键字。
__irq void pwm0_irq_handler(void)
{
//Deassert PWM0 interrupt signal
unsigned int i=AT91F_PWMC_GetInterruptStatus(AT91C_BASE_PWMC);
// Clear the LED's. On the Board we must apply a "1" to turn off LEDs
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, led_mask[0]);
AT91F_PWMC_StopChannel(AT91C_BASE_PWMC,AT91C_PWMC_CHID1);
AT91F_AIC_ClearIt(AT91C_BASE_AIC,AT91C_ID_PWMC);
AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
}
当编译器器编译这个函数时,除了保存ATPCS规则规定的寄存器以外,还保存了CPSR及PC的值。在函数的返回时,还自动添加了SUBS PC, LR, #4和从SPSR寄存器恢复CPSR寄存器值的指令。用这种方式处理以后,中断处理函数可以和普通函数一样的使用。
注意:中断处理都是在ARM模式下进行的,当源程序欲编译成Thumb指令时,这时,用__irq关键字修饰的函数仍然会被编译成ARM指令。如果源程序编译成在CORTEX M3上运行的指令时,关键字__irq对函数的编译没有任何影响,即编译器不会自动保存CPSR及PC的值,也不会添加SUBS PC, LR, #4和从SPSR寄存器恢复CPSR寄存器值的指令,因为CORTEX M3处理器硬件会自动处理这些问题,无需软件开发人员关心。