您的位置:首页 > 其它

智能卡应用的开发流程

2010-07-15 11:40 232 查看
在我看来,无论是上层的应用程序开发还是底层的譬如驱动程序的开发,无论是用C、C++还是Java、.net等语言进行开发都是一样的,必定会有一个执行平台,以及一个供开发人员调用的库(提供了各种封装好的功能接口)和编译器。

不同的是C、C++等这类语言编译出来的代码是操作系统可以执行的机器码指令,编译完之后可以直接在操作系统上运行。而Java和.net则是在操作系统上搭建了一层运行环境,使用自己开发的虚拟机来执行Java程序和.net程序,而编译器编译出来的指令都是虚拟机可以识别的中间语言。

那我们智能卡的开发有什么区别呢?基本框架是一样的,只不过执行的平台从PC机X86平台转移到了智能卡芯片的平台上(有51平台、arm平台等)。开发环境也由大家所习惯的VC、eclipse、VS等换到了keil、ADS等嵌入式平台。使用的语言基本上是C和汇编。

智能卡芯片提供了一个新的执行平台,而且也提供给开发人员一些基本的库接口,譬如字符串的操作等。我们基于这些就可以开发智能卡上的应用。

当然智能卡的开发属于嵌入式开发,有自己的特点,资源受限(代码空间有要求、执行效率有要求和指标、对RAM的使用也要特别对待)。但是该有的组件也都有:CPU、RAM、永久存储(eeprom或者flash)、通讯IO等。

下面介绍智能卡应用开发的基本框架:



1. 首先硬件环境提供了基本的IO通讯和存储器,这是软件层最底层的,我们可以封装通讯接口(智能卡的发送和接收接口)、对存储器的读写接口。

2. 再上层我们可以基于存储器的读写接口实现一层文件系统,基于发送和接收接口实现7816协议或者14443等协议的通讯层。

3. 到了这里我们就可以实现我们具体的智能卡应用了,依照你所要实现的应用规范,使用下层提供的接口和资源来实现。

由于智能卡平台多种多样,而且同一系列的智能卡芯片资源还有差别,所以我们在开发智能卡应用的时候,换一个芯片平台就要重新熟悉这个芯片的硬件环境和资源,即使这种情况下我们在做应用开发时也一样可以模块像上面提到的模块化开发一样,这对模块的功能实现要求就比较高。

模块化程度越高移植越简单、越快,但是同样会造成一定程度的性能和资源丢失,这是一个矛盾的两个方面,开发人员可以适当的在不同的情况下做适当的调整,最终目的就是以最短的时间开发出性能稳定高效符合规范的应用。

注:个人的拙见,难免局限,如有错误,不负相关之责任。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: