备忘录:将pqm4-kyber768集成到chipwhisperer--simpleserial-base项目中

基本流程

  1. 新建一个simpleserial-base项目,如simpleserial-base-kyber768,将kyber768中的代码和simpleserial-base中的代码都拷贝到这一文件夹下

  2. 改造makefile, 首先添加SRC,将kyber768下的C文件添加上,可以使用

    csrc = $(shell find kyber768/ -name "*.c")
    SRC += csrc
    

    相应地,也要添加汇编代码进去

    asrc = $(shell find kyber768/ -name "*.S")
    ASRC += $(asrc)
    

    不过这里要做一些处理,因为cw地Makefile.Inc中在每次make后会将同C代码同名地汇编代码删除掉,但是kyber768中matacc的优化实现使用的是同名文件,所以可以给matacc.Smatacc.i加一个前缀,比如fastmatacc.S,记得改完文件名后修改*.S中include<*.i>的值。

    此外,像TARGET这个可以自己酌情命名

  3. 修改FPU的FLAG

    pqm4中使用opencm3中的脚本script/genlink.py通过开发板型号匹配devices.data中来决定使用的FPU,我们这里暂时固定为STM32F303,所以就直接锁死。查看cw中提供的HAL中的Makefile.stm32f3,可以看到

    image-20220308163837671

    选择都是soft,而通过devices.data我们能够看到pqm4中stm32f3

    image-20220308163946495

    我们将ASFLAGS 中的-mfloat-abi=soft改为-mfloat-abi=hard -mfpu=fpv4-sp-d16即可,否则会出现很多指令不支持。

  4. 在我们的设置下,.o文件会被生成到obj/kyber768/下,但是obj下尚未有kyber768/这一文件夹,可以偷偷懒动手创建一下,也可以加一行shell创建一个,这里就不再赘述。最后在simpleserial-base.c中添加

    #include "kyber768/api.h"
    

    即可

Tips

知道FPU的概念

理解编译、链接的过程

理解复杂的Makefile的写法、规则

理解pqm4、chipwhisperer的项目结构

posted @ 2022-03-08 16:50  火腿烧豆腐  阅读(218)  评论(0编辑  收藏  举报