Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: avreal
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
acorn
Цитата(Арк К @ Dec 28 2009, 15:44) *
внутреннего такта FT232R может быть слишком много по частоте

Недавно столкнулся с проблемой: выдаваемый FT232R клок 12MHz был необходим для тактирования MCU. В плате был разведен один из CBUS выводов FT232R в надежде вывести нужный сигнал на нужную лапку с помощью переконфигурации EEPROM, как оно в доке и обещалось.
По факту вывести этот клок удалось только на одном выводе (CBUS3 вроде) при любых вариантах конфигурации, т.е. либо CBUS3, либо нигде.
Поделка разовая, вспомогательная, так что разбираться в причинах не стал, порезал дорожки, но запомнилось.
Сергей Борщ
Цитата(acorn @ Dec 28 2009, 22:56) *
По факту вывести этот клок удалось только на одном выводе (CBUS3 вроде) при любых вариантах конфигурации, т.е. либо CBUS3, либо нигде.
Выводил на CBUS2, работало. Но проблема была с тактированием процессора от этого сигнала. Предполагаю, что при инициализации FT232R этот сигнал генерится с более высокой частотой, чем указана в конфигурации. У меня процессор с ума сходил - пропускал некоторые команды в стартап-коде. Пришлось на процессор кварц повесить. Цифрового осциллографа не было, убедиться в правильности гипотезы не мог. Но кварц на процессоре снял проблему.
acorn
Цитата(Сергей Борщ @ Dec 29 2009, 13:18) *
Выводил на CBUS2, работало. Но проблема была с тактированием процессора от этого сигнала.

С номером CBUS могу и ошибаться, сейчас лень по плате смотреть, от которого я клок в конце концов взял, но описанной проблемы не встретил. Устройство это есть и работает (в единственном экземпляре, правда), пользуюсь постоянно, глюки, думаю, заметил-бы. Процессор там atmega162-16 с питанием от USB и клоком от FTDI, кварца нет.
ReAl
Вышла новая версия avreal - частично вобрала в себя не дошедшую до релиза 1.27r5, частично новое.

v1.28r0 (Wed 2010-01-20)
  • Для выдачи списка подключенных устройств FTDI по -aft2232 -p? уже не нужно указывать хоть какой-то микроконтроллер.
  • Добавлены tiny2313A, tiny4313.
  • Ключ -az для FT2232 оставляет микросхему в режиме MPSSE с выводами программирования, переключенными на вход.
  • Для конфигурируемого LPT-адаптера добавлены группы сигналов led_ok, led_error.
  • Для FT2232-адаптеров поддерживаютя все типы сигналов в конфигурационном файле, включая новые led_ok, led_error.
  • Сигнал enable для FT2232 обрабатывается так же, как и для LPT, необходимо указывать инверсию для формирователей с активным низким входом разрешения.
  • Выдача информации производится без буферизации и при перенаправлении вывода, чтобы при перехвате в IDE было постянное обновление.
  • Игнорируются строки данных HEX-файла с нулевым полем длины (нашёлся компилятор, который спорадически их формирует).
  • Убран ключ -ar, теперь для инверсии сигнала RESET нужно создать соответствующий конфигурационный файл

Цитата(ReAl @ Dec 11 2009, 14:15) *
Как уже сказано, переназначать ноги, равно как и поднять тактирование XTAL1 в режиме MPSSE нельзя - это конкретный "аппаратный" режим микросхемы и поменять ничего не получится.
Ну, кроме инверсии. Инверсия допускается, т.е. указать sck=~adbus0 теперь можно, а вот sck=adbus6 нельзя.

Цитата(ReAl @ Dec 11 2009, 14:15) *
Тут бяка вылезла. Точнее, заметил я это давно и, кажется, где-то об этом уже писал. Но вот только сейчас руки дошли.
Дело в том, что для конфигурирования адаптеров на LPT по умолчанию сигнал enable считется активным высоким уровнем (аналогично mosi/sck/set/power)
...
А для FT2232 - указывается только нога и считается, что разрешение низким уровнем.
И если вдруг кто-то поставит буферы 74HC126 с разрешением "1"-кой - придётся писать на разрешении инверсию.
Что непорядок, так как поведение противоположно LPT.
Поэтому и версия поменялась, не 1.27r5 а 1.28r0 - теперь надо подредактировать существующие батники/конфиги/..., поставив инверсии перед выводом для сигнала enable.
ReAl
Вышла новая версия avreal.

v1.28r1 (Sun 2010-01-31)
  • Добавлено поддержку FT2232H, FT4232H с возможностью использовать для программирования оба канала с MPSSE.
  • Добавлен ключ -k для ожидания нажатия кнопки на адаптере программирования и соответствующую конфигурационную запись key.
  • Добавлена модификация ключа -os для задания частоты SCK, а не частоты тактирования микроконтроллера.

