From 4c762fc44aebe2b566d41f5073c0f0ee72f87bca Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 25 Jul 2018 09:22:26 +0300 Subject: Add functions to R/W buffers from the external Flash --- .../Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c | 114 ++++++++++----------- 1 file changed, 56 insertions(+), 58 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c index eb58c48ac..7006cef15 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c @@ -41,7 +41,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer) StubExtFlashWriteRequest* request = stub_ext_flash_write_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - + WriteBuf[0] = request->wordtowrite1; WriteBuf[1] = request->wordtowrite2; WriteBuf[2] = request->wordtowrite3; @@ -54,7 +54,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer) writeFloat(request->wordtowrite2); writeString(", "); writeFloat(request->wordtowrite3); - writeString(", "); + writeString(", "); writeFloat(request->wordtowrite4); writeString(", "); writeFloat(request->wordtowrite5); @@ -62,7 +62,7 @@ void Stub_ExtFlashWriteRequest(MessageContainer* requestContainer) Ext_Flash_Operation(0X00,TX, Max_words, WriteBuf, NULL ); StubExtFlashWriteResponse response = STUB_EXT_FLASH_WRITE_RESPONSE__INIT; - + status_response(status,&response.status, &response.statusword ,&response.has_statusword); responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashWriteResponse, requestContainer->token, true, &response, &stub_ext_flash_write_response__pack, &stub_ext_flash_write_response__get_packed_size); @@ -110,42 +110,42 @@ void Stub_ExtFlashReadRequest(MessageContainer* requestContainer) StubExtFlashReadResponse response = STUB_EXT_FLASH_READ_RESPONSE__INIT; - + status_response(status,&response.status, &response.statusword ,&response.has_statusword); - response.has_readword_5 = false; - response.has_readword_4 = false; - response.has_readword_3 = false; - response.has_readword_2 = false; - response.has_readword_1 = false; - - switch(No_Words) - { - case 5: - response.readword_5 = ReadBuf[4]; - response.has_readword_5 = true; - case 4: - response.readword_4 = ReadBuf[3]; - response.has_readword_4 = true; - case 3: - response.readword_3 = ReadBuf[2]; - response.has_readword_3 = true; - case 2: - response.readword_2 = ReadBuf[1]; - response.has_readword_2 = true; - case 1: - response.readword_1 = ReadBuf[0]; - response.has_readword_1 = true; - break; - default: - break; - } + response.has_readword_5 = false; + response.has_readword_4 = false; + response.has_readword_3 = false; + response.has_readword_2 = false; + response.has_readword_1 = false; + + switch(No_Words) + { + case 5: + response.readword_5 = ReadBuf[4]; + response.has_readword_5 = true; + case 4: + response.readword_4 = ReadBuf[3]; + response.has_readword_4 = true; + case 3: + response.readword_3 = ReadBuf[2]; + response.has_readword_3 = true; + case 2: + response.readword_2 = ReadBuf[1]; + response.has_readword_2 = true; + case 1: + response.readword_1 = ReadBuf[0]; + response.has_readword_1 = true; + break; + default: + break; + } responseContainer = createContainer(MESSAGE_TYPE__StubExtFlashReadResponse, requestContainer->token, true, &response, &stub_ext_flash_read_response__pack, &stub_ext_flash_read_response__get_packed_size); //clear(); - writeLine("Sending Response: "); + writeLine("Sending Response: "); - Write_status_response(status); + Write_status_response(status); writeString(", "); writeFloat(response.readword_1); writeString(", "); @@ -169,8 +169,9 @@ void Stub_ExtFlashReadRequest(MessageContainer* requestContainer) } //------------------------------------------------------------------------------------- -#define MaxFlashWords 1024 -#define MaxFlashBytes MaxFlashWords*4 +/* +#define MaxFlashWords 1024 //1K +#define MaxFlashBytes MaxFlashWords*4 //4K Byte typedef union { @@ -179,23 +180,20 @@ typedef union }Flash_Union; Flash_Union Flash_RW; -//Flash_Union Flash_R; uint32_t WriteBuf[MaxFlashBytes]; uint32_t ReadBuf[MaxFlashBytes]; -#define MaxBytesForAddress 256;// The addresses to be programmed must not span a 256-byte boundary +#define MaxBytesForAddress 256 //The addresses to be programmed must not span a 256-byte boundary +*/ + //--------------------------------------------------------------------------------------------- void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) { - - uint32_t status = PASSED; - - uint32_t i; uint32_t No_Words,No_Bytes; @@ -208,6 +206,8 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) response.address = request->address; response.has_address = true; + //ExtFlashWriteBuf(0,5, WriteBuf);//----------------------------------------------- + No_Words = request->n_wordtwrite; No_Bytes = request->n_wordtwrite *4; @@ -218,24 +218,23 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) Flash_RW.DWords[i] = request->wordtwrite[i]; } - for(i = 0; i < No_Bytes;i++) { WriteBuf[i] = Flash_RW.Bytes[i]; } - if(No_Bytes >256) + if(No_Bytes >MaxBytesForAddress) { - uint32_t number = No_Bytes / 256; - uint32_t Remainder = No_Bytes % 256; + uint32_t number = No_Bytes / MaxBytesForAddress; + uint32_t Remainder = No_Bytes % MaxBytesForAddress; for(i=0;idata.len, requestContainer->data.data); - uint32_t No_Words,No_Bytes; - - No_Words = request->number_of_words; No_Bytes = request->number_of_words *4; - if(No_Bytes >256) + ///ExtFlashReadBuf(0,5,ReadBuf );//-------------------------------------- + + if(No_Bytes >MaxBytesForAddress) { - uint32_t number = No_Bytes / 256; - uint32_t Remainder = No_Bytes % 256; + uint32_t number = No_Bytes / MaxBytesForAddress; + uint32_t Remainder = No_Bytes % MaxBytesForAddress; for(i=0;i