Перейти к содержанию
    

Всем привет!

Пока программу писал, прогу заливал не в еепром, а прямо в ОЗУ (использую отладочный комплект). Теперь хочу записать программу в еепром 64 кБайт. Возникла проблема - однажды я туда уже записывал прогу и все работало. После того как записал по новой - не работает, неизвестное устройство и все.

 

Может надо сперва стереть епром. Как это сделать? И какие еще могут быть камни тут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

Стерается еепром очень просто, пишется программа которая ее стерает и записывается в озу.

 

А камни следующие могут быть не правельный VID/PID, не правельный формат EEPROM, не работает программа, не правельный тип EEPROM.

 

 

И еще, програма которая стартует из EPPROM должна быть переконвертина в загурузочный формат, тоесть смысл в том что если взять программу и тупо записать в еепром то она естестно работать не будет

Изменено пользователем MALLOY2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Енто вот:

- прога работает когда в ОЗУ пишу

- види и пид теже само сабой

- компилирую ясен фиг и создаю файл для записи именно вепромм - не хекс же заливаю.

 

А если не стирать, а перезаписывать - то не должно быть проблем?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блин - еще, как поглядеть какие вункции есть в библиотеке ezusb.lib? Чото я так быстро сообразить как стереть епромку программно не соображу

Изменено пользователем torik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

Чем файл для еепром создаеш ?

 

Вот кусок кода для стирания

 

 

 

/******************************************************************************

* == 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);

}

/******************************************************************************

* == 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файл создаю в компиляторе опцией

c:\cypress\usb\bin\hex2bix -i -f 0xC2 -o bulkext.iic bulkext.hex

 

Пробовал залить тот который уже работал раньше - уже не хочет

 

Гы))) Появляется неизвестное устройство - хотю ему драйвер поставить, указываю инфу CyUsb.inf. Он говорит нет тут сведений. А монитором смотрю - процедуру перенумерации не прошел пишет. Этот драйвер устанавливал, когда в ОЗУ заливал - все работало............... Чо бы это было?

Изменено пользователем torik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. надо ее всю очистить? Как очистить фрагмент - ясно - записывать нули, но скакого по какой адрес?

Адресация то в пределах байта, анадо 64 кБайт стереть

Изменено пользователем torik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

адресация вобщето WORD, но это не столь важно главное стереть первых 8 байт там хранится VID/PID и признак загрузки с еепром.

 

 

Да и еще ты утилитой не правельно пользуешся, там еще надо задать VID/PID и опции

Изменено пользователем MALLOY2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, как задать правильно опции? Раньше я делал с таукими опциями и все было нормуль. Правда ща я перешел на кейл 8.01. А обязательно стирать то первые 8 байт? он их разве не перепишет сам?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

НЕ подскажу так как эти сам неуогда непользовался у меня прога с компа всегда загружается, фича такая в дрова встроенная(дрова сами делали т.к. у ципреса олни глючные).

 

НЕ перепишет так как вы даже в ОЗУ ничего залить не можете потомучто драйфер девайс найти не может, так как по включению вычитывает из еепром мусор. Выход выпаять память и стереть программатором. Вариань 2 поднять ногу DATA залить в ОЗУ прогу программу стирания, НЕ ОТКЛЮЧАЯ питания припаять ногу DATA на место и дать команду стереть но это вы делаете на свой страх и риск.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо, попробую стереть. Но всеже мы не совсем друг друга поняли - мне не надо ничего паять чтобы записать прогу в ОЗУ - на демоплате можно отключить и епром переключателем, а программера нету 8(((.

 

Я думал, что когда с помощью отладочного комплекта заливаю программу в еепром - она должна как бы обновиться, разве нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость MALLOY2

Должна и будет, но если формат не правельный или ошибку в PID/VID скажем сделаеш то это равносильно пилить ветку подсобой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит я неправильно откорректировал файл CyUsb.inf

Скажите как его прально откоректировать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...