FT2232C/L/D позволяют задать частоты от 6МГц и ниже путём деления этих 6МГц на целое число. Т.е. реально для AVR можно выставить не выше 3.
FT2232H с повышенной базовой частотой вообще лапочка - позволяет получить сетку 30/N и приподнять частоту программирования для тактируемых 16..20MHz AVR-ок, а со своими двумя каналами - шить в два ручья.
_pv
В 64х разрядной dlportio.dll отсутствует функция DlPortWritePortBufferUchar, есть только DlPortWritePortUchar.
нельзя ли поправить так чтобы использовалась DlPortWritePortUchar если не найдена DlPortWritePortBufferUchar?
ReAl
Цитата(_pv @ Feb 7 2010, 15:26) *
В 64х разрядной dlportio.dll отсутствует функция DlPortWritePortBufferUchar, есть только DlPortWritePortUchar.
нельзя ли поправить так чтобы использовалась DlPortWritePortUchar если не найдена DlPortWritePortBufferUchar?
Ткните пальцем в 64-битную dlportio, а то у авторов лежит только та старая.

Поправить можно, как и прикрутить любую другую, которая работает под 64-битными ОС.
_pv
Цитата(ReAl @ Feb 7 2010, 23:24) *
Ткните пальцем в 64-битную dlportio, а то у авторов лежит только та старая.

нашел здесь: http://ponyprog.sourceforge.net/phorum/read.php?2,501
Только, это похоже не dlportio, a inpout32 ( http://www.highrez.co.uk/Downloads/InpOut32/default.htm ), в который добавлены DlPortWritePort функции для совместимости с dlport, однако нет DlPortWritePortBuffer.
Там, кстати, есть исходники этой дллки, я туда добавил требуемые функции, собрал, вроде всё заработало.

единственная проблема в том что почему-то работает 1 раз из 10. почти всегда просто выходит ничего не сделав:

Код
>avreal32-1.28r1.exe -% -ab -p1 +mega48 -e

avreal/WIN32  -  AVR controllers LPT programmer by Redchuk Alexandr
v1.28r1 (Jan 31 2010 16:43:36)  http://real.kiev.ua/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua
Command:
  -% -ab -p1 +mega48 -e
        % LPT port number 1
        % LPT base address 0x378
        % DLportIO.dll succesfully loaded, DLportIO.sys interface activated
        % LPT write cycle 0.000000ns
        % ByteBlasterMV found
        % ByteBlaster adapter mode


и все, на этом выходит.
иногда, но уж совсем редко еще добавляет Can't allocate memory.

но иногда все-таки работает (правда ничего к нему в тот момент не было подключено, но все вроде нормально, ножками дергает):

Код
avreal32-1.28r1.exe -% -ab -p1 +mega48 -e

avreal/WIN32  -  AVR controllers LPT programmer by Redchuk Alexandr
v1.28r1 (Jan 31 2010 16:43:36)  http://real.kiev.ua/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua
Command:
  -% -ab -p1 +mega48 -e
        % LPT port number 1
        % LPT base address 0x378
        % DLportIO.dll succesfully loaded, DLportIO.sys interface activated
        % LPT write cycle 2.91ns
        % ByteBlasterMV found
        % ByteBlaster adapter mode
        % MCU oscillator frequency = 0.80MHz
        % setup 2.63us, hold 2.63us
        % actual SCK frequency 190kHz
Adapter enabled
        % Reset
        % PgmOn reply  FF FF FF FF
        % Try 1 to resync by reset pulse        % PgmOn reply  FF FF FF FF
        % Try 2 to resync by reset pulse        % PgmOn reply  FF FF FF FF
        % Try 3 to resync by reset pulse        % PgmOn reply  FF FF FF FF
        % Try 4 to resync by reset pulse        % PgmOn reply  FF FF FF FF
Can't resync

Reset pin released
Adapter disabled


Да, с avreal 1.26 все работает отлично.
ReAl
Отвлекли на мной же заведённое правило - в выходные вечером все вместе смотрим очередной фильм из завалов.

Цитата(_pv @ Feb 7 2010, 20:22) *
Только, это похоже не dlportio, a inpout32
Да, я тоже уже доискался до этого имени, где-то даже прозвучало, что оно не полностью совместимо с dlportio.

Цитата(_pv @ Feb 7 2010, 20:22) *
Код
        % LPT write cycle 0.000000ns

Код
        % LPT write cycle 2.91ns

Да, с avreal 1.26 все работает отлично.
Опаньки. Где-то знатная бага пролезла...
Буду смотреть diff-ы и, наверное, всё же добавлю проверку на наличие блочной функции и эмуляцию её у себя - чтобы и с непатченной работло.
А почему такой жуткий промах с определением времени цикла - непонятно абсолютно. Под XP/32 с изначальной dlportio замеряет ведь нормально.

Цитата(_pv @ Feb 7 2010, 20:22) *
Да, с avreal 1.26 все работает отлично.
Значит это всё было под 64-битной ОС (какой?) с обычным avreal-ом и с той доработанной библиотекой.
"Задача-64 имеет решение" и это приятно.

Пошёл смотреть.

.oO Хм...
А 1.26r0 или 1.26r3 ? :-)
_pv
Цитата(ReAl @ Feb 8 2010, 02:37) *
Да, я тоже уже доискался до этого имени, где-то даже прозвучало, что оно не полностью совместимо с dlportio.

