| Автор | Повідомлення |
|---|
Kripton2035
Зареєстровано: 19 липня 2001 Повідомлень: 482 Допомагали: 15 Розташування: Земля
| 03 квітня 2006 8:28 Re: Project замінити CY7C64613 в ICD2 | | |
|
| | predrage писав: | Мої друзі мене не домогтися успіху у програмуванні ICD2_4550_BOOT_0180.BIN в 4550. I'v намагався відкрити файл з бен winpic 800 програму, але вона провалилася. Я tryed, щоб відкрити його з опцією "всі файли" у розділі "Типи файлів", тому що не існує прямої підтримки бін файлів. ICprog, які мають підтримку (відкрити бін-файлів), але не може програма 4550. На самом деле 4550 немає в списку пристроїв. Що я повинен робити далі? Будь-які пропозиції? Я тільки початківець, але у мене добра воля допомогти. На жаль про мою поганий англійська. |
перейменувати. BIN в. HEX і winpic відкриє його! Іноді багато файлів. BIN насправді є Intel. Шестнадцатірічное! щоб бути впевненими, відкрийте файл із записну книжку, якщо він містить рядки, що починаються з ":", а потім перейменували в. шестнадцатірічное, і відкрити його з winpic .. якщо це сміття, а потім bin2hex повинно бути використано, щоб відкрити його. |
|
| Повернутися до початку | |
 |
narccizzo
Зареєстровано: 20 січня 2006 Повідомлень: 173 Допомагали: 4 Місце проведення: Пацкуаро, Мічоакан, Мексика
| 03 квітня 2006 9:42 Re: Project замінити CY7C64613 в ICD2 | | |
|
| Ці два файли бен конвертуються в шістнадцятковий, я відкрив бін файли з IC-прог програмного Потім збережіть файл у шістнадцятковому форматі, якщо ви подивитеся на ці файли, ви можете побачити читаємо рядка "мікрочип технології ICD2 USB Device icd2 USB" на адресу 0x0ee7 для boot.hex файл і ту ж строку У 0x0b8e для os.hex файл, I DONT є дізассемблер вивчити більш докладно це фото но что-то говорить мені, що ці два файли все, що нам потрібно.
BR Narccizzo
|
|
| Повернутися до початку | |
 |
Jay.slovak
Зареєстровано: 23 березня 2006 Повідомлень: 11
| 03 квітня 2006 11:17 Re: Проект замінити CY7C64613 в ICD2 | | |
|
| | narccizzo писав: | Ці два файли бен конвертуються в шістнадцятковий, я відкрив бін файли з IC-прог програмного Потім збережіть файл у шістнадцятковому форматі, якщо ви подивитеся на ці файли, ви можете побачити читаємо рядка "мікрочип технології ICD2 USB Device icd2 USB" на адресу 0x0ee7 для boot.hex файл і ту ж строку У 0x0b8e для os.hex файл, I DONT є дізассемблер вивчити більш докладно це фото но что-то говорить мені, що ці два файли все, що нам потрібно.
BR Narccizzo |
Ви впевнені, що у вас є файли перетворюються правильно? Якщо я імпортувати їх у MPLAB, кодекс не має сенсу, все це просто переживає програми пам'яті і робимо NOPs. Нічого корисного, що відбувається в обох завантаження ОС і HEXs. Навіть біт конфігурації розрізняються в обох файлів! |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 03 квітня 2006 11:19 Проект замінити CY7C64613 в ICD2 | | |
|
| Альберт,
ядро драйвер (и) очікувати, кипарис зв'яже на інший вид / PID коли firt взаємозв'язані, і після завантажувача системи поводження він FW буде знову, як ще один вид / PID тому інші системи переговорах з ним. Ми повинні виконати тільки другий. IAM @ робота і тому я не можу зробити що-небудь тут важко очікувати thinkin ' ... |
|
| Повернутися до початку | |
 |
