Jump to content

    

chechestor

Участник
  • Content Count

    40
  • Joined

  • Last visited

Community Reputation

0 Обычный

About chechestor

  • Rank
    Участник
  1. Добрый день. Занялся портированием проекта AVR из IAR в Eclipse (+ avr-eclipse). В настройках проекта IAR можно указать не только глобальные определения, которые видны во всех файлах проекта, но так же указать MyHeader.h, который будет подключаться ко всем исходникам. Ввиду большого числа дефайнов с комментариями, очень удобно оказалось держать определения именно в файле, а не указывать из по одному. При портировании проекта в eclipse столкнулся с проблемой - не могу найти, как приинклюдить мой файл с заголовками глобально к проекту... Или eclipse этого в принципе не умеет? Кто знает, подскажите, пожалуйста. Заранее спасибо!
  2. NAND ONFI

    Доброго времени суток. Есть вопрос к людям, которые использовали NAND Flash в своих проектах. А именно, память от Micron. Сейчас пытаюсь привинтить в проект запись плейнов и использованием команды PLANE_PROGRAM (0x11). Вопрос собственно в том, что делать, если я подал PLANE_PROGRAM в первый плейн, а потом до меня дошло, что программировать второй плейн мне незачем? Пытался делать так: PLANE_PROGRAM -> чтение и ожидание готовности блока -> PAGE_PROGRAM. В результате, в странице олстались все 0xFF (данные не записались). Кто сталкивался с NAND и работал с плейнами, подскажите, пожалуйста. Заранее благодарен за ответы.
  3. Доброго времени суток. Прошу помощи у тех, кто владеет софтом для снифферения USB. Нужно мне проверить обмен данными между mass storage device и компом. Использую USBTrace. Читаемые данные захватываются отлично, а вот записываемые данные почему-то не захватываются. Вижу SCSI-запросы и ответы... Все есть, кроме записываемых секторов данных. Может, там галочка какая есть, которая решит мою проблему? Заранее благодарен за ответы.
  4. Ну уж не знаю как на счет однозначной идентификации, но, когда я вкуривал в HID-устройство, то, помнится мне, там линукс и винда немного в различной последовательности посылали опросы дескрипторов устройства. Хотя, всё это вилами по воде писано. Но тема интересная, если честно.
  5. Надо чесать репу... =( При чем, интересный момент: Если я записываю сектор 1, а затем сектор 0, то сектор 1 оказывается битым (в начале сектора несколько байт забиты нулями) Если я записываю секторы 1 и 2, а затем 0, то все секторы оказываются нормальными.
  6. SD-card дурит

    Добрый день. Работаю с внешней карточкой памяти SD. Наблюдаю некоторые странные особенности: если я записываю один сектор на карту, а потом делаю ресет устройства, то сектор оказывается пустым (старые данные, не прошла запись). А если я записываю сектор, а после этого делаю чтение этого сектора, то после ресета сектор содержит правильную информацию. Странно... такое впечатление, что карта памяти кэширует данные в своей внутренней оперативке. У кого ест опыт работы с такими устройствами, подскажите, где копать? В инете лазил, но на запросы типа "SD data cache" очень много левой информации. Спасибо за ответы.
  7. Посмотрел самбой наличие на флешке бэдблоков. таких не обнаружено... Стало быть, с подсчетос CRC проблем быть не должно? Попробовал стереть прошивку из NAND! В результате устройство стало видеться по USB как "atm6124sysATMEL AT91xxxxxTestBoard"... Это работает встроенный (не изменяемый) загрузчик SAMBA в микроконтроллере. ТО есть, он полазил по внешним носителям в поиске загрузочных файлов, не нашел их и стал работать сам. В случае, если он находит загрузочный файл, то скачивает его в оперативу и передает ему управления. Стало быть, до этого самба все же находила мою прошивку, скачивала ее и передавала ей управление... но она по каким-то причинам не работала. =( Теперь остается вопрос, почему одна и та же прошивка на одном проце работает, а на другом таком же проце не работает...
  8. Всем привет. Работаю с МК AT91SAM9G54. Собрал свою платку с процом, NAND и DDR2. Раньше работал с отладочной платой AT91SAM9G54 и как она должна правильно работать представляю себе. На свою плату через JTAG могу грузить и запускать программы (IAR). Могу прошивать NAND через SAMBA JTAG. НО! Когда я загрузил прошивку в NAND и перезапустил контроллер, то никаких признаков жизни. Кварцы 12М и 32К живут, в порт отладки никакой информации... Такое ощущение, что sam-ba не находит загрузчиков (если вообще она стартует). Копание документации не помогло. Подскажите пожалста, куда копать дальше? На какие ключевые моменты можно посмотреть и проверить? Спасибо за ответы!
  9. Ок, Понял... но у меня проблема в том, что БЕЗ EndPoint2 мой макет не работет!!! Я бы и рад работать через нулевую конечную тоску, но как??!!
  10. Добрый день... Исследую эмулятор клавиатуры из примеров ATMEL для AT91SAM9G45 (работаю в IAR). ПРИМЕР ATMEL: показывает клавиатуру с двумя эндпоинтами (кроме нулевой) IN и OUT. IN посылает статусы с нажатыми клавишами, а OUT принимает состояние светодиодов и устанавливает их. Для описания репортов обмена испрользуется один дескриптор-репорта. Попробовал впихнуть дескрипторы от реальной клавиатуры для исследования, как оно устроено... РЕАЛЬНАЯ КЛАВА: содержит одну конечную точку OUT, и шлет через нее статусы с нажатыми клавишами. Установка состояния светодиодов при этом осуществляется через 0-точку. Описание репортов находится в одном дескрипторе репорта. ДЕСКРИПТОРЫ РЕАЛЬНОЙ КЛАВЫ НА ПРОЦЕ: переношу их 1-в-1 в мой проц... "клавиатура" обнаруживается, шлет все эти дескрипторы (проверял снифером), даже правильно посылает статусы с нажатыми клавишами!! НО не принимает (почти) статусы светодиодов!... Почему "почти"?... потому что принимает, но только те, которые после включения и определения устройстве в винде отсылаются на нулевую точку... дальнейшие поползновения с отправкой статусов светодиодов ни к чему не приводят... =( НЕПОНЯТКИ: Думаю, хост шлет репорты не туда... =( Но не могу понять, откуда хост берет информацию о том, на какую конечную точку слать репорты???!!... Может, я где-то чего-то упустил при переносе дескрипторов?!... ПРИМЕЧАНИЯ: при впихивании клавиатурных дескрипторов в проц я оставил дескриптор репорта тем, который был в процессоре (чтобы не переделывать обработку нажатых клавиш). при этом, конечно же, не забыв поменять соответствующее поле длины дескриптора репорта в HID-дескрипторе. ...для любителей отвечать "читай usb.org": читал, но не нашел. Если подскажете более точно, где натий, то спасибо. Спасибо за ответы!
  11. Добрый день. Использую платку с процом AT91SAM9G45 + NAND + внешняя ОЗУ большая... На IAR написал классную прожку, отладил ее в ddram через jtag... Теперь хочу залить это чудовище в NAND-флешку. Сейчас на флешке хранится bootstrap + uboot + zlinux. Грузят по цепочке друг друга... Я хочу разместить свой код (назовем его условно helloworld) вместо uboot, чтобы при старте платки грузился bootstrap, потом он выцеплял мою прожку и помещал ее в оперативку... Пробовал просто окомплилированную прожку (в режиме ddram) разместить по адресу, откуда bootstrap качает бинарник, но прога не пошла... Пробовал предварительно откомпилить прогу под sram, но ругается, что прожка весит больше, чем в проце есть памяти sram... Вообще, bootstrap берет данные с конкретного адреса флешки, кладет их в оперативу по определенному адресу, а потом джампится туда, как я понимаю... -- AT91bootstrap Project 3.0 -- -- SK-MAT91SAM9G45/M10 -- Compiled: Oct 30 2010 12:56:05 -- -I- Setting: MCK = 133MHz -I- I cache enabled. -I- Init DDRAM -I- Init NAND Flash -I- Nandflash ID is 0x9510DAEC -I- Nandflash driver initialized -I- Size of the whole device in bytes : 0x10000000 -I- Size in bytes of one single block of a device : 0x20000 -I- Number of blocks in the entire device : 0x800 -I- Size of the data area of a page in bytes : 0x800 -I- Number of pages in the entire device : 0x40 -I- Bus width : 8 -I- Copy "" (262144 bytes) from NAND 0x00020000 to 0x73f00000 -I- Jump to 0x73f00000 Подскажите, в какую сторону копать надо? Можт, надо компилить прогу под ddram, но указать где-то в настройках проекта, что прога лежит не с нулевого адреса? Или надо компилить под sram, но что тогда делать с тем, что IAR отказывается собирать бинарник? можно ли просто так поменять в ICF-файле размер sram, и не вылезет ли это еще где боком?... о0 Спасибо за ответы...
  12. не... audio-speaker - это только колонки... но для них есть пример... а вот audio-looprec - это и колнки и микрофон... но для них примера нету, а запустить не получилось... =(
  13. Добрый день. Пробую на микроконтроллере at91sam9g45 поднять работу микрофона. Среди примеров нашел работу с колонками (usb-device-audio-speaker), в примере используются модули из библиотеки at91lib/usb/device/audio-speaker/. В той же библиотеке имеется папка с уписанием устройства имеющего не только колонки, но и микрофон (usb-device-audio-speaker). Привинтил эти коды к своему процу, колонки (чтение из ПК) заработали, а вот микрофон (запись на ПК) никак не получается запустить... =( В инете подозрительно никаких ссылок на работу с микрофоном в at91lib. Кто сталкивался с этой проблемой или просто может подсказать чего, подскажите, пожалста! Спасибо за ваши ответы.
  14. Добрый день. Помогите пожалста разобраться, что за структура такая непонятная у дескриптора репорта клавиатуры? На более простенькой клавиатуре потренировался "разгребать" дескриптор репорта, и все получилось отлично, а этот где-то не так, наверное анализирую... Вот мои результаты разборок: 0x05 0x0C (GLOBAL_USAGEPAGE) 0x09 0x01 (LOCAL_USAGE) 0xA1 0x01 (COLLECTION) 0x85 0x01 (GLOBAL_REPORTID) 0x15 0x01 (GLOBAL_LOGICALMINIMUM) 0x26 0x5E 0x00 (GLOBAL_LOGICALMAXIMUM) 0x75 0x08 (GLOBAL_REPORTSIZE) 0x95 0x02 (GLOBAL_REPORTCOUNT) 0x0A 0x25 0x02 (LOCAL_USAGE) 0x09 0xB6 (LOCAL_USAGE) 0x09 0xB5 (LOCAL_USAGE) 0x09 0xB7 (LOCAL_USAGE) 0x09 0xCD (LOCAL_USAGE) 0x09 0xEA (LOCAL_USAGE) 0x09 0xE9 (LOCAL_USAGE) 0x09 0xE2 (LOCAL_USAGE) 0x0A 0x92 0x01 (LOCAL_USAGE) 0x0A 0x8A 0x01 (LOCAL_USAGE) 0x0A 0x21 0x02 (LOCAL_USAGE) 0x0A 0x23 0x02 (LOCAL_USAGE) 0x0A 0x2A 0x02 (LOCAL_USAGE) 0x0A 0x24 0x02 (LOCAL_USAGE) 0x0A 0x83 0x01 (LOCAL_USAGE) 0x1B 0x01 0x00 0x09 (LOCAL_USAGEMINIMUM) 0x00 (COLLECTION_PHYSICAL) 0x2B 0x4C 0x00 0x09 (LOCAL_USAGEMAXIMUM) 0x00 (COLLECTION_PHYSICAL) 0x05 0x0C (GLOBAL_USAGEPAGE) 0x0A 0x27 0x02 (LOCAL_USAGE) 0x0A 0x26 0x02 (LOCAL_USAGE) 0x09 0xB8 (LOCAL_USAGE) 0x81 0x60 (INPUT) 0xC0 (ENDCOLLECTION) 0x05 0x01 (GLOBAL_USAGEPAGE) 0x09 0x80 (LOCAL_USAGE) 0xA1 0x01 (COLLECTION) 0x85 0x02 (GLOBAL_REPORTID) 0x15 0x01 (GLOBAL_LOGICALMINIMUM) 0x25 0x03 (GLOBAL_LOGICALMAXIMUM) 0x75 0x02 (GLOBAL_REPORTSIZE) 0x95 0x01 (GLOBAL_REPORTCOUNT) 0x09 0x82 (LOCAL_USAGE) 0x09 0x81 (LOCAL_USAGE) 0x09 0x83 (LOCAL_USAGE) 0x81 0x60 (INPUT) 0x75 0x06 (GLOBAL_REPORTSIZE) 0x81 0x03 (INPUT) 0xC0 (ENDCOLLECTION) Ком, разумеется, клаву определяет безошибочно, значит, структурка у нее никакая не кривая, я её просто неправильно разобрал. Где я могу ошибаться? Заранее спасибо за подсказки.