基本流程
-
新建一个simpleserial-base项目,如simpleserial-base-kyber768,将kyber768中的代码和simpleserial-base中的代码都拷贝到这一文件夹下
-
改造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.S和matacc.i加一个前缀,比如fastmatacc.S,记得改完文件名后修改*.S中include<*.i>的值。
此外,像TARGET这个可以自己酌情命名
-
修改FPU的FLAG
pqm4中使用opencm3中的脚本script/genlink.py通过开发板型号匹配devices.data中来决定使用的FPU,我们这里暂时固定为STM32F303,所以就直接锁死。查看cw中提供的HAL中的Makefile.stm32f3,可以看到
选择都是soft,而通过devices.data我们能够看到pqm4中stm32f3
我们将ASFLAGS 中的-mfloat-abi=soft改为-mfloat-abi=hard -mfpu=fpv4-sp-d16即可,否则会出现很多指令不支持。
-
在我们的设置下,.o文件会被生成到obj/kyber768/下,但是obj下尚未有kyber768/这一文件夹,可以偷偷懒动手创建一下,也可以加一行shell创建一个,这里就不再赘述。最后在simpleserial-base.c中添加
#include "kyber768/api.h"
即可
Tips
知道FPU的概念
理解编译、链接的过程
理解复杂的Makefile的写法、规则
理解pqm4、chipwhisperer的项目结构