Сільвіо
Зареєстровано: 31 грудня 2001 Повідомлень: 800 Допомагали: 90
| 03 квітня 2006 11:31 Re: Проект замінити CY7C64613 в ICD2 | | | Теги: mplab протокол icd2 кипарис дізассемблер дізассемблер кипарис |
|
| Привіт Zedman,
it's a must to understand what's under cover. Що стосується CY шестнадцатірічное фото це не тільки питання гарною дізассемблер який знає кипарис чіп, але читання 436 сторінок EZ-USB FX TechRefManual, що це повинні зрозуміти, що під прикриттям. І я не вірю, ви час для цього. Тим не менше, якщо ви не знайомі з 8051 opcodes, парсінга коду займе деякий час. (Я знаю, ви познайомилися з них ПОС) with appropiate values from CY7C64613 registers 0x7800-0x7FFF but you'll definitely end up turning the pages of TechRefManual looking for definitions. Я можу замінити всі випадки MOV DPTR, # LXXXX відповідні значення з CY7C64613 регістрів 0x7800-0x7FFF але ви обов'язково в кінцевому підсумку перетворити сторінок TechRefManual пошуках визначень. Крім того, що вона буде приблизно, як важко присвоїти імена біти, які встановлені й чітко викладені в програмі до тих пір, поки вони не відображаються в просторі SFR (який закінчується в 0 і 8). with MOV DPTR, #EP0CS but it's difficult to say SETB HSNAK due to the above reasons. Можна легко замінити MOV DPTR, # L7FB4 з MOV DPTR, # EP0CS але важко сказати, SETB HSNAK зв'язку з викладеним вище причин.
and EP0STAL L which are affected in the bellow code at 0x03E2. Давайте розглянемо приклад, біти HSNAK і EP0STAL L, які порушені в нижче код на 0x03E2. | Код: | L03E2: LCALL L0FBE JNC L03EE MOV DPTR, # L7FB4 MOVX A, @ DPTR ORL A, # 01h; роду SETB EP0STALL MOVX @ DPTR, A L03EE: MOV DPTR, # L7FB4 MOVX A, @ DPTR ORL A, # 02h; роду SETB HSNAK MOVX @ DPTR, A RET
L0FBE: SETB C RET
|
Візьмемо в якості прикладу (CP_1.asm) код рядка, починаючи зі зсуву 0x0100 (підпрограма викликається з 0x05FA), перший рядок коду використовується негайно нижче таблиці вектор переривання На RAM 0x7FE9 ви знайдете 2 байт 8 байт USB SETUP пакетної передачі даних (див. стор 215 table9-1), що означає bRequest області (див. таблиці 9-2).
| Код: | L0100: MOV DPTR, # L7FE9 MOVX A, @ DPTR JNZ L0109 LJMP L029B, якщо bRequest = GetStatus перехід на 0x029B L0109: DEC A JNZ L010F LJMP L0317, якщо bRequest = Відкритий можливість, переходити до 0x0317 L010F: ADD A, # 0FEh JNZ L0116 LJMP L038E, якщо bRequest = Функція Set, перехід на 0x038E L0116: ADD A, # 0FBh JNZ L011D LJMP L0295, якщо bRequest = Отримати конфігурації, перехід на 0x0295 L011D: DEC A JNZ L0123 LJMP L028F, якщо bRequest = Set конфігурації, перехід на 0x028F L0123: DEC A JNZ L0129 LJMP L0283, якщо bRequest = Отримати інтерфейс, перехід на 0x0283 L0129: DEC A JNZ L012F LJMP L0289, якщо bRequest = Встановити інтерфейс, перехід на 0x0289 L012F: ADD A, # 05h ЮЖД L0136 LJMP L03E2, якщо bRequest = ніхто з перерахованих вище, а потім встановити біт HSNAK і EP0STALL з EP0CS І контроль стану і , Потім на RET 0x05FD ; L0136: LCALL L0F7A, якщо bRequest = Отримати Descriptor, LCALL 0x0F7A де JC L013E; нести біт встановлений за замовчуванням, так що перехід на 0x013E LJMP L03EE, якщо на 0x0F7A нести буде 0 за замовчуванням, встановіть бітних HSNAK , З EP0CS контролю І статус реєстрації та RET в 0x05FD ; L013E: MOV DPTR, # L7FEB; тут, тому що bRequest був Отримати Descriptor MOVX A, @ DPTR; таким чином, перевірити WValueH області USB SETUP пакетної ADD A, # 0FEh ЮЖД L015F, якщо wValueH було 0x02 перехід на 0x015F DEC A ЮЖД L0190, якщо wValueH було 0x03 перехід на 0x0190 ADD A, # 02h ЮЖД L0150, якщо wValueH було 0x01 перехід на 0x0150 LJMP L0279, якщо wValueh відрізняється ні 0x01 або 0x02 або 0x03 потім встановіть ; Біти HSNAK і EP0STALL з EP0CS зареєструватися та RET в 0x05FD ; L0150: MOV A, 0Ch; тут, тому що wValueH була 0x01, так що навантаження SUDPTR глобальних USB зареєструватися MOV DPTR, # L7FD4; зі значенням 0x0C0D, а потім встановити бітних HSNAK з EP0CS і RET в 0x05FD MOVX @ DPTR, A MOV A, 0Dh MOV DPTR, # L7FD5 MOVX @ DPTR, A LJMP L03EE L015F: MOV DPTR, # L7FEA; побачити зараз на wValueL сфері USB SETUP пакетної ; ; ; ; і так далі ...................
|
port2: Microchip MPLAB ICD2 Fw client Або це пошук таблиці по смещению 0x0622, які відповідають Kripton2035 port2: мікрочип MPLAB ICD2 Fw клієнта
| Код: | Таблиця 5-9. Стандарт USB пристроїв Descriptor
RAM офсетні Поле Значення Опис
0622 0x12 0 bLength Довжина цього Descriptor = 18 байт 0623 0x01 1 bDescriptorType Descriptor = Тип пристрою 0624 0x00 2 bcdUSB (L) USB специфікації версії 1.10 (L) 0625 0x01 3 bcdUSB (H) Специфікація USB версії 1.10 (H) 0626 0xFF 4 bDeviceClass пристроїв класу (FF є постачальником спеціальності) 0627 0xFF 5 bDeviceSubClass пристроїв Підкатегорії класу (FF є постачальником спеціальності) 0628 0xFF 6 bDeviceProtocol Пристрій протоколу (FF є постачальником спеціальності) 0629 0x40 7 bMaxPacketSize0 максимальний розмір пакету для EP0 = 64 байт 062A 0xD8 8 idVendor (L) Виробник Код (L) мікрочип технології = 04D8H 062B 0x04 9 idVendor (H) Виробник Код (H) 062C 0x01 10 idProduct (L) Product ID (L) ICD2 = 8001H 062D 0x80 11 idProduct (H) Product ID (H) 062E 0x03 12 bcdDevice (L) Пристрій Випуск номер (BCD, L) 062F 0x00 13 bcdDevice (H) пристроїв Випуск номер (BCD, H) 0630 0x00 14 iManufacturer Виробник Індекс String = Відсутній 0631 0x00 15 iProduct продукти Індекс String = Відсутній 0632 0x00 16 iSerialNumber Серійний номер індексу String = Відсутній 0633 0x01 17 bNumConfigurations Кількість конфігурацій в цей інтерфейс = 1
Таблиця 5-10. USB замовчуванням Descriptor
RAM офсетні Поле Значення Опис
0634 0x09 0 bLength Довжина цього Descriptor = 9 байт 0635 0x02 1 bDescriptorType Descriptor Тип = Configuration 0636 0x74 2 wTotalLength (L) Загальна довжина (L) Включаючи інтерфейс і кінцева точка дескриптори = 116 0637 0x00 3 wTotalLength (H) Загальна довжина (H) 0638 0x01 4 bNumInterfaces Кількість інтерфейсів в даній конфігурації 0639 0x01 5 bConfigurationValue Конфігурація значенням, використовуваним Set_Configuration Запит Вибір такої конфігурації 063A 0x00 6 iConfiguration Індекс String Описуючи цю конфігурацію = Відсутній 063B 0x80 7 bmAttributes атрибути - Автобус-Powered, не Wakeup 063C 0x4B 8 MaxPower Максимальна потужність - 150 мА
Таблиця 5-11. Інтерфейс USB за замовчуванням 0, заступник Установка 0 Descriptor
RAM офсетні Поле Значення Опис
063D 0x09 0 bLength Довжина інтерфейсу Descriptor 063E 0x04 1 bDescriptorType Descriptor = Тип інтерфейсу 063F 0x00 2 bInterfaceNumber нуля Індекс цього інтерфейсу = 0 0640 0x00 3 bAlternateSetting Альтернативні Задані значення = 0 0641 0x0E 4 bNumEndpoints Кількість кінцевих точок у цей інтерфейс (не рахуючи ЄПВ) = 14 0642 0xFF 5 bInterfaceClass інтерфейсу класу = постачальника Конкретні 0643 0xFF 6 bInterfaceSubClass Інтерфейс Підкатегорії клас = постачальника Конкретні 0644 0xFF 7 bInterfaceProtocol Інтерфейс протоколу = постачальників Конкретні 0645 0x00 8 iInterface Індекс String дескриптора для цього інтерфейсу = Відсутній
Таблиця 5-14. Інтерфейс за замовчуванням 0, заступник Установка 1, балк точки дескриптори
RAM офсетні Поле Значення Опис
0646 0x07 0 bLength Довжина цієї точки Descriptor 0647 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0648 0x01 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT1 0649 0x02 3 bmAttributes XFR Тип = BULK 064A 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 064B 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 064C 0x01 6 bInterval Опитування інтервал у мілісекунди
064D 0x07 0 bLength Довжина цієї точки Descriptor 064E 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 064F 0x02 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT2 0650 0x02 3 bmAttributes XFR Тип = BULK 0651 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0652 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 06:53 0x01 6 bInterval Опитування інтервал у мілісекунди
0654 0x07 0 bLength Довжина цієї точки Descriptor 0655 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0656 0x03 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT3 0657 0x02 3 bmAttributes XFR Тип = BULK 06:58 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0659 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 065A 0x01 6 bInterval Опитування інтервал у мілісекунди
065B 0x07 0 bLength Довжина цієї точки Descriptor 065C 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 065D 0x04 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT4 065E 0x02 3 bmAttributes XFR Тип = BULK 065F 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0660 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 0661 0x01 6 bInterval Опитування інтервал у мілісекунди
0662 0x07 0 bLength Довжина цієї точки Descriptor 0663 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0664 0x05 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT5 0665 0x02 3 bmAttributes XFR Тип = BULK 0666 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0667 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 0668 0x01 6 bInterval Опитування інтервал у мілісекунди
0669 0x07 0 bLength Довжина цієї точки Descriptor 066A 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 066B 0x06 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT6 066C 0x02 3 bmAttributes XFR Тип = BULK 066D 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 066E 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 066F 0x01 6 bInterval Опитування інтервал у мілісекунди
0670 0x07 0 bLength Довжина цієї точки Descriptor 0671 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0672 0x07 2 bEndpointAddress точки керівництво (1 в) і адреса = OUT7 0673 0x02 3 bmAttributes XFR Тип = BULK 0674 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0675 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 0676 0x01 6 bInterval Опитування інтервал у мілісекунди
RAM офсетні Поле Значення Опис
0677 0x07 0 bLength Довжина цієї точки Descriptor 0678 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0679 0x81 2 bEndpointAddress точки керівництво (1 в) і адреса = IN1 067A 0x02 3 bmAttributes XFR Тип = BULK 067B 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 067C 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 067D 0x01 6 bInterval Опитування інтервал у мілісекунди
067E 0x07 0 bLength Довжина цієї точки Descriptor 067F 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0680 0x82 2 bEndpointAddress точки керівництво (1 в) і адреса = IN2 0681 0x02 3 bmAttributes XFR Тип = BULK 0682 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0683 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 0684 0x01 6 bInterval Опитування інтервал у мілісекунди
0685 0x07 0 bLength Довжина цієї точки Descriptor 0686 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0687 0x83 2 bEndpointAddress точки керівництво (1 в) і адреса = IN3 0688 0x02 3 bmAttributes XFR Тип = BULK 0689 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 068А 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 068B 0x01 6 bInterval Опитування інтервал у мілісекунди
068C 0x07 0 bLength Довжина цієї точки Descriptor 068D 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 068E 0x84 2 bEndpointAddress точки керівництво (1 в) і адреса = IN4 068F 0x02 3 bmAttributes XFR Тип = BULK 0690 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0691 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 0692 0x01 6 bInterval Опитування інтервал у мілісекунди
0693 0x07 0 bLength Довжина цієї точки Descriptor 0694 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 0695 0x85 2 bEndpointAddress точки керівництво (1 в) і адреса = IN5 0696 0x02 3 bmAttributes XFR Тип = BULK 0697 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 0698 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 0699 0x01 6 bInterval Опитування інтервал у мілісекунди
069A 0x07 0 bLength Довжина цієї точки Descriptor 069B 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 069C 0x86 2 bEndpointAddress точки керівництво (1 в) і адреса = IN6 069D 0x02 3 bmAttributes XFR Тип = BULK 069E 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 069F 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 06A0 0x01 6 bInterval Опитування інтервал у мілісекунди
06A1 0x07 0 bLength Довжина цієї точки Descriptor 06A2 0x05 1 bDescriptor Тип дескриптора типу = кінцева точка 06A3 0x87 2 bEndpointAddress точки керівництво (1 в) і адреса = IN7 06A4 0x02 3 bmAttributes XFR Тип = BULK 06A5 0x40 4 wMaxPacketSize (L) максимальний розмір пакета = 64 байт 06A6 0x00 5 wMaxPacketSize (H) максимальний розмір пакета - Висока 06A7 0x01 6 bInterval Опитування інтервал у мілісекунди
який потім юнікод вигляді, що закінчився нульовою рядком "Мікрочип техніки ICD2 USB Device"
|
Однак, якщо ви застрягли в 4550 бен, я можу спробувати допомогти шляхом додавання коментарів у CY АНМ файл. |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 03 квітня 2006 17:10 Re: Проект замінити CY7C64613 в ICD2 | | | Теги: icd2.dll |
|
| Привіт Сільвіо,
спасибо за информацию, давно мені довелося розібрати на бін файл з EPROM один чіп. Я не навіть не тип процесора, ні схеми. Але я повинен був знайти, як вона займається з картки пам'яті, і його дані. Я припустив, що в 8051 натурою чіпа і спробував багато disassemblers, і в остаточному підсумку з 80C542 (нахиляє Я пам'ятаю, який з них він точно) Я зрозумів це з порту номера та коду, як операції з окремими порт шпильки. Але це займає 2 тижні день і ніч працювати Для мене, багато читання / налагодження / навчання. Ось чому я хотів асемблер, що здатні зробити те, ви згадали замість мене ...  Ще раз спасибі Сільвіо.
-----------------------------
IAM починають вважаємо всіх вас, у відповідності з бен файлів. Я зробив досліджень в ICD2 DLL і з'ясували, що вона вимагає GETUSBDESCRIPTOR і перевіряє номери в опісателя, і якщо він збігається з новою версією ICD2, ніж я, підписана в 4550 в моїй опісателя, ніж це робить send4550image слово! А також Є опісателі в бін файлів збігаються з одним Kripton завантажений. Одна річ, я не розумію, тому вони постачаються з завантажувального образу? И почему ICD2.dll намагається завантажити цей файл? Якщо я приходжу додому, я намагаюся встановити мою опісателі у відповідності з одним я знайшов у бін і постараємося MPLAB на ньому.
Я думаю, що ми все ближче! 
Додано після 46 хвилин:
І є чарівне справа в першу btyes з завантажувального бен: MCHP (Microchip?) Я шукав його, якщо він згодом (після навантаження) замінює їх з реальною відправною точкою GOTO або-й, але в ICD2.dll немає.
Додано через 3 години 34 хвилин:
Подивіться на це:
Я робив те, що я говорив раніше, просто встановіть версію номери на нові, і він сподівається, MPLAB намагається надіслати ОС! (Звичайно, моя FW не є завантажників)
| Код: | MPLAB НДЖ 2 Готовий Підключення до MPLAB НДЖ 2 ICD0289: Неможливо повторно програму ICD2 USB OS прошивки. ICD0021: Неможливо з'єднатися з MPLAB НДЖ 2 MPLAB НДЖ 2 Готовий
|
Каким-то завантажувач повинен працювати, я спробую зробити що-небудь на ніч. |
|
| Повернутися до початку | |
 |
