Hi All, I have bunch of code that we want to put the compiled file in the external flash, in the runtime i want to copy the code to RAM and run it from RAM. Consider that the code is using some variable in the RAM. the code is like this:
extern PROTOCOL_SOLVER PROTOCOL_CAN_SOLVER; //for ccn!!! CAN_FILTERING_ARRAY filter_array = { {0x650},1}; Can_Device m_canDev = {0x750, 0x0, 0xff, 500, &filter_array}; ProtocolProfiler profile1 = { PROTOCOL_CAN, &m_canDev, &PROTOCOL_CAN_SOLVER }; //task development ::::: ProtocolProfiler * m_CurrentProfile = &profile1; float Calculate_Ids_B0(void) { return 0.0f; } taskDiag task_sample[2] = {{1, 3, Calculate_Ids_B0, {{0, {0x10,0x90},2}}, {1}, 0, {""}, {0}}, {1, 3, Calculate_Ids_B0, {{0, {0x10,0x90},2}}, {1}, 0, {""}, {0}}}; ////just for references..... typedef struct _can_devices_ { uint16_t ID_part; uint8_t split_part; uint8_t fill_the_Rest ; uint16_t Delay_BetweenFrm; CAN_FILTERING_ARRAY * filter_array; } Can_Device; typedef struct _frame_bank_ { uint8_t frmBank[270]; uint16_t rec_byte_number; } m_FrmBank; typedef struct _PROTOCOL_SOLVER_ { uint8_t (*ConnectProcedure) (Can_Device * canSpec); uint8_t (*SendAndRecieveFrame) (Can_Device * DevSpec, uint8_t * buffer, uint16_t size_of_buffer, uint8_t bank_frm_num); } PROTOCOL_SOLVER; typedef struct _comm_protocol_profile_ { uint8_t protocol_type; Can_Device * can_spect; PROTOCOL_SOLVER * protocol_solver; } ProtocolProfiler;
I am using LPC1788 and EA-1788 board. I hope someone can help me.
Best Regards, MJM
Thank you for your nice clarification.
I think because two parts have no overlap just like a library. I can tie the compiler hands. I hope. About the update, I think that 1000* ~3k = 3MByte. It can be manageable to update. About the compile: if the fixed part change, I should recompile them every time.you are right it is time-consuming. But It will be done automatically. By the way, I really agree with you that this solution is not neat. I should change it.
So ,as Dear Per Westermark, I should divide PROGRAM to CODE and DATA region. But how can I put the CODE in the external NAND flash? Another most important thing, I should put the encrypted ( I usually use AES 256-bit) DATA or CODE in NAND flash. Because these data are valuable in some way.
It is something hard to handle this project. But I should find a neat solution. :D:D:D
Finally, thank you so much for your valuable help and supports.