支付宝硬件(HSC32I1)方案移植说明SE2.0
📎 原始文档:https://www.kdocs.cn/l/cjkA4qS4oky1 支付宝硬件(HSC32I1)方案SE2.0补丁移植说明
- 版本说明 SE2.0 是指平头哥芯片的固件为2.0版本,对应的平头哥sdk(不是杰理sdk )也是2.0版本以上。杰理平台已经把平头哥sdk 移植好。根据平头哥官方文档说明SEv1.1和SE2.0 sdk不兼容。
因此在移植补丁前需要向供应商确认SE芯片固件版本。
移植文件(部分)目录汇总如下:
\sdk\apps\common\pay\alipay -----平头哥sdk文件
\apps\common\pay\alipay\soc\se\JL\vendor_product.c ------平头哥驱动文件
\apps\common\pay\alipay\soc\se\JL\vendor_cache.c ------中间缓存文件
\sdk\AC701N.cbp ------工程文件
\sdk\cpu\br28\liba -------平头哥库文件
\apps\watch\ui\lcd\STYLE_WATCH_NEW\ui_action_qrcode.c ------UI显示
\apps\watch\smartbox\bt_manage\bt_trans_data\le_smartbox_module.c ----ble逻辑文件
具体需要移植文件已补丁包为准。
2. 移植过程 本文档根据V2.1.0版本打patch进行移植,其他版本可根据具体情况参考。
SDK V2.1.0默认工程中有移植支付宝硬解(SE v1.1)和软解代码,打SE2.0补丁需要先将原来代码去掉。如客户版本为SDK 2.0.1之前也可参考,流程如下:
- 使用compare 对比工程文件

2.工程文件移植与修改 code\sdk\AC701N.cbp
搜索下alipay 包含.a库文件

整个文件同理修改,包含.h 和.c文件
3.\sdk\include_lib\system\event.h
对ble接收到的数据进行事件定义和处理 sdk\apps\watch\task_manager\app_common.c
4.\sdk\cpu\br28\liba下的库文件
5.sdk\apps\watch\ui\lcd\STYLE_WATCH_NEW\ui_action_qrcode.c
支付宝UI界面进行逻辑控制和ble广播开关
下面alipay_power_on 和 alipay_power_off是对SE IC 电源的配置,需要用到。
该文件中有二维码生成函数,确认修改后可以直接替换。
7.sdk\apps\watch\smartbox\bt_manage\bt_trans_data\le_smartbox_module.h 更新profile

sdk\apps\watch\smartbox\bt_manage\bt_trans_data\le_smartbox_module.c


Ble的读和写回调事件,以TCFG_PAY_ALIPAY_ENABLE进行宏控制

sdk\apps\watch\smartbox\bt_manage\bt_trans_data\le_smartbox_adv.c 广播包处理
- \sdk\apps\watch\common\task_table.c 对app_core的 task堆栈大小调整为2048 注意代码中的宏控区分

9.\sdk\apps\watch\board\br28\board_701n_demo\board_701n_demo_cfg.h配置文件修改

sdk\apps\watch\board\br28\board_701n_demo\board_701n_demo.c
包含头文件
配置对应的IO口为IIC
\apps\watch\app_main.c 开机初始化,复位进入低功耗模式
10.复制对应alipay驱动和头文件

11.apps\common\third_party_profile\common\custom_cfg.c 和custom_cfg.h文件,获取SN 码
12 . sdk\apps\watch\log_config\lib_btctrler_config.c 配置
apps/watch/ui/lcd/ui_sys_param_api.c 恢复出厂设置时候清除支付宝绑定信息

对应宏控接口的区分 注意SE 1.1 和SE2.0 宏控区别,移植SE2.0,SE 1.1 的宏控要关闭或者删除。SE2.0补丁代码部分全部是用TCFG_PAY_ALIPAY_ENABLE 控制来区分的

对应配置
电源配置 SE 2.0和SE 1.1区别增加了低功耗接口,IC 能够进入低功耗,硬件设计参考 HYPERLINK "https://www.kdocs.cn/l/clM8VmzGJUOe?openfrom=docs。" https://www.kdocs.cn/l/clM8VmzGJUOe?openfrom=docs。
IC 正常工作电流1.3mA,进入低功耗模式大约5uA。有两种进入低功耗方式,断电方式和IIC发送进入低功耗模式。在主控IO足够情况下,建议使用电源控制方式,IIC单独一路给加密IC。
ALIPAY_SE_USE_RESET_PIN宏默认为0 // 置1加密芯片采用reset管脚退出低功耗,置0电源控制上下电进低功耗。
SE_GPIO_RESET_PIN //SE芯片的reset管脚配置 (ALIPAY_SE_USE_RESET_PIN为1配置有效)
SE_POWER_GPIO //使用GPIO口给SE芯片电源脚供电,默认用IO_PORTG_01 (ALIPAY_SE_USE_RESET_PIN为0配置有效)IIC 通道配置 加密ic驱动文件是hs_private.c,其中有匹配到对应iic 通道,默认使用软件iic 。

同时在board_701n_demo.c中配置对应iic 管脚,如下图:
- IIC 复用 TCFG_ALIPAY_SE_IIC_MUL 来控制加密IC 的iic 复用,在公板已经验证和Tp 复用正常。
在驱动hs_private.c中 DEFINE_SPINLOCK(se_iic_lock) 定义了一个自旋锁。
在IIC读写函数中中进行加锁和解锁操作实现复用的功能。建议客户在Sensor或者地磁等外设驱动中参考类似写法,如IO 足够可以单独实现iic 。
4. 产品型号确认 在vendor_product.c 中的csi_get_productmodel 和csi_get_companyname函数分别配置型号和公司名称,支付宝接入认证阶段会用到,如下配置:

对应生成的公司名称是:JL_701 型号名称是:TEST_1 。在初期开发阶段可以使用上面代码,杰理申请的调试产品型号进行开发。后期送测认证阶段,客户需要向支付宝单独申请产品型号和公司名称,送检成功后支付宝会将客户的产品型号在后台设置为正式产品。
同时在生成的二维码中可以看到公司产品型号信息,
Log 如下: