|
cy7c68013 и EEPROM, как очистить |
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 44)
|
Mar 1 2006, 10:12
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

|
Чем файл для еепром создаеш ?
Вот кусок кода для стирания
/****************************************************************************** * == EEPROMWrite == * * PARAMETERS: addr- адресс в EEPROM; value - значение * DESCRIPTION: Записыывает байт в EEPROM * RETURNS: none * * MODIFIED: * DATE: 16.07.2005 ******************************************************************************/ void EEPROMWriteByte(WORD addr, BYTE value) { BYTE i = 0; BYTE xdata ee_str[3]; if(DB_Addr)ee_str[i++] = MSB(addr); ee_str[i++] = LSB(addr); ee_str[i++] = value; EZUSB_WriteI2C(I2C_Addr, i, ee_str); EZUSB_WaitForEEPROMWrite(I2C_Addr); } /****************************************************************************** * == EEPROMWrite == * * PARAMETERS: addr- начальный адресс в EEPROM; length - длинна буфера; buf - указатель нга буффер * DESCRIPTION: Записывает в EEPROM данные из буфера * RETURNS: * * MODIFIED: * DATE: 16.07.2005 ******************************************************************************/ void EEPROMWrite(WORD addr, BYTE length, BYTE xdata *buf) { unsigned char i; for(i=0;i<length;++i) EEPROMWriteByte(addr++,buf[i]); } /****************************************************************************** * == EEPROMRead == * * PARAMETERS: addr- начальный адресс в EEPROM; length - длинна буфера; buf - указатель нга буфер * DESCRIPTION: читает в буфер данные из EEPROM * RETURNS: none * * MODIFIED: * DATE: 16.07.2005 ******************************************************************************/ void EEPROMRead(unsigned int addr, unsigned int length, unsigned char xdata *buf) { unsigned char i = 0; unsigned char j = 0; unsigned char xdata ee_str[2]; if(DB_Addr) ee_str[i++] = MSB(addr); ee_str[i++] = LSB(addr); EZUSB_WriteI2C(I2C_Addr, i, ee_str); EZUSB_ReadI2C(I2C_Addr, length, buf); }
это кудато вставиш
for (i=0;i<16;i++) EEPROMWriteByte(i,0xFF); //записывает в первые 16 адресов значение 0xFF
|
|
|
|
|
Mar 15 2006, 04:43
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 4-10-04
Из: Москва
Пользователь №: 789

|
Цитата(torik @ Mar 3 2006, 13:42)  Все тогда работает.............Но где можно про все это почитать, а? В описание по Keil, которое поставляется вместе с отладочным комплектом. Цитата(MALLOY2 @ Mar 1 2006, 14:55)  НЕ подскажу так как эти сам неуогда непользовался у меня прога с компа всегда загружается, фича такая в дрова встроенная(дрова сами делали т.к. у ципреса олни глючные). Сильное заявление. А в чём глюк интересно? У меня вроде всё боле мене, может я чего не заметил. Использую CyUSB.sys и библиотеку под Borland C+.
Сообщение отредактировал левша - Mar 15 2006, 04:47
|
|
|
|
|
May 7 2009, 21:35
|
Группа: Новичок
Сообщений: 14
Регистрация: 21-10-07
Пользователь №: 31 567

|
Помогите разобратся ! У меня на плате CY768013A-128, АТмега-64,ПЛИСИна,АЦП.CY768013A-128 используется в режиме GPIF.Прошивка CY768013A-128 нормально заливается Сайпросовской консолью и работает.Но я хочу грузить прошивку из АТмега-64, при включении питания ,дальше Атмега по своему плану.Делаю файл *.iic с помощью утилиты hex2bix,заношу его в АТмегу,при повторном включении питания шиш, прошивка не работает ,подхватываются стандартный для CY768013A-128 VID и PID!Просто VID и PID с АТмеги грузятся без проблем.Подскажите что может быть? Я понимаю, что вариантов много но все-таки!? Тему внимательно прчитал, при формировании *.iic делал все как советовали!http://electronix.ru/forum/style_emoticons/default/crying.gif
|
|
|
|
|
May 8 2009, 02:46
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(Glitko @ May 8 2009, 07:05)  Прошивка CY768013A-128 нормально заливается Сайпросовской консолью и работает.Но я хочу грузить прошивку из АТмега-64, при включении питания ,дальше Атмега по своему плану.Делаю файл *.iic с помощью утилиты hex2bix,заношу его в АТмегу,при повторном включении питания шиш, прошивка не работает ,подхватываются стандартный для CY768013A-128 VID и PID! Непонятно про какую прошивку вы говорите. Если речь о фирмваре CY768013A, то совсем непонятно, каким образом вы ее пытаетесь грузить из Атмеги в CY768013A. Как известно, фирмварь в CY768013A при подаче питания или после сброса может грузиться двумя способами: - если в I2C EEPROM, пристегнутом к CY768013A , есть специальные метки, описанные в доке на CY768013A, то проц всасывает фирмварь из I2C EEPROM - если меток нет, то проц всасывает фирмварь через USB, а из I2C EEPROM берет только дескрипторы USB, и то, если они там есть. А если I2C EEPROM вообще нет, то CY768013A по умолчанию использует дескрипторы Сайпреса, зашитые в кремень CY768013A. Каким боком сюда Атмега приткнулась - ума не приложу.
|
|
|
|
|
May 8 2009, 15:11
|
Группа: Новичок
Сообщений: 14
Регистрация: 21-10-07
Пользователь №: 31 567

