2017-2018-1 20155308 20155316 实验二 固件程序设计
20155308&20155316 2017-2018-1 《信息安全系统设计基础》实验二
本实验报告由两人共同完成
实验前的准备(安装步骤说明)
1.安装keil环境
十万分注意!!!
安装keil的路径一定不要是中文名!一定不要是中文名!!!
否则用这个平台编译的时候会出现编译不成功的提示的!
编译成功则不会出现上图提示:
安装包
主参考资料
遇到的问题
-
问题1:选择安装路径后点击安装时出现了“this folder is not write-protected and ...”的错误提示
-
解答1:在百度上搜索到一篇相类似错误的解说,上面对此的解说为:
-
大致意思是跟选择文件时创建的文件夹操作有误有关。在选择安装路径的时候,我是点开路径选择界面后,中途创建了文件夹,估计是这个地方出错了。于是我重新打开下载软件,在选择路径之前先把安装路径创建好,再选择,果然这次就成功安装了。
-
问题2:注册时出现无法注册的情况
-
解答2:在百度上解决方案是:“在桌面KEIL的快捷方式图标上点击右键--以管理员权限运行;
重新填入注册码即可” -
操作后结果如下:
-
仍然没有注册成功,网上对此的解释见链接
-
查看TOOL文件后发现,我们的安装中只有ARM这个编译器,没有C51编译器。
-
这说明我们生成注册码时选择的应该是ARM选项而不是C51选项
-
更改选项后填入注册码
-
结果显示注册成功
2.打开文件
- 问题1:怎么打开一个工程?
- 解答1:选择project->open project即可,不是选file->open file,记得不要弄错了
- 问题2:实验说明.txt文件中说需要在打开的工程里的algorithm文件夹上添加Z32HUA_ALG.LIB,该怎么添加?
- 解答2:在左边的栏里双击algorithm文件夹,在弹出的窗口里选择显示所有文件(All files(".")),找到如图所示的文件添加即可。
接下来的步骤照实验说明走即可。
实验
实验1
实验内容
- 注意不经老师允许不准烧写自己修改的代码
- 两人(个别三人)一组
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
- 提交破解程序中产生LIC的截图
- 提交破解成功的截图
截图
分析
- 由于该实验部分是在上实验课前一天做的,所以摸索了一会,有关问题及解决方法见“实验前准备”部分(第一节)
实验2
实验内容
- 注意不经老师允许不准烧写自己修改的代码
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 实验报告中分析代码
截图
问题与分析
- 问题:在将代码从电脑下载到实验箱的时候,并没有显示连接成功
- 解决方法:开关实验箱左上角部分的电源的时候,慢一点开、关,不要一下子完成,就可以连接成功了。如果还不成功,已知有三种解决方法:一是重启自己的电脑,二是连线方面可以重连一下,例如换一下在电脑上连接的端口,三是换一个电脑或者实验箱试试
- 分析代码
- 主函数代码的执行过程为:
-
- 系统初始化,中断设置,使能所有中断;
-
- 判断按键,返回 boot 条件,确认是否进行程序下载;
-
- 初始化 IC 卡插入检测端口 GPIO6;
-
- 串口初始化;
-
- LCD12864 初始化;
-
- 矩阵键盘初始化;
-
- 液晶屏第一行显示字符串。
实验3
实验内容
任务详情
0. 注意不经老师允许不准烧写自己修改的代码
1.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
3. 实验报告中分析代码
截图
分析
- 分析代码
- 主函数代码的执行过程为:
-
- 系统初始化,中断设置,使能所有中断;
-
- 判断按键,返回 boot 条件,确认是否进行程序下载;
-
- 初始化 IC 卡插入检测端口 GPIO6;
-
- 串口初始化;
-
- LCD12864 初始化;
-
- 矩阵键盘初始化;
-
- 液晶屏第一行显示字符串。
实验4
实验内容
- 网上搜集国密算法标准SM1,SM2,SM3,SM4
- 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
- 四个算法的用途?
- 《密码学》课程中分别有哪些对应的算法?
- 提交2,3两个问题的答案
- 提交在Ubuntu中运行国密算法测试程序的截图
截图
分析
- 问题:在网上找到了相关代码,但试运行后SM2运行不出来
- 解决:打开程序,发现它include头文件如下:
- 但下载的代码里没有这些.h文件,openssl文件夹路径并没有添加至环境变量中去
- 于是我在openssl官网上下载了这些头文件,并将include改为类似:
#include "../opoenssl/ec.h"
- 结果编译时提醒我“opensslconf.h.in”文件无法编译,查看代码发现代码有误
- 于是我复制官网上的opensslconf.h的代码,粘贴至opensslconf.h.in中(官网上的和github上的该代码内容不同)
- 继续编译,出现其他头文件找不到的编译错误提示,仔细查找,原来是如果要以
#include "头文件地址"
这种形式include头文件的话,则所有头文件都要这么写,上图所包含的头文件中也引用了其他的头文件,也就是说opennssl文件夹中所有头文件都得改成这种形式,这样太麻烦了,如果全修改的话,则可以调试出SM2的测试代码;另一种解决办法是将openssl文件夹路径添加至环境变量中(在linux环境下)
实验5
实验内容
- 注意不经老师允许不准烧写自己修改的代码
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
- 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
- 实验报告中分析代码
截图
分析
- 分析代码
- 主函数代码的执行过程为:
- 系统初始化,中断设置,使能所有中断;
- 判断按键,返回 boot 条件,确认是否进行程序下载;
- 初始化 IC 卡插入检测端口 GPIO6;
- 串口初始化;
- LCD12864 初始化;
- 矩阵键盘初始化;
- 液晶屏第一行显示字符串。