【随笔记】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 师傅的,本文为调试记录及心得体会. 逆向分析的过程 ...
随机推荐
- UBOOT编译--- make xxx_deconfig过程详解(一)
make xxx_deconfig过程详解 1. 前言 2. 概述 3. build变量的定义 4. 目标%config的定义 4.1 依赖 scripts_basic 4.1.1 语句$(if $ ...
- vue 过滤器时间格式化
1.导入了一个moment.js插件,里面封装了格式化时间的方法 ①:插件的链接:https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/mom ...
- 记一次node节点无法加入K8S集群
#问题现象:root@small-virtual-machine:~# kubeadm join 10.0.0.133:6443 --token d2hyl5.5qt5fzjsdbxm2k5o ...
- Nginx如何配置隐藏index.php文件
server { listen 80; #listen [::]:80 default_server ipv6only=on; server_name jiqing.dexin.com; index ...
- 【RPC和Protobuf】之RPC入门
一,概念 RPC:Remote procedure call(远程过程调用),分布式系统中不同节点之间流行的通信方式 服务端: 注: 1.执行下面的代码之后,会相应的启动一个tcp进程 C:\User ...
- 利用KubeEdge在A500部署边缘推理任务
利用KubeEdge在A500部署边缘推理任务 目 录 1 环境介绍... 1 2 云端环境部署... 2 2.1 在master节点安装Docker和k8S (ubuntu) 2 2.1.1 ...
- i春秋时间
打开题目就是一段php代码 大致的意思是 ------------------------------------------------------------------------------- ...
- PHP8.1.10手动安装教程及报错解决梳理
安装教程参考一:https://www.cnblogs.com/haw2106/p/9839655.html 安装教程参考二:https://www.cnblogs.com/jiangfeilong/ ...
- js-day02-综合案例ATM存款书写
<script> // 1. 不断的弹出对话框 // 3. 金额的变量 let money = 100 w ...
- Dart语言简介
简单介绍Dart语言 Dart是一种针对客户优化的语言,亦可在任何平台上快速开发的应用陈旭. 目标是为多平台开发提供最高效的变成语言,并为应用程序框架搭配了领会的运行时执行平台. Dart特点 Dar ...