|
|
  |
USB, EZ-USB FX2 |
|
|
|
Mar 1 2005, 03:22
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049

|
Цитата(Eugene_P @ Feb 28 2005, 19:36) Это снова я  C CyUSB я не работал. EEPROM что бы зашить - программатор не нужен. Всё делается через USB. Если в EZUSB с этим гемора нет и вся подгрузка кода осуществляется драйвером, то в CyUSB , что бы работали запросы отличные от 0xA0, нужно подгружать код... "This directory contains the 8051 firmware Vend_Ax source code for the Anchor Chips EZ-USB chip. NOTE: The Full Version of Keil Tools is required to build this example. The purpose of this software is to demonstrate how to implement vendor specific commands. The following vendor specific commands are implemented: A0 Anchor Download A2 EEProm Load A3 External Ram Load A4 Set I2C Addr A5 Get IIC Type (1 Byte or 2 Byte EEPROM) A6 Get Chip Rev A8 Renumerate То есть, прогрузив этот код в озу контроллера, ты сможешь поиметь доступ к EEPROM. А на тему не рабочего софта, могу предположить,(кстати чем прогу загружаешь?) что ты не делаешь такие запросы: Код void usb_halt(HANDLE hf,byte half_data) { _VENDOR_REQUEST_IN vreq; vreq.bRequest = 0xA0; vreq.wValue = 0xE600; vreq.wIndex = 0x00; vreq.wLength = 0x01; vreq.bData = half_data; vreq.direction = 0x00; ret = DeviceIoControl (hf, Get_Ctl_Code((0x800)+5,m_buffer,a_any), &vreq, sizeof(VENDOR_REQUEST_IN), NULL, 0, &nbyte, NULL); if(ret==False) { ShowMessage("i8051 halt err.\n"); } } То есть, перед заливкой кода нужно контроллер усыпить, а потом вновь его разбудить.
|
|
|
|
|
Mar 1 2005, 08:26
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-12-04
Пользователь №: 1 501

|
Цитата(Trashy @ Mar 1 2005, 05:22) C CyUSB я не работал. EEPROM что бы зашить - программатор не нужен. Всё делается через USB. Если в EZUSB с этим гемора нет и вся подгрузка кода осуществляется драйвером, то в CyUSB , что бы работали запросы отличные от 0xA0, нужно подгружать код... То есть, перед заливкой кода нужно контроллер усыпить, а потом вновь его разбудить. Фиг с ним, с тем CyUSB. Нет смысла его мне сейчас использовать, я это уже понял. Гружу прошивку с помощью EZ-USB Control Panel. Пробовал посылать запрос, который ты указал. Что-то видать я не так делаю, поскольку ситуация остается неизменной. Кстати, в доках где-то сказано, что Control Panel сам засыпает чип перед загрузкой кода и будит после. Еще вопрос такой: насколько я понял, в evaluation Keil'е мой код должен располагаться с адреса 0x4000 ? Т.е., вне встроенного в чип ОЗУ. Куда в таком случае загружается код ? И где и какие давать указания Кейлу?
|
|
|
|
|
Mar 1 2005, 09:21
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-12-04
Пользователь №: 1 501

|
Так, на свой вопрос отвечаю сам: поменяв в опциях линкера адреса с 4000 на 0 (Code) и на всяк случай 5000 на 2000 (XData), получил требуемый результат: программа грузится с нулевого адреса и даже работает Правда, вижу меандр только на нагруженных выводах порта, на свободных - глухо (лог.0). Почему? Еще надо разобраться, как генерить файл для еепрома, а то чего-то hex2bix никак не выдает мне требуемое.
|
|
|
|
|
Mar 1 2005, 15:01
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049

|
Цитата(Eugene_P @ Mar 1 2005, 12:21) Правда, вижу меандр только на нагруженных выводах порта, на свободных - глухо (лог.0). Почему? Еще надо разобраться, как генерить файл для еепрома, а то чего-то hex2bix никак не выдает мне требуемое. Гы-гы, так с открытым коллектром! Видима какуюто лапу пропустил - не припаял... hex2bin работает из командной строки. Я интеловским пользуюсь. Кстати, разве кейл в начало хекса виды с пидом прописывает? Не знаю, нахрена тебе генератор, там из фара или хиева прописать десять байт, а следом бинарник без изменений воткнуть... Кароче, геморой себе делаешь. Я на асме всё накарябал и не глючился... Там самый геморой не в железе а в софте при работе с дривером. Конечно можно пойтить по пути пользования класса от CyUSB, но изучишь то что тебе в жизни больше не понадобится к тому же, ни хрена изменений внести не сможешь...
|
|
|
|
|
Mar 1 2005, 15:49
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-12-04
Пользователь №: 1 501

|
Цитата(Trashy @ Mar 1 2005, 17:01) Гы-гы, так с открытым коллектром! Видима какуюто лапу пропустил - не припаял... Угу, наверное. Ничего я не увидел в доке про открытый коллектор. Да они и остались незадействованными. Это неважно, главное - работает. Цитата hex2bin работает из командной строки. Я интеловским пользуюсь. Кстати, разве кейл в начало хекса виды с пидом прописывает? Не, не прописывает, поэтому и взял hex2bix. Цитата Не знаю, нахрена тебе генератор, там из фара или хиева прописать десять байт, а следом бинарник без изменений воткнуть... Кароче, геморой себе делаешь. Я на асме всё накарябал и не глючился... Там самый геморой не в железе а в софте при работе с дривером. Конечно можно пойтить по пути пользования класса от CyUSB, но изучишь то что тебе в жизни больше не понадобится к тому же, ни хрена изменений внести не сможешь... Геморрой - согласен, просто хочется разобраться с еепромом до конца. Хотя он мне и не нужен, прошивка все равно льется и будет литься по USB. hex2bix добавляет VID, PID и все остальное. И получается файл для заливки в еепром. Единственное - программа после перезапуска работает, а девайс - не виден. Смотрю по структуре файла - вроде бы все правильно. Где-то уже проскакивала рекомендация использовать драйвер USBIO. По какому пути пойти? Пользовать драйвер от сайпресса или его? В каком софте будут проблемы - в firmware или в прикладной программе?
|
|
|
|
|
Mar 1 2005, 15:58
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049

|
Цитата(Eugene_P @ Mar 1 2005, 18:49) в еепром. Единственное - программа после перезапуска работает, а девайс - не виден. Смотрю по структуре файла - вроде бы все правильно. Первый байт 0xC2, затем младший VID, старший Вид, младший Пид... Ещё рекомендую проверить бит ENUM, так как ты пишешь на сях, то какая-нить "умная" функция может установить его в ненадлежащее состояние. Прямо принудительно выстави в режим "фирмварная обработка запросов"... И посмотри опять в реестре чё происходит, мож low/high где перепутал...
|
|
|
|
|
Mar 1 2005, 17:54
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 4-10-04
Из: Москва
Пользователь №: 789

|
Цитата(Eugene_P @ Mar 1 2005, 18:49) Цитата hex2bin работает из командной строки. Я интеловским пользуюсь. Кстати, разве кейл в начало хекса виды с пидом прописывает? Не, не прописывает, поэтому и взял hex2bix. Цитата Не знаю, нахрена тебе генератор, там из фара или хиева прописать десять байт, а следом бинарник без изменений воткнуть... Кароче, геморой себе делаешь. Я на асме всё накарябал и не глючился... Там самый геморой не в железе а в софте при работе с дривером. Конечно можно пойтить по пути пользования класса от CyUSB, но изучишь то что тебе в жизни больше не понадобится к тому же, ни хрена изменений внести не сможешь... Геморрой - согласен, просто хочется разобраться с еепромом до конца. Хотя он мне и не нужен, прошивка все равно льется и будет литься по USB. hex2bix добавляет VID, PID и все остальное. И получается файл для заливки в еепром. Единственное - программа после перезапуска работает, а девайс - не виден. Смотрю по структуре файла - вроде бы все правильно. Где-то уже проскакивала рекомендация использовать драйвер USBIO. По какому пути пойти? Пользовать драйвер от сайпресса или его? В каком софте будут проблемы - в firmware или в прикладной программе? Отвечу по порядку: Для того чтобы программа грузилось из EEPROM нужно только: KEIL, Control Panel. Всё работает прекрасно и никаких гвоздей. hex2bix не добавляет никаких VID и PID(откуда ему о них знать), а просто генерит бинарник. VID и PID и всё остальное что относиться к особенностям программирования должно содержаться в файлах: USBJmpTb.OBJ и EzUSB.LIB. Драйвер CyUSB нужен для тогочтобы небыло лишнего гемороя при передачи данных на высоких скоростях, иначе можете юзать HID интерфейс и будет вам счастье. Если вы пишете программу, где одновременно с приемом/передачей данных будет происходить их обработка , то вам может понадобиться многопоточное программирование, а у Cypress уже есть загатовка для этого. Лично мне хватило CyUSB.sys поэтому насчёт USBIO даже незаморачивался.
|
|
|
|
|
Mar 2 2005, 10:05
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-12-04
Пользователь №: 1 501