|
Цитата(=AK= @ May 8 2009, 05:46)  Непонятно про какую прошивку вы говорите. Если речь о фирмваре CY768013A, то совсем непонятно, каким образом вы ее пытаетесь грузить из Атмеги в CY768013A.
Как известно, фирмварь в CY768013A при подаче питания или после сброса может грузиться двумя способами: - если в I2C EEPROM, пристегнутом к CY768013A , есть специальные метки, описанные в доке на CY768013A, то проц всасывает фирмварь из I2C EEPROM - если меток нет, то проц всасывает фирмварь через USB, а из I2C EEPROM берет только дескрипторы USB, и то, если они там есть. А если I2C EEPROM вообще нет, то CY768013A по умолчанию использует дескрипторы Сайпреса, зашитые в кремень CY768013A.
Каким боком сюда Атмега приткнулась - ума не приложу. Очень даже понятно!Возможно Вы не знаете но у АТмеги есть порт I2C и она вполне может притворятся загрузочной EEPROM.Так как АТмега полюбому используется в проекте то логично было бы использовать ее ресурсы для загрузки файла *.iic в CY768013A хотябы для того что бы не ставить лишние микросхемы в плату. На счет специальных меток и тд...Вы ,что думаете я бы стал задавать свой вопрос не разобравшись ,что и как грузится в CY768013A? У меня проблема с загрузкой *.iic не потому что он не выгружается в CY768013A из Атмеги ,а потому что загруженная прошивка в CY768013A не работает,возможно неправильно формируется из хекса,возможно что то другое.Может кто сталкивался с подобной проблемой? Или обьясните подробно какие у кого были проблемы с формированием файла *.iic!
|
|
|
|
|
May 9 2009, 04:02
|
Группа: Новичок
Сообщений: 14
Регистрация: 21-10-07
Пользователь №: 31 567

|
Цитата(=AK= @ May 9 2009, 03:12)  Тогда вопрос в том, насколько хорошо она "притворяется" EEPROM-ом.
Например, пока Атмега стартует и настраивает свой I2C порт, FX2 уже успевает посмотреть, есть ли EEPROM, не обнаруживает ее и работает с PID VID ро умолчанию. Чтобы избежать этого, Атмега до поры должна держать FX2 в ресете. Это врядли.Ведь простая загрузка своих PID VID при адресации 0х0С с Атмеги осуществляется без проблем ,значит инициализация I2C у Атмеги проходит достаточно быстро.Хотя я это конечно проверю ,возможно при возростании размера кода залитого в Атмегу меняется и время инициализации..Какие еще варианты?
|
|
|
|
|
May 9 2009, 10:05
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(Glitko @ May 9 2009, 13:32)  Какие еще варианты? Еще один очевидный вариант - хэндшейк. Настоящий EEPROM выдает все байты без задержек. А Атмега, симулирующая EEPROM, наверняка неспособна обеспечить выдачу массива со скоростью 400 кбит/сек. Сколько-то первых байт, сидящих в буфере, она выдаст без задержки, а потом начнет тормозить. И вовсе не факт, что FX2 согласится ждать пока Атмега тормозит. Надо посмотреть доку, будет ли FX2 ждать, если Атмега начнет тормозить I2C, задерживая SCL. А также посмотреть, задерживает ли Атмега выдачу SCL, пока подкачивает данные в свои I2C буфера.
|
|
|
|
|
May 9 2009, 20:39
|
Группа: Новичок
Сообщений: 14
Регистрация: 21-10-07
Пользователь №: 31 567

