一种MIPS系统代码的保护方法及设备技术方案

技术编号:13404222 阅读:33 留言:0更新日期:2016-07-25 01:32
本发明专利技术实施例提供了一种MIPS系统代码的保护方法及设备,涉及计算机领域,能够保护MIPS系统代码不被修改。方法包括:将系统代码的物理内存的虚拟地址设置在除kseg0、kseg1外的虚拟内存区域内;所述系统代码的物理内存的物理地址在512M以上;将所述系统代码拷贝到所述虚拟内存区域内的指定区域,所述指定区域的首地址为编译时为所述系统代码编译的起始地址;跳转到所述起始地址执行所述系统代码;获取所述系统代码的属性信息,根据所述系统代码的属性信息计算旁路转化缓冲TLB表项,并更新原TLB表项为所述TLB表项,其中所述TLB表项的属性为只读。

【技术实现步骤摘要】

本专利技术涉及计算机领域,尤其涉及一种无互锁流水线级的微处理器(英文:Microcomputerwithoutinterlockedpipelinestages,缩写:MIPS)系统代码的保护方法及设备。
技术介绍
MIPS是高效精简指令集计算机(英文:ReducedInstructionSetComputer,缩写RISC)体系结构中的一种。MIPS系统中程序地址空间有kuseg、kseg0、kseg1、kseg2。kuseg:0x00000000~0x7FFFFFFF,这些地址是用户可用的地址。在有MMU(MemoryManageUnit,内存管理单元)的机器里,这些地址将一概被MMU作转换。kseg0:0x80000000~0x9FFFFFFF,这些地址映射到物理地址是把最高位清零,就可以将它们映射到物理地址的0~512M。因为这种映射是很简单的,通常将kseg0称为“非转换的”地址区域,可以通过快速缓存(cache)存取这段地址的全部,因此kseg0区域始终是可读可写的。kseg1:0xA0000000~0xBFFFFFFF,这些地址映射到物理地址是把最高3位清零,因此与kseg0映射的物理地址一样,均为物理地址的0~512M。但kseg1是非cache存取的。kseg2:0xC0000000-0xFFFFFFFF,这段地址空间只能在核心态下使用并且要经过MMU才能转换成物理地址。在MIPS系统中,目前使用的方案是在bootloader(启动加载器)配置MIPS系统代码区域为可读不可写,通过kseg0区域绕过TLB(TranslationLookasideBuffer,即旁路转换缓冲)的只读保护将MIPS系统软件拷贝到MIPS系统代码区域中,最后跳转到MIPS系统代码区域中运行MIPS系统代码。在上述技术方案中,由于将MIPS系统代码拷贝到kseg0区域中,只需要把最高位清零,这些地址就会被映射到物理地址的0~512M,就会导致通过kseg0区域可以绕过TLB的保护,因此可以通过kseg0直接修改代码段,且修改动作不会被捕捉,不能真正保护MIPS系统代码。
技术实现思路
本专利技术实施例提供一种MIPS系统代码的保护方法及设备,能够保护MIPS系统代码不被修改。为达到上述目的,本专利技术实施例采用的技术方案是,第一方面,提供一种无互锁流水线级的微处理器MIPS系统代码的保护方法,包括:将系统代码的物理内存的虚拟地址设置在除kseg0、kseg1外的虚拟内存区域内;所述系统代码的物理内存的物理地址在512M以上;将所述系统代码拷贝到所述虚拟内存区域内的指定区域,所述指定区域的首地址为编译时为所述系统代码编译的起始地址;跳转到所述起始地址执行所述系统代码;获取所述系统代码的属性信息,根据所述系统代码的属性信息计算旁路转化缓冲TLB表项,并更新原TLB表项为所述TLB表项,其中所述TLB表项的属性为只读。结合第一方面,在第一方面的第一种可能的实现方式中,所述属性信息包括所述系统代码的起始地址、所述系统代码的大小。结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述系统代码的属性信息计算TLB表项具体包括:根据所述系统代码的起始地址、所述系统代码的大小、输入输出IO空间大小以及其他内存空间大小计算所述TLB表项。结合第一方面,在第一方面的第三种可能的实现方式中,所述更新原TLB表项为所述TLB表项具体包括:将所述TLB表项、TLB重设函数拷贝到所述kseg0中预留的内存空间中;跳转到所述kseg0执行所述TLB重设函数,更新原TLB表项为所述TLB表项。结合第一方面,在第一方面的第四种可能的实现方式中,所述指定区域包含所述系统代码的代码段起始地址、所述系统代码的代码段空间大小、所述系统代码的数据段起始地址以及所述系统代码的数据段空间大小。结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述将所述系统代码拷贝到所述虚拟内存区域内的指定区域,具体包括:将所述系统代码的代码段拷贝到所述代码段起始地址开始的区域,将所述系统代码的数据段拷贝到所述数据段起始地址开始的区域。第二方面,公开了一种设备,包括:设置单元,用于将系统代码的物理内存的虚拟地址设置在除kseg0、kseg1外的虚拟内存区域内;所述系统代码的物理内存的物理地址在512M以上;拷贝单元,用于将所述系统代码拷贝到所述虚拟内存区域内的指定区域,所述指定区域的首地址为编译时为所述系统代码编译的起始地址;执行单元,用于跳转到所述起始地址执行所述系统代码;计算单元,用于获取所述系统代码的属性信息,根据所述系统代码的属性信息计算旁路转化缓冲TLB表项;更新单元,用于更新原TLB表项为所述TLB表项,其中所述TLB表项的属性为只读。结合第二方面,在第二方面的第一种可能的实现方式中,所述属性信息包括所述系统代码的起始地址、所述系统代码的大小。结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述计算单元具体用于,根据所述系统代码的起始地址、所述系统代码的大小、输入输出IO空间大小以及其他内存空间大小计算所述TLB表项。结合第二方面,在第二方面的第三种可能的实现方式中,所述更新单元具体用于,将所述TLB表项、TLB重设函数拷贝到所述kseg0中预留的内存空间中;跳转到所述kseg0执行所述TLB重设函数,更新原TLB表项为所述TLB表项。结合第二方面,在第二方面的第四种可能的实现方式中,所述指定区域包含所述系统代码的代码段起始地址、所述系统代码的代码段空间大小、所述系统代码的数据段起始地址以及所述系统代码的数据段空间大小。结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述拷贝单元具体用于,将所述系统代码的代码段拷贝到所述代码段起始地址开始的区域,将所述系统代码的数据段拷贝到所述数据段起始地址开始的区域。本专利技术提供一种MIPS系统代码的保护方法及设备,编译时,使所述系统代码的起始地址在除kseg0、kseg1外的虚拟内存区域内的指定区域,将系统代码的物理内存映射到除kseg0、kseg1外的虚拟内存区域。将所述系统代码拷贝到所述指定区域,跳转到所述本文档来自技高网
...

