Исправлена 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_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/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_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/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_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"/>
|
<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.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_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/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>
|
</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_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>"/>
|
<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;
|
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 i=0;
|
||||||
uint32_t Addressfull8bit;
|
uint32_t Addressfull8bit;
|
||||||
uint16_t addr_read_data[8];
|
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);
|
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, 8);
|
||||||
copy8_to_16(addr_read_data, read_data, 4);
|
copy8_to_16(addr_read_data, read_data, 4);
|
||||||
read_data+=4;
|
read_data+=4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(i < quant16)
|
if(i < quant8)
|
||||||
{
|
{
|
||||||
Addressfull8bit = Addr+2*i;
|
Addressfull8bit = Addr+i;
|
||||||
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, 2*(quant16 - i));
|
Bl25cm1a_read_8_bytes(Addressfull8bit, addr_read_data, (quant8 - i));
|
||||||
copy8_to_16(addr_read_data, read_data, (quant16 - 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;
|
uint32_t i=0;
|
||||||
uint16_t addr_vfy_data[8];
|
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);
|
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;
|
verify_data+=4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(i < quant16)
|
if(i < quant8)
|
||||||
{
|
{
|
||||||
copy16_to_8(verify_data, addr_vfy_data, (quant16 - i));
|
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||||
if(Bl25cm1a_verify_8_bytes(Addr+2*i, addr_vfy_data, 2*(quant16 - i))) return 1;
|
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;
|
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;
|
uint32_t i=0;
|
||||||
uint16_t addr_write_data[8];
|
uint16_t addr_write_data[8];
|
||||||
uint32_t Addressfull8bit;
|
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);
|
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);
|
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, 8);
|
||||||
write_data += 4;
|
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;
|
||||||
Addressfull8bit = Addr+2*i;
|
else quant16 = (quant8 - i)/2;
|
||||||
Bl25cm1a_write_8_bytes(Addressfull8bit, addr_write_data, 2*(quant - i));
|
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 i=0;
|
||||||
uint32_t Addressfull8bit;
|
uint32_t Addressfull8bit;
|
||||||
uint16_t addr_read_data[8];
|
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;
|
||||||
GD25Q16ETIGR_read_8_bytes(Addr+i, addr_read_data, 8);
|
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, 8);
|
||||||
copy8_to_16(addr_read_data, read_data, 4);
|
copy8_to_16(addr_read_data, read_data, 4);
|
||||||
read_data+=4;
|
read_data+=4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(i < quant16)
|
if(i < quant8)
|
||||||
{
|
{
|
||||||
Addressfull8bit = Addr+2*i;
|
Addressfull8bit = Addr+i;
|
||||||
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, 2*(quant16 - i));
|
GD25Q16ETIGR_read_8_bytes(Addressfull8bit, addr_read_data, (quant8 - i));
|
||||||
copy8_to_16(addr_read_data, read_data, (quant16 - 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;
|
uint32_t i=0;
|
||||||
uint16_t addr_vfy_data[8];
|
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);
|
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;
|
verify_data+=4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(i < quant16)
|
if(i < quant8)
|
||||||
{
|
{
|
||||||
copy16_to_8(verify_data, addr_vfy_data, (quant16 - i));
|
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||||
if(GD25Q16ETIGR_verify_8_bytes(Addr+2*i, addr_vfy_data, 2*(quant16 - i))) return 1;
|
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;
|
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;
|
uint32_t i=0;
|
||||||
uint16_t addr_write_data[8];
|
uint16_t addr_write_data[8];
|
||||||
uint32_t Addressfull8bit;
|
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);
|
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);
|
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, 8);
|
||||||
write_data += 4;
|
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;
|
||||||
Addressfull8bit = Addr+2*i;
|
else quant16 = (quant8 - i)/2;
|
||||||
GD25Q16ETIGR_write_8_bytes(Addressfull8bit, addr_write_data, 2*(quant - i));
|
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;
|
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;
|
uint32_t i=0;
|
||||||
uint16_t addr_write_data[8];
|
uint16_t addr_write_data[8];
|
||||||
uint32_t Addressfull8bit;
|
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);
|
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;
|
if( ZD24C02A_write_8(Addressfull8bit, addr_write_data, 8)) return 1;
|
||||||
write_data += 4;
|
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;
|
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;
|
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 i=0;
|
||||||
uint32_t Addressfull8bit;
|
uint32_t Addressfull8bit;
|
||||||
uint16_t addr_read_data[8];
|
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;
|
||||||
if( ZD24C02A_read_8(Addr+i, addr_read_data, 8)) return 1;
|
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, 8)) return 1;
|
||||||
copy8_to_16(addr_read_data, read_data, 4);
|
copy8_to_16(addr_read_data, read_data, 4);
|
||||||
read_data+=4;
|
read_data+=4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(i < quant16)
|
if(i < quant8)
|
||||||
{
|
{
|
||||||
Addressfull8bit = Addr+2*i;
|
Addressfull8bit = Addr+i;
|
||||||
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, 2*(quant16 - i))) return 1;
|
if( ZD24C02A_read_8(Addressfull8bit, addr_read_data, (quant8 - i))) return 1;
|
||||||
copy8_to_16(addr_read_data, read_data, (quant16 - i));
|
if((quant8 - i) & 1) {addr_read_data[quant8] = 0; quant8++; }
|
||||||
|
copy8_to_16(addr_read_data, read_data, (quant8 - i)/2);
|
||||||
}
|
}
|
||||||
return 0;
|
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;
|
uint32_t i=0;
|
||||||
uint16_t addr_vfy_data[8];
|
uint16_t addr_vfy_data[8];
|
||||||
uint16_t Err_read = 0;
|
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);
|
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;
|
if(Err_read) return Err_read;
|
||||||
verify_data+=4;
|
verify_data+=4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(i < quant16)
|
if(i < quant8)
|
||||||
{
|
{
|
||||||
copy16_to_8(verify_data, addr_vfy_data, (quant16 - i));
|
if((quant8 - i) & 1) quant16 = (quant8 + 1 - i)/2;
|
||||||
Err_read = ZD24C02A_verify_16(Addr+2*i, addr_vfy_data, 2*(quant16 - i));
|
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;
|
if(Err_read) return Err_read;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -19,6 +19,7 @@
|
|||||||
#include "BL25CM1A.h"
|
#include "BL25CM1A.h"
|
||||||
#include "GD25Q16ETIGR.h"
|
#include "GD25Q16ETIGR.h"
|
||||||
#include "emif_init.h"
|
#include "emif_init.h"
|
||||||
|
#include "spi_init.h"
|
||||||
#endif
|
#endif
|
||||||
//#pragma DATA_SECTION(readData, "MSGRAM_CPU_TO_CM")
|
//#pragma DATA_SECTION(readData, "MSGRAM_CPU_TO_CM")
|
||||||
//uint32_t readData[10];
|
//uint32_t readData[10];
|
||||||
@ -116,6 +117,9 @@ void getMessage_from_Cm_Flash(void)
|
|||||||
uint32_t block1, block2;
|
uint32_t block1, block2;
|
||||||
uint16_t MemOperationError = 0;
|
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((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;}
|
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);
|
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;
|
uint16_t MemOperationError = 0;
|
||||||
if((InData > 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, EMIF, 0, 0); return;}
|
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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, EMIF, 0, 0);
|
||||||
|
|
||||||
switch(InCommand >> 16)
|
switch(InCommand >> 16)
|
||||||
@ -205,23 +209,23 @@ void getMessage_from_Cm_EMIF(void)
|
|||||||
void getMessage_from_Cm_BL25CM1A(void)
|
void getMessage_from_Cm_BL25CM1A(void)
|
||||||
{
|
{
|
||||||
uint16_t MemOperationError = 0;
|
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((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) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, 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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||||
|
|
||||||
spi_TurnOffCS1_GD25Q16E();
|
spi_TurnOffCS1_GD25Q16E();
|
||||||
switch(InCommand >> 16)
|
switch(InCommand >> 16)
|
||||||
{
|
{
|
||||||
case READ:
|
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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||||
break;
|
break;
|
||||||
case WRITE:
|
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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||||
break;
|
break;
|
||||||
case VERIFY:
|
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);
|
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);
|
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, BL25CM1A_1M_bit_SPI, 0, 0);
|
||||||
break;
|
break;
|
||||||
@ -237,8 +241,8 @@ void getMessage_from_Cm_BL25CM1A(void)
|
|||||||
void getMessage_from_Cm_GD25Q16E(void)
|
void getMessage_from_Cm_GD25Q16E(void)
|
||||||
{
|
{
|
||||||
uint16_t MemOperationError = 0;
|
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((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) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, 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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||||
|
|
||||||
Gpio15outSPI_CS_BL25CM1A(1);
|
Gpio15outSPI_CS_BL25CM1A(1);
|
||||||
@ -247,15 +251,15 @@ void getMessage_from_Cm_GD25Q16E(void)
|
|||||||
switch(InCommand >> 16)
|
switch(InCommand >> 16)
|
||||||
{
|
{
|
||||||
case READ:
|
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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||||
break;
|
break;
|
||||||
case WRITE:
|
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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||||
break;
|
break;
|
||||||
case VERIFY:
|
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);
|
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);
|
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, GD25Q16E_16M_bit_SPI, 0, 0);
|
||||||
break;
|
break;
|
||||||
@ -274,24 +278,24 @@ void getMessage_from_Cm_ZD24C02A(void)
|
|||||||
{
|
{
|
||||||
uint16_t MemOperationError = 0;
|
uint16_t MemOperationError = 0;
|
||||||
uint16_t I2CErr = 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((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) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, 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);
|
IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C, 0, 0);
|
||||||
|
|
||||||
switch(InCommand >> 16)
|
switch(InCommand >> 16)
|
||||||
{
|
{
|
||||||
case READ:
|
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);
|
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);
|
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||||
break;
|
break;
|
||||||
case WRITE:
|
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);
|
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);
|
else IPC_sendCommand(IPC_CPU1_L_CM_R, DONE_SUCCESS, ZD24C02A_2K_I2C, 0, 0);
|
||||||
break;
|
break;
|
||||||
case VERIFY:
|
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);
|
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 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);
|
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_INT1, IPC_INT1);
|
||||||
IPC_initMessageQueue(IPC_CPU1_L_CM_R, &messageQueue, IPC_INT0, IPC_INT0);
|
IPC_initMessageQueue(IPC_CPU1_L_CM_R, &messageQueue, IPC_INT0, IPC_INT0);
|
||||||
|
#ifdef CPU1
|
||||||
GD25Q16ETIGR_clean_SectorWasErraised();
|
GD25Q16ETIGR_clean_SectorWasErraised();
|
||||||
|
#endif
|
||||||
clear_BlockWasErased();
|
clear_BlockWasErased();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -20,8 +20,7 @@ void transmitBData(uint16_t a);
|
|||||||
|
|
||||||
void Gpio15outSPI_CS_BL25CM1A(uint16_t out_bit);
|
void Gpio15outSPI_CS_BL25CM1A(uint16_t out_bit);
|
||||||
void spi_TurnOnCS1_GD25Q16E(void);
|
void spi_TurnOnCS1_GD25Q16E(void);
|
||||||
void spi_TurnOnCS1_GD25Q16E(void);
|
void spi_TurnOffCS1_GD25Q16E(void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ExtEEPROM_SPIB
|
#ifdef ExtEEPROM_SPIB
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user