|
Цитата(=AK= @ May 9 2009, 13:05)  Еще один очевидный вариант - хэндшейк. Настоящий EEPROM выдает все байты без задержек. А Атмега, симулирующая EEPROM, наверняка неспособна обеспечить выдачу массива со скоростью 400 кбит/сек. Сколько-то первых байт, сидящих в буфере, она выдаст без задержки, а потом начнет тормозить. И вовсе не факт, что FX2 согласится ждать пока Атмега тормозит. Надо посмотреть доку, будет ли FX2 ждать, если Атмега начнет тормозить I2C, задерживая SCL. А также посмотреть, задерживает ли Атмега выдачу SCL, пока подкачивает данные в свои I2C буфера. Онозначно нет.Выдача масива 100 кбит\сек что является скоростью по умолчанию в cy7c68013.Вы меня проверяете?Конечно Атмега способна выдавать и 400 кбит\сек без всяких проблем но такая скорость не предусмотрена в cy7c68013 .Для этого надо изменить EEPROM Configuration ByteIf "400KHZ=0, the I²C-compatible bus operates at approximately 100 KHz. If 400KHZ=1, the I²C-compatible bus operates at approximately 400 KHz. This bit is copied to I²CCTL.0, whose default value is 0, or “100 KHz”. Once the CPU is running, firmware can modify this bit"
|
|
|
|
|
May 10 2009, 05:03
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Бодовая скорость сама по себе не так уж важна. Важнее насколько быстро Атмега будет успевать класть очередной байт в буфер I2C, а также важен хэндшейк, который приостановит FX2 в те моменты, когда очередной байт еще не готов. Не знаю как устроен блок I2C в Атмеге, но думаю, что вряд ли он использует ПДП или напрямую маппится на двухпортовую память, это маловероятно. Скорей всего вы подгружаете байты в его буфер программно, или в поллинге, или - что более вероятно - в прерывании. В любом случае другие процедуры обработки прерываний могут тормозить перекачку на неизвестно какое время. Легче всего проблема решается если Атмега будет придерживать I2C пока очередной байт не готов. Альтернативно можно постараться обеспечить высший приоритет прерывaнию I2C в Атмеге, чтобы эта процедура обработки могла прерывать другие прерывания. Или отрубить Атмеге все прерывания кроме I2C, пока FX2 не загрузится.
|
|
|
|
|
Sep 22 2010, 18:05
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(_Макс @ Sep 22 2010, 19:16)  Ребята, как это чудо вообще прошивать?... У Cypress есть две утилиты с помощью которых можно программировать микросхему EEPROM, подключенную к FX2LP: - CyConsole ("CyConsole.exe") входит в состав CY3684 EZ-USB FX2LP Development Kit (скачайте и установите SETUP_FX2LP_DVK_1004.exe), а также в состав "SuiteUSB 3.4";
- Control Center ("CyControl.exe") - входит в состав "SuiteUSB 3.4".
Для Вас будет более полезен подфорум RS232/LPT/USB/PCMCIA/FireWire. В нем больше тем, посвященных вопросам использования контроллера FX2LP.
|
|
|
|
|
Aug 13 2016, 07:58
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Serg_Sm @ Aug 12 2016, 12:54)  Подскажите, так можно ли очистить EEPROM без прямого доступа к ней. Т.е. есть закрытый прибор на FX2, в нем доступ возможен только к USB порту. Нет конечно. Если только сама прошивка, находящаяся в EEPROM, не позволяет этого. Цитата(Serg_Sm @ Aug 12 2016, 12:54)  Прошивка убита - при подсоединению к компу определяется как неизвестное устройство (VID/PID = 0). Насколько помню: если в EEPROM нет прошивки или она невалидна, то сабж должен переходить в режим загрузки прошивки по USB.
|
|
|
|
|
Aug 15 2016, 09:26
|
Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167

|
Цитата(jcxz @ Aug 13 2016, 10:58)  Насколько помню: если в EEPROM нет прошивки или она невалидна, то сабж должен переходить в режим загрузки прошивки по USB. И как определяется её невалидность? Грубо говоря при обновлении прошивки вместо 16Кб данных записалось только 8, после этого работоспособность была утеряна (хотя до этого родная прошивка слетела по непонятным причинам).
|
|
|
|
|
Aug 15 2016, 11:39
|
Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167

