嵌入式支付应用开发受到硬件开发板不足、烧片时间长的问题

摘要:目前嵌入式支付应用的开发受到硬件开发板不足、烧机时间长、调试不便等因素的影响,面临应用开发周期长的问题。为了解决上述问题,研究了嵌入式支付系统,并在Windows环境下开发了与嵌入式支付系统对应的嵌入式支付系统模拟器。所开发的嵌入式支付模拟器是基于软件模拟硬件功能的基本思想,通过Windows现有的API模拟嵌入式支付系统的基本系统。进行模拟;扩展资源工具,实现中间层的移植;通过配置文件解决模拟器适配不同机型的问题,实现人机交互界面的输入输出;通过动态链接库(Dynamic Link Library,DLL)隔离、宏隔离和区域隔离来解决Windows相关的API隔离。

0 前言

随着生活水平的提高和社会的发展,人们对电子产品的需求也越来越大,极大地促进了嵌入式系统行业的快速发展。无论是用于从银行取款的ATM(Automated Tellermachine),还是用于通讯的手机,甚至是日常孩子玩的智能玩具中的小芯片,都离不开嵌入式技术。可以说,嵌入式产品已经遍布全球。人们生活的方方面面[1]。嵌入式系统产品种类繁多,不仅广泛应用于各行各业,而且对人们的生活和社会的发展产生了重大影响。随着消费者对嵌入式产品需求的扩大,开发人员需要开发更高性能的软硬件系统,这也将导致嵌入式系统的开发和学习难度越来越大。在嵌入式开发过程中,经常会出现软硬件协同开发、嵌入式产品硬件资源非常昂贵、软硬件知识、开发时间长等问题[2-4]。

为了解决上述问题,本文研究开发了Windows环境下的嵌入式支付系统模拟器,模拟了嵌入式支付系统的部分功能,在模拟器上实现了部分应用程序的开发和调试c语言万年历程序设计源程序,实现了嵌入式支付系统的开发和调试。模拟器上的一些应用程序。尽可能少修改或不修改,就可以在真正的嵌入式支付机上正常运行。

1 嵌入式支付系统模拟器架构

1.1 系统架构

系统架构如图1所示。可以看出,该系统包括三个部分:真机辅助工具、人机交互和模拟器处理。

(1)真机辅助工具模块

真机辅助是旨在加快嵌入式支付应用程序开发的辅助集合。目前系统有一个资源工具,是MFC开发的WIN32应用程序,可以生成嵌入式支付应用程序所需的菜单数据。

(2)人机交互模块

主控模块控制仿真环境。该模块包含人机交互界面和人机交互处理。

人机交互界面:模拟真实嵌入式支付机的界面,将模拟器处理模块处理的结果展示给用户查看。

人机交互处理:模拟嵌入式支付系统的按键输入和LCD输出功能。

(3) 模拟器处理模块

仿真器处理模块实现嵌入式支付系统的仿真,是整个仿真器的核心部分。模块可以分为三层,即中间层、系统层和配置层。

1.2 系统运行流程

系统运行过程为:(1)系统启动主控线程,通过配置信息对象读取配置文件内容;(2)主控线程绘制人机交互界面根据窗口配置内容,然后根据模拟设置模拟器环境并加载要运行的应用程序DLL;(3)启动模拟器线程并运行应用程序;(4)应用程序运行,用户通过人机交互界面)输入数据并将数据传递给模拟器线程,模拟器接收用户输入并进行处理;(5)用户结束应用程序,系统结束模拟器线程;(6)系统结束主控线程。

2 嵌入式支付系统模拟器的实现

2.1 配置层的实现

配置层包括配置信息和配置信息对象。配置信息是一个数据文件,其数据框由模拟器可配置信息组成,具体内容由用户填写。配置信息对象是为用户操作配置信息提供统一接口的类。

模拟器系统利用配置信息可以实现两个功能:模型的可选性和应用程序的动态加载。因为嵌入式支付系统适用于多种机型,对于不同的机型,它们的区别只是人机界面不同,内存大小不同,Flash大小不同,底层驱动不一致,所以模拟器系统使用配置文件来动态绘制模拟器人机交互界面,动态申请模拟器内存​​大小,动态设置模拟器Flash大小,动态加载模拟器驱动。因此,模拟器系统可以利用配置信息实现模型的可选性。

