⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.anywhere

📁 AnyWhere用户手册(MiniARM M24A适用)
💻 ANYWHERE
字号:
/****************************************Copyright (c)****************************************************
**                            Guangzhou ZHIYUAN electronics Co.,LTD.
**                                      
**                                 http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:               main.c
** Latest modified Date:    
** Latest Version:          1.0
** Descriptions:            加密用户应用程序例程
**                          
**--------------------------------------------------------------------------------------------------------
** Created by:              
** Created date:            
** Version:                 1.0
** Descriptions:            The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by:             
** Modified date:           
** Version:                 
** Descriptions:            
**
*********************************************************************************************************/
/*********************************************************************************************************
  头文件包含
*********************************************************************************************************/
#include    "config.h"
#include    "main.h"

/*********************************************************************************************************
** Function name:           ThreadEncrypt
** Descriptions:            用户应用程序加密线程 假设加密密钥为:0xAA 0x55 0x00 0xFF
** input parameters:        none
** output parameters:       none
** Returned value:          
** Created by:              
** Created Date:            
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void ThreadEncrypt (INT32U ulData)
{
    INT8U   ucData[64]  = {0};
    INT8U   ucCrpRt[16] = {0};
    INT8U   ucCalRt[16] = {0};
    INT32U  i; 
    
    ulData = ulData;

    while (1) {

        /*
         *  获得随机数
         */
        for (i = 0; i < 64; i++) {
            ucData[i] = (INT8U)rand();
        }

        /*
         *  加密端口计算结果
         */
        awWriteEx( AW_LOCAL_ADDR,                                       /*  本机操作                    */
                  AW_SET_CRP_DATA_ADDR,                                 /*  加密数据计算端口            */
                  64,                                                   /*  数据长度为64个字节          */
                  (void*) ucData,                                       /*  加密数据保存缓冲区          */
                  AW_BYTE_MODE | AW_IO_MODE );                          /*  端口属性,不可变            */

        awReadEx( AW_LOCAL_ADDR,                                        /*  本机操作                    */
                  AW_GET_CRP_RESULT_ADDR,                               /*  读取加密计算结果数据端口    */
                  16,                                                   /*  数据长度为16个字节          */
                  (void*) ucCrpRt,                                      /*  加密计算结果保存缓冲区      */
                  AW_BYTE_MODE | AW_IO_MODE );                          /*  端口属性,不可变            */

        /*
         *  以下为用户计算结果
         */

        /*
         *  输入密钥
         */
        ucData[12] = 0xAA;
        ucData[13] = 0x55;
        ucData[14] = 0x00;
        ucData[15] = 0xFF;

        /*
         *  使用MD5算法器,开始计算结果
         */
        awWrite(AW_LOCAL_ADDR, AW_INTIT_MD5_ADDR(0), 0);                /*  初始化MD5算法器             */

        awWriteEx( AW_LOCAL_ADDR,                                       /*  本机操作                    */
                  AW_SET_MD5_DATA_ADDR(0),                              /*  MD5设置校验数据地址         */
                  64,                                                   /*  数据长度为64个字节          */
                  (void*) ucData,                                       /*  数据保存缓冲区              */
                  AW_BYTE_MODE | AW_IO_MODE );                          /*  端口属性,不可变            */

        awReadEx( AW_LOCAL_ADDR,                                        /*  本机操作                    */
                  AW_GET_MD5_RESULT_ADDR(0),                            /*  MD5获得校验结果端口地址     */
                  16,                                                   /*  数据长度为16个字节          */
                  (void*) ucCalRt,                                      /*  数据保存缓冲区              */
                  AW_BYTE_MODE | AW_IO_MODE );                          /*  端口属性,不可变            */

        /*
         *  比较计算结果
         */
        if (memcmp(ucCrpRt, ucCalRt, 16) != 0) {

            /*
             *  失败处理
             */
            while (1) {
                awWrite(AW_LOCAL_ADDR, AW_SYS_ALARM_ADDR, 1);       /*  系统报警蜂鸣器鸣叫          */
                awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250);      /*  等待时间间隔                */
                awWrite(AW_LOCAL_ADDR, AW_SYS_ALARM_ADDR, 0);       /*  系统报警蜂鸣器停止鸣叫      */
                awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250);      /*  等待时间间隔                */
           }
        }
        awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 500);
    }
}

/*********************************************************************************************************
** Function name:           main
** Descriptions:            用户主函数
** input parameters:        none
** output parameters:       none
** Returned value:          
** Created by:              
** Created Date:            
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main (void)
{
    INT32U ulPar[4];                                                    /*  任务参数                    */

    targetInit();                                                       /*  目标板初始化                */

    awWrite(AW_LOCAL_ADDR, AW_SYS_ALARM_ADDR, 0);                       /*  蜂鸣器停止鸣叫              */

    /*
     *  创建任务
     */
    ulPar[0] = (INT32U)ThreadEncrypt;                                   /*  任务地址                    */
    ulPar[1] = 0;                                                       /*  任务入口参数                */ 
    ulPar[2] = 1024;                                                    /*  任务堆栈大小                */
    ulPar[3] = 0;                                                       /*  任务扩展堆栈大小            */
    
    awWriteEx(AW_LOCAL_ADDR,                                            /*  创建用户应用程序加密线程    */
              AW_THREAD_SET_ADDR(0),
              4,
              ulPar,
              AW_IO_MODE | AW_WORD_MODE );
              
    while(1){
        awWrite(AW_LOCAL_ADDR, AW_SYS_RUN_ADDR, 1);                     /* 系统运行指示LED亮            */
        awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250);                  /* 等待时间间隔                 */
        awWrite(AW_LOCAL_ADDR, AW_SYS_RUN_ADDR, 0);                     /* 系统运行指示LED灭            */
        awWrite(AW_LOCAL_ADDR, AW_TIME_LAG_ADDR, 250);                  /* 等待时间间隔                 */
    }
}

/*********************************************************************************************************
  End File
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -