aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-07-25 09:22:26 +0300
committerAvi Levkovich <avi@twine-s.com>2018-07-25 09:22:26 +0300
commit4c762fc44aebe2b566d41f5073c0f0ee72f87bca (patch)
tree9758d04f700ea0ff7f720ad5faf3de931f21f139 /Software/Embedded_SW/Embedded/Modules
parent6509a45db0a72d65ce84078b8ad2096e224895fc (diff)
downloadTango-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.c112
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