Благо исходники доступны и сделать её полностью совместимой с dlport вроде не сильно сложно

Цитата(ReAl @ Feb 8 2010, 02:37) *
Опаньки. Где-то знатная бага пролезла...
Буду смотреть diff-ы и, наверное, всё же добавлю проверку на наличие блочной функции и эмуляцию её у себя - чтобы и с непатченной работло.
А почему такой жуткий промах с определением времени цикла - непонятно абсолютно. Под XP/32 с изначальной dlportio замеряет ведь нормально.

Сорри, это мой косяк. когда добавлял DlportWritePortBuffer случайно скопипастил туда DlportWritePort(ULONG port, UCHAR data). получилось DlportWritePortBuffer с параметрами (ULONG port, UCHAR data)... со всеми вытекающими отсюда последствиями.

Теперь всё нормально и с 1.28 тоже.

в аттаче патченная дллка с исходным inpout32 64х разрядным драйвером, и родным инсталлером от dlport.

в дллку было добавлено:
Код
UCHAR   _stdcall DlPortReadPortUchar (ULONG port){return Inp32(port);}
void    _stdcall DlPortWritePortUchar(ULONG port, UCHAR Value){Out32(port, Value);}
USHORT  _stdcall DlPortReadPortUshort (ULONG port){return Inp32(port);}
void    _stdcall DlPortWritePortUshort(ULONG port, USHORT Value){Out32(port, Value);}
ULONG    _stdcall DlPortReadPortUlong(ULONG port){return Inp32(port);}
void    _stdcall DlPortWritePortUlong(ULONG port, ULONG Value){Out32(port, Value);}
void   _stdcall DlPortReadPortBufferUchar (ULONG port, UCHAR* buff, ULONG cnt){while(cnt--) *buff++ = Inp32(port);}
void    _stdcall DlPortWritePortBufferUchar(ULONG port, UCHAR* buff, ULONG  cnt){while(cnt--) Out32(port, *buff++);}
void  _stdcall DlPortReadPortBufferUshort (ULONG port, USHORT* buff, ULONG cnt){while(cnt--) *buff++ = Inp32(port);}
void    _stdcall DlPortWritePortBufferUshort(ULONG port, USHORT* buff, ULONG cnt){while(cnt--) Out32(port, *buff++);}
void    _stdcall DlPortReadPortBufferUlong(ULONG port, ULONG* buff, ULONG cnt){while(cnt--) *buff++ = Inp32(port);}
void    _stdcall DlPortWritePortBufferUlong(ULONG port, ULONG* buff, ULONG cnt){while(cnt--) Out32(port, *buff++);}


еще могут быть чудеса с тем что исходные Inp32 и Out32 имеют в качестве данных всегда short. следовательно DlPortWritePortBufferUlong(ULONG port, ULONG* buff, ULONG cnt) будет работать не совсем правильно. но для avreal'a вроде не критично.

Цитата(ReAl @ Feb 8 2010, 02:37) *
Значит это всё было под 64-битной ОС (какой?) с обычным avreal-ом и с той доработанной библиотекой.
"Задача-64 имеет решение" и это приятно.
Пошёл смотреть.

да, ОС winXP 64.
судя по форумам в висте64 этот драйвер тоже работает, все остальное значит тоже должно.
ReAl
Ну я замену DlPortWritePortBufferUchar при её отсутствии на цикл с DlPortWritePortUchar всё же сделал.
Мало ли что и как будет развиваться в InpOut32.dll, лучше пусть исходная версия тоже работает.
Пока выложена тестовая версия.

И на InpOut гляну, может лучше просто её поддержать да и всё.

Я собираюсь поставить дома для проверок Win7/64 (т.е. работою как-то до сих пор в XP/32, но нераспределённое место на диске есть, доставлю туда). Заодно mingw-w64 попробую, может тогда avreal64 просто появится :-)




Да, avreal из dlportio.dll импортирует только DlPortWritePortUchar, DlPortReadPortUchar, DlPortWritePortBufferUchar, так что косяки с long/short действительно не должны влиять.

На "родной" dlportio работа через замену DlPortWritePortBufferUchar на цикл с DlPortReadPortUchar садит на моих компьютере и LPT скорость считывания AVR где-то на 5-6%
ReAl
Цитата(ReAl @ Feb 8 2010, 00:25) *
И на InpOut гляну, может лучше просто её поддержать да и всё.
Или не вижу, или спать пора...
Кажется, тут нет уж собранного драйвера под x64
В binaries only есть инсталлятор драйвера только в папке для win32. С драйвером из этой папки и переименованной в dlportio dll-кой оттуда под XP/32 проверено, работает.

Хотя чего морочить себе голову - с Вашей сборкой под win64 работает ведь :-)
Т.е. можно просто разместить её уменя на страничке, дать линки на эту тему, на указанный сайт и успокоиться.
Что-то будет меняться - тогда и что-то делать.

Но самым правильным в эту минуту будет таки лечь спать