narccizzo
Зареєстровано: 20 січня 2006 Повідомлень: 173 Допомагали: 4 Місце проведення: Пацкуаро, Мічоакан, Мексика
| 03 квітня 2006 18:43 Проект замінити CY7C64613 в ICD2 | | |
|
| Привіт JaySlovak Ні, Im не впевнений, я тільки відкрив бін і зберегти його в шістнадцятковий формат. |
|
| Повернутися до початку | |
 |
Jay.slovak
Зареєстровано: 23 березня 2006 Повідомлень: 11
| 03 квітня 2006 20:45 Re: Проект замінити CY7C64613 в ICD2 | | |
|
| | narccizzo писав: | Привіт JaySlovak Ні, Im не впевнений, я тільки відкрив бін і зберегти його в шістнадцятковий формат.  |
Так, це дивно, як можна прочитати рядок, просто код нічого не робить |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 03 квітня 2006 22:25 Re: Проект замінити CY7C64613 в ICD2 | | | Теги: icd2.dll |
|
| Добрі новини через 2 години налагодження,
ICD2.dll використовує обидва бен файлів. ОС фото хоче бути завантажено тільки для ICD2s новий продукт з серійним номером. Але коли ви зміните ідентифікатор версії у файлі OS.bin в * _FFFF.bin, ніж він почне перевіряти версію завантажувача з нетерпінням:
| Код: | Підключення до MPLAB НДЖ 2 ICDWarn0062: USB-завантаження прошивки з ICD2 активний і забезпечення зв'язку з ICD2. Це прошивки застарів і має бути поновлений. Вона не може бути поновлений за активної. Тим не менш, ви можете продовжувати працювати з поточною завантаження прошивки, якщо ви вирішите це зробити. Бажаєте продовжити?
|
Якщо я натискаєте "так", що він намагається підключитися до ICD2 себе і зависає (у мене тільки 4550 встановлена ще). Якщо я Натискаю НЕТ, ніж здається, він намагається його оновити але ми повинні тут завантажувач, як це, так що це повідомлення з'являється на екрані:
| Код: | ICD0288: Неможливо повторно програму ICD2 USB завантаження прошивки. ICD0021: Неможливо з'єднатися з MPLAB НДЖ 2 MPLAB НДЖ 2 Готовий
|
Добре, хлопці, думаю, думаю, думати, як ми можемо використовувати цей бен отримати робочу завантажувача в 4550!
Додано через 2 хвилини:
Я також склали вибірку завантажувач з правильним VID / PID, але отримали той самий результат, як з моїм 4550.
Додано після 16 хвилин:
Це може бути, що ми не можемо отримати початкові початковий початковим:) частини завантажувач, який завантажується першим завантажувач, який завантажує ОС ...
Додано через 5 хвилин:
Це час, коли варто rkodaira звалища його 4550 на рівні 0 завантажувач. (з великої надії на те, що не захищений ...)
Rkodaira Ви потрібні нам |
|
| Повернутися до початку | |
 |
