Jump to content

    

VslavX

Свой
  • Content Count

    1046
  • Joined

  • Last visited

Posts posted by VslavX


  1. От Самсунга - проектировал на 44BOX и 2410.

    От Интеля - имел дело с IXP42x.

    Корейские камни очень неплохи - все продумано и максимально интегрировано. Вот хотя бы отдельный PLL для PHY. Потребляют мало. Довольно быстродействующие - тестировал контроллеры SDRAM на PC-133, интеловскому варианту почти не уступают. По ядрам - стандартный ARM (у интела - переработанный XScale, ИМХО ненамного эффективней).

    Насчет Интеля - это классический академический подход. Все раздельно и отдельно. Шины все отдельные, тактирование везде отдельное, куча взаимосвязанных отдельных входов сброса, куча раздельных кешей и их режимов работы, все выводы имеют единственную функцию и никакого мультиплексирования. Выручает только документация - у Интела традиционно на высочайшем уровне.

    PCI - хост/мастер/DMA очень рулит, на него легко вешается FPGA в котором можно сделать свой любой интерфейс, связанный с ЦПУ довольно быстрой шиной и незагружающий его при массированной передаче данных.

  2. Реально делался тагет на EPM7160xxx-10 - на 33МГц вообще не было никаких проблем в 10 нс спокойно все проходило в рамках спецификации PCI (кажись, там tsu 10 нс) Причем регистры были не на "чистые" IRDY, FRAME, TRDY а на их комбинаторную функцию - обычный автомат состояний как и во многих готовых ядрах.

     

    Недавно делал PCI 66 МГц на EP1K30xxx-2, вот там с IRDY и FRAME пришлось сильно помучиться - сделать их через dedicated input (с порезом уже изготовленныйх плат). Но в tsu 3 нс мне на данной FPGA влезть не удалось, удовлетворился tsu<4.5нс, благо шина короткая и целиком на плате, и второй агент имеет tval существенно лучший чем стандартные 6 нс. Могу также сказать, что очень много времени провел в FloorPlan с временнОй оптимизацией - time-driven compilation в Квартусе - ацтой полный. Для плотных и быстрых проектов :( все равно много критических цепей приходится "прибивать" руками через assignments.

     

    Если у Вас мастер (то есть надо рулить FRAME и IRDY), то вход можно сделать dedicated как и в тагете, а выход подавать с отдельной ножки обычного I/O.

  3. ИМХО, не совсем так.

    Latency Timer в BIOS - это параметр записываемый в Config Space всех мастеров, именно данный параметр может ограничивать длительность одной транзакции, выполняемой мастером.

    Посмотрите главы PCI22: "3.5.4.1. Bandwidth and Latency Considerations" и "6.2.4. Miscellaneous Registers".

    Насколько я понимаю стандарт:

    Latency Timer - максимальное время транзакции для данного мастера. Может программироваться.

    MIN_GNT - прописывается readonly в Config Space мастера - это минимальное время, на которое арбитр должен предоставлять шину данному мастеру. Например Вам надо передавать пачками минимум по четыре слова (типа строка кеша заполняется), по три уже - никак - то и прописываете, что надо получить шину минимум на время для передачи четырех слов (тактовую полагаем 33 МГц).

    MAX_LAT - прописывается readonly в Config Space мастера - максимальное время которое арбитр может "не пускать" мастера к шине. Например, с "пользовательского конца" устройства прилетают данные, устройство должно их записать в системную память - запрашивает шину PCI у арбитра, ему пока не дают, а данные пользователя продолжают приходить. Ну, ясно - надо класть в буфер, но он же не бесконечный. То есть, время в течение которого должны выдать шину ограничено, иначе в устройстве пропадут данные. Вот MAX_LAT и вводит это ограничение, которое в идеале должно использоваться при конфигурировании арбитра.

  4. Ну хорошо, в смысле не очень хорошо, но тем не менее...Как в таком случае мне нужно записать эти данные ? Как мы помним PCI девайс не обладает своим контролером DMA. Данные по каманде просто формируются на шине, по 8 16-битных пакетов. Программный I/O здесь ведь кажется тоже не подойдет, поскольку адресовать нечего.

    Угу, PCI-устройству DMA не нужен - иногда он сам себе DMA :)

    PCI-мастер может производить любую транзакцию на своем сегменте (в том числе mem/io/config read/write) с любым устройством на этом же сегменте. А также ряд транзакций которые понимают-пропустят на другие сегменты/память мосты. Чтение-запись оперативной памяти системы - это обязательный поддерживаемый минимум на PC-материнках.

    То есть, Ваш PCI-мастер может получить у арбитра шину, стать ведущим и самостоятельно выполнить запись (или чтение) в требуемую область системной памяти. Ессно, для этого ему надо знать физический адрес назначения (а то как он выполнит запись-чтение). Поэтому в Вашем устройстве должны быть соответствующие регистры, куда Вы запишете желаемые параметры транзакций. Посмотрите в приаттаченном файле как это сделано в простейшем PCI-IDE.

    IDE_BusMaster.pdf

  5. Контроллер DMA на метеринской плате "в начале времен" предназначался для взаимодействия с контроллером флоппов, регенерации оперативной памяти и обслуживания устройств на шине ISA.

    В данный момент из этих всех задач остался лишь флоп. ISA благополучно канула в лету, регенерация памяти решается на уровне контроллера памяти.

    Оставшаяся часть контроллера DMA (работающая с флопом) в современных чипсетах обычно находится в южном мосту, и по внешнеинтерфейсной реализации сильно видоизменилась, и маловероятно что сможет обслуживать дополнительных клиентов.

    Задачу внепроцессорной передачи данных, которая ранее выполнялась DMA на шине ISA, на шине PCI теперь выполняется самими PCI-устройствами - мастерами.

    Вопрос: как я могу записать эти данные? Могу ли я применить в данном случае DMA материнской платы ? Если да, то просьба вкратце изложить последователность моих действий.

    Итого - DMA материнки использовать нельзя

    Должен ли я своему устройству сообщать что-то кроме собственно команды "выдавай очередной пакет"? Должен ли я сообщать ему адрес куда копировать или это возмет на себя контроллер DMA материнской платы?

    Конечно, Вы должны дать устройству команду и все необходимые для ее выполнения параметры - в том числе _физический_ адрес назначения физически непрерываной области памяти и количество передаваемых слов. Создать и подготовить такую область памяти можно только в драйвере.

    Хороший и несложный пример реализации бас-мастеринга - это стандартный PCI-IDE контроллер.

    Должно ли мое устройство (сделано на FPGA) генерировать прерывание после окончания каждой посылки?

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

  6. Мы уже года три пытаемся переползти на SMD (почти все остальное на платах уже SMD). Но каждый раз при разработке новой платы получаем отлуп от снабженцев/логистиков - "SMD электролиты сильно дороже, чем выводные даже при ручном монтаже".

    Как уже верно было замечено - подавляющее большинство современных копьютерных плат использует выводные электролиты. Вот как континентальные азияты перейдут (и если перейдут) на SMD, то и цена упадет. А то действительно - выводной монтаж достал уже - один геморрой :(.

    Если у Вас на плате все остальное SMD, и снабженцы не возражают, то конечно, лучше применить SMD электролиты. Вас потом на производстве за это похвалят :)

  7. Оборудования никакого (вот и спрашиваю, если можно то какое необходимо), слышал что BGA1.27 с помощью промышленного фена народ успешно устанавливает.

    Есть у меня знакомый - даже не электронщик - физик-эспериментатор. Одно время он рассказывал про двухпроцессорную плату (Socket 7 или 370? - уже не помню) на чипсете BX. Зачем он ее делал - хз.

    Я, честно говоря, просто ему не верил и втихаря посмеивался - ну блажит человек. Но когда я увидел эту плату сделанную по "лазерно-бумажной" технологии - двухстороннюю, без металлизации, с вставленными пропаянными проволочками и в единственном экземпляре... :blink:

    У меня нет цензурных выражений, чтобы описать свое состояние. Плату он развел в каком-то малоизвестном каде (CADSTAR кажись, еще для ДОСа). Когда я спросил, почему бы не сделать плату на опытном производстве - цена вопроса <100$, то получил ответ, что начальство не дало на это денег. Это только в наших НИИ человек на копеечной зарплате может два месяца кустарным способом делать такую печатную плату...

    В-общем, человек - натуральный левша, и подрабатывал ремонтом материнок - на тот момент BGA с шагом 1,27мм реально менял, и из "серьезных" инструментов у него был только термофен. Ну, был у меня проект на Samsung 2410 - BGA272 с шагом 0.8мм, и пошел я с опытной платой - к "левше". Расстроил меня тогда "левша" - сказал что вероятность успешного исхода - не более 50%. "Попробовать можно, плата у тебя новая, чип тоже, но гарантии дать не могу". Примерно тоже мне сказали и в паре других ремонтных фирм. Пришлось искать "серьезную" фирму, с "серьезной" печкой и платить "серьезные" деньги - $20 :) И проблем, соответственно, не было - вся полудюжина плат с полпинка заработала.

  8. я свою проблему решил следующим образом:

    Если мы выставили прерывание, тогда ДМА ждет пока драйвер не попросит его(прерывание) снять.

    Если прерывание выставлено не нами, тогда ф-я read_Port возвращает все '1' для значения регистра состояния.(~реально один бит у меня всегда '0') - как раз случай когда времени на опр. принадлежности прер-я не хватает.

    Таким образом для обработчика это значит, что прерывание адресовано не нам.

    ----------------

    Но я все же не понимаю, как др. устройства-мастера решают эту проблему.

    Прерывания и бас-мастеринг абсолютно несвязанные вещи.

    На сегмента PCI всегда есть арбитр. Допустим, Ваш мастер выставил арбитру REQ# и получил от него GNT# и начал свою "долгую песню" - burst transfer. Теперь допустим Ваше устройство выставляет прерывание, оно попадает на процессор, вызывается обработчик в драйвере, где, допустим, инициируется чтение регистра из Вашего тагета. В этот момент на арбитр сегмента будет выставлен REQ# со стороны другого мастера - некоторого моста в чипсете, через который PCI привязан к ЦП, (ведь доступом к тагет всегда кто-то рулит).

    Как точно поступит арбитр - зависит от многих условий (от конфигурации полей MIN_GNT, MAX_LAT всех устройств на сегменте, и от реализации самого арбитра), но все равно он в какое-то конечное время снимет GNT# Вашему мастеру, в ответ мастер освободит шину и арбитр отдаст ее мосту "ЦП-PCI" который собственно и выполнит чтение регистра в Вашем тагете. Далее, шина опять освободится, и ее могут отдать опять Вашему мастеру для "солирования".

  9. В дополнение могу сказать что у нас есть серийные портативные изделия на 128-ой, с аккумулятором. Средствами 128-ой сделаны программные RTC (когда девайс "спит", то идут только часы, когда работает - как ни банально :)- часы тоже идут). Дык, аптайм в этих наших устройствах измеряется годами. Так что AVR вполне может работать нормально :)

  10. ' date='Nov 23 2005, 12:46' post='65611']

    Допустим мы даём имя компоненту NAME/COMP - потом можно переименовать его? Предлогается выбрать только Select location...

    а ещё используя pinnum не могу резвернуть ставящуюся автоматом надпись. Вроде там ключ был -r чтоли, с который надпись поворачивалась только с компонентом, но я напроч непомню, вроде можно сделать как-то из меню... Как?

    А почему PCAD 4.5? Проект в нем сделан и надо подправить?

    Как по мне - 4.5 можно вспомнить только если _ОЧЕНЬ_ большой проект (10К и более пин) и _ОЧЕНЬ_ большие проблемы с переносом именно этого проекта в ACCEL/PCAD200x.

    Сейчас вот запустил 4.5-ый - аж вздрогнул - блин, ацтой-то какой, по сравнению с ACCEL/P200x.

    Лучше c 4.5 в наши дни и не связываться. Меня вот пять лет назад даже огромные собственные библиотеки на 4.5 не удержали :)

    Если все-таки очень надо, то по теме:

    Ключик -r в pccards и pccaps как раз был предназначен для пропуска конфигурационного меню.

    Просто запустите pccaps/pccards без всяких ключей, потом стрелками выбрать пункт "Configure.."

    И там будет пункт - "Rotate component text in four directions" - ну и поставьте "On" (ну или Off - уже не помню)

  11. И корпус у этой заразы BGA'шный

    Если верить даташиту, то там всего-то четыре ряда шариков с шагом 0.8мм. Это уже с вероятностью 99% можно развести на 4-х слойке (а можно рискнуть для начала и на 2-х) с нормами 0.125/0.150мм и более-менее большими переходными (0.7/0.35?) - кажись, такие платы многие PCB-производители в xUSSR могут сделать - то есть опытные платы уже не от "1K$ денег + 1месяц ждать". Так что шансы в наших краях у камня есть, ИМХО.

  12. Вставлю еще 5 коп :)

    Из AT91 практически работал/работаю с SAM7A3, SAM7S, RM3400, сейчас X256/RM9200 платы на подходе. Филлипсы 21xx/22xx "щупал" только по даташитам, так что мое мнение тут не особо компетентное, но думаю, если что - меня поправят :)

    Из семов не советую A3 - во многом сыроват (например, можно загнать в такое состояние, что перепрошить не удасться - нет ноги Erase) и, ИМХО, серийно выпускаться не будет - заменят на X256.

    По периферии SAM7 кое в чем побогаче филлипсов 21xx/22xx будут, ИМХО. Что конкретно я использовал в SAM7:

     

    1. UART - есть IR кодек. А у филлипса - почти стандартный 16С550, IR кодека нет, нужен внешний.

    2. UART - детектор пауз и "тормоз" передатчика. В нашей компании с 95-го года используется оригинальный протокол на RS-485. Я его писал на x86, i51, AVR, MB90, MSP, и наконец на SAM7. Дык, классически поддержка этого протокола "отъедала" один UART и один таймер. А вот на SAM7 получилось обойтись только одним UART. То есть - у SAM7 один их самых навороченных UART из мной виданных :)

    3. SAM7 SSC - на раз цепляется звуковой кодек и много чего полезного, у филлипса - вроде только SPI предоставляет подобную урезанную услугу. Ну так у SAM7 есть и SPI отдельный.

    4. Таймеры SAM7 - очень навороченные, каждый имеет два отдельных выхода, рулятся произвольно по целой куче событий. И таймеры могут взаимодействовать. Например, мне надо было сгенерировать строго определенное количество импульсов на 8 МГц (процессором такую ситуацию по прерыванию можно не успеть оследить). Делается очень просто - один таймер генерирует импульсы, второй - считает, досчитал - и аппаратно запретил первый таймер, и все это - без дополнительной внешней логики.

    5. У SAM7 кое-где есть MMC/SD интерфейс. Я, правда, практически не пробовал (проще было SPI заюзать), но выглядит симпатично.

    6. У SAM7 есть DMA (aka PDC). Это очень большое подспорье для фоновой передачи данных, часто его использую и могу сказать - PDC отличная весчь, а с учетом наличия Next указателей очень просто обеспечить непрерывность транзакций (что, например, важно для звука).

     

    В "защиту" филлипса могу сказать - по идее в ARM режиме из флеша он должен быть быстрее (флешка 64-битная?) ну и для моих задач очень не помешал бы RTC от батареечки чего в SAM7 нету :(

  13. Позвольте не согласиться!? Если лично Вам ничего нового эта дискуссия не принесла (как и мне), то не стОит делать вывод, что она бесполезна. Возможно кто-то из начинающих тут в первый раз услышал слова "Альдек", "Моделсим", "Синплифай", и это послужило первым толчком к освоению мощного инструментария, позволяющего выйти на новый уровень сложности и серьезности разработки.

    Вы будете смеяться, но я именно на форуме услышал эти слова и начал смотреть на этих "зверей".

    Не очень полезно "вариться в собственном соку" - Вы, правы, общаться надо. А то эпизодически занимаюсь ПЛИС-ами лет пять (и не такие уж простые проекты - сегодня вот PCI-66 на ACEX "в железе" заработало :)), а ничего кроме MAX/Quartus и не пробовал. "Абыдно, да?" :)

  14. К тому же, я вовсю пользуюсь фичами LCELL, CASCADE, EXP. В VHDL с этим сложновато, не так ли? :)

    Краем уха я слышал что Verilog позволяет эти фичи применять, надо будет глянуть.

     

    элементарно, берем либы (поставляемы производителями) и в путь

    pipa is entity lib_name.lcell

    port map (......)

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

    VHDL - нативный для Xilinx (вроде ж раньше был Abel? А потом они сползли?)

    А вот альтера, вроде последнее время тяготеет к Verilog. Или мне показалось?

    Но нативный для них все еще AHDL, как бы не пыжились, ИМХО. У них либы на нем написаны.

     

    Подводя итог, как в жизни

    "любовь не просто так, любовью нужно заниматься"

    Если учиться применять высокоуровневые языки то нужно хватать не частями и краями частей тела, а

    основательно изучить возможности языка. Только тогда можно аргументированно спорить что лучше что хуже

    Конечно, я и не спорю (потому как апельсинов почти не ел, и вкуса не помню :). И исходный совет мой был "расслабится" и ехать по тренду. А тренд, увы :) - "всех на высокоуровневые языки". Следующий мой ожидаемый проект будет на порядок сложнее, его уже точно целиком на AHDL написать не получится. Куда таки податься посоветуете - Verilog или VHDL? Платформа - скорее всего что-то из старших альтер. Пока Verilog симпатичней выглядит, это я на VHDL сразу ломанулся потому как книжка просто под рукой была.

  15. По софту еще печальнее - недавно я честно попытался для нового проекта на Acex применить излюбленный MAX 10.4. Компилятор просто не доживал до конца, и падал (10.4 и 10.2). И пришлось ставить Quartus. Любопытно, что часть старых проектов, легко компилируемых MAX, фиттер Quartus просто не смог разместить. Причем даже если "прибить все ячейки гвоздями" по максовской разводке :(

    хмм какая винда стояла, какой фитер ?

    Q4.0 + Windows 98SE + 512M RAM. Да, каюсь, так было нельзя (под 9x Q падал безбожно)

    Но сейчас вот попробовал Q4.2+WXPSP1+512M RAM - "те же, там же".

    Вот выдержка по ресурсам:

     

    Flow Summary:

    Flow Status Flow Failed - Mon Nov 07 11:34:03 2005

    Quartus II Version 4.2 Build 157 12/07/2004 SJ Full Version

    Revision Name pci550

    Top-level Entity Name pci550

    Family MAX7000S

    Device EPM7160STC100-10

    Timing Models Final

    Met timing requirements N/A

    Total macrocells 140 / 160 ( 87 % )

    Total pins 69 / 84 ( 82 % )

     

    Ошибки фиттера Q даже перечислять не хочу - десятка два цепей неотрутил.

    А вот MAXII 10.4 прекрасно все разводит. Да знаю я, что запаса по ресурсам нет, ну дык - на момент

    разработки 7160 стоил $37, а 7256 за $60 зашкаливал. И можно сейчас 3256 недорого взять (что и делается). Но хинт был в том, что Quartus не смог сделать то, что отлично делал MAXII.

     

    Теперь пару слов по языкам - начал я проект на VHDL. Написал с четверть, откомпилил, посмотрел во

    что превратилось - "мама, роди меня обратно"! Оно может и супер-пупер совместимо-переносимо-

     

    ХММ ИМХО вы в корне не правы, то что у вас не сложилось с языками выского уровня скорее всего вызванно недостатком времени разобраться во что синтезиться то, что вы описали. Ведь не даром на том же СИ нужно УМЕТЬ ПИСАТЬ, точно так же и на ВХДЛ/Верилог. Просто процесс изучения КАК писать на ХДЛ что бы правильно ложилось в ФПГА занимает намного больше времени, чем процесс КАК собрать схему их готовых компонентов.

    Только и всего.

    Да, в этом что-то есть. Но, ИМХО, чтобы довести утилизацию ресурсов до уровня в примере выше

    (а это - PCI serial comm (7160+внешний 16C550UART), полный cfg space, 1 I/O BAR, parity check, без проблем ставяться родные Win драйверы), даже на AHDL мне пришлось немало потрудиться. Причем не только в MAXII но и в PCAD (тасовались пины в помощь фиттеру MAX, но не в ущерб топологии PCI). А возможен ли такой результат на VHDL? ИМХО, VHDL имеет смысл если проект очень сложный, и его тяжело выписать на низком уровне. Да и заказчика сложного проекта проще "раскрутить" на более толстый кристалл.

    К тому же, я вовсю пользуюсь фичами LCELL, CASCADE, EXP. В VHDL с этим сложновато, не так ли? :)

    Краем уха я слышал что Verilog позволяет эти фичи применять, надо будет глянуть.

    А использовать ВХДЛ синтезатор от альтеры - хммм самоубиство сие, он никогда не отличался хорошим качеством ИМХО.

    Очень может быть. Я ж всего лишь мимо проходил :)

  16. Здравствуйте!

     

    Постоянно с ностальгией вспоминаю MAX... Сейчас вынужден работать на этом проклятом Quartus'е и непрестанно матерюсь... Складывается такое впечатление, что разработчики Quartus'а задались

    Хм, подобный этап, наверное, все проходили. По своему опыту могу только посоветовать расслабиться и принять неизбежное. Тренд по ПЛИС-кам и софту для их разработки, имхо, не особо прогрессивный :(

    Например, 5 лет назад CPLD типа EPM7160-10 со средним tpd 10нс легко реализовывала PCI-32/33MHz с полным конфигурационным пространством и полным соответствием стандарту. А сейчас FPGA EP1K30-2 со средним tpd 2нс реализовывает PCI-32/66MHz исключительно через... Гм, ну вы поняли.

    По софту еще печальнее - недавно я честно попытался для нового проекта на Acex применить излюбленный MAX 10.4. Компилятор просто не доживал до конца, и падал (10.4 и 10.2). И пришлось ставить Quartus. Любопытно, что часть старых проектов, легко компилируемых MAX, фиттер Quartus просто не смог разместить. Причем даже если "прибить все ячейки гвоздями" по максовской разводке :(

     

    Имхо, девелоперский софт становиться все хуже, и выбора нам не оставляют. Так что плакаться по поводу перехода на Quartus бесполезно - "на безрыбье и сам раком станешь". Причем, есть у меня подозрение, что это - "политика партии" - "ползите-ка, вы, хлопцы, на кристаллы помощнее, и будет вам счастье". И, что главное, производителю чипов приятно.

     

    Кстати, искомый DFF мог быть выкинут оптимизатором? У меня иногда такое случалось - в tdf ресурс есть, а в результате компиляции - уже нет.

     

    Теперь пару слов по языкам - начал я проект на VHDL. Написал с четверть, откомпилил, посмотрел во что превратилось - "мама, роди меня обратно"! Оно может и супер-пупер совместимо-переносимо-читаемо, но ихнюю маму - это ж не Acex. это уже Stratix брать надо! С соответствующим бюджетом на конечное устройство. А что потом - ведь у меня 90% времени проекта занимает симуляция и сидение в FloorPlan (ну не могу я толстые+быстрые->дорогие кристаллы брать) с оптимизацией скорости. Плохо у меня это с альтеровской реализацией VHDL совместить получилось. В-общем "C++" побоку, пришлось переписываться на "ассемблере" - AHDL :)

     

    Итого - структурные языки (VHDL/Verilog) конечно замечательные, проекты читать/понимать стало удобней, переносимость есть. Но, блин, из ПЛИС-ки и половины возможностей на них не выжать, имхо. Впрочем, с ПЛИС я работаю эпизодически, так что может я и неправ?

  17. спасибо.

    Help слабо посмотреть?

    Help->Index->'Rotate'. За 5 минут проверяется.

     

    Если нужно установить на плате компонент под произвольным углом (Accel EDA /PCAD200x). то например у меня в 2002-ом:

    - Option->Configure->страничка General->Rotation Increment - выставляем желаемый параметр, ну пусть 1 градус;

    - Select->выбираем желаемый компонент

    - Shift+'R' (ну или переназначенная клавиша вращения) - компонент будет вращаться с заданным инкрементом. У меня вращается против часовой :)

  18. Спасибо.

    А на счет мег.. Я полный новичок в этом деле, поэтому не сердитесь за глупый вопрос.. Можно ли ее запрограммировать без дорого оборудовния? То есть да, можно купить ChipProg+ и т.п., но хочется чего-то дешевого типа провода на LPT, как в случае 2313.

    Запрограммировать можно. Программатор Александра Редчука

    avreal

    Ну и FAQ по AVR в Инете валом.

  19. А можете посоветовать какой-нибудь докУмент по использованию?

    Мне нужен наиболее простой вариант: я хочу сохранить на карточке данные, а читать и обрабатывать будет tiny2313.

     

    Может, Вам приходилось работать с файловой системой: если удасться записать карточку на компьютере, будет просто замечательно..

    Полная спецификация MMC - толька "за дэнгы", бесплатные обрезки можно получить на

     

    http://www.mmca.org

    Для написания реального кода можно взять даташиты готовых карт от их производителей:

     

    http://www.sandisk.com

     

    http://www.renesas.com

    Ну или я конкретно писал по:

     

    http

    ://documentation.renesas.com/eng/produ...b28k032mm3.pdf

     

    tiny2313 маловато - у меня код для MMC на Mega128 на заоптимизированном ассемблере занял около полутора килобайт. Да и оперативка будет нужна - MMC пишется только целиком секторами по 512 байт. Внутреннего буфера (типа как у 45-ой) у нее нет. Читать же можно хоть по одному байту.

    Код FAT12/16 (чтение/запись/каталоги) занимает около 6 килобайт (IAR C).

    Так что 2313 - ни в какие ворота. Можно всунуть только инициализацию MMC и raw-чтение из нее. Файловая система? Если только чтение и без каталогов - можно тоже попробовать, но больше места ни на что не останется.

    Так что желательно 8515 минимум, а лучше что-нить из 16-ых мег.

  20. Да, но VC 6.0 не понимает bsc файл, который генерит ARM evC++ компилятор!

    Жаль, это был один из вариантов, который я собирался пробовать. А может быть можно cod файлы скормить штатному bscmake из VC6?

    Чтобы не было неясностей, изложу ситуацию подробней:

    - сейчас работаю VC6 + makefile + кросс-компилятор + perl-фильтры

    - поставил eVC, скомпилил проект по умолчанию - проблемы с линкером

    - _отдельно_ от eVC написал makefile (запускаю nmake из Far-а) из которого

    вызываю строчные тулзы от eVC. Согласитесь - VC/eVC не самая лучшая среда для отладки makefile :) Командная строчка удобней. Вот на этом этапе я и подзадержался :( - надо "уговорить линкер"

  21. Проблема не в том, чтобы код слинковать с нулевого адреса (адреса в программе все относительные), проблема в задании адреса для сегмента данных. Тут два варианта - использование не MS линкера (ld, например) или применить релокатор, который выдернет информацию из exe-файла и перекинет данные по нужным адресам.

    Действительно, релокатор написать - не проблема, формат PE хорошо документирован, тем более приходилось уже писать релокаторы (для MZ-exe). Дык, лень же :) - после великолепных универсальных линкеров

    xlink и ld. Если никто более приличного не посоветует, возможно-таки и напишу релокатор.

    Да, и не поделишься информацией, как тебе удалось в eVC++ проекте запускать makefile? Там такой возможности по умолчанию вроде как нет.

    А я в eVC makefile не прикручивал. Я прикрутил его в обычный VC :). А в eVC

    пока makefile был без надобности - линкер вот уговариваю.

  22. Сейчас работаю с ARM кросс-компиляторами IAR (4.11) и GCC (самосбор 3.2).

    Работаю, возможно, несколько извращенно - MS VC++ 6.0 в качестве среды.

    (для Windows тоже много писать приходится) К проекту прикручивается makefile который собственно билдает, тулзы программирования и мониторинга и проч.

    Матюки кросс-компиляторов пропускаются через perl-скрипты и выдаются в VC в стиле "аля MS". Поэтому навигация по ошибкам пашет на ура.

    А теперь мне вот еще очень source-browse захотелось - очень уж с ним классно в чужих сырцах разбираться.

    Ну взял я MS EVC++ 4.0. Все выглядит привычно, но вот никак не получается у меня MS линкер уговорить разместить код с адреса 0. Заточено оно под WinCE/Win32, а там эта область - железное табу (NULL pointer area).

    В-общем-то, можно и не линковать - другой компилятор использовать, а MS только для построения bsc-файла запускать. Но я так посмотрел - у MS ARM компилер тоже неплохой, так что линкер таки тоже желательно уговорить.

    Кто-нибудь такую проблему уже решал?

  23. Ну, а главное: работать-то будет? :-)

    Просто у меня есть много mmc и покупать отдельно dataflash не хочется..

    ММС по SPI? Работает, проверено :)

    Не очень ясно, правда, как можно AT45 на MMC заменить :) Это ж слот для MMC надо. А 45-ка - просто чип.

    Кстати, хинт - для MMC крайне желательно ключ на питание - у нее есть официальное состояние "ступора" - выводит из него только power cycle.