p.s. раз уж зашёл разговор - опрос общественного мнения (нет, не про выборы :-) )
Вот к примеру делаю я под win поддержку работы не тольrо через dlportio.
Эта inpout в оригинльной форме имеет всего лишь другие имена функций, но это тоже нужно как-то указать.
giveio требует несколько другого подхода.
Как лучше указать в ключах способ доступа?
Пусть адрес E800
-pE800 - без указанного метода - dlportio
с методом лучше так
Код
-pE800@giveio
-pE800@inpout
или так wink.gif
Код
-p/giveio/E800
-p/inpout/E800
Petka
Цитата(ReAl @ Feb 8 2010, 03:49) *
p.s. раз уж зашёл разговор - опрос общественного мнения (нет, не про выборы :-) )
Вот к примеру делаю я под win поддержку работы не тольrо через dlportio.
Эта inpout в оригинльной форме имеет всего лишь другие имена функций, но это тоже нужно как-то указать.
giveio требует несколько другого подхода.
Как лучше указать в ключах способ доступа?

Давно назрела необходимость отделить мух от котлет.
В avreal в одну кучу свалены настройки программатора и параметры прошивки (файл с прошивкой, фузы).
Логично в .bat/Makefile указывать ТОЛЬКО параметры а настройки программатора хранить отдельно в конфигурационном файле.
т.е. Если на ноутбуке есть только программатор FT2232 а на ББ программатор LPT, то надо при прошивке одного и того же проекта на ноуте и ББ лезть в .bat/Makefile. Логичнее на ноуте использовать один файл настроек программатора а на ББ другой. А в командной строке задавать только Фузы, Файл прошивки, чип.

Как это может выглядеть: avreal при старте читает дефолтный конфиг (или иначе конфиг дефолтов) в котором может быть заданы (а могут быть и не заданы) некоторые параметры. Потом читает параметры из командной строки, и если есть пересекающиеся атрибуты, то ругается и/или использует то, что задано в командной строке.
ReAl
Цитата(Petka @ Feb 8 2010, 11:26) *
Как это может выглядеть: avreal при старте читает дефолтный конфиг (или иначе конфиг дефолтов) в котором может быть заданы (а могут быть и не заданы) некоторые параметры. Потом читает параметры из командной строки, и если есть пересекающиеся атрибуты, то ругается и/или использует то, что задано в командной строке.
Это давно в очереди, но далеко не первоочередное у меня лично, уж извините.
У меня в переменных окружения дома
Код
d:\>set | grep AVREAL
AVREAL_ADAPTER=ft2232:enable=~adbus4,~acbus2:reset=acbus1
AVREAL_PORT=d=DENIS_FT2232D A
(в работе платка, подаренная мне человеком по имени Денис и когда я отлаживал єти ключи я не долго думал, что прописать в EEPROM ;-) )
На работе что-то в духе
Код
AVREAL_ADAPTER=b
AVREAL_PORT=/dev/parport0

и в makefile

Код
ifndef AVREAL_PORT
AVREAL_PORT := 1
endif

ifndef AVREAL_ADAPTER
AVREAL_ADAPTER = b
endif

AVREAL := avreal "-a$(AVREAL_ADAPTER)" "-p$(AVREAL_PORT)" +$(MCU)

Где я сейчас - просто не думаю :-)
И на работе, и дома avreal - это линк на реальную версию, выбранную в данный момент для работы.
_pv
Цитата(ReAl @ Feb 8 2010, 06:49) *
Или не вижу, или спать пора...
Кажется, тут нет уж собранного драйвера под x64
В binaries only есть инсталлятор драйвера только в папке для win32. С драйвером из этой папки и переименованной в dlportio dll-кой оттуда под XP/32 проверено, работает.

ээ, похоже что на самом деле там его нет.
изначально dlportio64 брал с понипроговского форума, ссылка выше.
а потом не обнаружив там нужных функций добавлял их в inpout который взял отсюда:
http://logix4u.net/Legacy_Ports/Parallel_P..._XP_64_bit.html
там есть драйвер.
драйвера ставил родным инсталлятором от dlportio, переименовав файлы.

а, то что тут хоть и более новая версия вроде и содержит уже функции Dlportiowrite для записи только отдельных символов, но её собрать не удалось.

так что для пущей совместимости, наверное, лучше использовать функции Inp32 и Out32. они во всех версиях библиотек для inpout32 должны быть.
Ну или действительно оставить как есть раз уж работает smile.gif
ReAl
Цитата(_pv @ Feb 8 2010, 21:32) *
так что для пущей совместимости, наверное, лучше использовать функции Inp32 и Out32. они во всех версиях библиотек для inpout32 должны быть.
Так вот и я об этом думаю - тогда с любой заработает.

Цитата(_pv @ Feb 8 2010, 21:32) *
Ну или действительно оставить как есть раз уж работает smile.gif
Я малость приболел, а работа не ждёт, поэтому вернусь к этому вопросу немного позже.
ptbnfns
Всем доброго времени суток!
Вроде я тут уже регистрировался но не помню данных....

