Jump to content

    

VslavX

Свой
  • Content Count

    1046
  • Joined

  • Last visited

Posts posted by VslavX


  1. Ну просто не знаю как еще сказать, повторяю м_е_д_л_е_н_н_о еще раз: в тулзах от М$ нет абсолютного линковщика/локатора и его библиотека н_и_к_а_к не поддерживает ембеддный код, конечно можно извратиться и натянуть его как резиновое изделие на голову, но стоит ли сей спорт выделки? У меня есть знакомый, который адаптировал MS 7.0 под X86 embedded, так там от библиотек практически ничего не осталось, а процедура превращения результирующего экзешника в hex-ленту поражает своей алхимичностью...

    Да нет там ничего сложного - EVC4, например, генерит код для WinCE в обычном формате PE. Я все собираюсь, да никак не найду пары дней для написания конвертировщика в hex. Если таки напишу - выложу с исходниками.

    Оно того стоит - EVC очень приличный код выдает. Недавно коллега перекомпилил мой код с GCC3.2 на EVC4, блин, в процедуре загрузки ПЛИС через JTAG пришлось нопы ручками вставлять - настолько EVC код под XScale на скорость прооптимизировал. Единственное что - с документацией плоховато. Еще мне ассемблеры от MS не нравятся, но это уже мои персональные тараканы :)

  2. Главы 25 и 26 в обобщенном самовском даташите.

    Делители-то разные. Но коэффициенты у них одинаковые - 1,2 и 4. Для USB надо 48 МГц, соответственно с учетом делителя частота PLL может быть 48, 96 или 192. Для клока ядра делитель может иметь те же самые значения - 1,2,4,8 и т.д (поле PRES в PMC_MCKR). Вот и получается что максимальная частота ядра у SAM7S при использовании USB составляет 48 МГц.

    RM3400 в этом случае получше - у него два PLL, один из которых используется для USB, а второй для ядра.

  3. таак...интересный момент, а про то, что у ATMEL ОЩУТИМО медленный FLASH эТО правда?

    Угу. У SAM7 есть еще идиотизм - если используется USB, то максимальная частота ядра - 48МГц, поскольку PLL у ядра и контроллера USB общий и коэфициенты деления одинаковые - то есть нельзя, например, запустить PLL на 192 МГц и поделить для USB на 4 а для ядра - на 3 (получив тем самым 64 Мгц). С учетом WS=1 для флеши на 48 МГц имеем эффективную частоту ядра всего 24 МГц :( Режим Thumb реально сможет заметно помочь (раза в полтора ускорить) только при ручной оптимизации кода.

  4. Про линукс сказать ничего не могу, дела пока не имел.

    OBEX - это сервис для обмена произвольными объектами. IrCOMM, IrLPT - тоже сервисы.

    Сокеты - это обычные Win32 сокеты или Winsock2 - набор функций - WSAConnect(), WSARecv(), WSASend() и прочие.

    Вы просто заинтриговали меня. Я, откровенно говоря, никогда не изучал вопрос работы напрямую через PHY. Мне казалось IRDA=стек.

    Но адаптер должен быть совсем тупой - преобразователь IR<->RS-232 + малюсенький микроконтроллер для автоопределения скорости обмена и выработки x8/x16 синхроклока. Ну и разобраться как него правильно питание подавать через линии DTR/RTS. Кстати - MS не рекомендует использование IrCOMM - это в MSDN написано. Честно говоря - в Win32 с сокетами работать проще чем с COM, ИМХО. Оверлаппед I/O на сокетах простой и без этих дурацких тайм-аутов SetCommTimeouts().

    Интересно, сколько еще проживет IRDA? Вроде как в КПК самые последние его ставят, в сотики тоже.

    Не переживайте - меня с 2000-года смертью IrDA пугают, и все никак оно не помрет, болезное :)

    Но вот все больше становиться скоростных адаптеров, их уже на RS-232 не прицепишь. Да и для связи с КПК тоже стек нужен, так что деваться некуда.

  5. Если хотите сделать попроще, то я бы Вам посоветовал завязываться не на IrCOMM, а сделать свой именованный сервис на базе IrLMP. Этим Вы избежите написания собственно IrCOMM и TinyTP. Да и аттрибутов в IAS придется поменьше вписывать. TinyTP сам по себе несложный, но может потребовать дополнительной памяти под буфера. IrDA сокеты под Windows вполне переключаются в LMP моду и позволяют законнектиться с любым именованным сервисом.

    PicoIrDA мне не понравился, все равно пришлось изучать стандарт, а когда разобрался для начала в IrLAP, то понял что под мою задачу лучше все переписать. Вообще - писателей стандарта надо ставить к стенке - месяц-полтора был затрачен на продирание сквозь их идиотские многоуровневые диаграммы. На самом деле - из них 90% для простого устройства не нужно.

    Работать без IrDA стека (напрямую с адаптером как с COM) можно обычно для внешних адаптеров, присобачиваемых на RS-232, не устанавливая на них IrDA драйверов. С внутренними адаптерами такой фокус иногда проходил года до 98-го, до появления ACPI. После танцев с бубнами вокруг реестра удавалось убедить Win9X что это не IrDA а обычный COM. Потом пошли навороченные адаптеры на 1.15 и 4 мегабита и прочие извращения в виде неотключаемого ACPI, и этот способ совсем помер.

  6. А фича "использовать IORDY" - может быть отключаемой - это зависит от устройства и контроллера ATA. Посмотрите слова 49, 66-68 в Identify Device Information. Может быть Ваше устройство неверно их сообщает BIOS. Если команда IDENTIFY_DEVICE не поддерживается, то BIOS материнки как правило считает что устройства нет и канал PATA может быть вообще инициализирован "левым образом" - выставлен любой PIO (приходилось даже PIO5 видеть) и любая политика кеширования транзакций по чтению регистра данных.

  7. Ну вот! Если на 1024х768х8 уходит 47 МБайт в секунду, а пропускная способность около 120 МБ/с, то остается 120-47 = 73 Мб/с. Вы считаете, что этого мало для работы ядра и рисования картинок? Тем более, что операционка не предусматривается, ибо задача довольно проста.

    Никто кроме Вас не знает всех подробностей Вашей задачи :). Поэтому окончательное решение конечно за Вами :). Если устроит 256 цветов, то, кажись - ПСП должно хватить.

    В качестве NAND флеши можно взять SmartMediaCard? Только как туда загрузчик поместить? Она же для РС как диск выглядит?

    SM можно использовать. Но она большая по размерам и может быть трудно найти хороший разъем. ИМХО, лучше на плате заложить обычную NAND и прошивать ее через JTAG CPU. К JTAG можно например подключить обычный байт-бластер. Есть два метода прошивки - через Boundary Scan и через EmbeddedICE. Через BB+BS - долго и медленно - примерно 100-200 байт/сек.

  8. Да... Посеяли вы сомнения мне в душу. VslavX, вы же испытывали самсунг с матрицей 1024х768 и

    Нет, максимум что практически испытывалось - 640x480x8bpp. В тестах от Самсунга есть код максимум для панелей 800x600x8bpp (хотя, может там чего нового добавилось, за пару последних лет).

    О тесте. Ведь вы приводите данные о том с какой скоростью ядро читает и пишет данные в SDRAM, поэтому насколько можно оченивать эти данные?

    Это данные практических тестов и ПСП в этих тестах на практике уменьшается при включении LCD на расчетное значение. Например панель 640x480x8bpp - это 370 килобайт буфера, он выводится 60 раз в секунду (регенерация изображения), итого нужная ПСП - 18.5 мегабайт в секунду. Вот указанные в тесте цифры при включении данной панели примерно на 18 мегабайт и уменьшались. Для Вашего cлучая - 1024*768*60 - 47 мегабайт. Если захотите 65K цветов вместо 256, то эти 47 мегабайт надо удвоить и что тогда останется?

    Только что поглядел доку на Micron MT48LC2M32B2(спасибо за совет) и пришла безумная идея. Если попробовать память взять на 200 МГц и проц на 200 МГц, и поставить HCLK равным клоку проца? Хотя 200 МГц на большой объем пока не нашел :(

    Маловероятно, что заработает, к тому же учтите - что 2410A это обновленная (без смены техпроцесса) и немного прооверклоченная версия 2410X - она работает при питании ядра 2.0V и уже, похоже, на пределе по частотам.

    P.S. Сорри, у меня сейчас нет в наличии работающего экземпляра платы с 2410. Можно было бы настроить контроллер LCD на 1024*768 (без подключения реальной панели, ессно) и посмотреть что получиться по скорости.

  9. 12 вольт и будет.

    Мы применяли 1757 (14 вольтовый аналог 1758-го) именно в первом рассмотренном Вами варианте - 1757 + две ячейки LiOH + 2xStepDown (+3.3V/+5V) на L5973AD. Общий КПД получился за 85% при максимальной 15Вт выходной мощности, батареи высасывает "досуха" - приходится разряд контролировать процессором + супервизор. Выключение - через shutdown 5973-их. Со схемами на копеешных MC34063 на сравнить - ни по цене, ни по размерам :)

  10. Я тут подумал - все-таки слабоват 2410 для панели 1024x768. Теоретически процессор их поддерживает, но даже в "родных" самсунговских тестах я не нашел кода для поддержки таких панелей - максимум 800x600. Ниже я приведу практические цифры для ПСП полученные на реальной плате с 2410, а Вы уже решайте сами - достаточно для Вашей задачи или нет.

    Условия - S2410@266MГц, SDRAM 32-bit@133MHz, x8 burst, 15uS регенерация, CPU "ldm" test

    Условия                             Запись      Чтение
    ICache, DCache, MMU disabled        48MBps      38MBps
    ICache enabled                      100MBps     64MBps
    ICache, DCache (WT), MMU enabled    189MBps     117MBps
    ICache, DCache (WB), MMU enabled    187MBps     116MBps
    Чтение из DCache                                528MBps

    Замечу еще, что тест производился под управлением процессора блоками из 32 инструкций ldm/stm по 8 регистров в списке каждой с предварительным разогревом I-cache. Линейно читалась-писалась большая область (несколько мегабайт, кроме теста DCache). Все DMA и прерывания отключались. Включение DMA от LCD отъедала ПСП близко к расчетной, так что особого запаса от теоретической ПСП SDRAM в 266MBps тут нет (типа проц+DMA смогут лучше совместно использовать контроллер SDRAM вплоть до теоретической максимальной ПСП, так вот - практически этого не происходит).

     

    P.S. А ведь панель надо не только отображать. Вы ж на ней потом еще чего-то рисовать захотите :), да еще чтобы все шустро делалось. Вот тут уже запаса по скорости у 2410 совсем нету, ИМХО - больше панель - больше объемы для вывода картинки молотить надо. Хотя, в нашем варианте мы применяли 640x480x8bpp максимум, так что насчет 1024x768x?bpp я могу только теоретизировать , может не так оно и страшно :)

  11. дороги 0.12. Панели подходят далеко не все, несмотря на "универсальность" встроенного контроллера LCD, мы обломались с парой моделей, тайминги не устроили, поэтому читайте внимательно даташиты.

    Да, есть такое дело. Но нам повезло - панели подбирали заказчики и из дюжины предложенных только две не подошли (забраковали какие-то Аримы, кажись, но могу сейчас ошибиться). Но если очень хочется, от можно и ПЛИСку недорогую поставить - синхросигналов у 2410 - завались, есть даже дополнительные "левые", предназначенные исключительно для самсунговских панелей.

    По памяти: есть чипы 32р не в BGA и предостаточно, я поставил MT48LC2M32B2.

    Угу, я имел ввиду у самсунга - нету. На эти платы тогда от гнусмаса шел комплект - CPU + SDRAM + NAND поэтому я на корейцах и зациклился. Был не прав. Хотя - там где BGA272 там и BGA90 - на технологические нормы/цену платы это уже не влияет.

    I2S нареканий не вызывает, если работаем под Linux и используем стандартные кодеки и стандартные дрова к ним же.

    А можно тогда вопрос? Как Вы получаете произвольную частоту дискретизации? Или хотя бы набор из 44.1/48кГц и кратные им? Внутренний делитель у I2S поганенький - опорную только на целое делит. Или удалось поставить внешний синтезатор и заюзать I2S-master+внутренний делитель? У нас по-любому надо по было звук по IP получать с неким аналогом медленного "ФАПЧ" с сервером, так что пришлось применять I2S в слейве + внешний плавно перестраиваемый генератор, что было довольно проблемно.

  12. Мне нужно приводить в движение матрицу 1024х768, в принципе я согласен пожертвовать половину времени LCD контроллеру.

    Ну тогда только 32-битная шина данных к SDRAM - тут без вариантов.

    1. Что вы называете неудачным подключением шлейфа? Думаю в моем случае проблем не будет, т.к. все равно преобразователь в LVDS нужно ставить (DS90C385).

    На первой платке у нас стоял разъем под плоский шлейф с шагом 0.5мм. Боже мой, как только криворукие программисты (часть из них работала удаленно) их не засовывали. Потом неработающая плата в итоге попадает ко мне, смотрю - а там выходы проца на LCD -"убитые". Драйвер LVDS по идее должен с этой проблемой помочь.

    2. Также в моем случае операционка не нужна(так мне кажется), там планируется достаточно простой софт. В вашем случае, я так понимаю что вы использовали какую-то ОС (легче застрелиться, чем USB Host запрограммить) Есть ли при этом требования/ограничения к железу?

    На данной плате собственно софтом мы не занимались - это делали наши партнеры. Дело было года три назад - насколько я знаю - они тогда подняли Линукс 2.4 и WinCE 3.x. Основное ограничение только по по объему SDRAM - мы ставили 32МБ и никто не жаловался.

  13. Вполне нормальный процессор. Особых глюков несовместимых с жизнью замечено не было. Немного глючная и бестолковая документация, но вполне терпимо.

    Хорошую и полную схему можно скачать с сайта Самсунга - схема на кит SMDK2410. Основные принципы можно взять оттуда и результирующее изделие должно быть сразу работоспособно.

    По разводке - немного достает шаг в 0.8мм, но при нормах платы 0.125 и переходных 0.2/0.4 можно оттрассировать на 4-х слойной плате.

    На шине памяти я резисторы ставил только на адрес и управление. Настоятельно советую использовать 32-битную шину данных к SDRAM, на 16-битной намного дольше заполняется 32-байтная строка кеша - значительно тормозливее получается. И при использовании 32-битного чипа SDRAM (правда, они все в BGA) места на плате идет даже меньше.

    Контроллер SDRAM у Самсунга неплохой - у меня получалось ПСП на уровне 120Мб/сек для PC133/32 бита. Пропускная способность памяти также важна и для больших экранов. Мы проводили тесты - при 1024x768x8bppx60Hz отжиралась примерно половина на регенерацию изображения. ИМХО - неприлично много. Панели типа 320x240 забирают 5-10 процентов ПСП - вполне терпимо.

    Панели пробовались mono STN/DSTN и color TFT (18-bit). На выходы LCD от процессора я бы порекомендовал буферы - в нашем первом варианте проц охотно горел при неудачном подключении шлейфа от панели. Еще один раз оторвалось заземление от обрамления - преобразователь питания CF лампы выжег все "на корню" - так что тоже смотрите внимательно.

    MMC/SD, USB хост/девайс и тач-панель работают согласно документации.

    Немного глючный и неудобный звуковой I2S - я бы порекомендовал внешний тактовый генератор.

    Еще что понравилось - загрузка с NAND - можно в одном чипе иметь флеш-диск и загрузочный модуль.

    Ну и вообще - 2410 - очень симпатичный и недорогой процессор для поделок типа PDA. Если бы еще не BGA272, то цены бы ему не было :)

  14. Бас-мастеринг для сетевых карт необязателен - часто у сетевых чипов них внутри буфера есть и их может быть вполне достаточно.

    Года три-четыре назад в конфе fido7.ru.embedded пробегала информация о прикручивании 100BASE-TX к AVR. То ли 8515, то ли Mega. Парни взяли и недолго заморачиваясь поставили PCI слот и в нее воткнули самую дешевую сетевую платку на каком-то чипе от Realtek. Естественно, транзакции на PCI эмулировались программно через IO-порты AVR. Написали софт и оно у них работало, даже готовый кит AVR+100BASE-TX пытались продавать.

    Я с ними списывался - нам на тот момент нужна была тестовая платформа для мелкосерийных PCI-плат.

    ИМХО, из такого кита AVR+PCI слот получился бы неплохой стенд для тестирования PCI плат (с новым софтом разумеется). Но чего-то тогда мы не договорились (то ли с оплатой-доставкой были проблемы, то ли первую партию китов у них всю размели, а следующую "с улучшениями" долго ждать было).

  15. Т.е. запрещено подвешивать больше чем один контакт на каждий PCI сигнал. Особенно PCI CLOCK.

    При желании это требование можно обойти при помощи Clock Buffers. Но желание должно быть очень уж сильным :)

    А почему в предыдущем посте я не был уверен - может быть там весь PCI обмен идет через MAX. В этом случае плата еще может соответствовать PCI спецификации. Ведь PCI моста на плате нет.

    А может быть там на MAX и собран мостик типа PCI<->(своя шина). И на этой "своей шине" и сидит Циклон. Автор топика нигде вроде не написал, что Циклон сидит на PCI непосредственно.

    Насчет прошивки - EPCS прекрасно переконфигурируется самим Циклоном по PCI шине. У меня так реализованно во всех платах. Если уж вы сильно боитесь что во время переконфигурирования

    ИМХО, тоже очень неплохое решение. По упрощению печатной платы - так вообще оптимальное. Но мы все-таки не знаем, что за устройство вскрывается и его архитектуру на данный момент представляем очень приблизительно.

  16. Зря Вы так, по рекламке заявляется в три раза большая производительность в сравнении с аналогичными по частоте ARM контроллерами, а коль это будет действительно так, то при "Excellent" поддержке со стороны Atmel, этот чип будет более предпочтительным для ряда задач, требующих высокую производительность. И возможно потеснит немного ARM. Хотелось бы надеяться чтобы этот чип составил конкуренцию DSP процессорам от AD.

    А я не только рекламку посмотрел, но бегло - и архитектуру и систему команд :) . В частности, конвейер семиступенчатый, но суперскалярности нету (хотя, может быть я чего-то и не увидел). Так что откуда там втрое быстрее - непонятно. Хотя - если рассматривать SAM7, то понятно :) Нам тут в одном проекте на SAM7 скорости 20-30% не хватало (сначала был тупой порт с AVR, но проект по объему данных расширили линейно в 4 раза). И мы специально сравнили реальные платы AT91RM3400 и AT91SAM7S256 на 48 МГц. Так вот, SAM7 при исполнении из флеша был почти точно в 2 раза медленнее чем RM3400 из RAM.

    Ну неужели было сложно сделать флэш 64-битным с предвыборкой как у филипсовских LPC? Теперь понятно - специально SAM7 тормознули, чтобы AVR32 продвинуть :)

    И не факт, что 16-битные инструкции (у AVR32 основная часть - 16-битные) будут быстрее - в упомянутом проекте простая компиляция критичных кусков в Thumb скорость не подняла или даже уменьшила, и только ручная ассемблерная оптимизация в Thumb немного помогла (до полутора раз примерно).

    Если уж совсем честно, то когда плотненько (ну хотя бы минимум от 10К строк ассмеблера) поработаешь с десятком разных архитектур, собственно сама архитектура уже становится глубоко "по барабану"- одной больше/одной меньше - в-основном, на периферию смотришь. И частенько - на цену (конкуренты-то не спят) :)

    Так что, дождемся обещанного AP7K и бум посмотреть :)

  17. Мда.. Вещь любопытная, но, ИМХО, успех обычного AVR повторить не получится. В 1997-ом не было контроллеров со встроенной флэшкой и AVR был эволюционно-революционным и единственным в своем роде. А сейчас полно всяких (не только ARM) 32-х битников с флешем, и в лучшем случае - AVR32 станет "один из многих".

    В свое время мы перешли с системы Am188ES@20MHz на AVR@4MHz практически без потери быстродействия и с существенной оптимизацией аппаратной части (помехи и цена), сейчас переход ARM7->AVR32 врядли будет таким же впечатляющим, увы.

    Любопытно в AVR32 также "всобачивание" Java. Лет 10 уже активно впаривают и все никак оно истинной массовости во встраиваемых системах не наберет.

  18. Это у Вас кварцы неподходящие - предполагают использование третьей гармоники (и обычно специальную схему включения с фильтром). Поищите кварцы с основной гармоникой на 20 МГц и все будет нормально.

    Для пробы "подходящий" кварц можно на время снять с сетевой карточки.

  19. Стандартных решений "MAX для заливки Cyclone" нет.

    Следующий этап - копать драйвер/утилиту которые обращаются к MAX и загружают Циклон.

    В конце концов после "танцев с бубнами" вытащить прошивку Циклона возможно. Но тут может

    быть еще взаимодействие MAX<->Cyclone помимо загрузки. Этакий ма-а-ленький но очень нужный кусочек функций вынесен в закрытый MAX (если бы я хотел защитится от копирования - я бы так и поступил). Тогда получится такая ситуация - Вы потратите много сил и времени на "добычу" прошивку Циклона, а MAX полностью повторить не удастся.

  20. За последний месяц были примечены такие странности форума:

    1. На страничке "Просмотр профиля" из IE 5.0/5.5 не работает кнопка "Опции профиля" Пробовал на трех компах и на трех платформах - Win98SE/2K/XP. В Опере все работает нормально.

    2. Почему-то не получается к сообщению приаттачить файл с расширением ".c". Этот же переименованный файл с расширением ".txt" приаттачился "на раз". Пока пробовал толька на IE5.0/W2K.

  21. Уважаемый "VslavX" вы присоеденили бытый архив!

    Да вроде бы - нормальный архив. Только что скачал и без проблем распаковал на другом компьютере (не на том с которого отправлял). Winrar - версия 3.0.

    Ну держите тогда в развернутом виде.

    (При copy/paste в текст сообщения (как из Far так и VC) чего-то кракозяблятся русские комментарии :( - так что снова попробую аттач) Любопытно, что файл с расширением ".c" почему-то приаттачить не получается - переименовал в ".txt", получилось. Сплошные глюки, однако :(