Исправлена 16-битная адресация на 8-битную
This commit is contained in:
parent
1675ae9fce
commit
a60fcc5f52
@ -6,7 +6,7 @@
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_2@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1@#$1" value="16-Bit Hex - C Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_2@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU2@#$1" value="16-Bit Hex - TI Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_2@#$Texas Instruments XDS100v2 USB Debug Probe_0/Cortex_M4_0@#$0" value="16-Bit Hex - C Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_3@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1@#$1" value="16-Bit Hex - C Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_3@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1@#$1" value="8-Bit Hex - C Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_3@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU2@#$1" value="16-Bit Hex - TI Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_3@#$Texas Instruments XDS100v2 USB Debug Probe_0/Cortex_M4_0@#$0" value="16-Bit Hex - C Style"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_4@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1@#$1" value="16-Bit Hex - TI Style"/>
|
||||
@ -31,7 +31,7 @@
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser.PIN_CLONE_VIEW_5@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1" value="Data@@0x39000"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1" value="Data@@0x2008000"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU2" value="Data@@0x82000"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS100v2 USB Debug Probe_0/Cortex_M4_0" value="@@0x20080000"/>
|
||||
<mapEntry key="org.eclipse.cdt.debug.ui.memory.memorybrowser.MemoryBrowser@#$Texas Instruments XDS100v2 USB Debug Probe_0/Cortex_M4_0" value="@@0x20082000"/>
|
||||
</mapAttribute>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_DEBUGGER_PROPERTIES.TMS320F28388D.ccxml.Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1" value="<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <PropertyValues> <property id="ConnectOnStartup"> <curValue>1</curValue> </property> <property id="EnableInstalledBreakpoint"> <curValue>1</curValue> </property> <property id="IgnoreSoftLaunchFailures"> <curValue>0</curValue> </property> </PropertyValues> "/>
|
||||
<stringAttribute key="com.ti.ccstudio.debug.debugModel.ATTR_GROUP_LIST" value="<?xml version="1.0" encoding="UTF-8"?> <groupInfoData> <group autoload_group="true" id="Group 1" sync_group="false"> <thread id="Texas Instruments XDS100v2 USB Debug Probe_0/C28xx_CPU1"/> </group> </groupInfoData>"/>
|
||||
|
||||
@ -150,75 +150,82 @@ uint16_t Bl25cm1a_verify_8_bytes(uint32_t Addr, uint16_t * verify_data, uint16_
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Bl25cm1a_read_data(uint32_t Addr, uint16_t quant16, uint16_t * read_data)
|
||||
void Bl25cm1a_read_data(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint32_t Addressfull8bit;
|
||||
uint16_t addr_read_data[8];
|
||||
|
||||
if(quant16 > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant16-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
Addressfull8bit = Addr+2*i;
|
||||
Addressfull8bit = Addr+i;
|
||||
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, 8);
|
||||
copy8_to_16(addr_read_data, read_data, 4);
|
||||
read_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant16)
|
||||
if(i < quant8)
|
||||
{
|
||||
Addressfull8bit = Addr+2*i;
|
||||
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, 2*(quant16 - i));
|
||||
copy8_to_16(addr_read_data, read_data, (quant16 - i));
|
||||
Addressfull8bit = Addr+i;
|
||||
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, (quant8 - i));
|
||||
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
|
||||
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
uint16_t Bl25cm1a_verify_data(uint32_t Addr, uint16_t quant16, uint16_t * verify_data)
|
||||
uint16_t Bl25cm1a_verify_data(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_vfy_data[8];
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant16 > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant16-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
copy16_to_8(verify_data, addr_vfy_data, 4);
|
||||
if(Bl25cm1a_verify_8_bytes(Addr+2*i, addr_vfy_data, 8)) return 1;
|
||||
if(Bl25cm1a_verify_8_bytes(Addr+i, addr_vfy_data, 8)) return 1;
|
||||
verify_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant16)
|
||||
if(i < quant8)
|
||||
{
|
||||
copy16_to_8(verify_data, addr_vfy_data, (quant16 - i));
|
||||
if(Bl25cm1a_verify_8_bytes(Addr+2*i, addr_vfy_data, 2*(quant16 - i))) return 1;
|
||||
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||
else quant16 = (quant8 - i)/2;
|
||||
copy16_to_8(verify_data, addr_vfy_data, quant16);
|
||||
if(Bl25cm1a_verify_8_bytes(Addr+i, addr_vfy_data, (quant8 - i))) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Bl25cm1a_write_1_page(uint32_t Addr, uint16_t quant, uint16_t * write_data)
|
||||
void Bl25cm1a_write_1_page(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_write_data[8];
|
||||
uint32_t Addressfull8bit;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
copy16_to_8(write_data, addr_write_data, 4);
|
||||
Addressfull8bit = Addr+2*i;
|
||||
Addressfull8bit = Addr+i;
|
||||
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, 8);
|
||||
write_data += 4;
|
||||
}
|
||||
}
|
||||
if(i < quant)
|
||||
if(i < quant8)
|
||||
{
|
||||
copy16_to_8(write_data, addr_write_data, (quant - i));
|
||||
Addressfull8bit = Addr+2*i;
|
||||
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, 2*(quant - i));
|
||||
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||
else quant16 = (quant8 - i)/2;
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
Addressfull8bit = Addr+i;
|
||||
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, (quant8 - i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -194,75 +194,81 @@ void GD25Q16ETIGR_write_8_bytes(uint32_t Addr, uint16_t * write_data, uint16_t n
|
||||
}
|
||||
}
|
||||
|
||||
void GD25Q16ETIGR_read_data(uint32_t Addr, uint16_t quant16, uint16_t * read_data)
|
||||
void GD25Q16ETIGR_read_data(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint32_t Addressfull8bit;
|
||||
uint16_t addr_read_data[8];
|
||||
|
||||
if(quant16 > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant16-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
Addressfull8bit = Addr+2*i;
|
||||
GD25Q16ETIGR_read_8_bytes(Addr+i, addr_read_data, 8);
|
||||
Addressfull8bit = Addr+i;
|
||||
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, 8);
|
||||
copy8_to_16(addr_read_data, read_data, 4);
|
||||
read_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant16)
|
||||
if(i < quant8)
|
||||
{
|
||||
Addressfull8bit = Addr+2*i;
|
||||
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, 2*(quant16 - i));
|
||||
copy8_to_16(addr_read_data, read_data, (quant16 - i));
|
||||
Addressfull8bit = Addr+i;
|
||||
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, (quant8 - i));
|
||||
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
|
||||
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint16_t GD25Q16ETIGR_verify_data(uint32_t Addr, uint16_t quant16, uint16_t * verify_data)
|
||||
uint16_t GD25Q16ETIGR_verify_data(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
|
||||
{
|
||||
|
||||
uint32_t i=0;
|
||||
uint16_t addr_vfy_data[8];
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant16 > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant16-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
copy16_to_8(verify_data, addr_vfy_data, 4);
|
||||
if(GD25Q16ETIGR_verify_8_bytes(Addr+2*i, addr_vfy_data, 8)) return 1;
|
||||
if(GD25Q16ETIGR_verify_8_bytes(Addr+i, addr_vfy_data, 8)) return 1;
|
||||
verify_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant16)
|
||||
if(i < quant8)
|
||||
{
|
||||
copy16_to_8(verify_data, addr_vfy_data, (quant16 - i));
|
||||
if(GD25Q16ETIGR_verify_8_bytes(Addr+2*i, addr_vfy_data, 2*(quant16 - i))) return 1;
|
||||
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||
else quant16 = (quant8 - i)/2;
|
||||
copy16_to_8(verify_data, addr_vfy_data, quant16);
|
||||
if(GD25Q16ETIGR_verify_8_bytes(Addr+i, addr_vfy_data, (quant8 - i))) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void GD25Q16ETIGR_write_1_page(uint32_t Addr, uint16_t quant, uint16_t * write_data) // çàïèñü âíóòðè îäíîé ñòðàíèöû
|
||||
void GD25Q16ETIGR_write_1_page(uint32_t Addr, uint16_t quant8, uint16_t * write_data) // çàïèñü âíóòðè îäíîé ñòðàíèöû
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint16_t addr_write_data[8];
|
||||
uint32_t Addressfull8bit;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
copy16_to_8(write_data, addr_write_data, 4);
|
||||
Addressfull8bit = Addr+2*i;
|
||||
Addressfull8bit = Addr+i;
|
||||
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, 8);
|
||||
write_data += 4;
|
||||
}
|
||||
}
|
||||
if(i < quant)
|
||||
if(i < quant8)
|
||||
{
|
||||
copy16_to_8(write_data, addr_write_data, (quant - i));
|
||||
Addressfull8bit = Addr+2*i;
|
||||
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, 2*(quant - i));
|
||||
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||
else quant16 = (quant8 - i)/2;
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
Addressfull8bit = Addr+i;
|
||||
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, (quant8 - i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -36,78 +36,84 @@ uint16_t ZD24C02A_verify_16(uint16_t Addr, uint16_t * Array, uint16_t quant)
|
||||
return VerifyErr;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant, uint16_t * write_data)
|
||||
uint16_t ZD24C02A_write(uint32_t Addr, uint16_t quant8, uint16_t * write_data)
|
||||
{
|
||||
|
||||
uint32_t i=0;
|
||||
uint16_t addr_write_data[8];
|
||||
uint32_t Addressfull8bit;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
copy16_to_8(write_data, addr_write_data, 4);
|
||||
Addressfull8bit = Addr+2*i;
|
||||
Addressfull8bit = Addr+i;
|
||||
if( ZD24C02A_write_8(Addressfull8bit, addr_write_data, 8)) return 1;
|
||||
write_data += 4;
|
||||
}
|
||||
}
|
||||
if(i < quant)
|
||||
if(i < quant8)
|
||||
{
|
||||
copy16_to_8(write_data, addr_write_data, (quant - i));
|
||||
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||
else quant16 = (quant8 - i)/2;
|
||||
copy16_to_8(write_data, addr_write_data, quant16);
|
||||
Addressfull8bit = Addr+2*i;
|
||||
if( ZD24C02A_write_8(Addressfull8bit, addr_write_data, 2*(quant - i))) return 1;
|
||||
if( ZD24C02A_write_8(Addressfull8bit, addr_write_data, (quant8 - i))) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_read(uint32_t Addr, uint16_t quant16, uint16_t * read_data)
|
||||
uint16_t ZD24C02A_read(uint32_t Addr, uint16_t quant8, uint16_t * read_data)
|
||||
{
|
||||
uint32_t i=0;
|
||||
uint32_t Addressfull8bit;
|
||||
uint16_t addr_read_data[8];
|
||||
|
||||
if(quant16 > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant16-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
Addressfull8bit = Addr+2*i;
|
||||
if( ZD24C02A_read_8(Addr+i, addr_read_data, 8)) return 1;
|
||||
Addressfull8bit = Addr+i;
|
||||
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, 8)) return 1;
|
||||
copy8_to_16(addr_read_data, read_data, 4);
|
||||
read_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant16)
|
||||
if(i < quant8)
|
||||
{
|
||||
Addressfull8bit = Addr+2*i;
|
||||
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, 2*(quant16 - i))) return 1;
|
||||
copy8_to_16(addr_read_data, read_data, (quant16 - i));
|
||||
Addressfull8bit = Addr+i;
|
||||
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, (quant8 - i))) return 1;
|
||||
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
|
||||
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint16_t ZD24C02A_verify(uint32_t Addr, uint16_t quant16, uint16_t * verify_data)
|
||||
uint16_t ZD24C02A_verify(uint32_t Addr, uint16_t quant8, uint16_t * verify_data)
|
||||
{
|
||||
|
||||
uint32_t i=0;
|
||||
uint16_t addr_vfy_data[8];
|
||||
uint16_t Err_read = 0;
|
||||
uint16_t quant16;
|
||||
|
||||
if(quant16 > 4)
|
||||
if(quant8 > 8)
|
||||
{
|
||||
for(i = 0; i < (quant16-4); i += 4)
|
||||
for(i = 0; i < (quant8-8); i += 8)
|
||||
{
|
||||
copy16_to_8(verify_data, addr_vfy_data, 4);
|
||||
Err_read = ZD24C02A_verify_16(Addr+2*i, addr_vfy_data, 8);
|
||||
Err_read = ZD24C02A_verify_16(Addr+i, addr_vfy_data, 8);
|
||||
if(Err_read) return Err_read;
|
||||
verify_data+=4;
|
||||
}
|
||||
}
|
||||
if(i < quant16)
|
||||
if(i < quant8)
|
||||
{
|
||||
copy16_to_8(verify_data, addr_vfy_data, (quant16 - i));
|
||||
Err_read = ZD24C02A_verify_16(Addr+2*i, addr_vfy_data, 2*(quant16 - i));
|
||||
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||
else quant16 = (quant8 - i)/2;
|
||||
copy16_to_8(verify_data, addr_vfy_data, quant16);
|
||||
Err_read = ZD24C02A_verify_16(Addr+i, addr_vfy_data, (quant8 - i));
|
||||
if(Err_read) return Err_read;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@ -19,6 +19,7 @@
|
||||
#include "BL25CM1A.h"
|
||||
#include "GD25Q16ETIGR.h"
|
||||
#include "emif_init.h"
|
||||
#include "spi_init.h"
|
||||
#endif
|
||||
//#pragma DATA_SECTION(readData, "MSGRAM_CPU_TO_CM")
|
||||
//uint32_t readData[10];
|
||||
@ -116,6 +117,9 @@ void getMessage_from_Cm_Flash(void)
|
||||
uint32_t block1, block2;
|
||||
uint16_t MemOperationError = 0;
|
||||
|
||||
if((InData & 1)||(InAddr & 1)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, INT_FLASH, 0, 0); return;}
|
||||
InData /= 2;
|
||||
InAddr /= 2;
|
||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, INT_FLASH, 0, 0); return;}
|
||||
if((InAddr+InData) > 0x40000) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, INT_FLASH, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, INT_FLASH, 0, 0);
|
||||
@ -179,7 +183,7 @@ void getMessage_from_Cm_EMIF(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, EMIF, 0, 0); return;}
|
||||
if((InAddr+InData) > 0x100000) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, EMIF, 0, 0); return;}
|
||||
if((InAddr+InData) > 0x100000*2) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, EMIF, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, EMIF, 0, 0);
|
||||
|
||||
switch(InCommand >> 16)
|
||||
@ -205,23 +209,23 @@ void getMessage_from_Cm_EMIF(void)
|
||||
void getMessage_from_Cm_BL25CM1A(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
if((InAddr+InData) > BL25CM1A0_SIZE) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
if((InData > 2048*2)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
if((InAddr+InData) > (BL25CM1A0_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, BL25CM1A_1M_bit_SPI, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||
|
||||
spi_TurnOffCS1_GD25Q16E();
|
||||
switch(InCommand >> 16)
|
||||
{
|
||||
case READ:
|
||||
Bl25cm1a_read_data(2*InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
Bl25cm1a_read_data(InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||
break;
|
||||
case WRITE:
|
||||
Bl25cm1a_write_data(2*InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
Bl25cm1a_write_data(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||
break;
|
||||
case VERIFY:
|
||||
MemOperationError = Bl25cm1a_verify_data(2*InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
MemOperationError = Bl25cm1a_verify_data(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(MemOperationError) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||
break;
|
||||
@ -237,8 +241,8 @@ void getMessage_from_Cm_BL25CM1A(void)
|
||||
void getMessage_from_Cm_GD25Q16E(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, GD25Q16E_16M_bit_SPI, 0, 0); return;}
|
||||
if((InAddr+InData) > GD25Q16E_SIZE) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, GD25Q16E_16M_bit_SPI, 0, 0); return;}
|
||||
if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, GD25Q16E_16M_bit_SPI, 0, 0); return;}
|
||||
if((InAddr+InData) > (GD25Q16E_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, GD25Q16E_16M_bit_SPI, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||
|
||||
Gpio15outSPI_CS_BL25CM1A(1);
|
||||
@ -247,15 +251,15 @@ void getMessage_from_Cm_GD25Q16E(void)
|
||||
switch(InCommand >> 16)
|
||||
{
|
||||
case READ:
|
||||
GD25Q16ETIGR_read_data(InAddr*2, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
GD25Q16ETIGR_read_data(InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||
break;
|
||||
case WRITE:
|
||||
GD25Q16ETIGR_write_data(InAddr*2, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
GD25Q16ETIGR_write_data(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||
break;
|
||||
case VERIFY:
|
||||
MemOperationError = GD25Q16ETIGR_verify_data(InAddr*2, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
MemOperationError = GD25Q16ETIGR_verify_data(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(MemOperationError) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||
break;
|
||||
@ -274,24 +278,24 @@ void getMessage_from_Cm_ZD24C02A(void)
|
||||
{
|
||||
uint16_t MemOperationError = 0;
|
||||
uint16_t I2CErr = 0;
|
||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, ZD24C02A_2K_I2C, 0, 0); return;}
|
||||
if((InAddr+InData) > ZD24C02A_SIZE) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, ZD24C02A_2K_I2C, 0, 0); return;}
|
||||
if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, ZD24C02A_2K_I2C, 0, 0); return;}
|
||||
if((InAddr+InData) > (ZD24C02A_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, ZD24C02A_2K_I2C, 0, 0); return;}
|
||||
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C, 0, 0);
|
||||
|
||||
switch(InCommand >> 16)
|
||||
{
|
||||
case READ:
|
||||
I2CErr = ZD24C02A_read(InAddr*2, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
I2CErr = ZD24C02A_read(InAddr, InData, (uint16_t *)CPUXTOCMMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||
break;
|
||||
case WRITE:
|
||||
I2CErr = ZD24C02A_write(InAddr*2, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
I2CErr = ZD24C02A_write(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(I2CErr) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||
break;
|
||||
case VERIFY:
|
||||
MemOperationError = ZD24C02A_verify(InAddr*2, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
MemOperationError = ZD24C02A_verify(InAddr, InData, (uint16_t *)CMTOCPUXMSGRAM0_BASE);
|
||||
if(MemOperationError == 2) IPC_sendCommand(IPC_CPU1_L_CM_R, ERROR_VERIFY, ZD24C02A_2K_I2C, 0, 0);
|
||||
else if(MemOperationError == 1) IPC_sendCommand(IPC_CPU1_L_CM_R, FLASH_ERR, ZD24C02A_2K_I2C, 0, 0);
|
||||
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||
@ -356,8 +360,9 @@ void ipc_init(void)
|
||||
//
|
||||
IPC_initMessageQueue(IPC_CPU1_L_CM_R, &messageQueue, IPC_INT1, IPC_INT1);
|
||||
IPC_initMessageQueue(IPC_CPU1_L_CM_R, &messageQueue, IPC_INT0, IPC_INT0);
|
||||
|
||||
#ifdef CPU1
|
||||
GD25Q16ETIGR_clean_SectorWasErraised();
|
||||
#endif
|
||||
clear_BlockWasErased();
|
||||
}
|
||||
|
||||
|
||||
@ -20,8 +20,7 @@ void transmitBData(uint16_t a);
|
||||
|
||||
void Gpio15outSPI_CS_BL25CM1A(uint16_t out_bit);
|
||||
void spi_TurnOnCS1_GD25Q16E(void);
|
||||
void spi_TurnOnCS1_GD25Q16E(void);
|
||||
|
||||
void spi_TurnOffCS1_GD25Q16E(void);
|
||||
|
||||
|
||||
#ifdef ExtEEPROM_SPIB
|
||||
|
||||
Loading…
Reference in New Issue
Block a user