albert22
Зареєстровано: 20 липня 2004 Повідомлень: 95 Допомагали: 3
| 03 квітня 2006 22:46 Re: Проект замінити CY7C64613 в ICD2 | | |
|
| Я Аналізуючи роздруківку про те, що я зі мною в BL010101. и найти что-то. Здається прийняти 5 команд найближчі небудь з PSP або USART. 0x55 виконання коду, починаючи з 0x0010. 0x56 шістнадцятковому навантаження (це, як видається, мають більш subcommands) 0x5a посилає дані 0x01 0x01 0x03 (Версія про BL ????) Дві інші команди, просто увімкніть помилку і Зайнято світлодіодів і висить в inffinite петлі.
Наступні підпрограми відносяться до того, що я назвав "навантаження шестнадцатірічное" команду:
В іншому на регулярній BL відправляє наступний рядок 0x5b, "0810C9", 0x5d Інші відповіді посилає embeded на ці рядки 0x5b ", 0A000", U, 0x31, U, 0x5d. (де U мабуть, 0x31, 0x34, 0x36 і 0x37).
Я didn't мати більше часу для продовження аналізу. Я бачив ні USB моніторингу, які були розміщені, так Im на кібер. Але я думаю, що ці дані повинні бути упаковані в зв'язку USB |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 03 квітня 2006 23:30 Проект замінити CY7C64613 в ICD2 | | |
|
| Альберт,
Я перевірив серійний зв'язок в порівнянні з USB, USB використовується оболонка через серійний річ. Здається, він використовує для контролю EP1 порту (це OUT і IN) і EP2 також дані порту, тільки в (МКБ-> ПК). |
|
| Повернутися до початку | |
 |
