将CompactECC移植到爱特梅尔新型SAM3S控制器
关键型寄存器(例如时钟频率设置)的无意写入访问。为了把新数值写入具有这种保护方式的寄存器,密钥必须与预设置一起写入。如果密钥匹配硬编码参考值,则只有新数值被接受。 NVIC的引进也带来一个副作用,就是结合了系统外设(如PIT、RTT、WDT 和 DBGU)中断请求线的共享系统中断也变得多余了。在前几代成品中,系统中断服务程序首先必须确定负责当前中断请求的中断源。 但在SAM3S的情况下,每个系统外设都已接收到了它自己的中断向量,而相关的服务程序能够利用其内部关于中断源的知识对正确的中断提供服务。中断控制器的配置也自然相应改变。 在设置了处理器的内核异常(IRQs 0 - 15)和初始堆栈之后,外设的中断向量就被存储。 激活/禁用单个中断、定义它们的优先级、通过软件触发中断等功能,由一个统一的软件界面,即Cortex微控制器软件界面标准(CMSIS)来提供。 更甚者,中断服务程序不再需要专门的序言和结语(prologues and epilogues),因为服务程序作为普通函数被执行。中断控制器与内核的集成还具有一个优势,即不同于ARM7和ARM9器件,SAM3S没有伪中断。当中断线激活时间很长,足以触发一个中断时,就有可能发生伪中断。但若激活时间过短,在中断来源被确定之前中断就消失了,中断控制器就无法为内核提供正确的中断向量。 周期性间隔定时器(PIT)也不再存在,因为Cortex-M3将自己的SysTick定时器嵌入在了内核中。 只要PIT原来是通过其相关ISR用于增量计数器的,移植到SAM3S就十分容易:完全能够把ISR分配给适当的中断向量,确保选择正确的时钟源,并选择所期望的重载值。 这将适用于99%的应用。 关于PIO控制器,需要进一步的修改,因为封装引脚多路复用现在支持4个而不是2个可发送到每个引脚的外设信号。 另外,每个引脚可作为带可编程极性的边沿敏感或电平敏感中断源。 调试单元(DBGU)也消失了。这个外设整合了几个功能:一个用于消息跟踪的串行端口;一个芯片ID寄存器,用于通过软件或JTAG识别确切的控制器特性;一个连接ARM7TDMI调试数据通道,并访问爱特梅尔的快闪编程解决方案的接口。这些功能现在都由一个自包含CHIPID模块和一个UART提供。 在做了所有这些修改之后,用于SAM3S的CompactECC样本应用程序就算最终完成。
Atmel CompactECC SAM3S 相关文章:
- Arduino是什么?(07-07)
- 单片机课程设计-ATMEL51系列单片机编程器(12-01)
- ATMEL的ISP下载线(12-01)
- Atmel和STC的51单片机通用ISP下载线制作(11-29)
- ATMEL9263 800*600屏驱动问题(11-22)
- MSP430与ATMEL 93C46通讯子程序(11-13)