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

实验内容

  1. 注意不经老师允许不准烧写自己修改的代码
  2. 两人(个别三人)一组
  3. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
  4. 提交破解程序中产生LIC的截图
  5. 提交破解成功的截图

截图

分析

  • 由于该实验部分是在上实验课前一天做的,所以摸索了一会,有关问题及解决方法见“实验前准备”部分(第一节)

实验2

实验内容

  1. 注意不经老师允许不准烧写自己修改的代码
  2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
  3. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
  4. 实验报告中分析代码

截图

问题与分析

  • 问题:在将代码从电脑下载到实验箱的时候,并没有显示连接成功
  • 解决方法:开关实验箱左上角部分的电源的时候,慢一点开、关,不要一下子完成,就可以连接成功了。如果还不成功,已知有三种解决方法:一是重启自己的电脑,二是连线方面可以重连一下,例如换一下在电脑上连接的端口,三是换一个电脑或者实验箱试试
  • 分析代码
  • 主函数代码的执行过程为:
    1. 系统初始化,中断设置,使能所有中断;
    1. 判断按键,返回 boot 条件,确认是否进行程序下载;
    1. 初始化 IC 卡插入检测端口 GPIO6;
    1. 串口初始化;
    1. LCD12864 初始化;
    1. 矩阵键盘初始化;
    1. 液晶屏第一行显示字符串。

实验3

实验内容

任务详情
0. 注意不经老师允许不准烧写自己修改的代码
1.参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
3. 实验报告中分析代码

截图

分析

  • 分析代码
  • 主函数代码的执行过程为:
    1. 系统初始化,中断设置,使能所有中断;
    1. 判断按键,返回 boot 条件,确认是否进行程序下载;
    1. 初始化 IC 卡插入检测端口 GPIO6;
    1. 串口初始化;
    1. LCD12864 初始化;
    1. 矩阵键盘初始化;
    1. 液晶屏第一行显示字符串。

实验4

实验内容

  1. 网上搜集国密算法标准SM1,SM2,SM3,SM4
  2. 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
  3. 四个算法的用途?
  4. 《密码学》课程中分别有哪些对应的算法?
  5. 提交2,3两个问题的答案
  6. 提交在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

实验内容

  1. 注意不经老师允许不准烧写自己修改的代码
  2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
  3. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
  4. 实验报告中分析代码

截图

分析

  • 分析代码
  • 主函数代码的执行过程为:
    1. 系统初始化,中断设置,使能所有中断;
    2. 判断按键,返回 boot 条件,确认是否进行程序下载;
    3. 初始化 IC 卡插入检测端口 GPIO6;
    4. 串口初始化;
    5. LCD12864 初始化;
    6. 矩阵键盘初始化;
    7. 液晶屏第一行显示字符串。
原文地址:https://www.cnblogs.com/JIUSHA/p/7788541.html