【技术保护点】
一种无互锁流水线级的微处理器MIPS系统代码的保护方法,其特征在于,包括:将系统代码的物理内存的虚拟地址设置在除kseg0、kseg1外的虚拟内存区域内;所述系统代码的物理内存的物理地址在512M以上;将所述系统代码拷贝到所述虚拟内存区域内的指定区域,所述指定区域的首地址为编译时为所述系统代码编译的起始地址;跳转到所述起始地址执行所述系统代码;获取所述系统代码的属性信息,根据所述系统代码的属性信息计算旁路转化缓冲TLB表项,并更新原TLB表项为所述TLB表项,其中所述TLB表项的属性为只读。

【技术特征摘要】
1.一种无互锁流水线级的微处理器MIPS系统代码的保护方法,其特征
在于,包括:
将系统代码的物理内存的虚拟地址设置在除kseg0、kseg1外的虚拟内存
区域内;所述系统代码的物理内存的物理地址在512M以上;
将所述系统代码拷贝到所述虚拟内存区域内的指定区域,所述指定区域
的首地址为编译时为所述系统代码编译的起始地址;
跳转到所述起始地址执行所述系统代码;
获取所述系统代码的属性信息,根据所述系统代码的属性信息计算旁路
转化缓冲TLB表项,并更新原TLB表项为所述TLB表项,其中所述TLB
表项的属性为只读。
2.根据权利1所述的方法,其特征在于,所述属性信息包括所述系统代
码的起始地址、所述系统代码的大小。
3.根据权利要求2所述的方法,所述根据所述系统代码的属性信息计算
TLB表项具体包括:
根据所述系统代码的起始地址、所述系统代码的大小、输入输出IO空
间大小以及其他内存空间大小计算所述TLB表项。
4.根据权利要求1所述的方法,其特征在于,所述更新原TLB表项为
所述TLB表项具体包括:
将所述TLB表项、TLB重设函数拷贝到所述kseg0中预留的内存空间中;
跳转到所述kseg0执行所述TLB重设函数,更新原TLB表项为所述TLB
表项。
5.根据权利要求1所述的方法,其特征在于,所述指定区域包含所述系
统代码的代码段起始地址、所述系统代码的代码段空间大小、所述系统代码
的数据段起始地址以及所述系统代码的数据段空间大小。
6.根据权利要求5所述的方法,其特征在于,所述将所述系统代码拷贝
到所述虚拟内存区域内的指定区域,具体包括:
将所述系统代码的代码段拷贝到所述代码段起始地址开始的区域,将所
述系统代码的数据段拷贝到...

【专利技术属性】
技术研发人员:陈小松
申请(专利权)人:迈普通信技术股份有限公司
类型:发明
国别省市:四川;51

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

1