智能卡嵌入式开发的个人经验

本文分享了智能卡嵌入式开发的个人经验,强调在不同平台间移植COS代码时,内存对齐和结构体设计的重要性。作者提出使用基址加偏移的宏定义方法替代结构体,以解决内存对齐问题和提高代码的可移植性。
摘要由CSDN通过智能技术生成

在各种平台下做过很多智能卡应用开发的COS研发人员应该都有一些感悟,就是在你从一个平台移植到另一个平台的时候如果代码设计的不够好,会经常重新根据芯片特性进行重新架构和设计,这是一个非常繁杂的任务,而且不能保证质量,耗时也长。

 

不同的芯片平台最主要的几个区别就是以下几点:芯片开发环境、芯片CPU位数(8位、16位或者32位)和主频、内存资源、ROM资源、FLASH或者EEPROM资源以及寄存器的参数等。这些芯片硬件参数的不同造成了移植COS代码的时候必须进行相关部分的重新编码。所以在一个平台上实现一个智能卡应用的COS设计时要充分考虑到以后的可移植性。

 

以下是我以前COS开发的一些经验:

有些平台的内存是对齐的,譬如三星的S3FS91J就是内存4字节对齐的例子,而有些平台例如英飞凌的SLE88CFX4000P则是1字节对齐,即不需要对齐的。这种内存属性的差异会对哪种实现方法造成影响呢?

大家用C语言开发最熟悉的莫过于结构体了,什么是结构体我在这就不说了,熟悉C语言的人应该都清楚,不知道的那就是不熟悉C语言。

我们在做内存管理的时候一般都会自己管理内存,用自己的方法去实现,这种管理如果没有特殊处理可能就会分配出非对齐的内存地址,这种实现在没有对齐要求的平台上使用是没有问题的,但是如果要移植到另一种对内存对齐有要求的平台上就会出现问题了,一个非对齐的内存指针指向一个结构体空间的话,从里面取出来的变量值是不对的,它的起始地址是该指针地址的对齐地址,所以按照偏移计算出来的位置就不对了,取出来的值自然就不正确。

其实有很多实际问题用结构体不能完全实现,譬如变长的,用结构体就很难把那种数据结构化,结构体主要还是面向于固定数据长度的一组数据,当

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值