diff options
| author | Avi Levkovich <avi@twine-s.com> | 2018-07-25 09:22:26 +0300 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2018-07-25 09:22:26 +0300 |
| commit | 4c762fc44aebe2b566d41f5073c0f0ee72f87bca (patch) | |
| tree | 9758d04f700ea0ff7f720ad5faf3de931f21f139 /Software/Embedded_SW/Embedded/Modules | |
| parent | 6509a45db0a72d65ce84078b8ad2096e224895fc (diff) | |
| download | Tango-4c762fc44aebe2b566d41f5073c0f0ee72f87bca.tar.gz Tango-4c762fc44aebe2b566d41f5073c0f0ee72f87bca.zip | |
Add functions to R/W buffers from the external Flash
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_ExtFlash.c | 112 |
1 files changed, 55 insertions, 57 deletions
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; + 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; - } + 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;i<number;i++) { - Ext_Flash_Operation(0X00 + (0X100*i) , TX, 256 , WriteBuf+ (256*i), NULL ); + Ext_Flash_Operation(0X00 + (0X100*i) , TX, MaxBytesForAddress , WriteBuf+ (MaxBytesForAddress*i), NULL ); } if(Remainder) { - Ext_Flash_Operation(0X00 + (0X100*i) , TX, Remainder , WriteBuf+ (256*i), NULL ); + Ext_Flash_Operation(0X00 + (0X100*i) , TX, Remainder , WriteBuf+ (MaxBytesForAddress*i), NULL ); } } else @@ -258,38 +257,37 @@ void Stub_ExtFlashWriteWordsRequest(MessageContainer* requestContainer) SendChars((char*)container_buffer, container_size); stub_ext_flash_write_words_request__free_unpacked(request,NULL); - } void Stub_ExtFlashReadWordsRequest(MessageContainer* requestContainer) { uint32_t status = PASSED; + uint32_t i; + uint32_t No_Words,No_Bytes; + MessageContainer responseContainer; memset(&Flash_RW,0,sizeof(Flash_RW)); - uint32_t i; - StubExtFlashReadWordsRequest* request = stub_ext_flash_read_words_request__unpack(NULL, requestContainer->data.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<number;i++) { - Ext_Flash_Operation(0X00 + (0X100*i), RX, 256, NULL, ReadBuf + (256*i) ); + Ext_Flash_Operation(0X00 + (0X100*i), RX, MaxBytesForAddress, NULL, ReadBuf + (MaxBytesForAddress*i) ); } if(Remainder) { - Ext_Flash_Operation(0X00 + (0X100*i), RX, Remainder, NULL, ReadBuf + (256*i) ); + Ext_Flash_Operation(0X00 + (0X100*i), RX, Remainder, NULL, ReadBuf + (MaxBytesForAddress*i) ); } } else |
