求助:CH571單獨(dú)使用硬件AES模塊的初始化問(wèn)題。

你好,目前已使用CH571量產(chǎn)了一個(gè)項(xiàng)目(未使用BLE藍(lán)牙功能),已開(kāi)發(fā)使用了除BLE以外的所有資源,性價(jià)比很高。

現(xiàn)希望將硬件AES替代當(dāng)前的軟AES,集成到自定義bootloader中,以期達(dá)成兩個(gè)優(yōu)化目標(biāo):

1、大量節(jié)省代碼空間。

2、大幅縮短執(zhí)行時(shí)間。

關(guān)于你們官方的推薦函數(shù)(函數(shù)庫(kù)libCH57x_ROM.a),調(diào)用RF初始化部分函數(shù)RF_RoleInit(),代碼量約35KB以上(軟件AES僅16KB左右),無(wú)法達(dá)成第一個(gè)優(yōu)化目標(biāo)。

因此,希望技術(shù)支持(不限于)以下幾種途徑:

1、更新函數(shù)庫(kù)libCH57x_ROM.a,在函數(shù)庫(kù)增加一個(gè)AES模塊專用的簡(jiǎn)潔函數(shù);

2、單獨(dú)開(kāi)放AES模塊的硬件應(yīng)用資料;

3、指出現(xiàn)有函數(shù)庫(kù)中能達(dá)成以上目標(biāo)的函數(shù);

同時(shí),希望可以脫離BLE單獨(dú)使用RF模塊,實(shí)現(xiàn)代碼空間和資源需求更為靈活的無(wú)線連接。

期待你們的回復(fù),謝謝~

把role初始化換成 ?BLE_RegInit(); 其他的保持,就可以了。 LIB里面未參與編譯的函數(shù)是不占用代碼空間的


你好,已按照你的方式試驗(yàn),未能正確加解密。

測(cè)試代碼:

BLE_RegInit();
//加密秘鑰16個(gè)字節(jié)也就是128?bit
uint8_t?key[16]={0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF};
//需要加密的數(shù)據(jù)(保證16個(gè)字節(jié),不夠的自己填充)
uint8_t?source_buf[16]={0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};
//?加密后數(shù)據(jù)存放區(qū)
uint8_t?encrypted_buf[16];
//?解密后數(shù)據(jù)存放區(qū)
uint8_t?deccrypted_buf[16];
//?開(kāi)始加密,加密后的數(shù)據(jù)存放到encrypted_buf,
LL_Encrypt(?key,?source_buf,?encrypted_buf?);
//?開(kāi)始解密,將解密后的數(shù)據(jù)存到deccrypted_buf,ch579?11us
LL_Decrypt(?key,?encrypted_buf,?deccrypted_buf?);

加密測(cè)試結(jié)果,全為0:

1652921096144947.png

解密測(cè)試結(jié)果,全為0:

1652921096127663.png


在使用

BLE_RegInit();

函數(shù)初始化,依然連接了一些函數(shù),共約占用了6~8KB空間(部分太長(zhǎng)沒(méi)有截圖):

無(wú)標(biāo)題5.png

同時(shí)還占用了不少的RAM空間,約2~3KB:

1652922201166298.png

1652922201178756.png


請(qǐng)問(wèn)還有替代方法嗎?謝謝~


你好,請(qǐng)問(wèn)有什么進(jìn)展嗎?


BLE_LibInit? 這個(gè)也要


你好,以下是開(kāi)啟(與否)相應(yīng)函數(shù)后的編譯結(jié)果:

1、原始項(xiàng)目使用軟件AES,不調(diào)用函數(shù)庫(kù):

Memory region? ? ? ? ?Used Size? Region Size? %age Used

? ? ? ? ? ?FLASH:? ? ? ?20680 B? ? ? ? 60 KB? ? ?33.66%

? ? ? ? ? ? ?RAM:? ? ? ?10904 B? ? ? ? 17 KB? ? ?62.64%


2、單獨(dú)調(diào)用BLE_LibInit()函數(shù)后:

Memory region? ? ? ? ?Used Size? Region Size? %age Used

? ? ? ? ? ?FLASH:? ? ? ?57380 B? ? ? ? 60 KB? ? ?93.39%

? ? ? ? ? ? ?RAM:? ? ? ?14116 B? ? ? ? 17 KB? ? ?81.09%


3、單獨(dú)調(diào)用BLE_RegInit()函數(shù)后:

Memory region? ? ? ? ?Used Size? Region Size? %age Used

