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

chechestor

Участник
  • Постов

    40
  • Зарегистрирован

  • Посещение

Весь контент chechestor


  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. SD-card дурит

    Надо чесать репу... =( При чем, интересный момент: Если я записываю сектор 1, а затем сектор 0, то сектор 1 оказывается битым (в начале сектора несколько байт забиты нулями) Если я записываю секторы 1 и 2, а затем 0, то все секторы оказываются нормальными.
  6. SD-card дурит

    Добрый день. Работаю с внешней карточкой памяти SD. Наблюдаю некоторые странные особенности: если я записываю один сектор на карту, а потом делаю ресет устройства, то сектор оказывается пустым (старые данные, не прошла запись). А если я записываю сектор, а после этого делаю чтение этого сектора, то после ресета сектор содержит правильную информацию. Странно... такое впечатление, что карта памяти кэширует данные в своей внутренней оперативке. У кого ест опыт работы с такими устройствами, подскажите, где копать? В инете лазил, но на запросы типа "SD data cache" очень много левой информации. Спасибо за ответы.
  7. Посмотрел самбой наличие на флешке бэдблоков. таких не обнаружено... Стало быть, с подсчетос CRC проблем быть не должно? Попробовал стереть прошивку из NAND! В результате устройство стало видеться по USB как "atm6124sysATMEL AT91xxxxxTestBoard"... Это работает встроенный (не изменяемый) загрузчик SAMBA в микроконтроллере. ТО есть, он полазил по внешним носителям в поиске загрузочных файлов, не нашел их и стал работать сам. В случае, если он находит загрузочный файл, то скачивает его в оперативу и передает ему управления. Стало быть, до этого самба все же находила мою прошивку, скачивала ее и передавала ей управление... но она по каким-то причинам не работала. =( Теперь остается вопрос, почему одна и та же прошивка на одном проце работает, а на другом таком же проце не работает...
  8. AT91SAM9G45 не стартует

    Всем привет. Работаю с МК 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. ARM9: bootstarp + NAND HalloWorld

    Добрый день. Использую платку с процом 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. Atmel at91lib microphone?

    не... audio-speaker - это только колонки... но для них есть пример... а вот audio-looprec - это и колнки и микрофон... но для них примера нету, а запустить не получилось... =(
  13. Atmel at91lib microphone?

    Добрый день. Пробую на микроконтроллере 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) Ком, разумеется, клаву определяет безошибочно, значит, структурка у нее никакая не кривая, я её просто неправильно разобрал. Где я могу ошибаться? Заранее спасибо за подсказки.
  15. так получается... но в случае с GCC синтаксисом мы можем просто объявить структуру и она будет сразу выровнена(выравнивание задано при описании), а с случае IARa при объявлении КАЖДОГО нового экземпляра структуры придется прописывать перед ней pragma. Вот я и спрашиваю, можно ли сделать полный эквивалент GCC-шного __attribure__(aligned(256))?
  16. а вот и нет... пробовал делать так: #pragma pack(push) #pragma pack(256) struct ohci_hcca { ... } //__attribute__((aligned(256))); (то, что было для GCC) #pragma pack(pop) - IAR отказыввается работать с такими большими числами как 256. более того, если ему указать 16, например, то он все равно не выравнивает адрес (в моем случае адрес заканчивался на 8). Я так понимаю, что #pragma pack(...) нужен для нормировки РАЗМЕРА структуры, но никак не для выравнивания адреса структуры в памяти... Чё ж делать-то?! =(
  17. align для структур

    Добрый день. Подскажите пожалста, как быть со структурами в IAR?!... Надо выравнивать структуры, чтобы адреса заканчивались нулями... есть #pragma data_alignment=XXX, но она действует только на объявляемые переменные, а можно ли задать тип структуры, которая при объявлении экземпляра структуры сама будет выравниваться?... нАподобие того как в GCC делается struct my_struct{...}__attribute__((aligned(256)))
  18. USB падает

    Кстати, перекопал код... Клавиатура отвечает нормально, все как положено, оказывается... ей больше 8 байт можно и не отвечать по правилам... А вот после запроса дескриптора от клавиатуры идет ресет порта корневого хаба, на котором висит клава... и вот как раз корневой хаб уже отказывается ресетить порт... бред какой-то... 0_o
  19. USB падает

    =))) дык я ж среду имел ввиду... IAR, Kdevelop для GCC, Kail, мож еще чего...
  20. USB падает

    Здоровски... вот и я прикручиваю u-boot-овский драйвер... у меня тоже сначала устройства не виделись... оказалось, частоты не приходили на USB-периферию. а когда стал подавать частоты, то корневой хаб определял подключение устройств, но не слал посылки... оказалось, частота тактирования была слишком высокой... 2 Kovigor: на EHCI забил. пока хватает и OHCI... на ваши примеры очень хотелось бы посмотреть =) а проект ваш на чем написан?
  21. USB падает

    Добрый день... Немного продвинулся вперед, запуская USB OHCI на платке AT91SAM9G45. Я добился начала обмена с LS устройством, но только "начала"... Помогите протолкнуть обмен дальше, пожалста. На данный момент обмен выглядит так: - хост посылает запрос устройству GET_DESCRIPTOR_DEVICE (посылка видна на осциллографе), с запросом 0x40 байт данных. - устройство начинает отвечть на запрос... - пакет ответа "от устройства" прекращается примерно на трети от номинальной длины. (сравнивал с нормальным ответом) - в программе заполняется только 8 байт данных в буфере, не смотря на то что функцияя чтения вернула длину буфера 0х40. Буфер выглядит криво: usb_get_descriptor() = 0x40 0x00]: 12 01 10 01 0x04]: 00 00 00 08 0x08]: CD CD CD CD 0x0C]: CD CD CD CD 0x10]: CD CD CD CD 0x14]: CD CD CD CD 0x18]: CD CD CD CD 0x1C]: CD CD CD CD 0x20]: CD CD CD CD 0x24]: CD CD CD CD 0x28]: CD CD CD CD 0x2C]: CD CD CD CD 0x30]: CD CD CD CD 0x34]: CD CD CD CD 0x38]: CD CD CD CD 0x3C]: CD CD CD CD пробовал увеличивать значения в поле HcFmInterval и даже в HcLSThreshold... безрезультатно... =( Кто знает USB, помогите, пожалста...
  22. Привет. Камень AT91SAM9G45... Ну, просто если не сюда, то куда же еще писать?... Ветки типа "технология USB" не нашел.
  23. пробовал осцилом... питание включается, потом ничего не происходит... на шине. А Вы имеете ввиду аппаратный сниф?
  24. Добрый день. Продолжаю одолевать USB OHCI, получается ужасно... На данный момент дела обстоят так: корневой хаб микроконтроллера видится, читается, находит подключенное устройство, но: 1) почему-то в статусе порта с подключенным устройством максимальный ток видит как 0х11 (а должен видеть 0х91); 2) при первой же попытке обращения к устройству выдает ошибку ERROR: USB-error: DEVICENOTRESPONDING: Device did not respond to token (IN) or did not provide a handshake (OUT) (5) Тот же самый драйвер в u-boot работает без проблем, разумеется... Чё это вообще может быть?!... Спасибо за ответы.
×
×
  • Создать...