一种基于有限状态机的PCIe密码卡调度方法技术

技术编号:36553593 阅读:22 留言:0更新日期:2023-02-04 17:07
本发明专利技术公开一种基于有限状态机的PCIe密码卡调度方法,将PCIe密码卡设备的工作时的几种状态,进行抽象化并通过有限状态机对设备的行为进行建模,描述PCIe设备在工作周期内所有的状态序列以及来自上位机的事件请求,最终的目的是,通过有限状态机的抽象方法,实现固件程序架构清晰,代码简洁,以及程序的健壮和稳定。同时节省代码开销,提升代码的执行效率。本发明专利技术引入有限状态机的方法可以使程序代码通俗易懂,代码架构层次清晰,便于开发维护,减少了后期维护的难度,同时也提升了开发效率。同时也提升了开发效率。同时也提升了开发效率。

【技术实现步骤摘要】
一种基于有限状态机的PCIe密码卡调度方法


[0001]本专利技术涉及一种基于有限状态机的PCIe密码卡调度方法,属于PCIe密码卡调度领域。

技术介绍

[0002]有限状态机(FSM)是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中,有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件设计、编译器、网络协议等
通常在固件开发领域,程序员在编程时实现相关业务逻辑时经常需要处理各种事件和状态切换,通过各种switch/case 和if/else语句实现,当在处理一些业务逻辑比较复杂的需求时,如果引用有限状态机来描述,把业务模型抽象成一个有限状态机,那么代码就会逻辑特别清晰,结构特别规整。
[0003]PCIe密码卡工作时具有多个状态,通过传统的固件进行逻辑实现,代码冗杂,一旦发生未知错误,程序容易宕机。即通过各种switch/case 和if/else语句也能实现整个固件的处理流程,但是当设备状态频繁切换变化时,程序会跳来跳去,代码逻辑会更加复杂,代码必然会冗杂难以理解。

技术实现思路

