-
Постов
44 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные kernel32ddl
-
-
Если вышенаписанное - правда...
АТВЕЧАЮ, ВАСЯ! (с) Жорик Вартанов
А если серьезно, то считаю возможность внутрисхемной отладки несомненным плюсом, скажу больше, для некоторых задач это просто жизненно необходимо. Другое дело что для тех задач которые я хочу осуществить с ATMegой - поиграться со светодиодами, кнопочками - особой нужды нет. Да и как я понял внутрисхемный отладчик будет стоит не дешево.
-
Всем большое спасибо за ответы! Буду думать :)
-
Немного путаете. Отладчик позволяет отлаживать, т.е. запускать программу и иметь возможность пошагового исполнения, чтения/записи регистров и т.д. Отладчик может выполнять функции программатора. В качестве программатора байт-бластер использовать можно, в качестве отладчика - нет. И программировать в этом случае придется не напрямую из ИАРа или студии, а запуская промежуточную программу (AVReal).
Отлично, теперь все стало ясно. Т.е. в IAR как я понял можно скомпилировапть hex файл программы написанной на "С" для заливки в контроллер, который потом шьется AVRealом через BB?
-
Нет. Для AVR существуют другие отладчики.
Т.е. его вообще нельзя использовать для ATMegи?
Или я путаю простой программатор с отладчиком... Это не одно и тоже?
-
Да вобщем все позволяют.
Лучше конечно ИАР.
Но и стоит соответственно.
Хотя, если совесть не мучит, можно ломаный поставить
А IAR через ByteBlaster будет работать?
-
Есть.
IAR - коммерческий.
WinAVR (AVR-GCC) - свободный.
Атмел бесплатно раздаёт AVR-Studio
Ну а какой лучше? Какой-нить из них позволят отлаживать программу в реальном времени?
-
В свое время приходилось много писать на "С" для DSP TMS. Для этого пользовался средой Code Composer Studio, которая являлась одновременно и компилятором и отладчиком для данного процесссора при подключении оного через JTAG.
А есть ли аналогичная среда для контроллера ATMega8 и JTAG ByteBlaster? Откуда можно скачать если есть?
-
Вот-вот столкнулся с тойжей проблемой задержкой UCLK. И какое-то решение естьпротив этого.
-
Присоединяюсь ко всем поздравлениям!
Великий РЕСПЕКТ и огромная БЛАГОДАРНОСТЬ все людям, благодаря которым данный проект существует по сей день!
С ДНЕМ РОЖДЕНИЯ ELECTRONIX!!! :tort: :a14:
-
Присоединяюсь и желаю всем удачи в этой нелегкой, но очень интересной работе!
-
Доброго времени суток!
Имеется необходимость "ручной" установки библиотеки libusb. Ручная в кавычках, т.к. хочу производить установку данной библиотеки не при помощи её родного визарда, а при помощи своей программы, в тихоря, так сказать, от пользователя.
Из просмотра исходных текстов понял только то, что необходимо скопировать файл libusb0.dll в папку SYSTEM32, а libusb0.sys в SYSTEM32\DRIVERS. Прекрасно понимаю, что этого не достаточно :) , какие еще действия необходимо произвести, наверняка надо править реестр? Кроме того хотелось бы, чтобы драйвер библиотеки подцеплялся только к моему устройству, причем динамически, а не ко всему в системе что имеет приставку USB (как это делает виззард).
-
Ну и правильно IoCreateSymbolicLink ругается. Объекта-то с devName в системе-то нету.
Попробуйте в IoCreateDevice вместо NULL указать требуемый DevName, флажок FILE_AUTOGENERATED_DEVICE_NAME не указывать. Я не уверен, что этот devObj потом
можно использовать как фильтровый - то есть с стеку он скорее всего из-за именованности не приаттачится. То есть Вам придется создать именованный devObj и обычный неименованный filterDevObj. filterDevObj включить в стек и работать как обычно фильтром, а на devObj уже принимать дополнительные запросы на обработку сверху.
Ясно, спасибо, буду разбираться!
-
Сначала делаю так:
RtlInitUnicodeString( &devName, L"\\Device\\BIOFILTER" ); status = IoCreateDevice( driverObj, sizeof(struct DEVICE_EXTENSION), NULL, //&devName, // name for this device FILE_DEVICE_UNKNOWN, FILE_AUTOGENERATED_DEVICE_NAME,// device characteristics (BOOLEAN) FALSE, // not exclusive &filterDevObj); // our device object
А затем так:
RtlInitUnicodeString( &symLinkName, L"\\DosDevices\\BIOFILTER" ); status = IoCreateSymbolicLink(&symLinkName, &devName);
Потом так:
/* * Initialize device extension for new device object */ devExt = (struct DEVICE_EXTENSION *)filterDevObj->DeviceExtension; RtlZeroMemory(devExt, sizeof(struct DEVICE_EXTENSION)); devExt->signature = DEVICE_EXTENSION_SIGNATURE; devExt->state = STATE_INITIALIZED; devExt->filterDevObj = filterDevObj; devExt->physicalDevObj = physicalDevObj; devExt->pendingActionCount = 0; KeInitializeEvent(&devExt->removeEvent, NotificationEvent, FALSE); #ifdef HANDLE_DEVICE_USAGE KeInitializeEvent(&devExt->deviceUsageNotificationEvent, SynchronizationEvent, TRUE); #endif // HANDLE_DEVICE_USAGE devExt->topDevObj = IoAttachDeviceToDeviceStack(filterDevObj, physicalDevObj);
-
Возникла необходимость расширить набор команд для USB флэшки.
Ситуация следующая.
Имеется USB флэшка собственного изготовления. Помимо стандартных Mass Storage команд необходимо добавить свою, предназначенную для служебных целей (прием изображения с сенсора отпечатка пальца).
По началу использовали очень простое решение - открывали флэшку как файл и осуществляли запись и чтение (т.е прямое обращение к диску) через избыточные сектора на ней (я специально подобрал кол-во секторов во флэши чтобы при форматировании оставалось 3 избыточных сектора).
В WinXP данное решение более-менее прокатывало, а вот в Win2k начались серьезные глюки. Win2k по умолчанию использует механизм отложенный записи, который нам не удалось отключить, и из-за этого при приеме/передачи служебных данный(чтении/записи нашего избыточного сектора) происходили огромные задержки которые сделали практически невозможной работу с устройством.
Затем появилась мысль написать свой собственный драйвер-фильтр для флэшки, который бы просто пропускал все стандартные запросы вниз по стеку и умел бы обрабатывать пару моих IOCTL для приема/передачи данных.
Почитал Солдатова, Сорокину, Агурова и принялся за дело. Взял /src/wdm/usb/filter (из DDK).
Посчитал, что достаточно будет создать символическую ссылку на драйвер, добавить обработку своих IOCTL и при помощи CreateFile и DeviceIoControl "общаться" со своим устройством.
Однако при попытке создания символической ссылки на драйвер при помощи функции IoCreateSymbolicLink происходила ошибка.
В описании на данную функцию в DDK я обнаружил, что она не предназначена для использования в WDM драйверах и в драйверах фильтрах в частности, и что необходимо для этих целей использовать функцию IoRegisterDeviceInterface. Для данной функции я так и не смог найти более менее понятного примера использования.
Так вот, возникает вопрос, каким образом можно решить данную задачу, и вообще обязательно ли писать свой драйвер для этих целей? Нужно ли писать именно драйвер фильтр или же можно написать “легаси” драйвер или класс драйвер (в котором можно использовать IoCreateSymbolicLink) и подключить его к драйверу шины “в параллель” с USBSTOR.SYS? Или же каким-нибудь образом обращаться из user mode к существующему драйверу в системе, например, USBSTOR.SYS или драйверу хаба для приема/передачи данных с/на устройство?
-
Все-таки решил отказаться от данной команды. Буду делать внутреннюю проверку на битость и потом просто подменять адрес если будет производиться запись в битый сектор, таким образом можно значительно продлить ресурс флэши и не пугать пользователя присутствием битых секторов на "нулевом" устройстве.
Из проверенных мною имеющихся флэшек, на 3 256М-байтных была одна битая страница(128 кбайт), 128М-байтных на одной из трех.
-
Необходимо осуществить проверку на битость секторов USB Flash памяти.
Я так понимаю в наборе Mass Storage команд для этого есть команда VERIFY (0x2F), в параметрах которой есть 2 параметра: адрес логического блока (LBA) и количество блоков для проверки.
Она должна возвращать ОК в случае удачной проверки секторов и FAILE в противном случае.
После того как выполнение данной команды возвращает ошибку, хостом отправляется команда REQUEST_SENSE, в ответ на нее устроство должно возвращать код последней ошибки, т.е. сообщить хосту о том, что по определенному адресу находиться битый блок (я так себе это представляю).
В моем устройстве на данный момент в ответ на эту команду всегда отправляется ОК. В спецификации на SCSI команды, я так и не смог найти внятного ответа на данный вопрос. Есть небольшой абзац, в котором написано, что-то вроде "если вы хотите передать список битых секторов вы должны сохранить его в странице списка...", вобщем я ничего из этого не разобраз.
Если кто-нибудь занимался данной проблемой подскажите , времени на разбирательство нет - сроки очень поджимают.
-
В несуществующий сектор писать не получилось :( - винда не позволяет. Попробую пометить существующий сектор как битый и писать в него, должно получиться.
-
Как один из вариантов - команда чтения или записи с фиксированным номером сектора, лежащим далеко за пределами объявленного размера устройства.
Как вариант я данную возможность рассматривал, вот только вопрос в том, как винда отнесется к прямому обращению к диску?
По идее как раз для таких задач существуют драйвера - фильтры. Сам я не пробовал - посмотрите в DDK. Теоретически если подставить фильтр под class driver'ом можно будет делать с обменом что угодно.Вариант очень красивый, но только я совершенный профан в DDK :( , боюсь что мне это будет не по зубам, а сроки уже поджимают - разбираться некогда :( .
Большое спасибо за помощь! Попробую осуществить первый вариант.
-
Возникла следующая проблема:
Необходимо добавить в набор Mass Storage команд свою служебную команду. Со стороны устройства нет никаких проблем, очень легко можно запрограммировать его на обработку дополнительной команды. Вопрос в том как можно будет отправить данную команду на устройство из-под винды (из свой программы)?
Возможно ли каким-то образом "подключиться" к Mass Storage драйверу и втиснуть свою команду в стандартный обмен драйвера с устройством?
-
Открыл создал счетчик а как его добавить в схему в виде символа
Не знаю. Я никогда не пользовался графическим вводом. Только языковое описание. Чего и вам желаю.
"New Source", в открывшемся окошке выбрать "IP (Coregen & Architecture Wisard)", галка add to project должна стоять, ввести имя только строчнымибуквами итд.
Что-то нет у меня токого наверное потому что Webpak. Подскажите серийник для faundation 8.1
Нашел и добавил. Спасибо. Извиняюсь за столь примитивные вопросы но я только начинаю разбираться с ПЛИС и в частности с ISE. Может кто подскажет где в инете есть литература по нему.
Что-то нет у меня токого наверное потому что Webpak. Подскажите серийник для faundation 8.1Серийник от 8.1 утерян. У меня щас 8.2.
Кореген генерит кучу файлов с разными расширениями и вами заданным именем. Сделайте "Add Source" и добавьте файл *.xco, если вебпак это не сожрёт, тогда add source файл *.v (если верилог) или *.vhd (если вхдл). При этом в папке проекта должен быть файл с таким-же именем *.edn, он нужен для PAR'а.
Спасибо. Жаль конечно просто на работе инет медленный сервиспак хер выкачаешь.
-
Открыл создал счетчик а как его добавить в схему в виде символа
Не знаю. Я никогда не пользовался графическим вводом. Только языковое описание. Чего и вам желаю.
"New Source", в открывшемся окошке выбрать "IP (Coregen & Architecture Wisard)", галка add to project должна стоять, ввести имя только строчнымибуквами итд.
Что-то нет у меня токого наверное потому что Webpak. Подскажите серийник для faundation 8.1
-
Открыл создал счетчик а как его добавить в схему в виде символа
-
Как делать это в Core Generator?
-
Можно ли создавать автоматически элементы как в Max Plus II MegaWizard если можно подскажите как пожалуйста.
Atmega8, программирование на "С"
в MCS51, AVR, PIC, STM8, 8bit
Опубликовано · Пожаловаться
Поищу схему, но вот люди говорят что ATMega8 не поддерживает внутрисхемную отладку.