/** ****************************************************************************** * @file fm33a0xxev_pae.h * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file contains all the functions prototypes for the PAE firmware library. ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __FM33A0XXEV_PAE_H #define __FM33A0XXEV_PAE_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "FM33A0XXEV.h" //ECC¼ÆËãģʽ˵Ã÷ #define ECC_STD_DBL 0x00 //Ñſ˱È×ø±ê±¶µã #define ECC_STD_ADD 0x01 //»ìºÏ×ø±êµã¼Ó #define ECC_ALG1_DBLADD 0x02 //·½°¸1¹«Ê½£¬×ÜÊǵã¼Ó±¶µã #define ECC_ALG2_ECDBL 0x03 //·½°¸2¹«Ê½1£¬ECDBL #define ECC_ALG2_ECADDDBL 0x04 //·½°¸2¹«Ê½2£¬ECADDDBL #define ECC_ALG2_YRECOVER 0x05 //·½°¸2¹«Ê½3£¬»Ö¸´ÉäÓ°Y×ø±ê //Macro_START //2020-03-12-14-15-07 //FM33A0XX_Driver_Gen_V1.4 #define PAE_CSR_DATA_TYPE_Pos 8 /* ÊäÈëÊý¾Ý˳Ðò½»»»¿ØÖÆ 00£º²»½»»» 01£ºhalf-word½»»» 10£ºbyte½»»» 11£ºbit½»»» ´Ë¼Ä´æÆ÷ÓÃÓÚ¶ÔÊäÈë32bitÊý¾ÝµÄλÐò½øÐе÷Õû£»±ÈÈçÊäÈëΪ0x1234_5678£¬half-word½»»»ºóΪ0x5678_1234£¬byte½»»»ºóΪ0x7856_3412£¬bit½»»»ºóΪ0x1E6A_2C48 */ #define PAE_CSR_DATA_TYPE_Msk (0x3U << PAE_CSR_DATA_TYPE_Pos) #define PAE_CSR_DATA_TYPE_NONE (0x0U << PAE_CSR_DATA_TYPE_Pos) /* ²»½»»» */ #define PAE_CSR_DATA_TYPE_HALFWORD (0x1U << PAE_CSR_DATA_TYPE_Pos) /* half-word½»»» */ #define PAE_CSR_DATA_TYPE_BYTE (0x2U << PAE_CSR_DATA_TYPE_Pos) /* byte½»»» */ #define PAE_CSR_DATA_TYPE_BIT (0x3U << PAE_CSR_DATA_TYPE_Pos) /* bit½»»» */ #define PAE_CSR_START_Pos 7 /* ÔËËãÆô¶¯Î»£¬Èí¼þд1Æô¶¯¼ÆË㣬¼ÆËã½áÊøºóÓ²¼þ×Ô¶¯ÇåÁã */ #define PAE_CSR_START_Msk (0x1U << PAE_CSR_START_Pos) #define PAE_CSR_RUN_MODE_Pos 4 /* Ä£¿é¹¤×÷ģʽ£º 00£ºÄ£Ê½0£¬µ¥´ÎÄ£ÔËË㣬¿ÉÅäÖÃ4Block/16Block 01£ºÄ£Ê½1£¬µ¥´ÎµãÔËË㣬¹Ì¶¨16Block 10£ºÄ£Ê½2£¬32bitÃÜÔ¿Á¬ÐøRSAÔËË㣬¹Ì¶¨4Block 11£ºÄ£Ê½3£¬32bitÃÜÔ¿Á¬ÐøECCÔËË㣬¹Ì¶¨16Block */ #define PAE_CSR_RUN_MODE_Msk (0x3U << PAE_CSR_RUN_MODE_Pos) #define PAE_CSR_RUN_MODE_MOD (0x0U << PAE_CSR_RUN_MODE_Pos) #define PAE_CSR_RUN_MODE_DOT (0x1U << PAE_CSR_RUN_MODE_Pos) /* ģʽ0£¬µ¥´ÎÄ£ÔËË㣬¿ÉÅäÖÃ4Block/16Block */ #define PAE_CSR_RUN_MODE_RSA (0x2U << PAE_CSR_RUN_MODE_Pos) /* ģʽ1£¬µ¥´ÎµãÔËË㣬¹Ì¶¨16Block */ #define PAE_CSR_RUN_MODE_ECC (0x3U << PAE_CSR_RUN_MODE_Pos) /* ģʽ2£¬32bitÃÜÔ¿Á¬ÐøRSAÔËË㣬¹Ì¶¨4Block */ #define PAE_CSR_SOFT_RST_Pos 3 /* PAEÈí¼þ¸´Î»£¬Èí¼þд1¸´Î»PAEÄÚ²¿Ö÷Òª¼Ä´æÆ÷£¨Ä£³¤¼Ä´æÆ÷PAE_MLRºÍÄ£²Î¼Ä´æÆ÷PAE_MPR²»ÊÜÓ°Ï죩£¬¸´Î»½áÊøºóÓ²¼þ×Ô¶¯ÇåÁã ×¢Ò⣺Èí¼þдSOFT_RSTÖ®ºó£¬Ðè²åÈëÖÁÉÙÒ»ÌõNOPÖ¸Áîºó£¬ÔÙдÈëPAEÆäËû¼Ä´æÆ÷£»ÔÚSOFT_RST²Ù×÷ºóÁ¢¼´Ð´PAE¼Ä´æÆ÷¿ÉÄÜдÈëʧ°Ü¡£ */ #define PAE_CSR_SOFT_RST_Msk (0x1U << PAE_CSR_SOFT_RST_Pos) /* Èí¼þдSOFT_RSTÖ®ºó£¬Ðè²åÈëÖÁÉÙÒ»ÌõNOPÖ¸Áîºó£¬ÔÙдÈëPAEÆäËû¼Ä´æÆ÷£»ÔÚSOFT_RST²Ù×÷ºóÁ¢¼´Ð´PAE¼Ä´æÆ÷¿ÉÄÜдÈëʧ°Ü¡£ */ #define PAE_CSR_PAEIE_Pos 2 /* PAEÖжÏʹÄÜ 1£ºÊ¹ÄÜÖжÏÊä³ö 0£º½ûÖ¹ÖжÏÊä³ö */ #define PAE_CSR_PAEIE_Msk (0x1U << PAE_CSR_PAEIE_Pos) #define PAE_CSR_PAEIE_ENABLE (0x1U << PAE_CSR_PAEIE_Pos) /* ʹÄÜÖжÏÊä³ö */ #define PAE_CSR_PAEIE_DISABLE (0x0U << PAE_CSR_PAEIE_Pos) /* ½ûÖ¹ÖжÏÊä³ö */ #define PAE_CSR_PAEIF_Pos 1 /* PAEÖжϱêÖ¾¼Ä´æÆ÷ */ #define PAE_CSR_PAEIF_Msk (0x1U << PAE_CSR_PAEIF_Pos) #define PAE_CSR_BUSY_Pos 0 /* PAE¹¤×÷±êÖ¾ 1£ºPAEÕýÔÚÔËËãÖÐ 0£ºPAE¿ÕÏÐ */ #define PAE_CSR_BUSY_Msk (0x1U << PAE_CSR_BUSY_Pos) #define PAE_MLR_PAE_MLR_Pos 0 /* ÔÚRAMÅäÖÃΪ4 Blockʱ£¬Ä£³¤×î´óΪ2048bit£º Ä£³¤=£¨MLR[5:0]+1£©*32λ¡£ ÔÚRAMÅäÖÃΪ16 Blockʱ£¬Ä£³¤×î´óΪ512bit£¬MLRÖ»ÓеÍ4bitÓÐЧ£º Ä£³¤=£¨MLR[3:0]+1£©*32λ¡£ */ #define PAE_MLR_PAE_MLR_Msk (0x3fU << PAE_MLR_PAE_MLR_Pos) #define PAE_MPR_PAE_MPR_Pos 0 /* 32bitÄ£²Î¼Ä´æÆ÷£¬Ö»¿Éд£¬²»¿É¶Á */ #define PAE_MPR_PAE_MPR_Msk (0xffffffffU << PAE_MPR_PAE_MPR_Pos) #define PAE_M0CFG_BLKCFG_Pos 15 /* RAM BlockÅäÖÃλ 1£ºËã·¨RAMÅäÖÃΪ16 Block 0£ºËã·¨RAMÅäÖÃλ4 Block */ #define PAE_M0CFG_BLKCFG_Msk (0x1U << PAE_M0CFG_BLKCFG_Pos) #define PAE_M0CFG_BLKCFG_16BLOCK (0x1U << PAE_M0CFG_BLKCFG_Pos) /* Ëã·¨RAMÅäÖÃΪ16 Block */ #define PAE_M0CFG_BLKCFG_4BLOCK (0x0U << PAE_M0CFG_BLKCFG_Pos) /* Ëã·¨RAMÅäÖÃλ4 Block */ #define PAE_M0CFG_INS_M0_Pos 12 /* µ¥´ÎÄ£ÔËËãÖ¸Á 00£ºÃɸçÂíÀûÄ£³Ë 01£ºÃɸçÂíÀûÄ£¼Ó 10£ºRFU 11£ºÃɸçÂíÀûÄ£¼õ */ #define PAE_M0CFG_INS_M0_Msk (0x3U << PAE_M0CFG_INS_M0_Pos) #define PAE_M0CFG_INS_M0_MUL (0x0U << PAE_M0CFG_INS_M0_Pos) #define PAE_M0CFG_INS_M0_ADD (0x1U << PAE_M0CFG_INS_M0_Pos) /* ÃɸçÂíÀûÄ£³Ë */ #define PAE_M0CFG_INS_M0_SUB (0x3U << PAE_M0CFG_INS_M0_Pos) /* ÃɸçÂíÀûÄ£¼Ó */ #define PAE_M0CFG_RES_BLK_Pos 8 /* ÅäÖÃÔËËã½á¹ûËùÔÚBlock µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15 µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 */ #define PAE_M0CFG_RES_BLK_Msk (0xfU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK0 (0x0U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK1 (0x1U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK2 (0x2U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK3 (0x3U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK4 (0x4U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK5 (0x5U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK6 (0x6U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK7 (0x7U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK8 (0x8U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK9 (0x9U << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK10 (0xAU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK11 (0xBU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK12 (0xCU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK13 (0xDU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK14 (0xEU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_RES_BLK_BLOCK15 (0xFU << PAE_M0CFG_RES_BLK_Pos) #define PAE_M0CFG_OP1_BLK_Pos 4 /* ²Ù×÷Êý1µØÖ·£º µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15 µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 */ #define PAE_M0CFG_OP1_BLK_Msk (0xfU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK0 (0x0U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK1 (0x1U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK2 (0x2U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK3 (0x3U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK4 (0x4U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK5 (0x5U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK6 (0x6U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK7 (0x7U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK8 (0x8U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK9 (0x9U << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK10 (0xAU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK11 (0xBU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK12 (0xCU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK13 (0xDU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK14 (0xEU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP1_BLK_BLOCK15 (0xFU << PAE_M0CFG_OP1_BLK_Pos) #define PAE_M0CFG_OP2_BLK_Pos 0 /* ²Ù×÷Êý2µØÖ·£º µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15 µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 */ #define PAE_M0CFG_OP2_BLK_Msk (0xfU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK0 (0x0U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK1 (0x1U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK2 (0x2U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK3 (0x3U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK4 (0x4U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK5 (0x5U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK6 (0x6U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK7 (0x7U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK8 (0x8U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK9 (0x9U << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK10 (0xAU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK11 (0xBU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK12 (0xCU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK13 (0xDU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK14 (0xEU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M0CFG_OP2_BLK_BLOCK15 (0xFU << PAE_M0CFG_OP2_BLK_Pos) #define PAE_M1CFG_INS_M1_Pos 4 /* µ¥´ÎµãÔËËãÖ¸Á 000£ºJacobin×ø±ê±¶µãÔËËã 001£º»ìºÏ×ø±êµã¼ÓÔËËã 010£ºRFU 011£ºÃɸçÂíÀûµã³Ë±¶µãÔËË㣨ECDBL£© 100£ºÃɸçÂíÀûµã³Ë±¶µãµã¼ÓÔËË㣨ECADDDBL£© 101£ºÃɸçÂíÀûµã³ËY×ø±ê»Ö¸´ÔËË㣨ECYRecover£© 110£ºRFU 111£ºRFU */ #define PAE_M1CFG_INS_M1_Msk (0x7U << PAE_M1CFG_INS_M1_Pos) #define PAE_M1CFG_INS_M1_JACOBIN (0x0U << PAE_M1CFG_INS_M1_Pos) /* Jacobin×ø±ê±¶µãÔËËã */ #define PAE_M1CFG_INS_M1_MIXADD (0x1U << PAE_M1CFG_INS_M1_Pos) /* »ìºÏ×ø±êµã¼ÓÔËËã */ #define PAE_M1CFG_INS_M1_ECDBL (0x3U << PAE_M1CFG_INS_M1_Pos) /* ÃɸçÂíÀûµã³Ë±¶µãÔËË㣨ECDBL£© */ #define PAE_M1CFG_INS_M1_ECADDDBL (0x4U << PAE_M1CFG_INS_M1_Pos) /* ÃɸçÂíÀûµã³Ë±¶µãµã¼ÓÔËË㣨ECADDDBL£© */ #define PAE_M1CFG_INS_M1_ECYRECOVER (0x5U << PAE_M1CFG_INS_M1_Pos) /* ÃɸçÂíÀûµã³ËY×ø±ê»Ö¸´ÔËË㣨ECYRecover£© */ #define PAE_M1CFG_AEN3_M1_Pos 1 /* ²ÎÊýAָʾÐźŠ1£ºAµÈÓÚ-3 0£ºA²»µÈÓÚ-3 */ #define PAE_M1CFG_AEN3_M1_Msk (0x1U << PAE_M1CFG_AEN3_M1_Pos) #define PAE_M1CFG_AEN3_M1_NE3 (0x1U << PAE_M1CFG_AEN3_M1_Pos) /* AµÈÓÚ-3 */ #define PAE_M1CFG_AEN3_M1_EQ3 (0x0U << PAE_M1CFG_AEN3_M1_Pos) /* A²»µÈÓÚ-3 */ #define PAE_M1CFG_BIT_VALUE_M1_Pos 0 /* µ±Ç°¼ÆËãÃÜԿλָʾ±êÖ¾ 1£ºµ±Ç°Î»Îª1 0£ºµ±Ç°Î»Îª0 */ #define PAE_M1CFG_BIT_VALUE_M1_Msk (0x1U << PAE_M1CFG_BIT_VALUE_M1_Pos) #define PAE_M1CFG_BIT_VALUE_M1_VALUE1 (0x1U << PAE_M1CFG_BIT_VALUE_M1_Pos) /* µ±Ç°Î»Îª1 */ #define PAE_M1CFG_BIT_VALUE_M1_VALUE0 (0x0U << PAE_M1CFG_BIT_VALUE_M1_Pos) /* µ±Ç°Î»Îª0 */ #define PAE_M2CFG_ALWAYS_MULT_Pos 4 /* ÐéÄ£³Ë¿ØÖÆÎ» 1£ºµ±Ç°ÃÜԿλΪ0ʱͬÑù½øÐÐÄ£³Ë²Ù×÷ 0£ºµ±Ç°ÃÜԿλΪ0ʱ²»½øÐÐÄ£³Ë²Ù×÷ */ #define PAE_M2CFG_ALWAYS_MULT_Msk (0x1U << PAE_M2CFG_ALWAYS_MULT_Pos) #define PAE_M2CFG_ALWAYS_MULT_ALWAYS (0x1U << PAE_M2CFG_ALWAYS_MULT_Pos) /* µ±Ç°ÃÜԿλΪ0ʱͬÑù½øÐÐÄ£³Ë²Ù×÷ */ #define PAE_M2CFG_ALWAYS_MULT_NONE (0x0U << PAE_M2CFG_ALWAYS_MULT_Pos) /* µ±Ç°ÃÜԿλΪ0ʱ²»½øÐÐÄ£³Ë²Ù×÷ */ #define PAE_M2CFG_FBO_M2_Pos 0 /* ÃÜԿλָʾÐźţ¬Ó²¼þ×Ô¶¯ÖÃ룬Èí¼þÇåÁã 1£ºÒÑÕÒµ½Îª1µÄbit 0£ºÎ´ÕÒµ½Îª1µÄbit */ #define PAE_M2CFG_FBO_M2_Msk (0x1U << PAE_M2CFG_FBO_M2_Pos) #define PAE_M2CFG_FBO_M2_FB1 (0x1U << PAE_M2CFG_FBO_M2_Pos) /* ÒÑÕÒµ½Îª1µÄbit */ #define PAE_M2CFG_FBO_M2_NFB1 (0x0U << PAE_M2CFG_FBO_M2_Pos) /* δÕÒµ½Îª1µÄbit */ #define PAE_M3CFG_AEN3_M3_Pos 4 /* ²ÎÊýAָʾÐźŠ1£ºAµÈÓÚ-3 0£ºA²»µÈÓÚ-3 */ #define PAE_M3CFG_AEN3_M3_Msk (0x1U << PAE_M3CFG_AEN3_M3_Pos) #define PAE_M3CFG_AEN3_M3_EQ3 (0x1U << PAE_M3CFG_AEN3_M3_Pos) /* AµÈÓÚ-3 */ #define PAE_M3CFG_AEN3_M3_NE3 (0x0U << PAE_M3CFG_AEN3_M3_Pos) /* A²»µÈÓÚ-3 */ #define PAE_M3CFG_FBO_M3_Pos 0 /* ÃÜԿλָʾÐźţ¬Ó²¼þ×Ô¶¯ÖÃ룬Èí¼þÇåÁã 1£ºÒÑÕÒµ½Îª1µÄbit 0£ºÎ´ÕÒµ½Îª1µÄbit */ #define PAE_M3CFG_FBO_M3_Msk (0x1U << PAE_M3CFG_FBO_M3_Pos) #define PAE_M3CFG_FBO_M3_FB1 (0x1U << PAE_M3CFG_FBO_M3_Pos) /* ÒÑÕÒµ½Îª1µÄbit */ #define PAE_M3CFG_FBO_M3_NFB1 (0x0U << PAE_M3CFG_FBO_M3_Pos) /* δÕÒµ½Îª1µÄbit */ #define PAE_WORD_PAE_WORD_Pos 0 /* 32bitÊý¾Ý¼Ä´æÆ÷£¬Ö»¿Éд£¬²»¿É¶Á£»½öÔÚÁ¬ÐøRSAÔËËãºÍÁ¬ÐøECCÔËËãģʽÏÂÓÐЧ¡£ */ #define PAE_WORD_PAE_WORD_Msk (0xffffffffU << PAE_WORD_PAE_WORD_Pos) //Macro_End /* Exported functions --------------------------------------------------------*/ extern void PAE_Deinit(void); /* ÊäÈëÊý¾Ý˳Ðò½»»»¿ØÖÆ 00£º²»½»»» 01£ºhalf-word½»»» 10£ºbyte½»»» 11£ºbit½»»» ´Ë¼Ä´æÆ÷ÓÃÓÚ¶ÔÊäÈë32bitÊý¾ÝµÄλÐò½øÐе÷Õû£»±ÈÈçÊäÈëΪ0x1234_5678£¬half-word½»»»ºóΪ0x5678_1234£¬byte½»»»ºóΪ0x7856_3412£¬bit½»»»ºóΪ0x1E6A_2C48 Ïà¹Øº¯Êý */ extern void PAE_CSR_DATA_TYPE_Set(uint32_t SetValue); extern uint32_t PAE_CSR_DATA_TYPE_Get(void); /* ÔËËãÆô¶¯Î»£¬Èí¼þд1Æô¶¯¼ÆË㣬¼ÆËã½áÊøºóÓ²¼þ×Ô¶¯ÇåÁã Ïà¹Øº¯Êý */ extern void PAE_CSR_START_Setable(FunState NewState); /* Ä£¿é¹¤×÷ģʽ£º 00£ºÄ£Ê½0£¬µ¥´ÎÄ£ÔËË㣬¿ÉÅäÖÃ4Block/16Block 01£ºÄ£Ê½1£¬µ¥´ÎµãÔËË㣬¹Ì¶¨16Block 10£ºÄ£Ê½2£¬32bitÃÜÔ¿Á¬ÐøRSAÔËË㣬¹Ì¶¨4Block 11£ºÄ£Ê½3£¬32bitÃÜÔ¿Á¬ÐøECCÔËË㣬¹Ì¶¨16Block Ïà¹Øº¯Êý */ extern void PAE_CSR_RUN_MODE_Set(uint32_t SetValue); extern uint32_t PAE_CSR_RUN_MODE_Get(void); /* PAEÈí¼þ¸´Î»£¬Èí¼þд1¸´Î»PAEÄÚ²¿Ö÷Òª¼Ä´æÆ÷£¨Ä£³¤¼Ä´æÆ÷PAE_MLRºÍÄ£²Î¼Ä´æÆ÷PAE_MPR²»ÊÜÓ°Ï죩£¬¸´Î»½áÊøºóÓ²¼þ×Ô¶¯ÇåÁã ×¢Ò⣺Èí¼þдSOFT_RSTÖ®ºó£¬Ðè²åÈëÖÁÉÙÒ»ÌõNOPÖ¸Áîºó£¬ÔÙдÈëPAEÆäËû¼Ä´æÆ÷£»ÔÚSOFT_RST²Ù×÷ºóÁ¢¼´Ð´PAE¼Ä´æÆ÷¿ÉÄÜдÈëʧ°Ü¡£ Ïà¹Øº¯Êý */ extern void PAE_CSR_SOFT_RST_Setable(FunState NewState); /* PAEÖжÏʹÄÜ 1£ºÊ¹ÄÜÖжÏÊä³ö 0£º½ûÖ¹ÖжÏÊä³ö Ïà¹Øº¯Êý */ extern void PAE_CSR_PAEIE_Setable(FunState NewState); extern FunState PAE_CSR_PAEIE_Getable(void); /* PAEÖжϱêÖ¾¼Ä´æÆ÷ Ïà¹Øº¯Êý */ extern void PAE_CSR_PAEIF_Clr(void); extern FlagStatus PAE_CSR_PAEIF_Chk(void); /* PAE¹¤×÷±êÖ¾ 1£ºPAEÕýÔÚÔËËãÖÐ 0£ºPAE¿ÕÏÐ Ïà¹Øº¯Êý */ extern FlagStatus PAE_CSR_BUSY_Chk(void); /* ÔÚRAMÅäÖÃΪ4 Blockʱ£¬Ä£³¤×î´óΪ2048bit£º Ä£³¤=£¨MLR[5:0]+1£©*32λ¡£ ÔÚRAMÅäÖÃΪ16 Blockʱ£¬Ä£³¤×î´óΪ512bit£¬MLRÖ»ÓеÍ4bitÓÐЧ£º Ä£³¤=£¨MLR[3:0]+1£©*32λ¡£ Ïà¹Øº¯Êý */ extern void PAE_MLR_Write(uint32_t SetValue); extern uint32_t PAE_MLR_Read(void); /* 32bitÄ£²Î¼Ä´æÆ÷£¬Ö»¿Éд£¬²»¿É¶Á Ïà¹Øº¯Êý */ extern void PAE_MPR_Write(uint32_t SetValue); /* RAM BlockÅäÖÃλ 1£ºËã·¨RAMÅäÖÃΪ16 Block 0£ºËã·¨RAMÅäÖÃλ4 Block Ïà¹Øº¯Êý */ extern void PAE_M0CFG_BLKCFG_Set(uint32_t SetValue); extern uint32_t PAE_M0CFG_BLKCFG_Get(void); /* µ¥´ÎÄ£ÔËËãÖ¸Á 00£ºÃɸçÂíÀûÄ£³Ë 01£ºÃɸçÂíÀûÄ£¼Ó 10£ºRFU 11£ºÃɸçÂíÀûÄ£¼õ Ïà¹Øº¯Êý */ extern void PAE_M0CFG_INS_M0_Set(uint32_t SetValue); extern uint32_t PAE_M0CFG_INS_M0_Get(void); /* ÅäÖÃÔËËã½á¹ûËùÔÚBlock µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15 µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 Ïà¹Øº¯Êý */ extern void PAE_M0CFG_RES_BLK_Set(uint32_t SetValue); extern uint32_t PAE_M0CFG_RES_BLK_Get(void); /* ²Ù×÷Êý1µØÖ·£º µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15 µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 Ïà¹Øº¯Êý */ extern void PAE_M0CFG_OP1_BLK_Set(uint32_t SetValue); extern uint32_t PAE_M0CFG_OP1_BLK_Get(void); /* ²Ù×÷Êý2µØÖ·£º µ±BLK_CFG==1£¬4bitÓÐЧ£¬±íʾBlock0~Block15 µ±BLK_CFG==0£¬µÍ2bitÓÐЧ£¬±íʾBlock0~Block3 Ïà¹Øº¯Êý */ extern void PAE_M0CFG_OP2_BLK_Set(uint32_t SetValue); extern uint32_t PAE_M0CFG_OP2_BLK_Get(void); /* µ¥´ÎµãÔËËãÖ¸Á 000£ºJacobin×ø±ê±¶µãÔËËã 001£º»ìºÏ×ø±êµã¼ÓÔËËã 010£ºRFU 011£ºÃɸçÂíÀûµã³Ë±¶µãÔËË㣨ECDBL£© 100£ºÃɸçÂíÀûµã³Ë±¶µãµã¼ÓÔËË㣨ECADDDBL£© 101£ºÃɸçÂíÀûµã³ËY×ø±ê»Ö¸´ÔËË㣨ECYRecover£© 110£ºRFU 111£ºRFU Ïà¹Øº¯Êý */ extern void PAE_M1CFG_INS_M1_Set(uint32_t SetValue); extern uint32_t PAE_M1CFG_INS_M1_Get(void); /* ²ÎÊýAָʾÐźŠ1£ºAµÈÓÚ-3 0£ºA²»µÈÓÚ-3 Ïà¹Øº¯Êý */ extern void PAE_M1CFG_AEN3_M1_Set(uint32_t SetValue); extern uint32_t PAE_M1CFG_AEN3_M1_Get(void); /* µ±Ç°¼ÆËãÃÜԿλָʾ±êÖ¾ 1£ºµ±Ç°Î»Îª1 0£ºµ±Ç°Î»Îª0 Ïà¹Øº¯Êý */ extern void PAE_M1CFG_BIT_VALUE_M1_Set(uint32_t SetValue); extern uint32_t PAE_M1CFG_BIT_VALUE_M1_Get(uint32_t SetValue); /* ÐéÄ£³Ë¿ØÖÆÎ» 1£ºµ±Ç°ÃÜԿλΪ0ʱͬÑù½øÐÐÄ£³Ë²Ù×÷ 0£ºµ±Ç°ÃÜԿλΪ0ʱ²»½øÐÐÄ£³Ë²Ù×÷ Ïà¹Øº¯Êý */ extern void PAE_M2CFG_ALWAYS_MULT_Set(uint32_t SetValue); extern uint32_t PAE_M2CFG_ALWAYS_MULT_Get(void); /* ÃÜԿλָʾÐźţ¬Ó²¼þ×Ô¶¯ÖÃ룬Èí¼þÇåÁã 1£ºÒÑÕÒµ½Îª1µÄbit 0£ºÎ´ÕÒµ½Îª1µÄbit Ïà¹Øº¯Êý */ extern void PAE_M2CFG_FBO_M2_Set(uint32_t SetValue); extern uint32_t PAE_M2CFG_FBO_M2_Get(void); /* ²ÎÊýAָʾÐźŠ1£ºAµÈÓÚ-3 0£ºA²»µÈÓÚ-3 Ïà¹Øº¯Êý */ extern void PAE_M3CFG_AEN3_M3_Set(uint32_t SetValue); extern uint32_t PAE_M3CFG_AEN3_M3_Get(void); /* ÃÜԿλָʾÐźţ¬Ó²¼þ×Ô¶¯ÖÃ룬Èí¼þÇåÁã 1£ºÒÑÕÒµ½Îª1µÄbit 0£ºÎ´ÕÒµ½Îª1µÄbit Ïà¹Øº¯Êý */ extern void PAE_M3CFG_FBO_M3_Set(uint32_t SetValue); extern uint32_t PAE_M3CFG_FBO_M3_Get(void); /* 32bitÊý¾Ý¼Ä´æÆ÷£¬Ö»¿Éд£¬²»¿É¶Á£»½öÔÚÁ¬ÐøRSAÔËËãºÍÁ¬ÐøECCÔËËãģʽÏÂÓÐЧ¡£ Ïà¹Øº¯Êý */ extern void PAE_WORD_Write(uint32_t SetValue); //Announce_End #ifdef __cplusplus } #endif #endif /* __FM33A0XXEV_PAE_H */