算法移植类加密芯片是凌科芯安公司的专利产品,主要功能是芯片内部嵌入凌科芯安公司的LKCOS智能操作系统,用户可以把MCU中程序一部分关键算法函数移植到芯片中运行。用户采用标准C语言编写代码,通过KEIL C编译器,编译并下载到智能芯片中。在实际运行中,通过调用函数方式运行智能卡芯片内的程序段,获得运行结果,并以此结果作为用户程序进一步运行的输入数据。因此芯片成了产品的一部分,而算法在芯片内部运算,盗版商无法破解,从根本上杜绝了程序被破解的可能。
算法移植加密芯片的调试包含2个部分:通讯调试和算法调试。本次先针对通讯调试环节常见问题进行解析。
通讯调试常见问题
1、通讯格式设置
一帧数据格式为:1个起始位,8个数据位,1个偶校验位(不可省略),2个停止位,共12位。
2、通讯速率
加密芯片的通讯速率=外部时钟频率/分频系数(默认分频系数是372)。若更改外部时钟频率,则通讯速率改变。我司demo电路使用3.579Mhz外部时钟,故默认通讯速率=3.579M/372,所以采用9600bps通讯。
3、复位问题
加密芯片上电后至少复位一次才能发指令,通讯异常后可先进行复位操作,然后重新进行指令交互。
4、时钟问题
必须提供外部时钟。若通讯不正常,应先检查时钟VPP、频率是否正常,保证复位和进行指令交互时,CLK处于连续正常供给状态。很多客户反馈的通讯失败均是由时钟不起振、起振晚、时钟供给不连续等问题造成。可通过逻辑分析仪和示波器辅助观察。
5、从时序上判断芯片的问题根源
“之前通讯是正常的,现在不行了,怎么回事?”
“我发了指令,加密芯片就是不回复,是不是芯片有问题?”
“我接收到的数据错误,是不是加密芯片运行算法出错了?”
上述引号中的内容均为用户反馈的真实信息。这些问题描述均为表象,若初步分析后仍无法定位,需要从底层时序查起。使用逻辑分析仪或示波器抓取MCU与加密芯片通讯的时序,与MCU收发的数据做比对,以此判断是加密芯片还是MCU的通讯异常引起的问题。

转载于:https://blog.51cto.com/13520299/2132737

UART接口算法移植加密芯片的调试技巧——通讯调试相关推荐

  1. UART接口算法移植加密芯片的调试技巧——算法调试

    算法移植加密芯片的调试包含2个部分:通讯调试和算法调试.之前讲到过通讯调试技巧,接下来本篇将对算法调试中的问题进行分析总结,来帮助客户顺利地完成调试. 算法调试中的常见问题: 1.不要自行建工程 客户 ...

  2. iOS调试技巧-断点调试

    Condational Breakpoints(条件断点) 普通断点只要执行到断点所在行就会停止程序,但是有时候我们想当满足一定条件时才停止程序.这个调试技巧在当你想要捕获一个循环中的变量的特定值或者 ...

  3. python断点调试技巧-python调试方法

    之前调试python程序都是用print参数,感觉有点弱爆啊,最近发现python也有类似C语言gdb的工具pdb,记录下pdb的使用方法和心得. 先找了段简单的测试程序: 复制代码 !/usr/bi ...

  4. Visual Studio原生开发的20条调试技巧(下)

    我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...

  5. Visual Studio原生开发的20条调试技巧

    我的上篇文章<Vistual Studio原生开发的10个调试技巧>引发了很多人的兴趣,所以我决定跟大家分享更多的调试技巧.接下来你又能看到一些对于原生应用程序的很有帮助的调试技巧(接着上 ...

  6. 前端开发中的调试技巧

    前端开发中的调试技巧 骨灰级调试大师Alert 那还是互联网刚刚起步的时代,网页前端还主要以内容展示为主,浏览器脚本还只能为页面提供非常简单的辅助功能的时候.那个时候,网页主要运行在以IE6为主的浏览 ...

  7. lldb常用命令与调试技巧

    一.基本介绍 LLDB是个开源的内置于XCode的调试工具,它能帮助我们在开发中更快的定位和调试bug,无论正向和逆向开发中都有很大的作用.lldb对于命令的简称,是头部匹配方式,只要不混淆(不提示歧 ...

  8. 前端 谷歌 chorme f12开发者工具调试技巧

    谷歌调试技巧 谷歌调试技巧: 1.快速重复发送请求 2.在控制台调试请求,更改参数,不需回到代码中修改. 3.复制js变量 4.快速选中的元素,输出其html代码. 5.截取滚动页面的长屏幕 6.一键 ...

  9. 还在肉眼找bug??赶紧进来!!!程序员一定要学的调试技巧.

    本文介绍了什么是bug,什么是调试,调试重要性,如何调试解决bug,各种常用的调试快捷键,如何写出好代码以及const关键字,assert断言库函数介绍,写代码各种遇见的错误, 调试训练 实用调试技巧 ...

最新文章

  1. Python进行时间序列平稳检验ADFtest(Augmented Dickey-Fuller Unit Root Test)
  2. iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
  3. 浏览器对于前端的作用
  4. ​电赛 | 19年全国一等奖,北航学子回忆录。
  5. [转] .NET 3.5中MSChart组件的ImageLocation属性含义
  6. 生产三码 黑苹果_黑苹果OC配置工具:OpenCore Configurator v2.15.2.0
  7. LRU和LFU的区别
  8. Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'
  9. 3123称重显示控制器说明书_失重秤在自动化配料系统中的应用 - 工业自动化称重仪表...
  10. 厚积薄发!华为云7篇论文被AAAI收录,2021年AI行业技术风向标看这里!
  11. 为何高端FPGA都非常重视软件
  12. 华为销售用一封邮件撬走阿里云千万级客户罗振宇的《得到》
  13. Google地图开发总结
  14. 马尔科夫不等式与切比雪夫不等式
  15. Caml 多表关联查询
  16. 干货 | LoRaWAN 协议中文版,你要的pdf来了
  17. iMX6UL配置MCP2515模块(SPI转CAN)——基于迅为iTOP-iMX6UL开发板
  18. 计算机窗口键,电脑上win是哪个键_电脑windows键是哪个-win7之家
  19. Cross-modality Person re-identification with Shared-Specific Feature Transfer笔记
  20. 手机app在线机房温湿度超高超低报警

热门文章

  1. 树莓内核驱动io框架
  2. java 数值区间_java 各数据类型数值范围
  3. mysql tomcat 自动重连_基于tomcat+mysql的c/s模式下的系统自动更新
  4. 数学建模记录(如何组织,如何参加)(一)
  5. Linux下的简单socket编程示例
  6. Java Arrays.Sort方法重写
  7. 单片机8位抢答器实训机电报告_【机电技术应用专业】培育智能制造人才 迈进工科大学殿堂...
  8. Centos7-安装mysql5-7
  9. java-高并发解决方案
  10. java泛型的逆变_Java泛型的逆变