Этих "драйверов" развелось как собак...
Такое впечатление, что каждый автор или любит изобратать велосипед или желает поупражняться в драйверописании - этакий "Hello World" в DDK wacko.gif

И что самое скверное, что разный софт использует разные драйверы !
И для каждого предлагается установить "драйвер"
Достало twak.gif maniac.gif

В такой ситуации IMHO делать в приложениях поддержку всех существующих драйверов не разумно.
Гораздо логичнее было бы вынести всё это нафиг в отдельную DLL.

Тоесть DLL сама занимается поиском имеющегося драйвера и работой с ним в соответствии с принятым для конкретно него протоколом.
А приложение умеет работать ТОЛЬКО с этой DLL.
В саму DLL можно насовать сколько угодно функций для работы с разными уже имеющимися приложениями без их переделки.
Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".

Как вариант - предлагаю odvport.dll
Исходнит прилагается (GPL)
Xenia
Цитата(ptbnfns @ Feb 14 2010, 15:10) *
Как вариант - предлагаю odvport.dll
Исходнит прилагается (GPL)

Проблемы в основном не с драйвером, а со способом его инсталляции. DLPORTIO тоже был не плох, но поди установи его! Хитрющий install.exe на большем числе компьютеров не работает. А p95nt на новых опереционках тоже перестает работать. Короче говоря, не код драйвера плох, а слишком стали привередливы требования к инсталляции драйверов. Та же проблема часто встречается при инсталляции драйверов под USB.
А ваш драйвер в этом смысле совершенно не годится, т.к. никаких средств для его инсталляции не предусмотрено.
ptbnfns
Да забыл сказать:
у меня уже сейчас есть поддержка работы через:
giveio.sys
dlportio.sys
mcdbio.sys
porttalk.sys
altlpt1 aka Pgdhdlc.sys - драйвер ByteBlaster из MaxPlus
и самое вкусное - вообще без драйвера через недокументированные функции из ntdll.dll

если кто знает ещё - говорите - добавлю!
в ближайшее время по капаю inpout32 и winring0 (просто я прежде о них не слышал - говорю же "как собак...")

по поводу установки - на самом деле там всё очень просто (для XP по крайней мере)
поражает желание авторов этих драйверов делать всё запутанным и сложным (видимо для сбережения "великого тайного знания о доступе к портам" LOL !!! )
так вот - никакие "установщики" нафиг не нужны!
для установки нужно следующее
1)быть "администратором"
2)скопировать файл_драйвера.sys в c:\windows\system32\drivers
3)зарегистрировать драйвер - т.е. добавить службу ядра - это можно сделать двумя способами
а)через API service control manager
б)добавив раздел в реестр. пример для giveio - делаем файл install.reg
Код
REGEDIT4

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio]
"Type"=dword:00000001
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"Group"="Extended Base"

и тыкаем в него мышкой
оно - спросит добавить?
мы - ага !
перезагружаемся - готово

обратите внимание на параметр
"Start"=dword:00000003
может быть 2 или 3
2-запуск драйвера при старте системы
3-запуск "по требованию"
к сожалению не все умеют "потребовать" в частности dlportio.dll - не умеет. так, что для него - только "2"

odvport умеет правильно "требовать" так, что с ним драйвер займёт память только при первом обращении.
ptbnfns
Добавил поддержку hwinterface.sys - это драйвер от inpout32
Xenia
Цитата(ptbnfns @ Feb 14 2010, 17:20) *
б)добавив раздел в реестр. пример для giveio - делаем файл install.reg
Код
REGEDIT4

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio]
"Type"=dword:00000001
"Start"=dword:00000003
"ErrorControl"=dword:00000001
"Group"="Extended Base"

и тыкаем в него мышкой
оно - спросит добавить?
мы - ага !
перезагружаемся - готово

обратите внимание на параметр
"Start"=dword:00000003
может быть 2 или 3
2-запуск драйвера при старте системы
3-запуск "по требованию"
к сожалению не все умеют "потребовать" в частности dlportio.dll - не умеет. так, что для него - только "2"

odvport умеет правильно "требовать" так, что с ним драйвер займёт память только при первом обращении.

Ну так и добавьте такой reg-файл в свой архив! А то ведь забудется место на форуме, где вы это написали.
ptbnfns
Добавил работу через драйвер WinRing0.sys
+ куча драйверов в архиве вместе с библиотекой
ReAl
Цитата(ptbnfns @ Feb 14 2010, 14:10) *
Достало twak.gif maniac.gif
"Так отож!"

Цитата(ptbnfns @ Feb 14 2010, 14:10) *
Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".
Как вариант - предлагаю odvport.dll
Исходнит прилагается (GPL)
Насколько я понял комментарий у меня на сайте и тутошнее - достаточно переименовать её в dlportio.dll, поставить любой из перечисленных драйверов и avreal должен заработать, не заметив подмены.

Альтеровский драйвер, насколько я помню, позволяет пакетировать запросы, что несколько поднимет скорость, но
- вроде бы и так не слишком медленно
- LPT таки уходит и "тонкие оптимизации" как-то ни к чему. Всё равно по скорости проиграет FT2232 :-)