2.2 基本系统模拟——“内存池”模拟内存管理

内存池技术提供了一种内存分配方法。它向系统申请一块地址连续的大块内存,然后根据自己的需要管理这块内存。如果内存块不够用,则继续申请新内存。这种方法的优点是可以减少内存碎片以提高性能。

嵌入式支付系统的内存管理是在windows上模拟的,在概念上与内存池技术非常相似:申请windows系统申请与真机记忆棒大小相同的内存,用这块内存来模拟嵌入式支付系统的内存管理机制。它与内存池技术的区别在于以下两个方面:(1)如果内存块不足,则抛出异常而不是继续申请;(2)模拟的目的不是为了减少内存碎片,不过是尽可能模拟嵌入式支付系统内存的分配。

2.3 驱动组模拟

2.3.1 点图模拟 LCD 驱动器

LCD(Liquid Crystal Display,液晶显示器)作为输出设备,用户将要显示的信息传送到显示缓冲区,然后LCD通过“点亮”的方式进行显示。PC 上还有一个 LCD。是否可以通过PC上的LCD模拟嵌入式支付机的LCD?答案是肯定的,只需在PC上模拟嵌入式支付系统的LCD驱动即可。在PC上模拟LCD驱动就是绘制点阵数据显示在PC的LCD上。目前WIN32可以通过以下两种方式在LCD上显示点阵数据:(1)在DOS下使用汉字显示原理是利用SetPixel函数逐点绘制点阵数据。这种方法的优点是彩屏绘制,但是绘制速度慢;(2) 直接使用缓冲数据创建BMP对象,这种方法可以快速刷新屏幕,但只能实现单色渲染[6]。本系统借鉴了这两种方法,采用双缓冲机制,利用SetPixel函数将点阵数据绘制到一个中间DC(Device Context,设备描述表)中。),在特定条件下将方块 DC 绘制到屏幕上。这样不仅可以实现彩屏的绘制,还可以控制绘制速度。设备描述表)。),在特定条件下将方块 DC 绘制到屏幕上。这样不仅可以实现彩屏的绘制,还可以控制绘制速度。设备描述表)。),在特定条件下将方块 DC 绘制到屏幕上。这样不仅可以实现彩屏的绘制,还可以控制绘制速度。

2.3.2 文件模拟 Flash 驱动

图片[1]-嵌入式支付应用开发受到硬件开发板不足、烧片时间长的问题-老王博客

Flash是一种存储芯片,是嵌入式支付真机的重要组成部分。它不仅可以保存用户的应用信息,还可以保存系统的配置信息[7]。

Flash实际上是一个很大的连续地址区域,这个区域的数据可以被读取、写入和永久存储。由于Flash空间比较大,如果直接用内存来模拟Flash,一些配置比较低的PC可能内存不足。模拟器系统根据Flash可以永久保存的特性,使用文件模拟Flash。该文件被视为一个大的连续地址空间。打开文件后可以得到地址空间的首地址,加上偏移地址就可以得到对应的地址空间。这样,Flash驱动的模拟就变得简单了,通过open、地址偏移、读、写、

2.4 支付服务支持模块的设计与实现

支付服务支持模块是与支付应用直接相关的模块,为支付应用提供银行卡号信息和一些加密算法。由于不同银行的支付协议不一致,具体的支付流程也不同。因此,具体的支付处理由应用层程序根据不同的需求来实现。嵌入式支付系统只提供用户卡的银行卡信息,并提供常用的几种加密算法。

由于嵌入式资源的限制,嵌入式支付系统不能包含所有的加密算法。其加解密算法包括des和3des加解密。这部分内容可以直接移植到模拟器中,无需修改。

2.5 中间层的迁移

嵌入式支付系统中封装了一个中间件(中间层),该层的内容是对底层信息的封装,供应用程序直接使用。目前仿真器系统的中间件有GDI子系统、GUI子系统和DB子系统。GDI(Graphics Device Interface,图形设备接口)封装了底层的LCD驱动,为GUI模块和应用程序调用提供了接口。嵌入式支付系统中的GDI模块包括动态绘图区、绘图、纹理、文本、光标、滚动条和启动提示。在LCD驱动已经完成仿真的前提下,GDI调用LCD驱动接口完成绘图操作。在模拟器系统中,大部分GDI操作都可以直接从嵌入式支付系统移植过来,

