【随笔记】ATECC608 加密芯片调试记录
芯片通信测试
根据芯片手册,ATECC608B 的 7bit 器件地址是:0x35
root@linux:/usr/bin# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- 35 -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
50: -- UU 52 53 -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
下载必要文件
大多数加密芯片都是由原厂提供库文件,便于降低开发难度。
官网下载:CryptoAuthLib
https://www.microchip.com/en-us/software-library/cryptoauthlib
https://codeload.github.com/MicrochipTech/cryptoauthlib/zip/refs/tags/v3.3.3
编译库文件的版本只需要最低 cmake 2.6.4 版本,但是测试程序最低 cmake 3.10
官网下载:
https://cmake.org/files/v3.10/cmake-3.10.3-Linux-x86_64.tar.gz
解压并设置好环境变量:
export PATH=/home/lmx/work/tmp/cmake-3.10.3-Linux-x86_64/bin:$PATH
移植编译源码
配置编译工具链
建立新的配置文件,指定编译工具链的位置:xxx_linux_toolchain.cmake
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_TOOLCHAIN_PATH /home/lmx/work/xxx/lichee/out/gcc-linaro-5.3.1-2016.05/gcc-aarch64)
set(CMAKE_C_COMPILER ${CMAKE_TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER ${CMAKE_TOOLCHAIN_PATH}/bin/arm-linux-gnueabihf-g++)
编译动态链接库
通过生成 Makefile:
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3$ mkdir build && cd build
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3/build$ cmake -DCMAKE_TOOLCHAIN_FILE=xxx_linux_toolchain.cmake -DATCA_HAL_I2C=ON ../
-- The C compiler identification is GNU 4.9.3
-- Check for working C compiler: /home/lmx/work/xxx/lichee/out/gcc-linaro-5.3.1-2016.05/gcc-aarch64/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /home/lmx/work/xxx/lichee/out/gcc-linaro-5.3.1-2016.05/gcc-aarch64/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for malloc
-- Looking for malloc - found
-- Looking for free
-- Looking for free - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lmx/work/xxx/application/cryptoauthlib-3.3.3/build
编译动态库文件:
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3/build$ make
Scanning dependencies of target cryptoauth
[ 1%] Building C object lib/CMakeFiles/cryptoauth.dir/atca_basic.c.o
[ 2%] Building C object lib/CMakeFiles/cryptoauth.dir/atca_cfgs.c.o
......
[ 95%] Building C object lib/CMakeFiles/cryptoauth.dir/hal/atca_hal.c.o
[ 97%] Building C object lib/CMakeFiles/cryptoauth.dir/hal/hal_linux.c.o
[ 98%] Building C object lib/CMakeFiles/cryptoauth.dir/hal/hal_linux_i2c_userspace.c.o
[100%] Linking C shared library libcryptoauth.so
[100%] Built target cryptoauth
得到两个关键文件:
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3/build$ ls -l lib/*.h lib/*.so
-rw-r--r-- 1 lmx lmx 2923 11月 4 11:20 lib/atca_config.h
-rwxrwxr-x 1 lmx lmx 927371 11月 4 14:02 lib/libcryptoauth.so
编译可执行程序
指定动态链接库的位置:
--- cryptoauthlib-3.3.3\test\CMakeLists.txt
+++ cryptoauthlib-3.3.3\test\CMakeLists.txt
@@ -52,13 +52,13 @@
${CMAKE_CURRENT_SOURCE_DIR}/../lib
${CMAKE_CURRENT_SOURCE_DIR}/../third_party
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/mbedtls/include
${CMAKE_CURRENT_SOURCE_DIR}/../third_party/wolfssl
${CMAKE_CURRENT_BINARY_DIR}/../lib)
-target_link_libraries(cryptoauth_test cryptoauth)
+target_link_libraries(cryptoauth_test ${CMAKE_CURRENT_BINARY_DIR}/../lib/libcryptoauth.so)
if(UNIX)
target_link_libraries(cryptoauth_test pthread)
endif()
if(ATCA_BUILD_SHARED_LIBS)
编译可执行程序:
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3/build$ mkdir bin && cd bin
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3/build/bin$ cmake -DCMAKE_TOOLCHAIN_FILE=../xxx_linux_toolchain.cmake ../../test/
-- The C compiler identification is GNU 4.9.3
-- Check for working C compiler: /home/lmx/work/xxx/lichee/out/gcc-linaro-5.3.1-2016.05/gcc-aarch64/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /home/lmx/work/xxx/lichee/out/gcc-linaro-5.3.1-2016.05/gcc-aarch64/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/lmx/work/xxx/application/cryptoauthlib-3.3.3/build/bin
lmx@lmx:~/work/xxx/application/cryptoauthlib-3.3.3/build/bin$ make
Scanning dependencies of target cryptoauth_test
[ 1%] Building C object CMakeFiles/cryptoauth_test.dir/atca_crypto_sw_tests.c.o
[ 2%] Building C object CMakeFiles/cryptoauth_test.dir/atca_test.c.o
......
[ 98%] Building C object CMakeFiles/cryptoauth_test.dir/home/lmx/work/xxx/application/cryptoauthlib-3.3.3/third_party/unity/unity_memory.c.o
[100%] Linking C executable cryptoauth_test
[100%] Built target cryptoauth_test
测试芯片功能:
执行测试程序(器件地址是 0x35,传给测试程序需要左移一位得到 0x6a):
root@linux:~# ./cryptoauth_test info -d ecc608 -i i2c 1 -a 0x6a
revision:
00 00 60 03
root@linux:~# ./cryptoauth_test sernum -d ecc608 -i i2c 1 -a 0x6a
serial number:
01 23 1A 41 5D 5C E7 AF 01
【随笔记】ATECC608 加密芯片调试记录的更多相关文章
- SPI 核软件调试记录
SPI 核软件调试记录 1.首先说说int SpiFlashWaitForFlashReady(void)这一函数,基本上其它函数在执行的时候,都会事先执行一次此函数. 因为此函数的作用主要是用 ...
- Video Timing Controller v6.1软件调试记录
Video Timing Controller v6.1软件调试记录 GUI配置: . case XVTC_VMODE_PAL: //576i@50 { TimingPtr->Interlace ...
- Video Test Pattern Generator(7.0)软件调试记录
Video Test Pattern Generator(7.0)软件调试记录 . XVidC_VideoMode XVIDC_VM_576_50_I = XVIDC_VM_720x576_50_I ...
- 笔记:LIR2032 电池充电记录
笔记:LIR2032 电池充电记录 LIR2032 电池是锂电池,形状和 CR2032 一样,只不过可以充电,材料是锂离子. 一个单颗的 LIR2032 电池容量只有 40mAH,容量很小. 那么就需 ...
- MA82G5D16AS16 主频调试记录
MA82G5D16AS16 主频调试记录 当 SCKS 设置 为 MCKDO / 128 时 MCU 的电流为 0.58mA,100UF 电容可以维持 0.5S,大概可以满足. 但是需要注意外围的线路 ...
- Apusic中间件结合MyEclipse进行远程调试记录
Apusic中间件结合MyEclipse进行远程调试记录. 在金蝶域中正常部署应用. 启动金蝶中间件时使用"startapusic -ds"命令. 在MyEclipse的Run-- ...
- http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天
http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天
- 基于freescale i.Mx6(ARM)的阿里云oss调试记录
交叉编译阿里OSS调试记录 1.1 开通oss服务 具体参考以下链接: https://help.aliyun.com/document_detail/31884.html?spm=a2c4g.111 ...
- [ZJCTF 2019]EasyHeap | house of spirit 调试记录
BUUCTF 上的题目,由于部分环境没有复现,解法是非期望的 house of spirit 第一次接触伪造堆的利用方式,exp 用的是 Pwnki 师傅的,本文为调试记录及心得体会. 逆向分析的过程 ...
随机推荐
- jmeter——JSON提取器(从上一个请求的响应结果提取参数传给下一个请求)
记录一个参数提取过程,可供后续参考. 1. 查看响应报文的结构 将上一个请求的响应报文复制到Notepad++编辑器 JSON Viewer是Notepad++的JSON插件, Notepad++的P ...
- TCN代码详解-Torch (误导纠正)
TCN代码详解-Torch (误导纠正) 1. 绪论 TCN网络由Shaojie Bai, J. Zico Kolter, Vladlen Koltun 三人于2018提出.对于序列预测而言,通常考虑 ...
- Ubuntu环境下LLVM 15.0 完全编译 附windows编译LLVM master
1. 预先安装 sudo apt install ninja-build sudo apt install llvm clang # 第一次编译需要 sudo apt-get install libn ...
- .net core/5/6/7中WPF如何优雅的开始开发
WPF是微软的.net平台中的一个桌面客户端应用程序框架,经常用于企业开发windows桌面客户端,广泛应用于中小企业快速开发一款工具,本人也是比较喜欢利用WPF开发一些小工具. 目录 知名案例 .n ...
- <二>派生类的构造过程
派生类从继承可以继承来所有的成员(变量和方法) 除了构造函数和析构函数 派生类怎么初始化从基类继承来的成员变量的呢?通过调用基类的构造函数来初始化 派生类的构造函数和析构函数,负责初始化和清理派生类部 ...
- windows 搭建iis文件服务器
1.运行打开控制面板->程序->启用或关闭Windows功能,勾选下面所有的选项. 注意,必须安装功能所需文件. 等待 关闭即可. 2.在控制面板找到管理工具,不同版本的Windows不尽 ...
- 1、创建Django项目并配置settings文件
一.先安装Django第三方库 二.创建项目 新建好项目的目录是这样的 迁移数据库,注意:没有安装pymysql的需要通过pip install pymysql安装. 三.创建模块 四.设置setti ...
- 【Java SE进阶】Day01 Object类、日期时间类、System类、StringBuilder类、包装类
一.Object类 1.概述:Java语言的根类/超类,默认继承自Object类 2.常用方法 toString():返回对象的字符串表示--对象类型@内存地址值 可以对其重写@Override eq ...
- @Transactional注解事务失效的几种场景及原因
1. 介紹 在业务开发的许多场景中,我们会使用到通过事务去控制多个操作的一致性.比较多的就是通过声明式事务,即使用 @Transactional 注解修饰方法的形式.但在使用过程中,要足够了解事务失效 ...
- python 之选择结构(if --elif --else)
python中有三种结构:顺序结构.选择结构.循环结构,此处介绍选择结构. if -- else 结构: if 判断条件: 执行语句 else: 执行语句 当if后面的判断条件为真(True)时,执行 ...