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

SolarA

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

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

  • Посещение

Репутация

0 Обычный

Информация о SolarA

  • Звание
    Участник
    Участник
  1. Бардак с at91sam7s64

    Хмм... Это идея. Но у меня тока at91sam7s64. Там 4 конечных точки всего
  2. Бардак с at91sam7s64

    Это плохо. Большое спасибо всем за советы и ответы. Попытаюсь писать драйвера. Если че буду обращаться :)
  3. Бардак с at91sam7s64

    Я тоже об этом думал. ТЗ пока такое как описал выше. По идеи, на предельных скоростях и без загрузки компа иными задачами, должно работать. Я до этого не работал серьезно с МК, так по мелочам. Это мой первый серьезный проект. В основном с ПК работал. Таких проблем у меня не возникало. Ну наверное пока буду разбираться как писать драйвера(+misyachniy подкинул мануальчик по USB), напишу, а там видно будет. Я еще беспокоюсь хватит ли этого МК для вычислений. Там они не слабые, и не известно будет ли он укладываться в положенное время. Хотя я так понимаю, что как написано в даташите • PLL output ranges between 80 and 220 MHz It provides SLCK, MAINCK and PLLCK. то контроллер может работать на частоте около 200 МГц. Этого вроде как должно хватать
  4. Бардак с at91sam7s64

    Описываю: Есть Верхний уровень - прога (написана пока под линукс, позже под винду) с GUI, которая считает координаты и т.д. Есть Нижний уровень - контроллер на базе at91sam7s64 который, кое че, уже у себя досчитывает и раздает сигналы на двигатели. Нада - идеально: раз в 20 мкс передавать с верхнего уровня вниз 660 байт и снизу на верх 330 байт. Реально: там хватит скорости передачи 660 байт/мс так как не каждые 20мкс есть изменения системы. Передаваемые данные это 2-3 структуры, которые описывают систему. Обмен данными через USB(можно прикинутся COM портом(типа USBtoCOM), но предварительные тесты показали что скорости не хватает), так как нада чтоб контролер подключался к любому компу на котором стои ПО и драйвера без лишних настроек ком порта и т.д. Вот такая задача
  5. Бардак с at91sam7s64

    Мне по скорости нада 660 байт/мс. Так что мне должно хватать. Насчет кэширования это еще мне один подводный камень. Я уже теперь и не знаю что делать. Наверное нада не парится и садится писать-искать драйвера. Подожду может еще кто седня чего посоветует с масс сторедж, а завтра наверное нада будет разбиратся с драйверами. Кстати как вы организовали чтение и запись в файл со стороны МК?
  6. Бардак с at91sam7s64

    А можно ссылку прямую на тот тред. Где описывали как работать через Mass Storage. А то в этих делах я новичок, хотелось бы посмотреть че и как делали до меня с какими-то пояснениями. А то драйвера писать для меня наверное будет еще сложнее чем сделать Mass Storage. Плюс с этим масс сторедж еще не ясно как с МК читать файлы, что будут в памяти И что такое pragma pack?
  7. Бардак с at91sam7s64

    Тоесть программный эмулятор? Со стороны ПК чтобы была видна флешка допустим на 16МБ, а реально использовать только 4 кб? Я пробовал выставлять границы памяти которой нету, тоесть 256 кб. ХР видит устройство с 0 байт и предлагает его отформатировать на 256 кб, ФАТ, стандартный размер кластера. Когда пробую до конца формат не доходит и мне пишет "не удалось закончить форматирование" Такое же происходит если я выделяю 4кб. ХР видит 0, предлагает форматнуть на 4 кб и тоже "не удалось закончить форматирование". Есть еще мысль что у меня както не правельно прописано само общение с девайсом(тоесть функции чтения/записи), но с другой стороны все вплоть до инициализации места доходит, плюс функции чтения/записи написаны вроде нормально. Я уже склоняюсь к написанию драйверов для устройства. И таким образом уже подключать МК к ПК. Конечно не уверен что это проще и быстрее. По идеи это можно будет сделать
  8. Бардак с at91sam7s64

    МДА... я уже сам прогуглил. Получается что действительно может не хватать. Ща под линуксовые ФС попробую найти минимальный размер. Такого я честно говоря не ожидал.
  9. Бардак с at91sam7s64

    Почему мало? Вы имеете ввиду что его винда определит как 0 или что мне его мало для нужд? Мне хватить должно с головой. А насчет винды, я по крайней мере не слышал о какихто ограничениях в размере диска.
  10. Бардак с at91sam7s64

    Не получается выделить память. Пишу такое : MEDSdram_Initialize(&(medias[numMedias]),0x00203000,0x0FFF); LUN_Init(&(luns[numMedias]), &(medias[numMedias]), buffer, 0, 0x0FFF, BLOCK_SIZE); numMedias++; где void MEDSdram_Initialize(Media *media, unsigned int baseAddress, unsigned int size) { trace_LOG(trace_INFO, "I: Sdram init\n\r"); // Initialize media fields media->write = MEDSdram_Write; media->read = MEDSdram_Read; media->handler = 0; media->flush = 0; media->baseAddress = baseAddress; media->size = size; media->state = MED_STATE_READY; media->transfer.data = 0; media->transfer.address = 0; media->transfer.length = 0; media->transfer.callback = 0; media->transfer.argument = 0; } void LUN_Init(MSDLun *lun, Media *media, unsigned char *buffer, unsigned int baseAddress, unsigned int size, unsigned int blockSize) { unsigned int logicalBlockAddress = (size / blockSize) - 1; trace_LOG(trace_INFO, "I: LUN init\n\r"); // Initialize LUN lun->media = media; lun->baseAddress = baseAddress; lun->size = size; lun->blockSize = blockSize; lun->readWriteBuffer = buffer; // Initialize request sense data lun->requestSenseData.bResponseCode = SBC_SENSE_DATA_FIXED_CURRENT; lun->requestSenseData.isValid = 1; lun->requestSenseData.bObsolete1 = 0; lun->requestSenseData.bSenseKey = SBC_SENSE_KEY_NO_SENSE; lun->requestSenseData.bReserved1 = 0; lun->requestSenseData.isILI = 0; lun->requestSenseData.isEOM = 0; lun->requestSenseData.isFilemark = 0; lun->requestSenseData.pInformation[0] = 0; lun->requestSenseData.pInformation[1] = 0; lun->requestSenseData.pInformation[2] = 0; lun->requestSenseData.pInformation[3] = 0; lun->requestSenseData.bAdditionalSenseLength = sizeof(SBCRequestSenseData) - 8; lun->requestSenseData.bAdditionalSenseCode = 0; lun->requestSenseData.bAdditionalSenseCodeQualifier = 0; lun->requestSenseData.bFieldReplaceableUnitCode = 0; lun->requestSenseData.bSenseKeySpecific = 0; lun->requestSenseData.pSenseKeySpecific[0] = 0; lun->requestSenseData.pSenseKeySpecific[0] = 0; lun->requestSenseData.isSKSV = 0; // Initialize inquiry data lun->inquiryData = &inquiryData; // Initialize read capacity data STORE_DWORDB(logicalBlockAddress, lun->readCapacityData.pLogicalBlockAddress); STORE_DWORDB(blockSize, lun->readCapacityData.pLogicalBlockLength); } По идеи после этого у меня в устройстве должно появится 4095 байт места, которое я выдрал с РАМ Но этого нету. Подскажите пожалуйста где не правильно Выложи пожалуйста. С названием ветки протупил :05: , но ее уже вроде нельзя изменить. Прошиваю через usb с помощью ИАР, или через SEGGER J-FLASH. Отлаживаю Jet link 5
  11. Бардак с at91sam7s64

    Уже продолжая тему, может комуто сгодится, я подправил описание в проекте, поетому он у меня и запустился. Теперь мучаю память, пока не получается ничего выделить, и у меня висит дисковый накопитель размером 0 байт. Решил переписать для СДРАМ начальный адрес как кусок РАМ длинной в ФФФ
  12. Бардак с at91sam7s64

    звучит тупо-но я чтото сделал и у меня нормально определилось устройство. Пока у него 0 байт всего буду копать дальше. Спасибо за поддержку :beer:
  13. Бардак с at91sam7s64

    С UDP понял. Как собсно и с примерами. Может у когото есть правильный пример инициализации для mass storage device? По поводу скорости: я указал самый худший вариант. На самом деле там большую часть времени будет к ПК 270 байтов, с ПК на МК 300 байтов. Думаю будет успевать. Сразу такой вопрос: можно ли организовать mass storage device с памятью в РАМ? Я ща копаюсь в исходниках недопримера там вроде выставляются адрес начала памяти и ее количество. Но не совсем понятно как оно все работает. Плюс забыл сказать что тот бинарник с GCCшного примера пользует одинаковые библиотеки с моим проектом. Отсюда напрашивается такие вопросы: 1. Не из-за компилятора ли у меня не работает пример? 2. Не из-за того ли, что у меня не атмеловский evaluation board, а какойто полусамопальный наш(без кнопок, памяти, дисплея и т.д.), не работает пример? (По типу, он лезет в СДРАМ которой нету и поэтому както бочит) Кстати толькошо нашел заглушку (если чегото там нету то прога не доходит до инициализации ЮСБ), убал ее. Теперь у меня неизвестное ЮСБ запоминающее устройство для которого в 2000 нада поставить драйвера, а ХР попросту говорит что оно сконфигурировано не правильно. Но зато уже определяет Vendor ID, Product ID и еже с ними. Кстати там есть 2 такие строки // Configure baud rate AT91C_BASE_DBGU->DBGU_BRGR = BOARD_MCK / (115200 * 16); // Enable receiver and transmitter AT91C_BASE_DBGU->DBGU_CR = AT91C_US_RXEN | AT91C_US_TXEN; Без которых устройство не определяется. Ума не приложу какое отношение DBGU имеет к UDP
  14. Бардак с at91sam7s64

    Пишет вот так: USBDevice "Для устройства не установлены драйверы. (Код 28) Нажмите "Переустановить" для переустановки драйверов этого устройства." Я понял вопрос, я вшивал core project он сразу просит установить драйвера,а этот в 2000 у меня не просит, а на ХР говорит что устройство сконфигурировано неправильно или чтото в таком духе. Почему 600 байт/мс не пройдут? Скорость для фулл спид 12Мбит/сек=12кбит/мс вроде правильно считаю, ясно что такой скорости не будет, но 1кбит/мс думаю, что точно должно тянуть. Плюс еще хотел спросить а то с даташита к at91sam7s64 не ясно: у UDP есть свои встроенные буфера FIFO или как в USARTе они работают с контроллером ПДП или их вообще нада назначать с РАМ в проге как какието масивы например
  15. Бардак с at91sam7s64

    Народ не работает ЮСБ. Скачал с сайта Атмела примеры версии 1.4 и попробовал вшить usb mass storage device. После этого плата определяет как просто device которому нужны драйвера и все(пробовал на 2000 и на ХР). Пробовал также версии которые идут с ИАР 5.2(по идеи тот же 1.4) а также версия 1.3. Все точно так же. Уже не знаю че делать. Устройство нормально не определяется и все. (тока один раз я нашел бинарник с GCCшного проекта поидеи который вшился и заработал, тоесть определил платку как масс сторедж с 0 байтов вообще и 0 байтов свободного места. это устройство нельзя отформатировать) Задача Мне надо организовать обмен данными между ПК и МК. Примерно 600 байт туда и обратно раз в милисекунду гдето(лучше чаще). Думал сделать через масс сторедж, дабы с ПК писало в какойто файл, а читало с другого. Выделить под эти файлы допустим по 2 кБ в РАМ(для с64 всего 16кб РАМ) и спокойно себе писать в файл с ПК и читать область памяти в проге на МК. Или как вариант написать драйвера под винду для своего девайса и через них уже както общатся. Хотелось бы услышать какието идеи или замечания как это сделать и если кому не сложно, попробуйте вшить иаровский пример - будет ли он у вас работать. Если будет, то пришлите ссылочку откуда скачали или же сам проект. Буду премного благодарен за инфу
×
×
  • Создать...