albert22
Зареєстровано: 20 липня 2004 Повідомлень: 95 Допомагали: 3
| 05 квітня 2006 6:39 Re: Project замінити CY7C64613 в ICD2 | | |
|
| Ось мої успіхи з BL Були не такі subcommands. Навантаження шестнадцатірічное команда просто бере шестнадцатірічное записів і записує дані в програму 2 байтів пам'яті, у той час. Вона перевіряє наявність різних помилок, в тому числі в діапазоні адрес. Ап. уникнути активізації в BL програми. Це підтверджує той факт, що це завжди BL-резидентів на 877. В [0A000 ", U, 0x31, U]. (2 U є першим U 1), навряд чи варто розглядати, оскільки звіт про помилку. Помилки відносяться: погана форма, контрольна, поганий діапазон адрес і EEPROM пишуть помилка . У звичайних чекає 16 символів, починаючи з 0x3c ('<') і закінчується з 0x3e ('>'). це 16 символів у заголовку містять адреси, довжини і контрольні суми для даних, які будуть написані ASCII. Якщо заголовок виправити Ap. в BL відповіді на "[0810C9] Ці дані разом після 0x7b Цей формат, як видається, відрізняється від Intel шістнадцятковий формат.
Zedman. Може бути, ви визнали то вроде цього в RS232 Завтра я Wil бути в моєму домі, і можливість установки жорсткого диска, щоб перевірити журнал і подивіться, якщо я можу бути чим-небудь допомогти. |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 05 квітня 2006 12:17 Re: Проект замінити CY7C64613 в ICD2 | | | Теги: mplab протокол icd2 icd2.dll icd2w2k.sys mplbcomm.dll |
|
| Я застряг у цьому USB річ. І я сумно.
Я не знаю, що робити далі. Я витратив багато часу на налагодження icd2.dll.
Проблема: Я не можу відправити хоча б одного байтів в MPLAB.
Я пояснити, що я знайшов до сих пір, хоча ніхто не зацікавлений в (просто хоче отримати готові речі). (За винятком: Альберт, Kripton, rkodaira, Сильвио і хлопці у цій нитки)
Таким чином, MPLAB спілкується з ICD2 наступним чином:
[MPLAB -> ICD2.dll -> MPLBCOMM.dll -> icd2w2k.sys ->] --- [ICD2 пристрої]
Якщо ви обираєте тип підключення USB проситиме дескриптора пристрої з ICD2 і перевіряє версію продукту слова, якщо він 0x0003, ніж це кипарис заснований ICD2, якщо він 0x0010, ніж що це 4550 заснований один. Якщо 0x0010 знайти, що він говорить те, що я був розміщений до цієї операційної системи в ICD2 повинен бути підвищений. Це цікаво, що якщо версія (0100), в імені файлу в OS.bin змінено на FFFF, чим він пропустить цей крок і перевіряє версію завантажувача. Тут мені довелося залатати ICD2.dll отримати спробі перевірити файл BL.bin версія занадто, це жорстко, що навіть він встановлений на FFFF Зазвичай він спробує оновити, тому я його пропатчен (набір жорстко FFFF зниження), тому в даний час говорить, що я занадто mentoined раніше: з бл версія занадто старий, але він не може бути поновлений за його активною.
Добре. Я зробив невеличкий програми з вибірки завантажувача, з правильним дескриптори і намагаєтеся спілкуватися з MPLAB для розшифровки протоколу і емулювати BL в новому 4550 ICD2. ICD2, що використовує Kripton, (кипарис версія) встановлює 7 OUT / IN параметри, проте, згідно з журналів вона використовує тільки EP1 для IN / OUT і EP2 в. (OUT означає PC-> Device) Здається, він посилає USB конкретних команд і даних через EP1, і повернувся на EP1, і посилає байт readed з ICD2 в 877 через окремі точки EP2 дюйм
Коли MPLAB намагається надіслати й OS.bin підвищити FW OS він видає getUSBdescriptor виклик ядра драйвер, і відправляє на 0x12 байт довгі команди, використовуючи команду DeviceIoControl. Я налагоджений, вона успішно прибула на 4550. Тан MPLAB видає GetStatus слово, і воно схоже на слово з параметрів, які він очікує 0x08 байт даних назад. Я створив мої буфера з 8 байт, а також встановити право власності на SIE. Але воно ніколи не передає, що 8 байт назад (він не з'явиться в USBMon). Просто чекає. Там може бути багато. Може бути, я й не в порядку з настройками 4550, але я намагався її з іншою Progs і він працює, може послати байт назад. Я знаю, що приймають повинні передавати і в командному, щоб відправити пристрій в тому, що вона хоче. Але коли я налагоджений MBLBCOMM, я побачив, що DeviceIoControl команди програли! Я tought, що, можливо, деякі розвідувальні був побудований в. Системи файл і він падає в пакет з-за її неправильного змісту, але я думаю, він повинен бути більш високий рівень завдання. Коли я приходжу додому я перевірити GetLastError вартості.
Кожен має якісь ідеї, як я можу дізнатися, чи є там був у пакеті розіслані, і як я можу займатися? |
|
| Повернутися до початку | |
 |
Kripton2035
Зареєстровано: 19 липня 2001 Повідомлень: 482 Допомагали: 15 Розташування: Земля
| 05 квітня 2006 16:59 Проект замінити CY7C64613 в ICD2 | | |
|
| може бути вам необхідно підключити 877 для PSP порт 4550, щоб дізнатися, що в найближчі шляхом, і програми на 877 з завантажувача ми? може бути байтах ви очікування з EP2 і так 877?
Ви хочете мене направити іншого лог файл точне стан? до речі, це обов'язково потрібно rokaida журнал з його 4550 icd2 ..
PS: Я не зацікавлений в тому, що проект .. Я тільки цікаво! У мене вже є один USB icd2! |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 05 квітня 2006 20:08 Проект замінити CY7C64613 в ICD2 | | |
|
| Завдяки Kripton,
Ми повідомимо вас, коли мені потрібно більше звалище , Це трохи більш складним, ніж просто проходячи через байтах до 877 і назад, тобто протокол, обгортки від нього. Що ви сказали, було дуже корисним, але rkodeira звичай sacrify його нової ICD2 ... Якщо він буде, ніж з дамп його ОС процес оновлення буде визначити протокол добре ... |
|
| Повернутися до початку | |
 |
Kripton2035
Зареєстровано: 19 липня 2001 Повідомлень: 482 Допомагали: 15 Розташування: Земля
| 05 квітня 2006 22:09 Проект замінити CY7C64613 в ICD2 | | |
|
| | I DONT так думаю, що він потребує sacrify його icd2!! лише деякі звалища з usbmon як я .. сподіваюся моя icd2 до сих пір працює! |
|
| Повернутися до початку | |
 |
albert22
Зареєстровано: 20 липня 2004 Повідомлень: 95 Допомагали: 3
| 05 квітня 2006 22:16 Re: Проект замінити CY7C64613 в ICD2 | | | Теги: icd2 навантаження шестнадцатірічное команду |
|
| Я не можу встановити HHD монітор для перегляду журналів, тому що я тільки W98 на дому. Ви можете експортувати дамп ОС для завантаження файлу. TXT, для мене? ------- Як CY скидає 877? Існує один сигнал (PIN-43) на базі Q1, чиї колектора MCLR. Але це йде на роз'єм називається PROG. Тепер я розумію, що цей сигнал має перейти на 877 тоже. Ми повинні знати, які USB команда скидає 877. Може бути, він знаходиться в одній з кінцевих точок контролю? Я не знаєте що таке функція цього PROG роз'єм. але додаткові параметри можуть бути пов'язані з ним. ---------- Один з ОС завантажуються на ICD2 очевидно, будуть: ICD01020405.hex я спробував disassemby, але я не можу отримати дізассемблер замінити шестнадцатірічное адрес з ім'ям регістрів. Це займе більше часу, щоб зрозуміти, як вона працює. Цікавим фактом є те, що код починається з 0x0010. Пам'ятайте, що БЛ закликає цією адресою з виконати команду.
У BL версія повідомили mplab є 01.01.01.00 Це добре з BL команди, яка відповідає 01,01,01,03 --------- Існує не DPot (MCP41xxxx) в бразильському МКБ. Як вони Vpp? Більшість з клонів мають фіксовану Vpp. Чи це означає, що бразильська МКБ є всього лише клоном низька вартість, а не новий ICD2? Dont Я думаю, що мікрочип пішла на певний Vpp. Якщо є ще один метод боротьби з Vpp, крім DPot йому потрібно вбудованого зміни НДЖ ОС. У старих ОС не буде працювати в новій. Це може бути причиною, що DLL перевіряє версію. |
|
| Повернутися до початку | |
 |
Zedman
Зареєстровано: 13 жовтня 2003 Повідомлень: 294 Допомагали: 2
| 05 квітня 2006 22:32 Проект замінити CY7C64613 в ICD2 | | | Теги: mplab протокол icd2 icd2w2k.sys icd2w2k завантажити 4550 завантажувач написати icd2w2k.sys завантажити завантажити icd2w2k |
|
| Я не думаю, що ми повинні займатися все відносно схеми або протоколу або з'єднання між 877 і 4550 ще. Я думаю, що всі ми повинні написаний у 4550 бункери поставляються з MPLAB. Ми повинні написати завантажувач сумісні з icd2w2k.sys отримати OS.bin завантажується, і після цього ми можемо scracth наші керівники, як 877 підключений.
Додано через 5 хвилин:
У ICD2br використовує інший тип чіпа, який генерує Vpp. Rkodaira mentoined, перевірте ці посади раніше. |
|
| Повернутися до початку | |
 |
Сільвіо
Зареєстровано: 31 грудня 2001 Повідомлень: 800 Допомагали: 90
| 06 квітня 2006 2:36 Re: Project замінити CY7C64613 в ICD2 | | | tags: icd2w2k.sys icd2w2k download 4550 bootloader write icd2w2k.sys download download icd2w2k |
|
| | Zedman wrote: | We should write a bootloader compatible with the icd2w2k.sys to get the OS.bin downloaded.
|
Yes, this is the main reason for which I said that dissasembling CY fw it's useless as long as we have the OS and BL bin file provided by Microchip. To start coding from scratch for 4550 and simulate the CY fw would be time consuming and worthless. That's I appreciate zedman's efforts.
However sometimes I can't help myself to ask this stupid question : If the BL cannot be upgraded while it's active, what was Microchip's ICD2 designers approach for upgrade ? In parallel programmer before soldering 4550 ? Or through ICSP with a clean bin image downloaded after boot block erased ? If rkodaira will find that CPB and EBTRB bits are cleared , then how can OS.bin be loaded in 4550 ? I start asking like you : why did they supplied the boot image ? Or, as Jay.slovak said "the string is readable, just the code does nothing" because it's encrypted and makes sense only for original boot code. So, the only solution is to simulate the 4550's bootloader and get the mirror bin image of OS ? |
|
| Back to top | |
 |
albert22
Joined: 20 Jul 2004 Posts: 95 Helped: 3
| 06 Apr 2006 4:36 Re: Project to replace CY7C64613 in the ICD2 | | | tags: mplab protocol icd2 |
|
| | Quote: | In ICD2br uses another kind of chip which generates the Vpp. Rkodaira mentoined, check the posts before.
| I didnt mean the MIC2175, which is a switching regulator as the MC34063. I was aiming at the DPOT and specifically to its I2C interfase because it requires the support of the firmware in the 877 to set the correct Vpp voltage. As I said before if the new ICD2 relies in other component to change the Vdd, all the firmware needs to change.
May be Rkodaira could check ithe circuit associated with pin 3 (FB) of the MIC2172 to see if vpp can be controlled or it is fixed.
Let me make my statement a little clear. If the Brazilian ICD has no control of Vpp it is highly probable that it is just a clone. In that case there is no warranty that the real new ICD2 is based on a 4550 and a 877. It could be just a 4450 alone for example (why not) in that case the following statement would not be true. | Quote: | | I think ALL we need is written in the 4550 bins supplied with MPLAB. | As we dont know for sure the arquitecture of the new ICD we need to emulate the CY. However chances are that the 4550BINs will still be usefull to solve the USB protocol. I tried to disassemble it today but found nothing coherent yet.
To the question: | Quote: | | why did they supplied the boot image ? | They supplied the BL010101.hex which needs to be programmed at the factory for the ICD to work.[/quote] |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 06 Apr 2006 11:48 Re: Project to replace CY7C64613 in the ICD2 | | | tags: icd2 load hex command |
|
| Silvio,
the BL cannot be upgraded thing was a little trick. Actually MPLAB is set to check the BL's version against 0xFFFF, and if 0xFFFF (it's only a word) is lower than it will try to upgrade the bootloader. So it wont ever get here, because larger number than 0xFFFF cannot be set on a word. So I patched it to skip this test and try to do it, but anyway it's a BUILT IN function in MPLAB! It CAN update the boot image too. I just patched the version check out. But think: it's not accidentaly set to 0xFFFF, they may not want to use this function yet. According to the OS.bin file, if the product version is 0x0010 than it's downloaded all the time. Maybe 0x0010 is the BL's version only, and set to lower when OS will run in it! The OS.bin's version is also checked against 0xFFFF. If it's equals to 0xFFFF it's starts the checking for the BOOT.bin file as I mentoined above.
I'll check how it handles the active check when it complains about "it cannot be upgraded while active".
Another strange thing is if the original bootloader handles the decryption of the OS.bin image, than it will be a nice thing to clone... Anyway there is no processing on the .bin files in the software as I saw.
the DeviceIOControl command returns 0x57: The parameter is incorrect. (ERROR_INVALID_PARAMETER)
If we get the OS.bin downloaded than we can read it back with another icd2 and see how it works.
Albert,
they wont change the 877 firmware. They have a lot of hexs supplied with MPLAB should work with both versions. They may do minor changes, but thats all. Sorry I misunderstood that DPOT thing. The question "Why they supplied the boot image?" I asked was for the 4550_boot.bin file. |
|
| Back to top | |
 |