Поэтому Ваша DLL - это отличное универсальное решение.

Цитата
Единственное неудобство - необходимость переименовывать её в то имя которое данное приложение "знает".
Ну ради такого инструмента не грех и добавить загрузку библиотеки с её "родным" именем.

Присоединяюсь к Ксении - было бы удобно иметь reg-файлы для каждого поддерживаемого драйвера.
Xenia
Код
:copy dlportio.dll %SystemRoot%\system32
copy dlportio.sys %SystemRoot%\system32\drivers
regedit.exe dlportio_reg.reg

А почему первая строка закомментарена? Разве dlportio.dll не нужна?
ptbnfns
Цитата
Насколько я понял комментарий у меня на сайте и тутошнее - достаточно переименовать её в dlportio.dll, поставить любой из перечисленных драйверов и avreal должен заработать, не заметив подмены.

Так точно!

Цитата
Альтеровский драйвер, насколько я помню, позволяет пакетировать запросы, что несколько поднимет скорость, но
- вроде бы и так не слишком медленно
- LPT таки уходит и "тонкие оптимизации" как-то ни к чему. Всё равно по скорости проиграет FT2232 :-)

Да позволяет, но у меня это не реализовано т.к. все эти заморочки с сбором обращений в пакет череваты багами, а тестировать такие вещи долго и муторно, короче лень заморачиваться.
Но для совместимости я разворачиваю пакетные обращения в циклы.

Цитата
Присоединяюсь к Ксении - было бы удобно иметь reg-файлы для каждого поддерживаемого драйвера.

В архиве из поста №222 они есть.

Цитата
А почему первая строка закомментарена? Разве dlportio.dll не нужна?

Эта строка там только для напоминания. Реально он у меня всегда лежал в той же папке, где avreal ибо больше никто не пользуется.
Повторюсь - для моей DLL нужен только драйвер. (тот - который *.sys)
ReAl
Цитата(ptbnfns @ Feb 17 2010, 22:39) *
В архиве из поста №222 они есть.
Да меня от полунаписанного сообщения оторвали, а когд пришёл - не стал смотреть, появилось ли новое в теме. А потом уже не редактировал.
alag57
Цитата
Произвольная последовательность байтов
Предназначено для записи произвольных данных. В качестве имени параметра используется слово bytes с числом записываемых байтов.

Число записываемых байт десятичное или шестнадцатеричное?
alag57
И еще вопрос по локбитам:
Цитата
допустимо: -f_low=C3,_high=F4,blb2=1

что значит blb2=1?
ReAl
Цитата(alag57 @ Mar 21 2010, 17:28) *
Число записываемых байт десятичное или шестнадцатеричное?
Да десятичное должно быть.

Цитата(alag57 @ Mar 21 2010, 18:38) *
И еще вопрос по локбитам:
что значит blb2=1?
(исправлено)
Тьху, совсем плох стал. Спасибо, сейчас поправлю страничку, конечно, blb2 не существуют.
blb1 означает двухбитовую группу blb11, blb10
blb0 - blb01,blb00
alag57
ага - понятно, другое дело smile.gif
Еще вопрос:
Можно ли прочитать фьюзы и сигнатуру? Не нашел в документации.
ReAl
Цитата(alag57 @ Mar 22 2010, 16:40) *
Еще вопрос:
Можно ли прочитать фьюзы и сигнатуру? Не нашел в документации.
Прочитать в файл - нельзя. Только на экран сообщаетя - фьюзы всегда, сигнатура закопана в расширенной выдаче по -%


Цитата(_pv @ Feb 7 2010, 23:26) *
да, ОС winXP 64.
судя по форумам в висте64 этот драйвер тоже работает, все остальное значит тоже должно.
Под XP/64 заработало, только инсталлятор из архива не туда, куда надо копировал .sys-файл. Проверил, распихивая вручную, потом .bat-файл с копированиями и regedit соорудил по мотивам того, что ptbnfns показал.
А вот под Windws7/64 облом, говорит, что драйвер не подписан и она его запускать не будет.


Цитата(ptbnfns @ Feb 14 2010, 21:31) *
Добавил работу через драйвер WinRing0.sys
+ куча драйверов в архиве вместе с библиотекой
Под Windows7/32 работает и старая добрая компания dlportio.sys/dlportio.dll и я пока останавливаюсь на них.
Остальное буду пробовать потихоньку, позже - и так сегодня пол дня перегружался невесть сколько раз то одним, то другим.

