Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] Project to replace CY7C64613 in the ICD2

Status
Not open for further replies.
Hi people,

I'm very impressed by the job you all have done!! It took me a whole afternoon only to read all these interesting threads you all wrote. I'm a newbie in this forum, but I've been reasearching for much time on the ICD2 4550 topic.

My goal was to build an ICD with a 4550 emulating the Cypress AND the F877 in one. I wrote my own disassembler for the BL01010101.hex and it took weeks to find out what's really going on in this bootloader. Now i followed your efforts with the Cypress part and the binary file in the Microchip IDE folders.

Would anyone of you be interested in developing such a ICD with me here in this forum? Of course I know that the 18F has a different architecture, different SFR's and so on. So every update of the device must be able to interpret the fw update written in 16F opcode and convert it on the device to usable 18F code.

So, this will be a verry complex job, but if some of you gurus would be interested, i would be proud to work with you together.

SoaD85

BTW: I'm from Italy and studying in Austria. So at the time GTM+2 :)
 

narccizzo,

it clears the RAM from 0x0000-0x0800 so there is no need for that instruction.

It would be nice to try the hex I provided without the Boot Block protection to see it works or generating random 64byte writes.

It's easy to change the config when you load it into MPLAB, but i'll attach a hex file.
 

----------------------------------------

SoaD85,

will you recode all 877 firmware updates for a 18F?
Think, the bootloader + the os for the 4550 takes almost half of the chip's memory.
Definiately you don't want to spend your life doing this :), but if you do so...
Anyway both the assembly sources are in your hand (the 4550 + the 877 source) it's a simple merge :))
 

... and all the firmwares microchip can make for mplab surely wont work and you will have to recode every firmware until icd3...good luck !
 

Potyo:

Can you give me the values of R11 & R12.
Thanks.
 

Hi,
I must say that you made remarkably good work!
I have a comment/idea about boot code of 4550 chip.
I'm wondering why there is a boot code inside .dll file, and this file is not complete? I can imagine that this dll file contains os code for 4550 since boot code can replace os code, but i'm not sure that os code can replace boot code. But anyway in order boot code to be replace there has to be somewhere full boot code including first 0x80 bytes that are needed for proper startup after replacement of boot code. Can someone dissassemble .dll file containing boot code to see when this boot code is replaced into 4550 and what is the content of first 0x80 bytes? I'm not good at all on PC dissasembly and i can not help on this side, but i can try to dissasemble hex files for 4550 to see how reprogramming of boot code is done.
 

Hi potyo,

potyo said:
I don't know, why original ICD2 uses 74HC125 and 126, i have copyed this from the original's schematic.

I have an original icd2 and there is no 74HC125 on it. Is it your icd2 schematic really original? Anyway – take a look on icd2 pcb: /attached below/
1. there are one HC126 /marked as U9/ and one HCT126 /marked as U6/ chips.
2. U9 is powered from targed vcc voltage /pin 2 on icsp connector/ this chip corresponds to IC4 in your schematic.
3. U6 is powered from vcc which goes to the 16f877
4. there is a resistor /R51 – 220 ohm/ serially connected in U9 power

best regards
stroma
 

I agree with Soad85 about the single chip ICD. It allows a very simple hardware design, and developing the software is fun. I dont care to much about the firmware updates. When it works for a chip, it works. If it doesn't i'll dive into the prog specs and a disassemled firmware, and make it work.

Here's a picture of my latest attempt. It's basicly PICKIT hardware with ICD emulating software. It can use the ICD USB driver (thx to this thread), or RS232 using a virtual com port driver. This way you can have multiple USB ICD's on your PC, but maybe that's only usefull when developing a programmer.
 

Hey Brem, nice work! :)

----------------------------------

simce,

the missing 128 byte block is not a bootloader but a bunch of gotos with a minimal variable initialization. It's a constant thing, just jumps to constant places in the code (bl and os interrupt vectors for example).
They wont need to change it. But they may rewrite the bootloader which downloads the os or the os itself. Each part located after each other, so they are not overlapped. 0x80 byte init code -> Bootloader code -> OS code.
 

Zedman:
Yes i know that they are not overlpping but i'm curious why they keep bootloader on PC when normally bootloader won't be rewritten?
As i can see it is not possible to erase flash after first 0x80 bytes without erasing whole block that starts from 0 to 0x7ff. My question was:"Why there is part of boot loader that does not contain initalisation code 0 - 0x80 since if they plan to write data from 0x80 upwards, then they'll also need these 0x80 bytes? My point is that if they plan to rewrite boot area they must have whole 0x800 bytes for first block. And we must find where are all 0x800 bytes, because as i understand from posts first 0x80 bytes are not the same as original ones?!
Also someone stated that an area of 64 bytes are rewritten when fast plug in - out is issues. And at the begginig these bytes were random and now they stay 0. Now they are 0's since during programming procedure of flash only 1 can be written into 0 and after few programming procedures all 1's are now 0's.
I'm expecting 4550 chip and i'll try to analyze why this is happening and maybe i can help somehow to speedup development of clone.
------------
Yes it is interesting that single chip icd2 is developed, but it will be hard to keep up track with microchip, when they impement something new since they would like to keep good sale on ICD2. This happened when first ICD2 clone was revealed, and because most of clones implemented only rs232, they made new drivers with horrobly slow PC-RS232-ICD2 communication....
 
simce said:
This happened when first ICD2 clone was revealed, and because most of clones implemented only rs232, they made new drivers with horrobly slow PC-RS232-ICD2 communication....
I was thinking about this as well. I wasn't sure that they did in on purpose, bastards :(
 

stroma said:
Hi
I have my schematic downloaded as the original's. I'm sorry, if they isn't. Have found 2 schematics on **broken link removed** site. On the top is one with one 74hc125 and one 126, and at the bottom is another with two 126's, which have inverters on the enable pins(my schematic is not from here, but it looks like that with 125). If you can, please tell me, where are the A04S chips(marked as U5 and U7) connected on your board! My verdict is that they are single inverter gates(like **broken link removed**). If they inverts the signals coming from 877, then use of 125's is the better choice.
 

predrage said:
OK I will play with this values and see what will happen. Thanks.

Predrage,

Have you tried it out. All these days I was using the code on 12C508. today I tried it with 10F206. It works like a charm.

Cheers

Ravi
 

Hi Kripton,

thanks for the original schematics - however it is too unsharp to be useful. Do you have any chance to upload it in better quality?

Many Thanks,
Manuel
 

Potyo,
The schematic you found on mcu.cz site /the bottom one/ was originally created from a friend of mine. He drawn it from the original icd2 pcb. There are differences between schematic and the pcb mainly in dc-dc converter for vpp. His work is available @ icd2.bol.bg. Unfortunately this site is not accessible outside Bulgaria. You can find his project in edaboard / /see post from radoslav/. Note that the pcb in this project have some bugs.

Equivalents of two A04S inverters on the pcb picture are U3B and U3C in the schematic. I agree with you that using 74125/74126 tristate buffers is more elegant solution.
More important things is in my previous post. The chip which drives the target is powered from TARGET_VCC through 220 ohm resistor. This chip is 74HC126 /extended voltage/. I have checked these connections direct on the icd2 pcb.
I think that this is important if you using icd2 with self powered 3,3V target device.
What is serial resistor used for? Any suggestions?

best regards
stroma
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top