rkodaira
Joined: 08 Jun 2004 Posts: 332 Helped: 54 Location: Sao Paulo - Brasil
| 06 Apr 2006 14:19 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Hi guys !
Bad news. I could not install the USB monitor in my PC with Windows98SE, because it doesn´t accept to be installed. I think it (if installed) wouldn´t make any damage to my ICD2, but i could not test it.
About the Vpp control, I think that there is only the high voltage generator for Vpp and there is another way to control this voltage. I don´t know if the DG411 has this role, and there is a power mosfet also in the circuit.
I don´t think my clone is the new ICD2 from Microchip. I suppose the local manufacturer only made a clone using more available parts and making some changes in the firmware to adequate the new parts. Sorry I cannot make any attempt to read the 18F4550 contents.
Added after 15 minutes:
One more thing:
I tried to build the PICKIT2 programmer (onlu the basic part: the PIC, crystal and some connections) some weeks ago. It has the schematic and "all" the software available for download in the Microchip pages. I bought some 18F2550 and programmed with the firmware provided. I installed the programmer software and connected the hardware to the USB port. The PC recognized it once but the software did not. I think that there is something missing in the package, that blocks the programmer to communicate with the software. Could be the same case be happening with the hex files provided for the ICD2 ? Or in other words: Microchip does´t provide the complete code for the ICD2. |
|
| Back to top | |
 |