[0004]本专利技术要解决的技术问题是提供一种基于有限状态机的PCIe密码卡调度方法,将PCIe密码卡设备的工作时的几种状态,进行抽象化并通过有限状态机对设备的行为进行建模,描述PCIe设备在工作周期内所有的状态序列以及来自上位机的事件请求,最终的目的是,通过有限状态机的抽象方法,实现固件程序架构清晰,代码简洁,以及程序的健壮和稳定。同时节省代码开销,提升代码的执行效率。
[0005]为了解决所述技术问题,本专利技术采用的技术方案是:一种基于有限状态机的PCIe密码卡调度方法,包括以下步骤:S01)、将PCIe密码卡细化为7种状态,分别为:设备初始化状态、自检状态、CSP输入状态、核准状态、密码主观主管状态、锁定状态和错误状态,PCIe密码卡的有限状态机包括以上7种状态的集合,根据触发条件,PCIe密码卡始终在上述7种状态中切换,形成闭环;S02)、设置有限状态机的功能模块和引擎:功能模块包括改变状态单元模块、获取状态单元模块和判断状态变化单元模块,改变状态单元模块是将状态机的当前状态置为新状态,获取状态单元模块是将状态机当前的状态返回给状态机引擎,判断状态变化单元模块是判断当前的状态机状态是否已经发生变化;当引擎启动时,将状态机的初始状态置为设备初始化状态,然后进入主循环,不断调用获取状态单元模块,根据PCIe密码卡对应的状态,调用相应的功能模块,执行对应的动作;各功能模块执行完相应的处理后,会调用判断改变状态单元模块,若状态未变化,继续执行该功能模块,若状态发生变化,跳出该单元模块,重新进入状态机引擎。
[0006]进一步的,程序完成硬件模块初始化后,启动有限状态机引擎,将初始状态置为设备初始化状态,有限状态机引擎调用初始化模块,作为PCIe密码卡设备,初始化完成算法模块及文件存储模块的初始化工作,初始化模块执行成功后,此时已满足设备自测试条件,改变状态单元模块将状态置为自检状态,此时状态机引擎通过获取状态单元模块发现状态已改变,调用设备自检模块进行自检;当PCIe设备完成初始化及自检后,如果已经完成CSP输入状态,即进入核准状态,核准状态为正常工作状态,当用户角色为管理员时,进行登录后,状态将切换为密码主管状态,此时加密卡具有最高权限,当管理员口令超出最大次数,将进入锁定状态。
[0007]进一步的,CSP输入状态是指未获取授权的状态,此时只能进行密码卡的初始化以及授权认证功能,当检测到状态改变后,PCIe改出CSP输入状态,进入到核准状态。
[0008]进一步的,核准状态是当授权成功后,从CSP输入状态进入核准状态,该状态为PCIe密码服务的正常状态;当检测到状态改变后,PCIe改出核准状态,进入到其他状态。
[0009]进一步的,密码主管状态是管理员角色授权认证通过后的超级管理员状态,以管理员身份对PCIe密码卡进行操作,注销权限后,进入核准状态;当检测到状态改变后,PCIe改出密码主管状态,进入到核准状态。
[0010]进一步的,错误状态是当PCIe密码卡发送发生错误后,进入错误状态,错误状态发生后,密码卡仍然可以工作,直到错误状态改出;当检测到状态改变后,PCIe改出错误状态。
[0011]进一步的,锁定状态是当管理员登录错误次数超出最大次数后,进入锁定状态,锁定后,密码卡不再响应CMDQ指令。
[0012]本专利技术的有益效果:本专利技术将PCIe密码卡设备的工作时的几种状态,进行抽象化并通过有限状态机对设备的行为进行建模,描述PCIe设备在工作周期内所有的状态序列以及来自上位机的事件请求,最终的目的是,通过有限状态机的抽象方法,实现固件程序架构清晰,代码简洁,以及程序的健壮和稳定。同时节省代码开销,提升代码的执行效率。
[0013]本专利技术引入有限状态机的方法可以使程序代码通俗易懂,代码架构层次清晰,便于开发维护,减少了后期维护的难度,同时也提升了开发效率。
附图说明
[0014]图1为状态机初始化及设备自检的流程图;图2为CSP输入状态示意图;图3为核准状态示意图;图4为密码主管状态示意图;图5为错误状态示意图。
具体实施方式
[0015]下面结合附图和具体实施例对本专利技术作进一步的说明。
[0016]实施例1本实施例涉及的专业术语及缩写:FSM:有限状态机(Finite State Machine)。
[0017]CSP:加密服务提供者(Cryptographic Service Provider)。
[0018]基于有限状态机(FSM)对设备状态的抽象:作为公开的技术知识,有限状态机通常可归纳为4个要素,即现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。现态:是指当前所处的状态;条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移;动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态;次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
[0019]本实施例中,PCIe密码卡一共细化为7种状态,分别是:设备初始化状态(FSM_DEVICE_INIT)、自检状态(FSM_SELF_TEST)、CSP输入状态(FSM_CSP)、核准状态(FSM_CHECK)、密码主管状态(FSM_ADMIN)、锁定状态(FSM_LOCK)、错误状态(FSM_ERROR)。本方案中的有限状态机的设计,是包含以上7种状态的集合,根据触发条件,设备始终在上述7种状态中切换,形成闭环。上述触发条件就是现有PCIe密码卡状态跳转的条件,本实施例不再进行详述。
[0020]有限状态机实现的主要单元模块包括,改变状态单元模块(fsm本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于有限状态机的PCIe密码卡调度方法,其特征在于:包括以下步骤:S01)、将PCIe密码卡细化为7种状态,分别为:设备初始化状态、自检状态、CSP输入状态、核准状态、密码主管状态、锁定状态和错误状态,PCIe密码卡的有限状态机包括以上7种状态的集合,根据触发条件,PCIe密码卡始终在上述7种状态中切换,形成闭环;S02)、设置有限状态机的功能模块和引擎:功能模块包括改变状态单元模块、获取状态单元模块和判断状态变化单元模块,改变状态单元模块是将状态机的当前状态置为新状态,获取状态单元模块是将状态机当前的状态返回给状态机引擎,判断状态变化单元模块是判断当前的状态机状态是否已经发生变化;当引擎启动时,将状态机的初始状态置为设备初始化状态,然后进入主循环,不断调用获取状态单元模块,根据PCIe密码卡对应的状态,调用相应的功能模块,执行对应的动作;各功能模块执行完相应的处理后,会调用判断改变状态单元模块,若状态未变化,继续执行该功能模块,若状态发生变化,跳出该单元模块,重新进入状态机引擎。2.根据权利要求1所述的基于有限状态机的PCIe密码卡调度方法,其特征在于:程序完成硬件模块初始化后,启动有限状态机引擎,将初始状态置为设备初始化状态,有限状态机引擎调用初始化模块,作为PCIe密码卡设备,初始化完成算法模块及文件存储模块的初始化工作,初始化模块执行成功后,此时已满足设备自测试条件,改变状态单元模块将状态置为自检状态,此时状态机引擎通过获取状态单元模块发现状态已改变,调用设备自检模块进行自检;当PCIe设...

【专利技术属性】
技术研发人员:姜向阳秦法林张忠国石念伟王晓玉范宣荣尹相彦
申请(专利权)人:山东华芯半导体有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1