XMOS芯片包含一个片上的OTP 存储器,我们能够将 XMOS 的 AES 模块的配置信息存储到芯片的 OTP 上,这样程序在被烧录到 Flash 上的时候就会被加密。 XMOS 的 AES 模块不会被自身程序或是第三方程序修改;程序通过密钥进行加密,不会被第三方设备进行盗用。所以XMOS的 AES加密具有非常好的安全性和可靠性。
首先 XMOS 芯片从自身的 Boot ROM 加载基本启动程序,启动程序会查询安全寄存器( Security Register)的所有安全设置位,其中如果安全启动位( secure boot bit)没有置位,程序就会使用正常启动方式,把控制权交个外部的 SPI Flash,运行外部的 Flash loader 和用户应用程序。如果置位了,则会使用安全启动模式,并且会使用 OTP 内部的引导启动程序( boot loader)。从 OTP 内部拷贝出 AES 的设置资料并加载 AES 模块。 AES 模块通过 SIP
读取外部 Flash loader 到 RAM 里面,然后使用 CMAC-AES-128 运算法则和一个 128bit 的加密密钥对 Flash loader 进行进行校验,如果校验失败,那么启动程序( boot loader)将会被终止。若校验成功,则 AES 会读取 Flash 对应的镜像程序块,使用一个解密密钥进行解码,并运行程序。
1、xburn --genkey xu208keyfile.txt
注释:生成的xu208keyfile.txt是密钥文件
2,xburn --lock xu208keyfile.txt --target-file x200-mc-audio.xn --enable-jtag --disable-master-lock
注释:这一步是对XMOS的OTP的AES设置,使用xburn指令即对XMOS的OTG进行操作,xu208keyfile.txt是128b的密钥。*.xn文件是工程里面的*.xn文件,因为xburn是对XMOS芯片操作,而不是flash,所以需要xmos的*.xn配置文件。--enable-jtag 是XTAG还能做调试用,如果要禁掉XTAG,选项应为 --disable-jtag ,这个需慎用,待调试好了,在重新执行这行指令也可以。
3,xflash app_xu208_usb_audio_xCore200_usb_aduio.xe --key xu208keyfile.txt
注释:这一步便是烧录带有密钥的程序到SPI flash。 --spi-spec 是针对特定的SPI flash的命令行参数。
加密成功后现象应该是可以debug、xrun,但是每次flash程序时需要带有--key xu208keyfile.txt的命令。
代码烧录后发现xrun: First stage multi-node boot failed, please check XN file and Xmos link connectivity这个问题,把xmos软件卸载后重新安装新版本,功能正常。
其他:检查TRST_N这个脚的信号是否连接,正常应该是高电平
xrun -l查看device是否连接
版权声明:本文为xiao336451原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。