des3des.h
来自「OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI」· C头文件 代码 · 共 364 行
H
364 行
//========================================================================
// TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION
// Property of Texas Instruments
// For Unrestricted Internal Use Only
// Unauthorized reprofuction and/or distribution is strictly prohibited.
// This product is protected under copyright law and trade secret law
// as an unpublished work
// Created 2000, (C) Copyright 2000 Texas Instruments. All rights reserved
//
//
// Filename :des3des.h
//
// Date of Module Modification:4/13/02
// Date of Generation :4/13/02
//
//
//========================================================================
#include "mapping.h"
#include "global_types.h"
#include "errorcodes.h"
#include "test.h"
#include "omap_32_clkrst.h"
#include "configuration.h"
#include "interrupt_mapping.h"
#include "dmareq_mapping.h"
#include "gdmatest_omap32.h"
#include "gdma_omap32.h"
#include "inth2.h"
#include "reset.h"
#ifndef _DES3DES__H
#define _DES3DES__H
//BEGIN INC GENERATION
//--------------------------------------
//Register Offset
//-------------------
#define DES3DES_DES_KEY3_L_OFFSET 0x00
#define DES3DES_DES_KEY3_H_OFFSET 0x04
#define DES3DES_DES_KEY2_L_OFFSET 0x08
#define DES3DES_DES_KEY2_H_OFFSET 0x0C
#define DES3DES_DES_KEY1_L_OFFSET 0x10
#define DES3DES_DES_KEY1_H_OFFSET 0x14
#define DES3DES_DES_IV_L_OFFSET 0x18
#define DES3DES_DES_IV_H_OFFSET 0x1c
#define DES3DES_DES_CTRL_OFFSET 0x20
#define DES3DES_DES_DATA_L_OFFSET 0x24
#define DES3DES_DES_DATA_H_OFFSET 0x28
#define DES3DES_DES_REV_OFFSET 0x2C
#define DES3DES_DES_MASK_OFFSET 0x30
#define DES3DES_DES_SYSSTATUS_OFFSET 0x34
//DES3DES_DES_KEY3_L
//-------------------
#define DES3DES_DES_KEY3_L REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_KEY3_L_OFFSET)
#define DES3DES_DES_KEY3_L_DES_KEY3_L_POS 0
#define DES3DES_DES_KEY3_L_DES_KEY3_L_NUMB 32
#define DES3DES_DES_KEY3_L_DES_KEY3_L_RES_VAL 0x0
//R/W
//DES3DES_DES_KEY3_H
//-------------------
#define DES3DES_DES_KEY3_H REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_KEY3_H_OFFSET)
#define DES3DES_DES_KEY3_H_DES_KEY3_H_POS 0
#define DES3DES_DES_KEY3_H_DES_KEY3_H_NUMB 32
#define DES3DES_DES_KEY3_H_DES_KEY3_H_RES_VAL 0x0
//R/W
//DES3DES_DES_KEY2_L
//-------------------
#define DES3DES_DES_KEY2_L REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_KEY2_L_OFFSET)
#define DES3DES_DES_KEY2_L_DES_KEY2_L_POS 0
#define DES3DES_DES_KEY2_L_DES_KEY2_L_NUMB 32
#define DES3DES_DES_KEY2_L_DES_KEY2_L_RES_VAL 0x0
//R/W
//DES3DES_DES_KEY2_H
//-------------------
#define DES3DES_DES_KEY2_H REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_KEY2_H_OFFSET)
#define DES3DES_DES_KEY2_H_DES_KEY2_H_POS 0
#define DES3DES_DES_KEY2_H_DES_KEY2_H_NUMB 32
#define DES3DES_DES_KEY2_H_DES_KEY2_H_RES_VAL 0x0
//R/W
//DES3DES_DES_KEY1_L
//-------------------
#define DES3DES_DES_KEY1_L REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_KEY1_L_OFFSET)
#define DES3DES_DES_KEY1_L_DES_KEY1_L_POS 0
#define DES3DES_DES_KEY1_L_DES_KEY1_L_NUMB 32
#define DES3DES_DES_KEY1_L_DES_KEY1_L_RES_VAL 0x0
//R/W
//DES3DES_DES_KEY1_H
//-------------------
#define DES3DES_DES_KEY1_H REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_KEY1_H_OFFSET)
#define DES3DES_DES_KEY1_H_DES_KEY1_H_POS 0
#define DES3DES_DES_KEY1_H_DES_KEY1_H_NUMB 32
#define DES3DES_DES_KEY1_H_DES_KEY1_H_RES_VAL 0x0
//R/W
//DES3DES_DES_IV_L
//-------------------
#define DES3DES_DES_IV_L REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_IV_L_OFFSET)
#define DES3DES_DES_IV_L_DES_IV_L_POS 0
#define DES3DES_DES_IV_L_DES_IV_L_NUMB 32
#define DES3DES_DES_IV_L_DES_IV_L_RES_VAL 0x0
//R/W
//DES3DES_DES_IV_H
//-------------------
#define DES3DES_DES_IV_H REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_IV_H_OFFSET)
#define DES3DES_DES_IV_H_DES_IV_H_POS 0
#define DES3DES_DES_IV_H_DES_IV_H_NUMB 32
#define DES3DES_DES_IV_H_DES_IV_H_RES_VAL 0x0
//R/W
//DES3DES_DES_CTRL
//-------------------
#define DES3DES_DES_CTRL REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_CTRL_OFFSET)
//#define DES3DES_DES_CTRL_RESERVED_POS 5
//#define DES3DES_DES_CTRL_RESERVED_NUMB 27
//#define DES3DES_DES_CTRL_RESERVED_RES_VAL 0x0
//R/W
#define DES3DES_DES_CTRL_CBC_POS 4
#define DES3DES_DES_CTRL_CBC_NUMB 1
#define DES3DES_DES_CTRL_CBC_RES_VAL 0x0
//R/W
#define DES3DES_DES_CTRL_TDES_POS 3
#define DES3DES_DES_CTRL_TDES_NUMB 1
#define DES3DES_DES_CTRL_TDES_RES_VAL 0x0
//R/W
#define DES3DES_DES_CTRL_DIRECTION_POS 2
#define DES3DES_DES_CTRL_DIRECTION_NUMB 1
#define DES3DES_DES_CTRL_DIRECTION_RES_VAL 0x0
//R/W
#define DES3DES_DES_CTRL_INPUT_READY_POS 1
#define DES3DES_DES_CTRL_INPUT_READY_NUMB 1
#define DES3DES_DES_CTRL_INPUT_READY_RES_VAL 0x1
//R
#define DES3DES_DES_CTRL_OUTPUT_READY_POS 0
#define DES3DES_DES_CTRL_OUTPUT_READY_NUMB 1
#define DES3DES_DES_CTRL_OUTPUT_READY_RES_VAL 0x0
//R
//DES3DES_DES_DATA_L
//-------------------
#define DES3DES_DES_DATA_L REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_DATA_L_OFFSET)
#define DES3DES_DES_DATA_L_DES_DATA_L_POS 0
#define DES3DES_DES_DATA_L_DES_DATA_L_NUMB 32
#define DES3DES_DES_DATA_L_DES_DATA_L_RES_VAL 0x0
//R/W
//DES3DES_DES_DATA_H
//-------------------
#define DES3DES_DES_DATA_H REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_DATA_H_OFFSET)
#define DES3DES_DES_DATA_H_DES_DATA_H_POS 0
#define DES3DES_DES_DATA_H_DES_DATA_H_NUMB 32
#define DES3DES_DES_DATA_H_DES_DATA_H_RES_VAL 0x0
//R/W
//DES3DES_DES_REV
//-------------------
#define DES3DES_DES_REV REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_REV_OFFSET)
//#define DES3DES_DES_REV_RESERVED_POS 8
//#define DES3DES_DES_REV_RESERVED_NUMB 24
//#define DES3DES_DES_REV_RESERVED_RES_VAL 0x0
//R/W
#define DES3DES_DES_REV_REV_NB_POS 0
#define DES3DES_DES_REV_REV_NB_NUMB 8
#define DES3DES_DES_REV_REV_NB_RES_VAL 0x14
//R
//DES3DES_DES_MASK
//-------------------
#define DES3DES_DES_MASK REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_MASK_OFFSET)
//#define DES3DES_DES_MASK_RESERVED_POS 6
//#define DES3DES_DES_MASK_RESERVED_NUMB 26
//#define DES3DES_DES_MASK_RESERVED_RES_VAL 0x0
//R/W
#define DES3DES_DES_MASK_START_POS 5
#define DES3DES_DES_MASK_START_NUMB 1
#define DES3DES_DES_MASK_START_RES_VAL 0x0
//W
#define DES3DES_DES_MASK_DIRECT_BUS_EN_POS 4
#define DES3DES_DES_MASK_DIRECT_BUS_EN_NUMB 1
#define DES3DES_DES_MASK_DIRECT_BUS_EN_RES_VAL 0x0
//R/W
#define DES3DES_DES_MASK_DMA_REQ_OUT_EN_POS 3
#define DES3DES_DES_MASK_DMA_REQ_OUT_EN_NUMB 1
#define DES3DES_DES_MASK_DMA_REQ_OUT_EN_RES_VAL 0x0
//R/W
#define DES3DES_DES_MASK_DMA_REQ_IN_EN_POS 2
#define DES3DES_DES_MASK_DMA_REQ_IN_EN_NUMB 1
#define DES3DES_DES_MASK_DMA_REQ_IN_EN_RES_VAL 0x0
//R/W
#define DES3DES_DES_MASK_SOFTRESET_POS 1
#define DES3DES_DES_MASK_SOFTRESET_NUMB 1
#define DES3DES_DES_MASK_SOFTRESET_RES_VAL 0x0
//R/W
#define DES3DES_DES_MASK_AUTOIDLE_POS 0
#define DES3DES_DES_MASK_AUTOIDLE_NUMB 1
#define DES3DES_DES_MASK_AUTOIDLE_RES_VAL 0x0
//R/W
//DES3DES_DES_SYSSTATUS
//-------------------
#define DES3DES_DES_SYSSTATUS REG32(DES3DES_BASE_ADDR_ARM+DES3DES_DES_SYSSTATUS_OFFSET)
//#define DES3DES_DES_SYSSTATUS_RESERVED_POS 1
//#define DES3DES_DES_SYSSTATUS_RESERVED_NUMB 31
//#define DES3DES_DES_SYSSTATUS_RESERVED_RES_VAL 0x0
//R
#define DES3DES_DES_SYSSTATUS_RESETDONE_POS 0
#define DES3DES_DES_SYSSTATUS_RESETDONE_NUMB 1
#define DES3DES_DES_SYSSTATUS_RESETDONE_RES_VAL 0x0
//R
#define TIME_OUT 0x200
/* ERROR CODES, transfert to errorcodes.h asap */
#define DES3DES_BAD_MASK_CONF 0x9201
#define DES3DES_BAD_LOADKEY 0x9202
#define DES3DES_BAD_CTRL_CONF 0x9203
#define DES3DES_BAD_DATA_LOAD 0x9204
#define DES3DES_BAD_START 0x9205
#define DES3DES_BAD_READ 0x9206
#define DES3DES_BAD_COPY 0x9207
#define DES3DES_TEST_WRONG 0x9208
/* End Error Codes */
//#define DES_MASK_DIRECT_BUS_EN 0x10 // bit 4
#define SDRAM_Srcdata_add 0x1000A004
#define SDRAM_Resdata_add 0x1000C004
struct Key_struct {
UWORD32 Key1L;
UWORD32 Key1H;
UWORD32 Key2L;
UWORD32 Key2H;
UWORD32 Key3L;
UWORD32 Key3H;
BIT desmode;
};
struct Des_Struct {
BIT dmaMode;
BIT cbcMode;
BIT clkMode;
BIT desMode;
BIT direction;
BIT directBusMode;
struct Key_struct *KeyBunchPtr; // 1 key needed if desmode = 0, 3 keys if desmode == 1
UWORD32 data_Loc;
UWORD32 data_Dest;
UWORD16 data_Size;
};
/**********************************************************/
/* prototypes here .... */
/**********************************************************/
// Secure part -
void SecureEntry(void);
void entry(void);
//Des3Des part
int DES_SetClock();
int DES_SetCtrlReg(const BIT desMode, const BIT cbcMode, const BIT direction);
int DES_SetMaskReg(const BIT directBusConf, const BIT dmaConf, const BIT clkConf);
int DES_LoadKey(struct Key_struct *aBunch);
int DES_Load8Bytes(UWORD32 *Data);
int DES_Read8Bytes(UWORD32 *Data);
int DES_Start();
int DES_Soft_Reset();
int DES_PIO_Test(BIT desmode,
BIT direction ,
UWORD32 data_Loc,
UWORD32 data_Dest,
UWORD16 data_Size,
struct Key_struct *DesKeys);
void W32copy(UWORD32 dataSrc[], UWORD32 dataDest[], UWORD16 length );
int DES_DoDmaFetchAndFeed(UWORD32 aSource, UWORD32 aDest, UWORD16 aSize);
int DES_DMA_Test(BIT desMode,
BIT direction,
UWORD32 data_Loc,
UWORD32 data_Dest,
UWORD16 data_Size,
struct Key_struct *DesKeys);
int hw_des3des_start(struct Des_Struct* myStruct);
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?