便于升级固件的鼠标芯片及其运行方法与流程

文档序号:30761674发布日期:2022-07-15 21:17阅读:282来源:国知局
便于升级固件的鼠标芯片及其运行方法与流程

1.本发明涉及一种鼠标装置,更特别涉及一种在固件升级时无须停止全部固件工作的鼠标芯片及其运行方法。


背景技术:

2.已知闪存是根据顺序访问(serial access)来运行,由于微处理器(mcu)执行函数呼叫时需要对内存进行随机存取(random access),因此闪存并不适合直接作为微处理器执行被呼叫函数时所存取的储存器。若能使用快取来读取闪存,则可达成随机存取闪存的目的。
3.导航装置的特定应用集成电路所包含的固件主要可分为两部分。一部分固件是内建于只读存储器(rom)以执行导航装置的导航功能,而另一部分固件则记录于闪存中,以作为导航功能以外的驱动器。
4.然而,当导航装置正在被使用者操作时,若欲对闪存中的固件进行升级,则必须停止全部固件的运行,例如进入所谓的编程模式(programming mode),并在升级完毕后重新启动系统以完成整个升级程序。
5.有鉴于此,本发明另提供一种在对闪存中的固件进行升级的同时,可持续执行导航功能的鼠标装置及其运行方法。


技术实现要素:

6.本发明提供一种在升级闪存中的固件时,使用额外的硬件直接回复微处理器的目前呼叫函数的回传值,而不从闪存读取被呼叫函数的函数回传值的控制芯片及其运行方法。
7.本发明还提供一种使用第一总线从快取控制器读取函数回传值,并通过第二总线升级闪存中的固件的控制芯片及其运行方法。
8.本发明提供一种包含微处理器、总线仲裁器、闪存内存、快取控制器以及闪存控制器的鼠标芯片。所述微处理器用于产生呼叫函数的函数地址。所述总线仲裁器连接所述微处理器,用于对所述函数地址进行地址映像以产生操作地址据以从第一总线读取函数回传值,或用于从所述微处理器接收升级数据以通过第二总线发送。所述闪存内存中具有第一固件,所述闪存内存的内容用于对所述微处理器呼叫的函数进行运算并产生所述函数回传值。所述快取控制器连接所述第一总线,并用于根据所述操作地址将产生在所述闪存内存中的所述函数回传值快取至快取内存。所述闪存控制器连接所述快取控制器及所述第二总线,并用于保存快取地址与闪存地址之间的映像,据以根据所述操作地址快取对应闪存地址的所述函数回传值,或通过所述第二总线接收所述升级数据。
9.本发明还提供一种鼠标芯片的运行方法。所述鼠标芯片包含微处理器、总线仲裁器、第一总线、第二总线、快取控制器、闪存控制器以及闪存内存。所述运行方法包含下列步骤:以所述微处理器产生呼叫函数的函数地址;以所述总线仲裁器对所述函数地址进行地
址映像以产生操作地址,并通过所述第一总线将所述操作地址传送至所述快取控制器;以所述快取控制器根据所述操作地址通过所述闪存控制器快取所述闪存内存中对应闪存地址的内容所产生的函数回传值,并将该函数回传值通过所述第一总线回复至所述微处理器;以及当所述微处理器传送升级数据至所述总线仲裁器时,所述总线仲裁器停止通过所述第一总线读取所述函数回传值并经由所述第二总线发送所述升级数据至所述闪存控制器以升级所述闪存内存中的第一固件。
10.本发明提供一种包含微处理器、闪存内存、闪存控制器、快取控制器、总线仲裁器以及虚置硬件的芯片。所述微处理器用于产生呼叫函数的函数地址。所述闪存内存内建有第一固件,所述闪存内存的内容用于对所述微处理器呼叫的函数进行运算并产生函数回传值。所述闪存控制器用于读写所述闪存内存。所述快取控制器用于通过所述闪存控制器快取所述闪存内存中的所述函数回传值。所述总线仲裁器连接所述微处理器,用于通过第一总线从所述快取控制器读取所述函数回传值,或通过第二总线及所述闪存控制器升级所述闪存内存中的所述第一固件。所述虚置硬件用于当所述总线仲裁器通过所述第二总线及所述闪存控制器升级所述闪存内存中的所述第一固件时,产生并回复符合所述函数的所述函数回传值的格式的虚置回传值至所述微处理器以取代所述函数回传值。
11.为了让本发明的上述和其他目的、特征和优点能更明显,下文将配合所附图示,详细说明如下。此外,于本发明的说明中,相同的构件以相同的符号表示,于此合先述明。
附图说明
12.图1是本发明实施例的鼠标装置的方框示意图;
13.图2是本发明实施例的鼠标装置在正常模式下的运行示意图;
14.图3是本发明实施例的鼠标装置在虚置模式下的运行示意图;及
15.图4是本发明实施例的鼠标装置的运行方法的流程图。
16.附图标记说明
17.100
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
鼠标芯片
18.11
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
微处理器
19.12
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
总线仲裁器
20.13
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
虚置硬件
21.141
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
第一总线
22.142
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
的二总线
23.15
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
快取
24.151
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
快取控制器
25.152
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
快取内存
26.16
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
闪存
27.161
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
闪存控制器
28.162
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
闪存内存
29.17
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
只读存储器
30.18
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
随机存取内存
31.200
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
按键/开关
32.90
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
主机
具体实施方式
33.本发明的鼠标装置例如通过usb接口或蓝牙接口与外部的主机90进行通讯。usb接口用于提供鼠标装置运行时的电力、传送鼠标移动数据及按键点击和滚轮转动等控制信号以及传送升级数据,该升级数据用于升级鼠标装置的闪存内的固件(firmware)。蓝牙接口用于传送鼠标移动数据及按键点击和滚轮转动等控制信号以及传送升级数据。为了能够在微处理器(mcu)进行函数呼叫时对闪存进行随机存取,本发明的鼠标装置例如使用快取控制器快取闪存的架构。
34.请参照图1所示,其为本发明实施例的鼠标装置的方框示意图。鼠标装置包含鼠标芯片100以及按键/开关200,其中鼠标芯片100配置于鼠标壳体内并通过usb接口或蓝牙接口与外部的主机90连接,usb接口及蓝牙接口的运行方式为已知。按键/开关200则配置于所述鼠标壳体上以产生控制信号sc至鼠标芯片100,例如用于发出数据升级命令的点击信号或开关信号等。
35.一种实施方式中,按键/开关200为专属元件,用于产生升级命令(例如包含于图1所示的控制信号sc中)。当鼠标芯片100收到来自按键/开关200的升级命令后,将该升级命令传送至主机90以使得主机90开始发送升级数据data_upd至鼠标芯片100。另一种实施方式中,所述升级命令是主机90执行预定软件(app)所产生,主机90在发出所述升级命令至鼠标芯片100后,接着发送升级数据data_upd至鼠标芯片100以更新其闪存内的固件。升级数据data_upd例如是从网络或其他存储设备所下载。
36.鼠标芯片100包含微处理器11、总线仲裁器(bus arbiter)12、虚置硬件13、第一总线141、第二总线142、快取15以及闪存16,其中,虚置硬件13是额外配置的硬件,其包含于总线仲裁器12之内或独立于总线仲裁器12之外,且专门在虚置模式(举例说明于后)下运行;快取15包含快取控制器151及快取内存152(例如以dram表示,但不限于此);闪存16包含闪存控制器161及闪存内存162。
37.闪存内存162中具有第一固件(显示为固件i),该第一固件用于控制导航功能以外的其他功能,例如用作为第三方集成电路驱动器。一种实施方式中,当本发明的鼠标装置是电竞鼠标(gaming mouse)时,所述第一固件用于控制多个发光二极管(非用于导航功能)的点亮和/或闪烁。例如,所述第一固件在出厂前未内建于在鼠标装置内,而是在出厂后才通过鼠标装置与主机90之间的接口安装并记录于闪存16中的程序码,但本发明不限于此。
38.本发明的鼠标装置还包含只读存储器(rom)17和随机存取内存(ram)18至少其中一者连接至总线仲裁器12,且只读存储器17或随机存取内存18内建有第二固件(显示为固件ii)。一种实施方式中,所述第二固件用于计算鼠标移动、判断鼠标按键点击及鼠标滚轮转动。例如,所述第二固件在出厂前即已内建于在鼠标装置的特定应用集成电路(asic)内,以作为鼠标装置的基本控制码。
39.本发明中,鼠标芯片100例如是以采用amba系统为例进行说明,但并不限于此。
40.微处理器11与主机90有线或无线连接,用于传送控制信号sc至主机90并从主机90接收升级数据data_upd,其中该升级数据data_upd用于升级闪存内存162中的第一固件;控制信号sc例如包含鼠标移动数据、鼠标按键点击信号、滚轮转动信号以及升级命令(例如为
预定按键/开关200所产生)。当在进行函数呼叫时,微处理器11用于产生呼叫函数的函数地址add_f,该函数地址add_f例如是32比特的地址。
41.微处理器11同样是产生32比特的地址来存取只读存储器17及随机存取内存(ram)18及其他周边,因其为已知且并非本发明的主要目的,故于此不再赘述。
42.微处理器11还包含多个缓存器,例如堆栈指针(stack pointer,sp)缓存器、链接缓存器(link register,lr)、程序计数器(program counter,pc)缓存器及帧指标(frame pointe,fp)缓存器,其中,所述链接缓存器例如用于记录微处理器11所呼叫函数的函数回传地址;所述程序计数器缓存器例如用于记录被呼叫函数的函数地址add_f。
43.本发明的鼠标装置可运行于正常模式或虚置模式,根据微处理器11是否从按键/开关200或主机90收到升级命令而定。
44.所述正常模式是指微处理器11可正常从闪存16读取微处理器11所呼叫的函数的函数回传值rtn的模式。换句话说,闪存内存162的内容用于对微处理器11呼叫的函数进行运算并产生函数回传值rtn,其中,所述内容可以是指第一固件的程序码或第一固件以外的程序码。
45.所述虚置模式是指微处理器11升级闪存内存162的第一固件且不从闪存16读取函数回传值rtn的模式,其在微处理器11收到升级命令后进入。
46.总线仲裁器12连接微处理器11。在正常模式下,总线仲裁器12对函数地址add_f进行地址映射(address mapping)以产生操作地址add_o,其用以通过第一总线141从快取控制器151读取函数回传值rtn,其中操作地址add_o是指闪存内存162中用于执行微处理器11所呼叫的函数的内容地址(或子程序地址)。
47.快取控制器151连接第一总线141。在正常模式下,快取控制器151根据操作地址add_o,通过闪存控制器161将闪存内存162产生的函数回传值rtn快取至快取内存152中以供总线仲裁器12读取。总线仲裁器12并将所读取的函数回传值rtn回复至微处理器11。
48.闪存控制器161连接快取控制器151及第二总线142,并用于读写闪存内存162。例如,闪存控制器161保存快取地址(例如操作地址add_o)与闪存地址之间的映像,以当快取控制器151接收到操作地址add_o时可以根据所述映像快取闪存内存162,但本发明并不限于此。闪存控制器161可以用其他方式响应快取控制器151以实现快取控制器151对闪存16进行的随机存取。在正常模式下,闪存控制器161根据操作地址add_o快取闪存内存162中的对应闪存地址的内容(或程序)所产生的函数回传值rtn。
49.更详言之,当微处理器11未接收升级命令时,则运行于正常模式,总线仲裁器12从第一总线141读取快取内存162的函数回传值rtn以回复微处理器11所呼叫的函数。
50.当微处理器11接收到所述升级命令时,则进入虚置模式(或称升级模式)。虚置模式下,总线仲裁器12从微处理器11接收升级数据data_upd并经由第二总线142(不经由第一总线141)发送所述升级数据data_upd至闪存控制器161,以通过闪存控制器161升级闪存内存162中的第一固件。
51.亦即,在正常模式下总线仲裁器12使用第一总线141读取闪存16;而在虚置模式下总线仲裁器12使用第二总线162写入闪存16。
52.例如参照图2所示,在正常模式下,当主程序运行至地址0x2000000(例如记录于pc缓存器)时呼叫函数,且所呼叫函数的函数地址例如是位于闪存内存162内的0x3000000(即
闪存内存162内执行该函数的程序码的地址)。当函数运算完成(例如在地址0x2000008)得到函数回传值rtn后,pc缓存器指向主程序的下一个程序地址(例如显示为0x2000004,其例如记录于lr缓存器)。快取控制器151经由第一总线141回传函数回传值rtn至微处理器11。
53.请参照图3所示,在虚置模式下,总线仲裁器12欲通过第二总线142升级闪存内存162中的第一固件。类似的,当主程序运行至地址0x2000000(例如记录于pc缓存器)时呼叫函数,此时,总线仲裁器12不经过第一总线141读取函数回传值rtn。但是由于微处理器11仍需接收被呼叫函数的回传值以使主程序继续运行,虚置硬件13则产生并回复符合微处理器11所呼叫的函数的函数回传值rtn的格式的虚置回传值rtn_void至微处理器11以取代函数回传值rtn。虽然虚置回传值rtn_void将导致微处理器11所执行的主程序出现错误结果,但该错误结果并不会影响鼠标装置的导航功能。同时,虚置硬件13直接改变pc缓存器内的函数地址至下一个程序地址(例如显示为0x4000000),即lr缓存器内的函数回传地址。图3中,闪存内存162的函数地址显示为较淡的颜色以表示并未被执行。
54.虚置模式下,总线仲裁器12可改变sp缓存器、lr缓存器及fp缓存器内的数值为任何适当数值,只要使程序运行不进入闪存内存162即可。
55.更详言之,本发明的鼠标芯片100额外配置有虚置硬件13,其用于当总线仲裁器12通过第二总线142及闪存控制器161升级闪存内存162中的第一固件时,自动产生并回复符合微处理器11所呼叫的函数的函数回传值rtn的格式的虚置回传值rtn_void至微处理器11以取代函数回传值rtn,以让主程序继续运行。藉此,在虚置模式下,仅闪存内存162中的第一固件停止运行并进行升级;rom 17和/或ram 18中的第二固件则持续运行。亦即,在升级第一固件的同时,鼠标装置仍持续计算鼠标移动、判断鼠标按键点击及滚轮转动。
56.必须说明的是,图2及图3仅显示函数地址用于说明各模式的运行方式,由于操作地址仅为函数地址的映像,实际上是指向相同内存位置,故在此并未另外绘示出。此外,图2至图3中的地址仅为例示,并非用以限定本发明。
57.请参照图4所示,其为本发明实施例的鼠标装置(或鼠标芯片)的运行方法的流程图,其适用于图1的鼠标装置,并包含下列步骤:以微处理器11产生呼叫函数的函数地址add_f(步骤s41);以总线仲裁器12对所述函数地址add_f进行地址映像以产生操作地址add_o,并通过第一总线141将所述操作地址add_o传送至快取控制器151(步骤s42);以所述快取控制器151根据所述操作地址add_o通过闪存控制器161快取闪存内存162中对应闪存地址的内容所产生的函数回传值rtn,并将该函数回传值rtn通过所述第一总线141回复至所述微处理器11(步骤s43);以及当所述微处理器11传送升级数据data_upd至所述总线仲裁器12时,所述总线仲裁器12停止通过所述第一总线141读取所述函数回传值rtn并经由第二总线142发送所述升级数据data_upd至闪存控制器161以升级所述闪存内存162中的第一固件(步骤s44)。
58.本实施方式的详细内容已说明于上,故于此不再赘述。本发明中,总线仲裁器12不同时使用第一总线141及第二总线142。
59.本发明的闪存快取架构(flash cache structure)并不限定仅能适用于鼠标装置,亦可适用于其他于运作同时需要针对闪存内的固件进行升级的电子装置的芯片,以使得固件升级更有效率。
60.优选地,本发明在完成第一固件的升级后,无需将鼠标装置或系统重新启动即可
让第一固件以升级后的版本继续运行。升级程序例如可在按下鼠标壳体的按键200或改变开关200的位置来启动。
61.综上所述,已知的鼠标装置在升级闪存内的固件时,需要将鼠标装置停止运行后才能进行升级,且升级完成后还需要重新启动鼠标装置或系统。因此,本发明另提供一种在升级闪存内的固件的同时仍能够维持一部分固件运行的鼠标芯片(参照图1)及其运行发法(参照图4),其包含额外的硬件以在升级闪存内的固件时,主动回应函数回传值并改变微处理器的缓存器中的地址。
62.虽然本发明已通过前述实例披露,但是其并非用以限定本发明,任何本发明所属技术领域中具有通常知识技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与修改。因此本发明的保护范围当视后附的权利要求所界定的范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1