Под Windows7 интересная бодяга с Вашими командными файлами (точнее, с любыми) - при запуске их от имени администратора для их выполнения как текущий каталог почему-от устанавливается не тот, вкотором они вместе с драйвером/dll/reg находятся, а %SystemRoot%\system32
Соответственно, они ничего никуда скопировать не могут.
ptbnfns
попробуйте вместо источника писать не
driver.sys а %~dp0driver.sys
ut1wpr
Прошу прощения. Либо невнимательно читал, либо недопонял. Могу ли я менять в ft2232 назначения сигнало miso, mosi, sck, reset или эта фича только для параллельного порта?
Ну, вроде как, miso=adbus1, mosi=adbus3, enable=acbus0
Типа "под разводку"... smile.gif
Сергей Борщ
Цитата(ut1wpr @ Apr 9 2010, 13:56) *
Могу ли я менять в ft2232 назначения сигнало miso, mosi, sck, reset или эта фича только для параллельного порта?
Не можете. Во всяком случае на данный момент.
ut1wpr
Цитата(Сергей Борщ @ Apr 9 2010, 16:06) *
Не можете. Во всяком случае на данный момент.

Спасибо. Не критично. Всё нормально, это я просто "губу раскатал". Думал, там общая сигнальная маска применена.
ReAl
Цитата(ptbnfns @ Apr 8 2010, 23:58) *
попробуйте вместо источника писать не
driver.sys а %~dp0driver.sys
"Семён Семёныч!" ™
Ну конечно. Просто редко пользуюсь win командными файлами и начисто забыл, что такая возможность есть.
Метценгерштейн
есть задача- на плате стоит FT2232D, надо, чтобы МК прошивался через встроенную FTDI. для этого я соединил контакты 22 23 24 к MISO MOSI SCK через резисторы 150 Ом. Ресет от МК через 33 Ома подсоединил к ноге 20 FTDI. Это по схеме программатора Мегаджона, а на сайте АВРеала ресет подключен к ноге 21 FTDI. Где правда? Как только подпаял ресет у себя, подключаю к компу, подключается устройсво, отключается, подключается, отключается и так далее. Из- за чего может это быть?
ReAl
Цитата(Метценгерштейн @ May 9 2010, 23:58) *
Ресет от МК через 33 Ома подсоединил к ноге 20 FTDI. Это по схеме программатора Мегаджона, а на сайте АВРеала ресет подключен к ноге 21 FTDI. Где правда?
Правда будет в конфигурационной записи в командной строке либо в файле конфигурации выводов. Для мегаджоновской у него указано, для той, что на сайте avreal - не нужно вообще, это вариант по умолчанию.

Цитата(Метценгерштейн @ May 9 2010, 23:58) *
Как только подпаял ресет у себя, подключаю к компу, подключается устройсво, отключается, подключается, отключается и так далее. Из- за чего может это быть?
А тут не знаю. Может просто ошибка в монтаже, подмычка где-то.
FT2232 по умолчанию включается в режим UART - посмотрите, что оказывается на той ноге, которая идёт на сброс контроллера. Для таких вариантов на сброс лучше подавать сигнал, который в режиме UART у FT2232 как вход работает. Скажем, вход RI. При программировании он переключится на выход, в остальное время не будет мешать.
Метценгерштейн
у меня ресеты от МК и от FTDI соединены и к ним через резистор эта нога 21 FTDI. Я оторвал сейчас ногу 4 (ресет) FTDI- висит в воздухе. Теперь опознается и больше не отваливается, но прошиваться не хочет все- равно. Ничего что в воздухе ресет FTDI висит? по даташиту там стоит внутренний резистор 200к к U пит.

т.е. если я использую мегаджоновский программатор и у меня с его записью все работает, то здесь, если я хочу оставить ту же запись, ресет МК у меня д.б. подключен к ноге 21 FTDI. так?

т.е. в этой записи
....... 1.27r4\avreal32-1.27r4.exe +mega8 -aft2232:enable=adbus4,acbus2 -o1MH .....

adbus4
означает где ресет у нас?

этот RI#
предлагаете ресет МК подключить к нему? т.е. к выводу 16. И в конфиг. записи указать adbus7 ???
Метценгерштейн
проверил на залипоны- все нормально. может 150 ом- это много для шин?
ReAl
Цитата(Метценгерштейн @ May 10 2010, 10:57) *
у меня ресеты от МК и от FTDI соединены и к ним через резистор эта нога 21 FTDI.
Я оторвал сейчас ногу 4 (ресет) FTDI- висит в воздухе. Теперь опознается и больше не отваливается
Ну так и не должно было нормально работать.
FT2232.reset - да вроде не страшно, пусть висит. На макетке у меня висел.

Цитата(Метценгерштейн @ May 10 2010, 10:57) *
т.е. в этой записи
....... 1.27r4\avreal32-1.27r4.exe +mega8 -aft2232:enable=adbus4,acbus2 -o1MH .....
adbus4
означает где ресет у нас?
Тут он означает открывание шинников. У MegaJohn это одноремённо и сброс, что не всегда хорошо, лучше бы шинники разрешать отдельно, а сброс одельно.

Цитата(Метценгерштейн @ May 10 2010, 10:57) *
этот RI#
предлагаете ресет МК подключить к нему? т.е. к выводу 16. И в конфиг. записи указать adbus7 ???
reset=adbus7 для RI, reset=adbus3 для 21-ой ноги. 20-я не очень хорошо, так как это выход DTR и может управляться в режиме UART -- придётся внимательнее к нему относиться.
enable можно не указывать, если шинников нет.
http://real.kiev.ua/old/avreal/ru/description.html#FT2232CFG
Метценгерштейн
т.е. предлагаете ресет МК подключить через резистор к 21 ноге и в записи что надо будет записать?

