SAM7S64

ARM7TDMI ® ARM ® Thumb ® Processor Core

当SAM7S64复位时, ARM核心处于重启模式,访问外部存储器(通常是ROM), 位于地址0
而SRAM位于 0x20 0000处。

当软件执行 remap命令(往AMC_RCR寄存器的RCB字段写入1), 内部SRAM会自动定位到
0x0处
0 -> F FFFF remap前是Flash, remap后是SRAM
10 0000 -> 1F FFFF Internal Flash
20 0000 -> 2F FFFF Internal SRAM

设备初始化流程

  1. FIQ initialization
  2. Stack setup for ARM supervisor mode
  3. Setup the Embedded Flash Controller
  4. External Clock detection
  5. Main oscillator frequency detection if no external clock detected
  6. Switch Master Clock on Main Oscillator
  7. Copy code into SRAM
  8. C variable initialization
  9. PLL setup: PLL is initialized to generate a 48 MHz clock
  10. Disable of the Watchdog and enable of the user reset

remap前
ROM 0x0000 0000 – 0x23FF FFFF 64M (实际只有8K)
RAM 0x0800 0000 – 0x0FFF FFFF 128M

remap后
Norflash 0x0000 0000 – 0x03FF FFFF 64M (实际584k)
RAM 0x0800 0000 – 0x0FFF FFFF 128M
ROM 0x2000 0000 – 0x23FF FFFF 64M

芯片上电后是从 8k ROM (地址0开始) 启动,在 ROM 启动程序中,将会判断 跳转地址
0x20144800(此时 NORFLASH 起始地址为 0x2000 0000)中的跳转判断字符,若该地
址读出字符为 0x55,则当前程序将会向系统重映射寄存器写入 0x00000001,进
行系统重映射,并在重映射之后进行软复位(系统不断电复位),arm 核将从
NORFLASH 读取第一条指令开始执行程序。此时 NORFLASH 起始地址映射到
0x00000000,程序开始运行。


如果芯片在 8k ROM 启动程序中未进行地址重映射,程序将会进入 7816 接口
hex 下载模式,hex 文件转换为符合 7816 协议数据格式,将 hex 数据下载入
NORFLASH 中(其中将会进行 flash 擦除、写入、读出 crc 校验、写入跳转判断 0x55
操作),不同操作类型由 APDU 头和 Lc 数据组成。


智能卡COS操作系统,目前主要有两种下载方式:一种是把已经经过验证的COS直接通过掩膜的方式,在生产过程中固化到智能卡芯片的只读存储器ROM中;另一种是芯片生产结束后,通过ROM中的Boot Loader将COS下载到智能卡中的Flash、EEPROM等非易失储存器中。相比于COS固化在ROM中COS不会被恶意修改的优势,采用Boot Loader下载COS的方式使COS具有更大的灵活性,避免修改掩膜周期长的麻烦,在市场上更具竞争优势。

实际生产中,需要把COS数据提供给厂商,由厂商来生产SIM模块或卡产品。如果把从芯片供应商处订购的芯片和委托方的COS程序直接提供给厂商生产,可能存在厂商将芯片用作其它用途的风险。厂商获得COS程序直接找芯片供应商订购芯片,下载COS程序后即可出售,会直接损害委托方和使用者的利益。因此,在制卡过程中如何从技术手段保证COS程序下载到芯片的安全,是现有技术需要解决的一个重要问题。

目前常用的COS数据的加解密方案是,加密机方案或软件加解密方案。其中,加密机方案较为成熟,但其成本高昂;软件加解密方案不便于对密钥的管理,且容易泄露密钥,安全性极差。


Parallel Input/Output Controller (PIO) 并行IO控制器

连接 USART 的引脚可与 PIO 线复用。必须先对 PIO 编程以将 USART 引脚分配到期望的外设功能。若 USART 的 I/O 线未使用, PIO 控制器可将其用作其它功能

当USART功能关闭是,为了防止TXD管脚变为低电平,需要使用一个内部上拉。
如果硬件握手功能启用,或者使用modem模式,也需要使用内部上拉。

USART中断线与高级中断控制器的一个内部中断源连接。 使用USART中断请求前要先对AIC编程。注意,边沿敏感模式下不推荐使用 USART 中断线。

USART有一个与ISO7816兼容模式。该模式允许与智能卡连接并可通过ISO7816链接与安全访问模块 (SAM) 通信。支持 ISO7816 规范定义的 T = 0 与 T = 1 协议。

将 US_MR 寄存器 USART_MODE 域写 0x4,将设置 USART 在 ISO7816 的 T = 0 模式下工作;若 USART_MODE 域写 0x5,则 USART 在 ISO7816 的 T = 1 模式下工作。

ISO7816为一条双向线的半双工通信。波特率由远程器件(读卡器/modem)提供的时钟分频提供.

USART 与智能卡的连接见下图。 TXD 线变为双向, 波特率发生器由 SCK 引脚向 ISO7816提供时钟。由于 TXD 引脚变为双向,其输出还是由发送器输出驱动,但只有当发送器激活 时,其输入被重定向为接收器的输入。(也就是说,发送器激活时,输入到了RXD线上)
由于 USART 产生时钟,因此它被视为通信的主设备。

The TXD line becomes bidirectional and the Baud Rate Generator feeds the ISO7816 clock on the SCK pin. As the TXD pin becomes idirectional, its output remains driven by the output of the transmitter but only when the transmitter is active while its input is directed to the input of the receiver. The USART is considered as the master of the communication as it generates the clock.

当设置为7816模式是, 字符格式固定。不管 CHRL、 MODE9、 PAR
及 CHMODE 域中是什么值,其配置始终万为 8 位数据位,偶检验及 1 或 2 位停止位。 MSBF 可设置发送是高位在先还是低位在先。奇偶校验 (PAR)可以用普通模式或者 反相模式.

由于通信不是双向的,USART 不能同时在发送器与接收器模式下操作。因而必须根据需要使能或禁用接收器/发送器。 ISO7816 模式下同时使能发送器与接收器结果无法预知。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注