首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于S3C44B0X微处理器税控收款机系统的设计

基于S3C44B0X微处理器税控收款机系统的设计

基于S3C44B0X微处理器税控收款机系统的设计

基于S3C44B0X微处理器税控收款机系统的设计

 

作者:贺安坤 陈明 郝红旗 来源:微计算机信息

 

摘要:嵌入式系统的应用领域越来越广泛。文章以S3C44B0X微处理器及Nucleus PLUS操作系统为核心,介绍了税控收款机系统的组成及软硬件设计。
关键词:嵌入式系统;S3C44B0X微处理器;税控收款机

1引言

税控收款机是指具有特定税控功能的电子收款机。所谓特定税控功能是指能够保证数据的正确生成、可靠存储、安全传输,并可实现税务管理和稽查等功能。税控收款机系统设计一般采用目前流行的嵌入式系统结构。硬件设计考虑高性价比和高可靠性,软件设计上,考虑系统的稳定性、实时性和可靠性。根据这一原则税控收款机系统开发可选取ARM体系结构的主芯片S3C44B0X微处理器及高性能微内核的实时操作系统(Nucleus PLUS)。Samsung S3C44B0X微处理器是三星公司为手持设备和一般应用提供的高性价比和高性能的微控制器解决方案,其CPU核采用的ARM公司16/32位ARM7TDMI RISC结构,S3C44B0X通过在ARM7TDMI内容基础上扩展一系列的通用外围器件,使系统费用降至最低,消除了增加附加配置的需要。 Nucleus PLUS 是为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSI C写成的,因此非常便于移植并能够支持大多数类型的处理器。以下就税控收款机系统软硬件开发的关键技术加以论述。

2硬件设计

2.1硬件组成

    税控收款机硬件除S3C44B0X微处理器外,还主要包括主存储器、RAM存储器、打印机、显示屏、键盘、及其它的通信设备等。主存储器主要是指Flash存储器,又分为NandFlash和NorFlash,如采用512K的NorFlash 39vf040(SST公司),32M的NandFlash k9f56080b(Samsung公司)。RAM存储器主要是利用它的读取速度快等特点来运行程序,即我们俗称的内存,几乎所有的嵌入式系统包括PC机都遵循这一特点,即把程序加载到SDRAM中运行。如采用8M字节的SDRAM HY57V641620HG。图1为税控收款机硬件系统框图。

 

e0okDRFd.jpg
51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)

2.2 底层驱动的设计

底层驱动包含三部分内容:BOOT向量表部分,S3C44B0X监控程序部分及税控机在Nucleus下的BSP。

BOOT向量表

因系统选用的是Nucleus操作系统,对S3C44B0X的中断是向量模式。所以在boot.s(汇编语言编写)文件中主要是设置向量表的跳转地址。表1为ARM7TDMI的异常向量表。

 

地 址   异 常   进入模式
 
0x0000,0000  复位   管理模式
 
0x0000,0004  未定义指令  未定义模式
 
0x0000,0008  软件中断  管理模式
 
0x0000,000C  中止(预取指令) 中止模式
 
0x0000,0010  中止(数据)  中止模式
 
0x0000,0014  保留   保留
 
0x0000,0018  IRQ   IRQ
 
0x0000,001C  FIQ   FIQ
 
表1 ARM7TDMI的异常向量表

S3C44BOX把复位信号也作为中断来处理,系统复位时程序(pc)指针被置成0,使程序跳到0x00000000开始运行。在boot.s文件的开始(0地址)使用了一条跳转指令:

B 0x1000

其作用是在系统上电复位或者手动复位后系统程序指针跳到0地址执行时,系统将程序跳转到0x1000即4K地址的地方继续执行(4K地址烧入监控程序)。

44B0X的监控程序

负责初始化系统以及拷贝应用程序到内存并且运行。该部分关键的两个文件是mon.s和Main.c,mon.s(汇编语言编写)文件用来初始化中断、存储器、堆栈等,进行系统初始化,建立C程序运行环境。由于在BOOT向量表中直接跳转到了监控程序的起始处执行程序,之前并没有对44B0进行硬件上的寄存器等进行初始化,所以在这个程序中的开始是先屏蔽中断,然后配置时钟控制寄存器,再配置存储器控制寄存器,设定中断向量,设定各个模式下的堆栈,建立好C语言的运行环境,负责把自身代码从ROM中拷贝到内存中并且拷贝初始化

数据区以及初始化0数据段,最后跳到Main函数执行C语言的函数体。Main.c是监控程序的主程序入口文件,主要是进行端口的初始化,设定系统主时钟,初始化串口并且设定波特率等工作方式,并将应用程序从NandFlash上读取到内存中并运行。下面是监控程序中存储控制寄存器配置的源代码。

adr   r0, ResetHandler

         ldr     r1, =ResetHandler

         sub    r0, r1, r0             

         ldr     r1, =SMRDATA

         sub    r0, r1, r0

         ldmia   r0, {r1-r13}

         ldr     r0, =0x01c80000                    ;BWSCON Address

         stmia   r0, {r1-r13}  