d:\works\programs\avw-1.27r4\avreal32-1.27r4.exe +mega8 -aft2232:enable=adbus3,acbus2 -o1MHZ -e -w -v -fcksel=f,ckopt=0,sut=3,BODLEVEL=0,BODEN=0 -l2 -c %1 -d %2

так нормально будет?
что значит, шинников нет? у меня кроме программирования на плате, ещё и второй СОМ порт используется под UART.
т.е. ноги 39 40 у меня под данные задействованы.
demiurg_spb
Есть вопросик:
когда в фузах стоит CKDIV8 то и для avreal надо указывать -о$(F_CPU_DIV8) или должно работать и с -о$(F_CPU)?

А то у меня железно работает лишь при -о$(F_CPU_DIV8)
а при о$(F_CPU) даже с параметром -2 иногда случается can't resync.

Программатор aft2232 и ADUMы в роли развязки и шинных формирователей.

Вызов выглядит так:
Цитата
avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.28r2 (Apr 19 2010 11:42:49) http://real.kiev.ua/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua
Command:
-aft2232:enable=acbus1 +atmega1281 -e -w -v -o1843200Hz -c xxx.hex -d xxx.eep
Dx!
Ключом -o задаётся частота, на которой камушек работает. Естественно там должна быть уже поделённая частота если зашит фьюз соответствующий. 0_о
demiurg_spb
Я об этом догадываюсь, но хочется услышать автора:-)
Метценгерштейн
торможу, уже похоже, вечером.
Если из ИАРа шью, то все ок.

создал отд. папку, положил туда файл .hex и Avreal. Т.е. мой файл лежит в одном каталоге с АВРеаловскими файлами.

вот конфиг .bat от АВРеала
D:\tmp\bootloader\avw-1.27r4\avreal32-1.27r4.exe +mega8 -aft2232:enable=adbus4,acbus2 -o1MHZ -e -w -v -fcksel=f, ckopt=0,sut=3,BODLEVEL=0,BODEN=0 -l2 -c blink_LED.hex -d blink_LED.ee.hex


где я не прав? Раньше же зашивал таким образом все


заработало. какой- то глюк в тексте был, похоже
Метценгерштейн
наверное, в тему бутлоадеры, но вот тут какая странность.

все-так не шьется МК, если сделать папочку и в неё положить все файлы АВРеала и .hex с бутлоадером
раз зашился и все. больше не хочет перешиваться с другими фузами.

если из ИАРа зашиваю (к другому АВРеалу обращаюсь), то какая- то прога моя шьются нормально.

В чем тут может быть фокус?
ReAl
Цитата(demiurg_spb @ May 14 2010, 15:56) *
Я об этом догадываюсь, но хочется услышать автора:-)
Вероятно, мне надо в описании как-то чётче сказать, что под словами "частота тактирования контроллера" понимается "частота приходящего на ядро такта", после делителя.


Цитата(Метценгерштейн @ May 15 2010, 01:23) *
все-так не шьется МК, если сделать папочку и в неё положить все файлы АВРеала и .hex с бутлоадером
раз зашился и все. больше не хочет перешиваться с другими фузами.
если из ИАРа зашиваю (к другому АВРеалу обращаюсь), то какая- то прога моя шьются нормально.
Я немного запутался. Давайте компактнов одном сообщении
Ссхема подключения, которая используется (или подробное описание -- что куда подключено).
С какой командной строкой "один раз зашивается".
С какой строкой "потом больше не хочет"
Каким адаптером и какой командной строкой потом таки перешивается.
Можно просто в один архив выдачу по -% для всех вызовов сложить.
demiurg_spb
Цитата(ReAl @ May 15 2010, 11:16) *
Вероятно, мне надо в описании как-то чётче сказать, что под словами "частота тактирования контроллера" понимается "частота приходящего на ядро такта", после делителя.
ИМХО было бы удобно иметь клчик типа -oauto14745600Hz которым бы передавалась частота внешнего кварца а программа сама смотрела какой стоит делитель и автоматом пересчитывала частоту. Ведь в makefile есть F_CPU, а все контроллеры у меня стартуют со включенным делителем на 8 и лишь в программе инициализации переходят на делитель=1. Это могло бы помочь многим. Спасибо!
ReAl
У меня в avreal.mak (который по include идёт в Makefile проектов) так
Код
ifndef AVREAL_FREQ
ifdef F_CPU
AVREAL_FREQ  := $(F_CPU)
endif
endif

ifdef AVREAL_FREQ
AVREAL_FREQ_SW  := -o$(AVREAL_FREQ)hz
endif

И если в проекте это нужно, то в нём задаётся рядом с FUSES ещё и AVREAL_FREQ. Не всегда дело в CKDIV - может просто по схеме платы что-то такое быть, что нужно снизить частоту тактирования.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.