SEGGER Embedded Studio链接与段布置
以AT91SAM7S256为例用Keil MDK创建从RAM启动的简单应用
https://armkeil.blob.core.windows.net/eval/MDK531.EXE
https://armkeil.blob.core.windows.net/legacy/MDK79525.EXE
准备 RAM.ini
FUNC void Setup (void) {
PC = 0x00200000;
}
_WDWORD(0xFFFFFD44, 0x00008000); // WDT_WDMR: Disable Watchdog
// Switching from Slow Clock to Main Oscillator for faster Download
_WDWORD(0xFFFFFC20, 0x00000601); // PMC_MOR: Enable Main Oscillator
_sleep_(10); // Wait for stable Main Oscillator
_WDWORD(0xFFFFFC30, 0x00000001); // PMC_MCKR: Switch to Main Oscillator
LOAD %L INCREMENTAL // Download
Setup(); // Setup for Running
g, main
准备Main.c此应用是一个MCU的hello world, 用GPIO驱动LED闪烁
#include "AT91SAM7S256.h"
#define LED_A (1U<<0) // PA0, pin 48
#define LED_B (1U<<1) // PA1, pin 47
void sleep_ms(unsigned int msec)
{
volatile unsigned int i;
for (i = 0; i < 1000 * msec; i++) {
__asm ("NOP");
}
}
int main(void) {
/* Configure the pins as outputs */
AT91C_BASE_PIOA->PIO_OER = (LED_A | LED_B);
/* Enable PIOC control on the pins*/
AT91C_BASE_PIOA->PIO_PER = (LED_A | LED_B);
/* Disable pull-ups */
AT91C_BASE_PIOA->PIO_PPUDR = (LED_A | LED_B);
while(1)
{
/* Turn LED on, high level */
AT91C_BASE_PIOA->PIO_SODR = LED_A;
sleep_ms(1);
/* Turn LED off, low level */
AT91C_BASE_PIOA->PIO_CODR = LED_A;
sleep_ms(1);
}
}
开启MDK,新建Project,选择存储位置








选中 Use ULink2/ME ARM Debugger, 取消 选择 Load Application at Startup, 添加Initilization File, 选择 RAM.ini


用AT91SAM7S256做sim卡或读卡器

