基于C*Core的动态内存分配方案与实现
2011-05-21路而红王建新金华建
钱 丹, 李 飞, 路而红 ,王建新, 金华建
(1.成都信息工程学院 四川 成都 610225;2.北京电子科技学院 北京 100070;3.中国人民解放军73022部队 浙江 杭州 310024)
近年来,嵌入式技术已广泛应用于家电、无线通信、电子商务平台中[1]。基于嵌入式技术开发的各类电子产品核心部件(CPU)的国产化,符合我国信息安全的战略利益,是我国广大科研人员努力的必然方向。值得一提的是,2001年苏州国芯公司吸收和优化了M*Core技术,形成了具有我国自主知识产权的C*Core技术,随后,基于此技术的首款国产32位芯片CCM3118被推出[2]。然而,C*Core系统函数库中自带的动态内存分配函数在脱离Winsdows操作系统等情况下会失效,这给基于C*Core的内存动态开发带来阻碍。笔者正是针对这一问题,提出一种基于C*Core的动态内存分配方案。
1 C*Core数据格式分析
以CCM3118芯片为例,其片内含2 kB ROM、64 kB SRAM,存储器中整数型操作数格式是标准二进制补码形式[3],地址空间映射如图1所示。
C*Core C指令系统中的操作数大小只可在两处定义:1)在指令编码中明确定义(装载/存储指令);2)在指令操作中间接定义。一般地,指令作用在32位源操作数和生成32位结果。在本方案实现部分,存储器默认采用大端(big-endian)方式存储数据 (如图2所示),即字的最重要字节在地址低位。在寄存器中,一个字对应的数值是以第31位作为最重要位(如图3所示),而0字节是最重要字节[4]。

图1 内存地址空间映射Fig.1 Memory address mapping

图2 内存数据组织Fig.2 Memory data organization
2 C*Core动态内存分配方案及实现

图3 寄存器数据组织Fig.3 Register data organization
由图1可知,C*Core系列芯片内存资源有限,在计算量较大的情况下,例如在利用CCM3118芯片做椭圆曲线密码算法(ECC)实现计算中,倘若采用全局数组进行ECC底层算法计算实现[5],芯片内存不能提供足够资源,但采用本方案可有效解决此问题。……
