zoukankan      html  css  js  c++  java
  • 2019-2020-1 20175234 20175205 20175217 实验二 固件程序设计

    2019-2020-1 20175234 20175205 20175217 实验二 固件程序设计

    实验内容

    1-MDK

    实验要求

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)

    • 提交破解程序中产生LIC的截图

    • 提交破解成功的截图

    实验步骤

    • 按照实验指导书上的操作进行软件安装

    • 运行 uVision4,点 File>>License Management-->复制 CID

    • 运行keil-MDK注册机(在“Z32开发指南2.软件资料keil-MDK 注册机”双击“keil mdk474注册机”)

    • 粘贴 CID 并选择 ARM。


    2-LED

    实验要求

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图

    • 实验报告中分析代码

    实验步骤

    • 首先先在 KEIL-MDK 中添加 Z32 SC-000 芯片库,操作过程为:

      • 打开 keil uVision4 MDK。

      • 新建工程选择 Project——>New uVision Project。

      • 在弹出的安装路径窗口选择安装路径文件夹,并为工程命名。

      • 在芯片库选择框选择库 Generic SC000 Device Database。

      • 点开 ARM 结构目录,选择 SC000,点击 OK,搭建完成。

      • 搭建成功截图:

    • 完成LED等闪烁实验

      • 在 user 组和 driver组下分别双击Main.c和Gpio.c,就可以看到程序的源代码。打开 Main.c,代码如下:

    • 打开“Z32 开发指南实验1-LED闪烁”目录的工程文件。编译工程,产生后缀名为.bin 的可执行代码。

    • 将实验箱接入电源,用USB公对公线将实验箱的USB接口连接到电脑的USB接口上,在电脑上找到“Z32开发指南2.软件资料32下载调试工具”目录打Z32 下载调试工具NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。

    • 当左边框出现“1设备已连接”,设备选择中显示芯片型号,此时就可以下载程序了。我们点击窗口右下方“确认下载”一栏的“浏览”,选择程序路径为“Z32开发指南实验 1-LED闪烁in32HUA.bin”)打开,最后点击下载。


    • 代码分析

      • 主函数代码的执行过程为:

      • 系统初始化,中断设置,使所有中断;

      • 判断按键,返回boot条件,确认是否进行程序下载;

      • 设置GPIO0状态为上拉输出;

      • 进入循环程序,LED等间隔100ms闪烁;

      • 需要注意:程序初始化至GPIO配置的代码不能随意更改,否则无法初始化芯片,下载程序。

    3-UART

    实验要求

    • 注意不经老师允许不准烧写自己修改的代码

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图

    • 实验报告中分析代码

    实验步骤

    • 首先和实验二中一样在 KEIL-MDK 中添加 Z32 SC-000 芯片库

    • 然后完成UART发送与中断接收实验,代码如下

    • 打开“Z32 开发指南实验8-SM1”目录的工程文件。编译工程,产生后缀名为.bin 的可执行代码。

    • 将实验箱接入电源,用USB公对公线将实验箱的USB接口连接到电脑的USB接口上,在电脑上找到“Z32开发指南2.软件资料32下载调试工具”目录打开 Z32 下载调试工具 NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32 即可被电脑识别,进行下载调试。

    • 当左边框出现“1设备已连接”,设备选择中显示芯片型号,此时就可以下载程序了。我们点击窗口右下方“确认下载”一栏的“浏览”,选择程序路径为“Z32开发指南实验 8-SM1in32HUA.bin”并打开,最后点击下载。

    • 代码分析
      • 串口相关函数:包括串口中断服务、波特率设置、串口初始化、发送/接收单字节、发送字符串、发送单个十进制整数、发送单个十六进制整数、发送某一长度的字符串、接收多字节函数

      • void UART_IrqService(void)是串口中断服务函数,本实验中实现串口中断执行子程序,从PC端串口调试助手发送数据至Z32,Z32再经串口发送PC机

      • void UART_BrpSet(UINT16set)是波特率设置函数,串口实验波特率设置为 115200

      • void UART_Init(void)是串口初始化函数,实现配置串口时钟、使能中断

      • void UART_SendByte(UINT8 dat)是发送单字节函数,使用此函数一次发送一个字节数据

      • void UART_SendString(UINT8 *str)是发送字符串函数,使用此函数发送字符串数据

      • void uart_Send String(UINT8 buf[],UINT8length)是发送某一长度的字符串函数,实现发送一定长度的字符串数据

      • void UART_Send Num(INT32 num)是发送单个十进制整数函数,使用此函数发送一个十进制整数

      • void UART_Send Hex(UINT8 dat)是发送单个十六进制整数函数,使用此函数发送一个十六进制整数

      • UINT8 UART_Get Byte(UINT8 *data)是接收单字节函数,使用此函数接收单字节数据

      • void UART_Receive(UINT8 *receive, UINT8 len)是接收多字节函数,使用此函数接收多个字节数据

      • 主函数

        • 系统初始化,中断设置,使能所有中断

        • 判断按键,返回 boot 条件,确认是否进行程序下载

        • 初始化Uart,使能Uart接口,配置Uart中断并使能

        • 发送16位数“0x AA”,换行,在发送字符串“hzyy”,换行

        • 进入while循环程序,等待串口中断到来并判断数据是否接收完毕,若中断到来,转入执行串口中断服务程序,待接收数据完毕,Z32将数据发回串口助手

    4-国密算法

    实验要求

    • 网上搜集国密算法标准SM1,SM2,SM3,SM4

    • 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译

    • 四个算法的用途?

    • 《密码学》课程中分别有哪些对应的算法?

    • 提交2,3两个问题的答案

    • 提交在Ubuntu中运行国密算法测试程序的截图

    实验步骤

    • SM1

      • 用途:广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。

      • 《密码学》课程对应算法:DES,AES等分组密码算法

      • 该算法不公开,所以无法获得源码

    • SM2

      • 用途: 密钥管理,数字签名,电子商务,PKI,信息及身份认证等信息安全应用领域。

      • 《密码学》课程对应算法:ECC椭圆曲线密码

    • SM3

      • 用途:此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。

      • 《密码学》课程对应算法:杂凑算法

      • 运行结果:

    • SM4

      • 用途:此算法用于无线局域网产品。

      • 《密码学》课程对应算法:分组算法

      • 运行结果:

    5-SM1

    实验要求

    • 注意不经老师允许不准烧写自己修改的代码

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图

    • 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图

    • 实验报告中分析代码

    实验步骤

    • 将实验箱接入电源,用USB公对公线将实验箱的USB接口连接到电脑的USB接口上,在电脑上找到“Z32 开发指南2.软件资料32 下载调试工具”目录打开 Z32 下载调试工具 NZDownloadTool.exe。打开Z32的电源开关前,按住Reboot 按键不放,两次打开电源开关,Z32 即可被电脑识别,进行下载调试

    • 实验结果

    实验中遇到的问题

    • 问题一:无法识别串口,无法安装串口调试助手sscom

      • 解决方法:安装串口驱动即可运行
    • 问题二:编译国密算法时,出现fatal error:openssl/ec.h:没有那个文件或目录的问题

      • 解决方法:需要安装两个库:
    sudo apt-get remove openssl libssl-dev
    sudo apt-get install openssl libssl-dev -y
    
    • 在编译时添加参数-lssl -lcrypto即可解决
  • 相关阅读:
    spring-cloud 微服务
    oracle高级部分
    RabbitMq
    如何创建个人网站
    redis
    restFull api接口
    mongodb replSet upgrade
    mongodb sharding upgrade
    Oracle索引梳理系列(三)- Oracle索引种类之反向索引
    Oracle索引梳理系列(二)- Oracle索引种类及B树索引
  • 原文地址:https://www.cnblogs.com/orii/p/11829356.html
Copyright © 2011-2022 走看看