albert22
Joined: 20 Jul 2004 Posts: 95 Helped: 3
| 06 Apr 2006 18:26 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Please Can somebody export to .txt the USB log files captured by HDD monitor? I cannot install this soft at my home. Otherwise Ill have to wait until next week to read them on my PC at work. I am now studying the protocol between the CY and the 877 OS. If they are too big. A connect log, and a program log would be nice. Thanks |
|
| Back to top | |
 |
Kripton2035
Joined: 19 Jul 2001 Posts: 482 Helped: 15 Location: Earth
| 06 Apr 2006 19:31 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| | rkodaira wrote: | Hi guys ! Bad news. I could not install the USB monitor in my PC with Windows98SE, because it doesn´t accept to be installed. I think it (if installed) wouldn´t make any damage to my ICD2, but i could not test it.
|
may be you can try this one : they say it works under w98... http://www.perisoft.net/bushound/
zedman needs a log of a real 4550... my cypress clone doesnt give all he needs... |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 06 Apr 2006 20:14 Project to replace CY7C64613 in the ICD2 | | |
|
| | It can be exported from USBMon to HTML format, but I have only serial ICD2. |
|
| Back to top | |
 |
Brem
Joined: 06 Apr 2006 Posts: 36
| 06 Apr 2006 20:22 Re: Project to replace CY7C64613 in the ICD2 | | | tags: mplab protocol icd2 icd2 load hex command |
|
| Hi group,
Zedman drew my attention to this thread. I find it very interesting.
Last winter my hobby project was to build an ICD clone on a 2455/2550. I used the CDC firmware for RS232 emulation to connect to MPLAB. I disassambled the 877 firmware and made it more readable with a VB program. As far as I can tell the protocol CY<->877 and the protocol RS232<->877 are the same. There are no USB specific things in the 877 firmware.
I'll try to explain what I learned of the protocol.
MPLAB starts a connection by sending a 'Z'. ICD should reply with some kind of version nr in binary: 0x01,0x01,0x03.
Now MPLAB sends a 'V' if it wants to connect to the bootloader, ICD should reply with a 'v' 'U' if it wants to connect to the OS, ICD should reply 'u'
Next is the version of the ICD hardware, this has to be compatible with the old ICD1, so its different from all other commands: MPLAB send '$7F00\r', ICD replies '02' for ICD2
From here on all commands are send in packets in the form: '<', packet len, command, [params], checksum, '>' all items are sent in hex, packet length is including the <>. An example: '<0801C9>', len=8, cmd=1 (GETFIRMWAREVERSION), no params, checksum=0xC9
Reply's to commands are in the same form, except packed in []. Reply to the above example would be: '[0E0102630102]', len=14, cmd=1 (GETFIRMWAREVERSION), param 2.99.1, checksum=0x02.
Large chunks of data are sent in {} packets : {data [,data..], checksum}. For example the write program command: MPLAB: <184300005DC000000120FF>, len 24, cmd=0x43 (WRITEPROGRAM), program size= 0x05DC, start address=0x0120, checksum = 0xFF ICD: [0843CF], len 8, cmd 0x43, checksum 0xCF MPLAB: {FF3FFF3F.....3C} , data data data.., checksum-0x3C ICD: [0843CF], ack cmd 0x43 again
I used the information from this thread to connect my existing program with the real ICD USB Driver. I got so far that I receive the GETFIRMWAREVERSION command, but my response seems not to be understood. It sends the same command again and then hangs (?) . |
|
| Back to top | |
 |