|
Цитата(jcxz @ Aug 15 2016, 13:55)  Очевидно, что это описано в документации. Помнится там должен быть какой-то заголовок. Если только по первому байту, то про 0xC0, 0xC2 - это понятно. Сейчас там 0xC2 - загрузка из EEPROM. Просто здесь на форуме описывали чудесную программу CyConsole, с помощью которой можно перепрошивать FX2 и которая лучше EzMr (я ей всё прошивал). Вот я и интересуюсь.
|
|
|
|
|
Aug 18 2016, 08:17
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Serg_Sm @ Aug 18 2016, 13:01)  Связался с техподдержкой по нерабочему прибору - ответили, есть всё-таки SCL/SDA на внешнем разъёме. Алгоритм действий прислали - отключаете прибор, перемычку SDA к земле, подключаете к компу, перемычку убираете и шьёте нашей утилитой. Попробовал, не работает)) Посмотрел осциллографом - как только перемычка убирается (хоть через 10 секунд, хоть через минуту) сразу идет 500мс загрузка с EEPROM (судя по всему), т.е. сброса контроллера не происходит. Так как его правильно сбросить? Там скорей всего встроенный ROM-загрузчик непрерывно сканирует все источники загрузки (USB, EEPROM, ...) откуда можно загрузиться и грузит с того, которое первое ответит. Я помню делал так (когда в EEPROM почему-либо оказывалось нерабочее ПО, которое блокировало загрузку по USB и при этом само не работало): отключал SCL перемычкой (у нас была на плате) от EEPROM, грузил по USB прошивальщик в CY7C68013, возвращал перемычку на место, шил рабочую прошивку в EEPROM через загруженный прошивальщик. Прошивальщик можно написать отдельный (а может он даже есть у Cypress), но у нас он входил в состав рабочего firmware. Собственно я им самим его самого и шил в EEPROM. Посмотрите - может в составе примеров или Cypress Suite есть такой прошивальщик. Я уже плохо помню, так как работал с CY7C68013 несколько лет назад.
|
|
|
|
|
Aug 18 2016, 08:40
|
Частый гость
 
Группа: Свой
Сообщений: 134
Регистрация: 9-11-12
Из: г. Брянск
Пользователь №: 74 311

|
Цитата(Serg_Sm @ Aug 18 2016, 10:01)  Связался с техподдержкой по нерабочему прибору - ответили, есть всё-таки SCL/SDA на внешнем разъёме. Алгоритм действий прислали - отключаете прибор, перемычку SDA к земле, подключаете к компу, перемычку убираете и шьёте нашей утилитой. Попробовал, не работает)) Посмотрел осциллографом - как только перемычка убирается (хоть через 10 секунд, хоть через минуту) сразу идет 500мс загрузка с EEPROM (судя по всему), т.е. сброса контроллера не происходит. Так как его правильно сбросить? Мы для таких случаев специально делали перемычку на линии SDA, и не к земле, а разрывали саму SDA между EEPROM и контроллером. Сколько раз эта перемычка выручала. Может быть, если просто притянуть к земле, контроллер воспринимает это как неготовность EEPROM и намертво зависает ожидании. Он выставляет на линию 1, а там всегда 0. Как только вы убираете перемычку, он это дело тут же прочухивает и загружает битую прошивку. Попробуйте разорвать саму линию SDA, если это возможно, должно гарантированно сработать.
|
|
|
|
|
Aug 18 2016, 11:29
|
Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 10-10-06
Из: Смоленск
Пользователь №: 21 167

|
Цитата(dima32rus @ Aug 18 2016, 11:40)  Мы для таких случаев специально делали перемычку на линии SDA, и не к земле, а разрывали саму SDA между EEPROM и контроллером. Сколько раз эта перемычка выручала. Может быть, если просто притянуть к земле, контроллер воспринимает это как неготовность EEPROM и намертво зависает ожидании. Он выставляет на линию 1, а там всегда 0. Как только вы убираете перемычку, он это дело тут же прочухивает и загружает битую прошивку. Попробуйте разорвать саму линию SDA, если это возможно, должно гарантированно сработать. SDA разрывать как-то не красиво, достаточно изменить адрес. Т.е. ножку адреса микросхемы EEPROM соединить перемычкой с землей (в боевом режиме подтяжка к 3.3В). В моем случае физически не было возможности до платы добраться, чтобы что-нибудь разорвать. Ещё вариант (если есть доступ только к SCL/SDA) и если защита от записи EEPROM управляется контроллером (по умолчанию т.е. прошить не получится) - подсоединить параллельно внутренней EEPROM внешнюю с таким же адресом, но с зашитыми "0". По идее одновременный доступ к шине 2 EEPROM считаются "0", соответственно загрузка по I2C будет отменена.
|
|
|
|
|
Aug 18 2016, 12:10
|
Частый гость
 
Группа: Свой
Сообщений: 134
Регистрация: 9-11-12
Из: г. Брянск
Пользователь №: 74 311

|
Цитата(Serg_Sm @ Aug 18 2016, 14:29)  SDA разрывать как-то не красиво, достаточно изменить адрес. Т.е. ножку адреса микросхемы EEPROM соединить перемычкой с землей (в боевом режиме подтяжка к 3.3В). В моем случае физически не было возможности до платы добраться, чтобы что-нибудь разорвать. У нас эта перемычка на SDA закладывалась сразу при проектировании платы. С адресом тоже способ интересный, возможно, что при отсутствии заранее предусмотренного джампера на SDA это было бы лучшим вариантом.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|