2.6 WIN32函数隔离的设计与实现

嵌入式支付系统参考WIN32中的UI设计,设计了适合其终端应用的GUI子系统。这样的设计不仅有利于统一不同产品和项目的界面风格,也有利于应用开发操作界面。但是给嵌入式支付系统带来方便的同时,也给模拟器系统带来了一个问题:嵌入式支付系统的GUI函数和WIN32中的GUI函数有很多同名,两者的功能是不可替代。比如WIN3​​2的GUI模块有CreateWindow功能c语言万年历程序设计源程序,嵌入式支付系统的GUI模块也有CreateWindow功能,两者的参数与实现功能不一致。并且由于整个嵌入式支付系统是用C语言和汇编语言共同开发的,所以模拟器系统需要解决一个很大的问题:如何让同名的函数在C环境中共存,并且让它们的调用不乱,即即,在主控系统中调用WIN32中的GUI函数,在模拟器应用程序中调用模拟器GUI函数。如图2所示,系统提出使用DLL隔离、宏隔离和区域隔离来共同处理这个问题。并在模拟器应用程序中调用模拟器 GUI 功能。如图2所示,系统提出使用DLL隔离、宏隔离和区域隔离来共同处理这个问题。并在模拟器应用程序中调用模拟器 GUI 功能。如图2所示,系统提出使用DLL隔离、宏隔离和区域隔离来共同处理这个问题。

3 实验结果与分析

3.1 实验环境

硬件环境:CPU为奔腾4以上;内存为 1 024 MB 或以上;可用硬盘空间为 1 024 MB 或以上。

软件环境:操作系统为Microsoft Windows 7;开发工具为VS2010;开发语言为C和C++混合编程。

3.2 实验结果分析

将计算器应用程序(如图 3 所示)、菜单应用程序和万年历应用程序移植到模拟器中进行测试。移植过程中没有修改源代码,而是转成DLL,运行结果与嵌入式支付真机一致。.

从测试结果可以得出以下结论:

(1)模拟器的可靠性:在真正的嵌入式支付机上实际运行的4个应用程序的源代码保持不变,但是转换成DLL,经过X86VC编译器编译后可以在模拟器上运行并且结果与真机上的结果一致,通过以上4个应用程序的测试,表明该模拟器是可靠的。

(2)模拟器应用开发优势:将应用移植到模拟器后,只需将DLL配置到应用启动项中即可直接运行。在此过程中遇到问题可以直接使用VS2010调试调试工具。因此,在模拟器上开发应用程序不需要真机或烧录时间,可以通过VS2010提供的调试工具进行调试,大大加快了应用程序的开发和测试速度。

4。结论

本文研究开发了一种Windows环境下的嵌入式支付系统模拟器。模拟器基于功能模拟的基本思想,通过Windows现有的API模拟基础系统,提出保持外部接口不变,模拟功能功能的原则。,它实现了底层驱动的模拟。通过配置文件,解决了模拟器适用于不同机型的问题。本文还提出了三种使用DLL隔离、宏隔离和区域隔离的方法来解决C环境下同名函数共存的问题,不会混淆调用。

参考

[1] 李婷. ARM全系统模拟器中I2C模块的设计与实现[D]. 成都:电子科技大学,2012.

[2]张秀平,杨国武,郑德生。用于模拟 MMU 协处理器的基于组件的模型[C]。2010 2nd International Conference on Information Engineering and Computer Science (ICIECS), 2010, 42 (8): 1 -4.

[3] 邓曼玲. ARM嵌入式Linuz系统研究与实现[D]. 北京:北京邮电大学,2009.

[4] 柯华成. 嵌入式系统全系统模拟器框架的设计与实现[D]. 杭州:浙江大学,2006.

[5] 王平. 嵌入式系统研究[J]. 教学教育技术与培训, 2008 (1): 21-22.

[6] GRANHAM I. 面向对象方法的原理与实践(英文第3版)[M]. 北京:机械工业出版社,2003.

[7] 汪洋. NAND Flash在嵌入式系统中的仿真与应用[D]. 成都:电子科技大学,2011.

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论