albert22
Joined: 20 Jul 2004 Posts: 95 Helped: 3
| 06 Apr 2006 23:17 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| | Quote: | | It can be exported from USBMon to HTML format, but I have only serial ICD2. | Zedman may be you can open the log files that had been posted here and export them to html. No need to have the USB ICD2.
Brem, Great. I was just at the routines that handle connection with the ICD once the OS is loaded. Thanks. |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 06 Apr 2006 23:29 Re: Project to replace CY7C64613 in the ICD2 | | | tags: mplbcomm.dll |
|
| Hey Brem!
nice to see you here! Thanks for the infos on the protocol.
| Quote: | I used the information from this thread to connect my existing program with the real ICD USB Driver. I got so far that I receive the GETFIRMWAREVERSION command, but my response seems not to be understood. It sends the same command again and then hangs (?) .
|
would you please explain this a bit more? What's that mean you response is not understood? You got an usb packet starting with 0x01, replied it succesfully and just the content was wrong?
Please explain this, because as you can see from the thread Iam stuck with the replying. 
-------------------
Iam now trying an alternate way to **** with the replying thing, I wrote a small program in Delphi to test if the reply works, getting the same results yet but it's faster than switching the programmer in mplab while using it too.
here is the proc (values got from disassembled/debugged MPLBCOMM.dll): | Code: | procedure TForm1.Button1Click(Sender: TObject); var hnd: cardinal; InBuffer: array[0..3] of byte; OutBuffer: array[0..17] of byte; bytesReturned: cardinal; a: integer; begin hnd:=CreateFile('\\.\i3kmc-0', $C0000000, 2, 0, 3, 0, 0);
if hnd <> INVALID_HANDLE_VALUE then begin // get usb descriptor for a:=0 to 3 do InBuffer[a]:=0; for a:=0 to 17 do OutBuffer[a]:=0; bytesReturned:=0; if (DeviceIoControl(hnd, $0A4122404, @InBuffer, 4, @OutBuffer, $12, bytesReturned, nil)) then begin Memo1.Lines.Add('1 OK'); end;
// write command for a:=0 to 3 do InBuffer[a]:=0; for a:=0 to 17 do OutBuffer[a]:=0; bytesReturned:=0; OutBuffer[0]:=3; if (DeviceIoControl(hnd, $0A4122451, @InBuffer, 4, @OutBuffer, $12, bytesReturned, nil)) then begin Memo1.Lines.Add('2 OK'); end;
// get status for a:=0 to 3 do InBuffer[a]:=0; for a:=0 to 17 do OutBuffer[a]:=0; bytesReturned:=0; InBuffer[0]:=7; if (DeviceIoControl(hnd, $0A412244E, @InBuffer, 4, @OutBuffer, 0, bytesReturned, nil)) then begin Memo1.Lines.Add('3 OK'); end; Memo1.Lines.Add('- done.'); end; end;
|
the 3rd DeviceIOControl returns failed.
I can't even remeber how my wife look like... |
|
| Back to top | |
 |
Brem
Joined: 06 Apr 2006 Posts: 36
| 07 Apr 2006 0:31 Re: Project to replace CY7C64613 in the ICD2 | | |
|
| Hi Zedman,
Besides some recognizable data like the 'Z', the 'U' and <0801C9>, I receive packets I don't understand. They are all 18 bytes long, 1st char is 0x00,0x01 or 0x02, 2nd char seems to be some kind of seq.nr, 3rd byte a length.
First packet received is: HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I reply with 8 x 0 DEV->HOST: 00 00 00 00 00 00 00 00 00 Second packet received is: HOST->DEV: 01 C2 01 00 00 00 00 00 00 00 C9 00 00 00 00 00 00 00 Here the first byte 0x01 seems to mean "data incoming", 3rd bytes undicates length. I dont send reply on this packet. Next rcvd is a singe 'Z', I reply with the hardware version HOST->DEV: 5A DEV->HOST: 01 01 03 Next again a packet starting with 0x02, same reply HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DEV->HOST: 00 00 00 00 00 00 00 00 00 then a "data incoming" packet folowed by a 'U', connect to OS HOST-DEV: 01 C2 01 00 00 00 00 00 00 00 C9 00 00 00 00 00 00 00 HOST-DEV: 55 Now MPLAB seems to want 8 bytes so I send a 'u' with 7 zeros DEV->HOST: 75 00 00 00 00 00 00 00
Now comes the tricky part. A packet starting with 0x02 means MPLAB wants data on EP2. HOST-DEV: 02 C3 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DEV-HOST (on EP2!!): 75 DEV-HOST (on EP1): 00 00 00 00 00 00 00 00
And here I get stuck at the moment. MPLAB sends a <0801C9> but my response is ignored. I think from here on the ICD should send all data over EP2. |
|
| Back to top | |
 |
Zedman
Joined: 13 Oct 2003 Posts: 294 Helped: 2
| 07 Apr 2006 10:51 Project to replace CY7C64613 in the ICD2 | | |
|
| Brem,
Iam a lamer. PLEASE TELL ME how do you reply? How the hell does it work for you? What am I missing? If I set up the shared ram with 0s set the Cnt to 8 and set UOWN bit to SIE, MPLAB wont send me ANY more data, and UOWN never get cleared!! But from this I see u managed it to work!!!
HELP ME PLEASE!
| Code: | HOST->DEV: 02 C1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 I reply with 8 x 0 DEV->HOST: 00 00 00 00 00 00 00 00 00
|
|
|
| Back to top | |
 |