SMRDATA:

         .word         0x01000000                  @ BWSCON: 总线宽度与等待状态控制寄存器

@ bank6: SDRAM 16bit; bank0: ROM 8bit; bank1:

                                                        @ peripheral at Bank 3-5 : 8bit, nBE

                                                        @ Not using UB/LB

                                                        @ WAIT disable

         .word         0x00002b50                  @ Bankcon0 boot rom 39vf040 512k NorFlash

@:Tacs=1; Tcos="1"; Tacc="4"; Toch="1"; Tcah="1"

         .word         0x00001f00                  @ Bankcon1网口控制芯片 16bit: Tacs="0"; Tcos="4"; Tacc="14"; Toch="0"; Tcah="0"

         .word         0x00001f00                  @ Bankcon2权限锁 N/A

         .word         0x00001f00                  @ Bankcon3 NandFlash   : Tacs="0"; Tcos="4"; Tacc="14"; Toch="0"; Tcah="0"

         .word         0x00001f00                  @ Bankcon4键盘数据口    : Tacs="0"; Tcos="4"; Tacc="14"; Toch="0"; Tcah="0"

         .word         0x00001f00                  @ Bankcon5 8bit 外接数据口      : Tacs="0"; Tcos="4"; Tacc="14"; Toch="0"; Tcah="0"

         .word         0x00018008                  @ Bankcon6 SDRAM;   Trcd=2clocks; column addr 8-bit

         .word         0x00001f00                  @ Bankcon7液晶以及16C554(扩展串口)

@: Tacs="0"; Tcos="4"; Tacc="14"; Toch="0"; Tcah="0"

         .word         0x008005fe                   @ REFRESH 15.6us

         .word         0x00000000                  @ Bank 6/7 size: 32M/32/8M

         .word         0x00000020                  @ MRSRB6  CAS latency = 2clocks

         .word         0x00000020                  @ MRSRB7  CAS latency = 2clocks

@Tacs      在nGCSn 有效之前地址建立时间

@Tcos      在nOE上芯片选择建立时间

@Tacc      存取周期

@Toch      在nOE上芯片选择保持时间

@Tcah      在nGCSn有效地址保持时间

@Trcd      RAS 到 CAS 延时y

51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)

Nucleus下的BSP驱动

   BSP驱动部分可以分为两大部分:一是直接操作外设的驱动,包括串口打印机驱动,flash驱动,led驱动,vfd驱动等几部分,这些驱动跟44B0X内部寄存器没有直接关系;另外一大类驱动则是直接配置44B0内部寄存器的驱动,包括设置gpio,配置中断寄存器,rtc时钟读写,timer的设置,uart的配置等等。另外键盘的扫描也是直接操作44B0X内部寄存器实现的。所有这些驱动均用c语言编写。

3软件设计

  应用软件的设计体现在税控收款机两大主要功能的实现上,即商业功能和税控功能。商业功能包括模式管理、权限管理、PLU管理、项目管理、收款管理、各种报表管理功能,这里不作详细介绍;税控功能主要有如下几个方面:

初始化操作

初始化需要税控卡与用户卡,完成购票与录票操作,否则税控机不能进行开票。

开票(包括废票、退票)操作

在购票和录入发票之后,税控收款机就可以进行开票操作了。税控卡负责对开票数据进行合法性检查,并根据税种税目索引号对开票金额进行分类累计,更新日交易记录,最后生成发票税控码。税控收款机保存发票明细,更新日累计,打印发票。

报税、完税操作

    在税务机关规定的期限内,纳税人可以进行报税,完税操作。若超过规定的期限还没有进行报税,完税操作,税控收款机将不能继续开具发票。只有进行报税,完税操作更新税控收款机内的监控信息后,税控收款机才能继续开具发票。

税务核查操作

当税务机关要想检查税控收款机内的交易情况时,可以通过税务管理系统发行管理卡来核查税控收款机上的发票明细,日交易数据,申报数据是否和申报带给税务管理系统的数据一致。

4结束语

考虑到软件的安全性,用户权限分级管理,税控收款机用户级别可分为三级,分别为:超级管理员、管理员、收款员。进入相应的用户模式都得要有相对应的密码校验,才能够登录税控收款机,执行本用户级的相应操作。税控收款机具有掉电保护功能,当掉电发生时,后备电源同时开始工作,系统也检测到掉电中断的发生,中断服务保存数据的任务变为最高优先级任务,它在瞬间抢占其他低优先级任务的时间片执行。执行完该保存数据的任务后,自动关闭后备电源。

参考文献:

ARM体系结构与编程 杜春雷编著 清华大学出版社

嵌入式系统设计与实例开发 王田苗 著 清华大学出版社

S3C44B0X微处理机外围与嵌入式系统实验北京恒锐科技有限公司(2005)

51 c8051f(f020,f040) msp430 arm(2410,2510) fpga(xc3s4000) dsp(5116 dm642) keilc vc++ matlab linux protel Ten_layerPCB mpegx h.26x Rscode Turbocode ofdm VideoBroadcasting ldpc_code(now!)
返回列表