|
Цитата(левша @ Mar 1 2005, 19:54) Отвечу по порядку: Для того чтобы программа грузилось из EEPROM нужно только: KEIL, Control Panel. Всё работает прекрасно и никаких гвоздей. hex2bix не добавляет никаких VID и PID(откуда ему о них знать), а просто генерит бинарник. VID и PID и всё остальное что относиться к особенностям программирования должно содержаться в файлах: USBJmpTb.OBJ и EzUSB.LIB. Правильно, генерит читый бинарник, но я еще делаю так: hex2bix.exe -I -F 194 -P 34323 -V 1204 -C 0 Test.hex Trashy все верно сказал, дело в бите ENUM. Пока мой firmware не обрабатывает USB запросы, пусть этим занимается дефолтное устройство. Кто мне этот бит устанавливал, я правда не понял.  Но теперь кристалл работает с прошивкой в еепроме и видится контрол-панелью. Цитата Драйвер CyUSB нужен для тогочтобы небыло лишнего гемороя при передачи данных на высоких скоростях, иначе можете юзать HID интерфейс и будет вам счастье. Если вы пишете программу, где одновременно с приемом/передачей данных будет происходить их обработка , то вам может понадобиться многопоточное программирование, а у Cypress уже есть загатовка для этого. Лично мне хватило CyUSB.sys поэтому насчёт USBIO даже заморачивался. Спасибо за совет. Да, конечно, будет обработка. Не буду пока исключать CyUSB из своих планов. Ну что, ни у кого нет что-ли кряка на кейл?
|
|
|
|
|
Mar 2 2005, 10:15
|
Частый гость
 
Группа: Свой
Сообщений: 121
Регистрация: 19-01-05
Пользователь №: 2 049

|
Цитата(Eugene_P @ Mar 2 2005, 13:05) Пока мой firmware не обрабатывает USB запросы, пусть этим занимается дефолтное устройство. А зачем эти запросы обрабатывать софтварно? Если конечно не собираешься масссторадж писать...
|
|
|
|
|
Mar 2 2005, 14:30
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-12-04
Пользователь №: 1 501

|
Цитата(Trashy @ Mar 2 2005, 12:13) Кряка? Это что такое? Вообсче, это называют "лекарством" и ищут его на телесистемах. Вообщето у меня есть. Но нада переться через всё здание в другой отдел... Сегодня я уже не пойду. Набери в гугле "Keil лекарство" и будет тебе счастье. Нет счастья...  Не один час уже потратил на поиски. Вышли, пожалуйста, на evgen(at)zfs.lg.ua На ту версию, которая идет в составе EZ-USB Dev. Tools. Или со ссылкой на версию, на которую есть кряк
|
|
|
|
|
Mar 2 2005, 18:00
|
Частый гость
 
Группа: Свой
Сообщений: 151
Регистрация: 4-10-04
Из: Москва
Пользователь №: 789

|
Цитата(Eugene_P @ Mar 2 2005, 17:30) Нет счастья...  Не один час уже потратил на поиски. Вышли, пожалуйста, на evgen(at)zfs.lg.ua На ту версию, которая идет в составе EZ-USB Dev. Tools. Или со ссылкой на версию, на которую есть кряк Вообщето это оффтоп, но отвечу здесь. А какой для какой версии Keilа тебе кряк нужен? У меня есть но для старой 7й версии Keil С51. P.S. просьба модераторам не казнить и миловать а просто перенести это обсуждение в отдельную тему.
|
|
|
|
|
Mar 2 2005, 19:25
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 16-12-04
Пользователь №: 1 501

|
Цитата(левша @ Mar 2 2005, 20:00) Вообщето это оффтоп, но отвечу здесь. А какой для какой версии Keilа тебе кряк нужен? У меня есть но для старой 7й версии Keil С51. Насколько я понимаю, нужно снять ограничение размера кода, это наверное C51.exe и A51.exe - V6.10 Стартовый адрес - с 0x0000, это BL51.exe - V4.03 сам uVision - V2.10
|
|
|
|
|
Mar 2 2005, 20:17
|
Местный
  
Группа: Свой
Сообщений: 342
Регистрация: 21-02-05
Пользователь №: 2 804

|
Chego-to mne kazetsya, chto gruzit' proshivku v EEPROM dlya togo, chtobi ona potom sama podimalas' pri vklyuchenii device ne tak prosto. Kogda ya zanimalsya etoy problemoy, to prishlos' napisat' spetsial'nuyu programmu formatirovschik  Vozmozno kontrol'naya panel' beret na sebya vse eti hlopoti po pravil'nomu formatirovaniyu bin-file i vse rabotaet i tak. Softwerno obrabativat' zaprosi nado esli hochetsya ispol'zovat' EZ USB kak normal'noe USB ustroystvo i upravlyat' im. Driver k EZ USB nado pisat' svoy kogda s nego nado poluchit' prilichnuyu skorost' s USB. Standartniy driver moget prokachat' poryadka 30MB/s, samopisniy - 43-45MB/s - no eto uze ekstremal'noe programmirovanie
--------------------
WBR, V. Mirgorodsky
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|