屏蔽运营商本机号码自动登录
移动
10.0.0.1 config.cmpassport.com
10.0.0.1 www.cmpassport.com
10.0.0.1 wap.cmpassport.com
https://onekey1.cmpassport.com/unisdk/rs/ckRequest
https://config.cmpassport.com/client/uniConfig
https://log1.cmpassport.com:9443/log/logReport
https://onekey1.cmpassport.com/unisdk/
https://smsks1.cmpassport.com/unisdk/
http://www.cmpassport.com/unisdk/
https://config.cmpassport.com/client/uniConfig
————-
https://www.cmpassport.com/unisdk/rs/getPrePhonescrip
encrypted
reqdata
securityreinforce
http://wap.cmpassport.com/openapi/wabGetuserInfo?channelId=
expandParams=
message=
msgId=
openType=
sign=
userId=
{“detailErrorCode”:””,
“msgId”:””,
“pcId”:””,
“resultcode”:”121″,
“systemTime”:””
“desc”:”获取移动手机失败”}
独有网关认证及sim卡快捷认证方式可实现免密一键登录
6种认证方式,在不同场景下提供更加安全的认证
https://onekey1.cmpassport.com/unisdk/rs/ckRequest
appid
apppackage
appsign
clienttype
interfacever
keyid
msgid
sdkver
sign
timestamp
ver
https://onekey1.cmpassport.com/client/queryUpgrade
中国移动南方基地–中移互联网有限公司
http://www.cmpassport.com/unisdk/rs/getphonescrip
interfacever
keyid
reqdata
ver
电信
10.0.0.1 id6.me
10.0.0.1 open.e.189.cn
https://open.e.189.cn/openapi/flow/getOpenId=?timestamp
state
clientId
clientType
format=json
version=1.5
sign=
http://id6.me/openapi/networkauth/preGetMobile.do?paramKey=
paramStr
clientId=
clientType=
format=json
version=v1.5
sign=
https://open.e.189.cn/api/logbox/oauth2/getPreMobileUrl.do?appKey=8023528553&clientType=2&format=json&version=v1.0&preUrlCBN=jsonp_gj1n&bussinessType=5&callbackMsg=callbackMsg&sFlag=false&callback=callbackMsg
callbackMsg({ “result”:0, “preUrl”:”http://id6.me/openapi/networkauth/preGetMobile.do?sign=83C635DFA36E9E119C25EE3350CC7E46E4D8F9E9¶mStr=DCE7D0A0714A333877466D264ACFAF95D781BB52204DB909059E13D0F27CED71374E9FD9D8B42C34F4DD2B8FFB52BAF9BF80C41502AEDA5BA05E2B70BE536FBCEBF42FA6C63B79F82FD12E5FF851090FD1DC2A9DE1508B35A4701B4A91AF0B6AF2783BA67BE71BED5CBCF73D6D10BD7B05A5B835E4D4AAC36CA078216C98DE73BF9447006B9E76FF9B050EE4F45DD36B&format=jsonp¶mKey=A5AFB2B7167CC91D9126EF900B16B3A6A183712BF6A1659C56A2B1239B5B85BEB72575085E3E362664602B8E1129BD1183C57739601FC42352C5DAE685F196AAD18B86922B520FDE06CDF09DDD05227EA08730504B7DD338A053E8246FD6D5D487116A3C614DD6C6BD13CFF1D77BEEDAEEE7462BC7BCD7FF5A927A06FC88D69C&clientId=8023528553&version=v1.0&clientType=2″, “msg”:”success”, “aesCacheKey”:”191abc14-4a6c-44b7-966a-559dae683db5″ })
http://id6.me/openapi/networkauth/preGetMobile.do?sign=83C635DFA36E9E119C25EE3350CC7E46E4D8F9E9¶mStr=DCE7D0A0714A333877466D264ACFAF95D781BB52204DB909059E13D0F27CED71374E9FD9D8B42C34F4DD2B8FFB52BAF9BF80C41502AEDA5BA05E2B70BE536FBCEBF42FA6C63B79F82FD12E5FF851090FD1DC2A9DE1508B35A4701B4A91AF0B6AF2783BA67BE71BED5CBCF73D6D10BD7B05A5B835E4D4AAC36CA078216C98DE73BF9447006B9E76FF9B050EE4F45DD36B&format=jsonp¶mKey=A5AFB2B7167CC91D9126EF900B16B3A6A183712BF6A1659C56A2B1239B5B85BEB72575085E3E362664602B8E1129BD1183C57739601FC42352C5DAE685F196AAD18B86922B520FDE06CDF09DDD05227EA08730504B7DD338A053E8246FD6D5D487116A3C614DD6C6BD13CFF1D77BEEDAEEE7462BC7BCD7FF5A927A06FC88D69C&clientId=8023528553&version=v1.0&clientType=2
http://id6.me/openapi/networkauth/preGetMobile.do?sign=83C635DFA36E9E119C25EE3350CC7E46E4D8F9E9¶mStr=DCE7D0A0714A333877466D264ACFAF95D781BB52204DB909059E13D0F27CED71374E9FD9D8B42C34F4DD2B8FFB52BAF9BF80C41502AEDA5BA05E2B70BE536FBCEBF42FA6C63B79F82FD12E5FF851090FD1DC2A9DE1508B35A4701B4A91AF0B6AF2783BA67BE71BED5CBCF73D6D10BD7B05A5B835E4D4AAC36CA078216C98DE73BF9447006B9E76FF9B050EE4F45DD36B&format=jsonp¶mKey=A5AFB2B7167CC91D9126EF900B16B3A6A183712BF6A1659C56A2B1239B5B85BEB72575085E3E362664602B8E1129BD1183C57739601FC42352C5DAE685F196AAD18B86922B520FDE06CDF09DDD05227EA08730504B7DD338A053E8246FD6D5D487116A3C614DD6C6BD13CFF1D77BEEDAEEE7462BC7BCD7FF5A927A06FC88D69C&clientId=8023528553&version=v1.0&clientType=2
请使用电信号在4G网络下使用
联通
10.0.0.1 opencloud.wostore.cn 小沃科技有限公司
10.0.0.1 auth.wosms.cn 联通在线信息科技有限公司
10.0.0.1 id.mail.wo.cn 中国联合网络通信集团有限公司
mdn.open.wo.cn
hmrz.wo.cn
nishub1.10010.com
nisportal.10010.com (这个可能没关系)
enrichgw.10010.com
联通有多个子公司对外提供这个服务,需要屏蔽的域名最多
https://hmrz.wo.cn/sdk-resource/terms/number_authentication.html
https://auth.wosms.cn/api/netm/v1.0/gmbs?seq=
返回:
{
“code”:1,
“msg”:”公网IP无效”,
“seq”:””
“status”:1101
}
https://auth.wosms.cn/dro/netm/v1.0/qc
apiKey
params
paramsKey
sign
sign_Type
https://nisportal.10010.com:9004/api?appid=&ret_url=
https://id.mail.wo.cn/openapi/auth/accessToken.do?appId=
appType=
version=
paramKey
paramStr
sign
重定向:
http://123.125.99.9:9001/api?
appid=
https://id.mail.wo.cn/openapi/auth/accessToken/callback.do?appId
operatorType
appName
appType
version
aeskey
{ “msg”:网络不能识别
“result”:3002}
——————-
https://mail.wo.cn/wap/noPwdLogin.wo
返回
{
“paramLogin”:
“https://id.mail.wo.cn/openapi/auth/accessToken.do?
appId=D0C910F6135849B1B347BAE6ADC2930D
&appType=17
&version=v1.0
&sign=
¶mKey=
¶mStr=
”
}
linux控制智能卡读卡器的输出电压
libccid
/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist -> /etc/libccid_Info.plist
修改 ifdDriverOptions 的值
0 表示输出 5V电压(这也是默认值)
16 也就是0x10, 表示输出3V电压,如果失败,再输出5V
32, 也就是0x20, 表述输出1.8V,如果失败,再分别尝试3V和5V
48, 也就是0x30, 让读卡器自己选择。
某些读卡器不支持驱动对其进行电压设置
比如 深圳神州科技 用Identive/SCM芯片做的
Identiv SCR35xx USB Smart Card Reader [CCID Interface]
Identive CLOUD 2700 R Smart Card Reader [CCID Interface]
始终使用5V电压
而 SSK和Hawk用 Realtek 芯片做的读卡器 就支持驱动设置电压
Generic USB2.0-CRW [Smart Card Reader Interface]
Generic Smart Card Reader Interface [Smart Card Reader Interface]
智能卡简史
1970 年,日本 Kunitaka Arimura 博士申请了智能卡概念的第1个也是唯一的专利。
1974年,法国的Roland Moreno申请了IC卡的原始专利,后来被称为“智能卡”。当时的原型只是一个安全存储卡,并没有处理器。

1977年,三家法国公司Bull CP8,SGS Thomson和Schlumberger都开始开发IC卡。
其中,Honeywell Bull公司的Michel Ugon在1977年发明了第一次使用微处理器的智能卡,于1978年获得 self-programmable one-chip microcomputer (SPOM)专利。
1979年, 美国摩托罗拉公司 基于Michel Ugon的这个专利,开发了首个用于法国银行业的安全单芯片微控制器CP8.
1982年,法国开始IC卡电话测试,1983年用于payphone
1984年, 带芯片的ATM银行卡测试
1986年, Bull CP8在弗吉尼亚银行和马里兰国家银行分发了14,000张
1987年, 与美国农业部的全国性花生营销卡一起在美国实施了第一个大规模智能卡应用程序。
1991年, 德国慕尼黑智能卡制造商Giesecke&Devrient开发了第一张SIM卡,第一批300张SIM卡卖给了芬兰无线网络运营商Radiolinja。
1992年, 在丹麦启动了全国性的预付费(电子钱包)卡项目(DANMONT)。
1993年, 在法国雷恩对多功能智能卡应用程序进行了现场测试,其中在智能银行卡中启用了Telecarte功能(用于公用电话)。
1994年, Europay,MasterCard和Visa(EMV)发布了有关基于全球微芯片的银行卡(智能卡)的联合规范。
1995年, 全世界超过300万的数字移动电话用户开始使用智能卡(SIM卡)发起通话并为通话计费。
但ISO 7816国际标准的,主要雏形是 日本东芝公司的 JPN 2537199 号专利 Integrated circuit card,(priority date: 1986-06-20;publication date: 1996-07-08)
USA 5161231 号专利 Processing system which transmits a predetermined
error code upon detection of an incorrect transmission code,
(priority date: 1991-03-12;publication date: 1992-11-03).
7816-3: 接触卡 — 电气接口和传输协议
创建于 1989, 补充于 1992 (增加 T=1 协议),
再次补充于 1994 (修改了协议类型选择),
更新于 1997 (包含了 3V电压),
补充于 2002 (添加 1.8 电压),
最后更新时间是 2006 (移除 Vpp触点)
打包/解包中兴电信光猫 CTCE8 格式 cfg 配置文件工具
https://github.com/corberan/ctce8_cfg_tool
用法:
.\ctce8_cfg_tool.exe unpack “E:\e8_Config_Backup\ctce8_ZXHN_F450.cfg” ctce8_ZXHN_F450.xml
.\ctce8_cfg_tool.exe pack ctce8_ZXHN_F450.xml ctce8_ZXHN_F450.cfg “ZXHN F450”
pack 打包命令的第三个参数是光猫设备名,一般为配置文件名中的字段。如我得到的配置文件名为 ctce8_ZXHN_F450.cfg,那么这个字符串就是 “ZXHN F450″,注意中间是空格。
大神用rust写的工具
如果已经有web admin权限, 可进到“设备管理” usb备份配置
这里开启 telnet 权限
7816参数和协议选择PPS
Selection of transmission Parameters and protocol
在完成复位应答(ATR)后,卡应该等待从接口设备来的字符:
传输受传输参数(transmission Parameters)控制; 它们的解释受协议(protocol)约束。
如果ATR的TA2字段存在(也就是卡处于特定模式),那么接口设备应该用特定的传输参数来开始一个特定的传输协议。
否则(也就是卡处于协商模式), 那么 ATR期间使用的传输参数(也就是默认参数), 应该被继续使用, 以便接收 协商数据。
1. 如果卡在ATR之后收到的第1个字节是 FF, 那么接口设备应该开始了 PPS交换。默认的传输参数在PPS交换期间应该被继续使用,直到PPS交换成功。
2. 否则, 接口设备不支持PPS, 应该继续使用 默认参数。

如果卡受到 接口设备 发送的PPS字节后,如果能接受这个参数,也应回应同样的PPS字节给 接口设备。这样完成一次PPS协商。
7816接口集成电路卡/智能卡上电激活过程
卡片可以支持5V, 3V, 1.8V 的电压的一种或者多种。
如果支持多种,则必须连续。 也就是可以支持
5, 3, 1.8
或
5, 3
或
3, 1.8
但是,不能支持 5, 1.8 (这种是跳跃的)
如果接口设备 给卡指定了一种它能支持的电压, 那么卡就必须按这种电压操作。
如果接口设备支持多种电压, 实施这些电压的顺序,没有定义
一般来说,应该从低电压开始尝试。
但是, 因为所有的卡,都应该保护自己在高电压下不被损坏, 所以,即使从高电压开始尝试,也是符合规范的。
激活序列:
RST为低电平,
VCC加电(先1.8V,后3.3V,再5V)
I/O脚置于 接收模式, 也就是高电平. 但接口设备在激活过程中,要忽略I/O脚上的数据。
为CLK提供稳定的时钟信号。在复位应答期间,f在1~5MHz(5V卡), 1~4M(3V卡)
在给VCC上电,设置IO处于接收模式,提供时钟信号, 这几个操作间,应该存在一个延时。
但具体延时多长时间,没做定义,实现者自己把握。
————补充说明——————
SIM_IO的 输入(接收模式recption,一般此时接口设备来发送)
输出(发送模式transmission mode).
状态H- 如果卡和接口设备都处于接收模式(reception mode)
或者 发送方 强加此状态(trasmitter imposed this state), 也就是说 发送方,要发送1
状态L– 发送方 强制此状态, 也就是发送方要发送0
————补充说明完毕——————
在激活完成之后,准备冷复位
此时, RST处于低电平, VCC上电,IO处于高电平也就是接收模式,CLK提供了合适且稳定的时钟。
卡就准备好了冷复位。