? ? ? ? ? ?FLASH:? ? ? ?26020 B? ? ? ? 60 KB? ? ?42.35%

? ? ? ? ? ? ?RAM:? ? ? ?11896 B? ? ? ? 17 KB? ? ?68.34%


4、同時(shí)調(diào)用BLE_LibInit()和BLE_RegInit()函數(shù)后:

Memory region? ? ? ? ?Used Size? Region Size? %age Used

? ? ? ? ? ?FLASH:? ? ? ?57384 B? ? ? ? 60 KB? ? ?93.40%

? ? ? ? ? ? ?RAM:? ? ? ?14116 B? ? ? ? 17 KB? ? ?81.09%


測(cè)試代碼:

????BLE_LibInit(NULL);
????BLE_RegInit();
//????LLE_DevInit();
????//?加密秘鑰?16個(gè)字節(jié)也就是128?bit
????uint8_t?key[16]?=?{0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF};
????//?需要加密的數(shù)據(jù)(保證16個(gè)字節(jié),不夠的自己填充)
????uint8_t?source_buf[16]?=?{0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};
????//?加密后數(shù)據(jù)存放區(qū)
????uint8_t?encrypted_buf[16];
????//?解密后數(shù)據(jù)存放區(qū)
????uint8_t?deccrypted_buf[16];
????//?開(kāi)始加密,加密后的數(shù)據(jù)存放到encrypted_buf,
????LL_Encrypt(?key,?source_buf,?encrypted_buf?);
????//?開(kāi)始解密,將解密后的數(shù)據(jù)存到deccrypted_buf,ch579?11us
????LL_Decrypt(?key,?encrypted_buf,?deccrypted_buf?);

運(yùn)行結(jié)果:

????????????加密和解密結(jié)果均為0。

不太清楚為啥這么多問(wèn)號(hào)出現(xiàn)在這里,貌似都是空格造成的。


image.png

image.png

void RF_Init(void)
{
??? uint8_t??? state;
??? rfConfig_t rfConfig;

??? uint8_t key[16] = {0X00,0X11,0X22,0X33,0X44,0X55,0X66,0X77,0X88,0X99,0XAA,0XBB,0XCC,0XDD,0XEE,0XFF};
??? //?需要加密的數(shù)據(jù)(保證16個(gè)字節(jié),不夠的自己填充)
??? uint8_t source_buf[16]={0X00,0X01,0X02,0X03,0X04,0X05,0X06,0X07,0X08,0X09,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};
??? uint8_t enc_buf[16];
??? uint8_t en_buf[16];

??? tmos_memset(&rfConfig, 0, sizeof(rfConfig_t));
??? taskID = TMOS_ProcessEventRegister(RF_ProcessEvent);
??? rfConfig.accessAddress = 0x71764129; // 禁止使用0x55555555以及0xAAAAAAAA ( 建議不超過(guò)24次位反轉(zhuǎn),且不超過(guò)連續(xù)的6個(gè)0或1 )
??? rfConfig.CRCInit = 0x555555;
??? rfConfig.Channel = 8;
??? rfConfig.Frequency = 2480000;
??? rfConfig.LLEMode = LLE_MODE_BASIC | LLE_MODE_EX_CHANNEL; // 使能 LLE_MODE_EX_CHANNEL 表示 選擇 rfConfig.Frequency 作為通信頻點(diǎn)
??? rfConfig.rfStatusCB = RF_2G4StatusCallBack;
??? rfConfig.RxMaxlen = 251;
??? state = RF_Config(&rfConfig);


??? LL_Encrypt(key,source_buf,enc_buf);
??? PRINT(" LL_Encrypt:\n");
??? for(state=0;state<16;state++)
??? {
??????? PRINT(" %x? ", enc_buf[state]);
??? }
??? PRINT(" \n ");

??? LL_Decrypt(key,enc_buf,en_buf);
??? PRINT(" LL_Decrypt:\n");
??? for(state=0;state<16;state++)
??? {
??????? PRINT(" %x? ", en_buf[state]);
??? }
??? PRINT(" \n ");

??? PRINT("rf 2.4g init: %x\n", state);
??? { // RX mode
??????? state = RF_Rx(TX_DATA, 10, 0xFF, 0xFF);
??????? PRINT("RX mode.state = %x\n", state);
??? }

??? //?{ // TX mode
??? //??tmos_set_event( taskID , SBP_RF_PERIODIC_EVT );
??? //?}
}

image.png


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频