Jump to content

    

SII

Свой
  • Content Count

    866
  • Joined

  • Last visited

Community Reputation

0 Обычный

2 Followers

About SII

  • Rank
    Знающий
  • Birthday 12/22/1972

Старые поля

  • skype
    Array

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

5257 profile views
  1. Если речь про использование ассемблера, то надо изучать не документацию на конкретный МК, а документацию на архитектуру -- ARMv7-M для большинства ныне используемых ядер MK (Cortex-M3, M4, M7), ARMv6-M в случае -M0 и -M1, ARMv8-M в случае более новых ядер (-M23, M33; может, ещё что есть). Насчёт констант надо помнить, что система команд не позволяет представить любые константы прямо в команде (константа, вообще говоря, 32 бита, а код команды -- либо 16, либо 32 бита, поэтому и нельзя произвольную константу закодировать прямо в команде). В документации на архитектуру описано, как константа формируется из тех битов, что присутствуют в коде команды. Всё остальное надо представлять данными в памяти, загружаемыми командой LDR (для чего есть даже специальный синтаксис -- LDR Rn, =значение), либо собирать из двух половинок двумя командами MOVT и MOVW (но они отсутствуют в ARMv6-M и в тех ARMv8-M, которые не имеют "основного расширения", т.е. логически являются развитием ARMv6-M, а не ARMv7-M).
  2. Ага, но сам этот подраздел входит в раздел ARM... Думается, правильней было б Эспрессифы вынести в отдельный раздел -- ну не АРМы они ни разу.
  3. Только что тема про ESP32 делает в разделе про ARMы? Там же другая архитектура совсем.
  4. Угу, из Кейла. А про прямые ссылки не знал, так что спасибо :) А с чем пробовали, если не секрет, и чем iMX оказались хуже?
  5. Доку я благополучно скачал через VPN. Но есть другая проблема, во всяком случае, с Кейлом: не получается скачать пакеты для NXPшных и ряда других процов (а для некоторых всё благополучно качается, причём особой системы не заметил).
  6. Только "при прочих равных". Представьте себе дюжину операторов, записанных в одну строчку вместе с заголовком функции. Язык такое позволяет, но вот прочитать это...
  7. В том числе и потому, что программирование ПЛИС (или, шире, проектирование любой цифровой электроники) -- это ни разу не программирование в смысле написания программы для выполнения процессором. Текст на Верилоге, ВХДЛ и т.д. -- это НЕ программа (хотя внешне выглядит очень похоже на программу), это описание логики работы аппаратуры. И вот программистам в это въехать достаточно сложно...
  8. Ну, при установке подавляющего большинства программ можно явным образом указывать, куда их ставить... К каталогу Program Files это отношения не имеет: он как был на системном диске, так и останется (потому что в нём лежат куски Винды).
  9. А ещё в ранних вариантах Cortex-M7 был весьма неприятный баг в кэше, из-за чего нужно было либо его выключать вообще, либо использовать MPU. Так что надо проверить, актуален ли он для конкретно этого МК.
  10. Читайте внимательней, что я писал насчёт авторитетности. ISA -- лишь часть архитектуры, касающаяся системы команды (что явствует из расшифровки этой аббревиатуры). Архитектура -- шире; она включает, скажем, обработку прерываний, управление памятью и т.д .и т.п. Физический способ доступа в адресное пространство архитектура упоминать и не должна -- это дело реализации, а не архитектуры. Но архитектура более важную вещь определяет: размещаются ли код и данные в общем адресном пространстве или нет. В гарвардской архитектуре адресные пространства разные, в фон-неймановские -- одинаковые. Соотвественно, в гарвардской любой конкретный адрес в пространстве кода означает одну ячейку памяти, а такой же численно адрес в пространстве данных означает совершенно другую ячейку; в фон-неймановской численно одинаковые адреса означают одну и ту же ячейку независимо от того, к коду они относятся или к данным. Именно что совсем разные. Ибо "модифицированная гарвардская архитектура" -- на самом деле фон-неймановская, а не гарвардская, ибо обеспечивает единое адресное пространство, а не отдельные. Итак, вы утверждаете, цитирую: "важно то, как вы к этому осуществляете доступ - если вы к этой памяти за кодом и данными лезете по очереди по одной шине, это фон Нейман, если можете достать очередную инструкцию и данные одновременно по разным шинам - это Гарвард". Исходя из этого Вашего утверждения, получается, что, если моя программа, выполняющаяся ядром Cortex-M3, расположена в ITCM (одна шина), а данные -- в DTCM (другая шина), то Cortex-M3 -- гарвард. Но, исходя из этого же Вашего утверждения, если я для того же самого Cortex-M3 расположу и программу, и данные в ITCM (это сделать можно) или во внешней памяти, доступ к которую осуществляется через AHB, то Cortex-M3 превращается в фон-неймана. Я Вас правильно понимаю? Конкретно с AVR8 пару лет назад я натолкнулся однажды на проблему. Использовалась самая что ни на есть обычная printf, но первый параметр (строка формата) был представлен не константой, как это обычно бывает, а строкой в ОЗУ (формирующейся динамически). Сей код не работал -- как раз потому, что архитектура у проца гарвардская, а реализация printf предполагала, что первый параметр будет лежать в ПЗУ. Проблема сия вытекает именно из принципиального различия гарварда и фон-неймана (разные адресные пространства), а отнюдь не из числа шин и физических способов доступа к памяти (на АРМах printf работает без проблем независимо от того, размещается строка формата в памяти кода или памяти данных). Архитектура с унифицированным адресным пространством (фон-неймановская) гарантирует, что для доступа и к коду, и к данным используются принципиально одинаковые адреса, относящиеся к одному и тому же пространству, гарвардская же, напротив, назначает принципиально разные адреса коду и данным, из-за чего не может один и тот же указатель использоваться для доступа и к памяти кода, и памяти данных (см. мой пример с printf). А вот будет ли конкретная область адресов доступна в конкретной реализации, архитектура не гарантирует и не должна гарантировать -- это уже уровень реализации. И это -- именно что костыли, которых в стандартном Си/Си++ нет. А всё из-за костыльности гарвардской архитектуры :) (И, замечу, в фон-неймановских процах такие костыли не нужны -- даже если некоторые записывают эти процы в гарвардские).
  11. 1. Документация вендоров -- это не авторитетный источник, если говорить о терминологии как таковой. Не вендоры определяют, что такое гарвардская архитектура, а что такое -- фон-неймановская. Они, в лучшем случае, придерживаются имеющихся определений, а в худшем -- перевирают их. Вот в плане того, что именно там реализовано, -- да, авторитетный источник (но, увы, временами содержащий прямые ошибки или взаимноисключающие параграфы, а не просто вольное обращение с терминологией, но мы не об этом говорим). 2. В приведённой документации подчёркивалось: "bus architecture", а не просто "architecture". Поэтому абсолютно некорректно утверждать, что Cortex-M3 имеет гарвардскую архитектуру -- а именно это и утверждают многие. Вот "шинную архитектуру", как вендор утверждает, -- с этим можно согласиться. Лично мне такое определение не нравится тем, что способно ввести в заблуждение из-за созвучия с "просто архитектурой", но, пока "bus" не выбрасывается, это терпимо. 3. На Blackfin Вы почему-то подчеркнули "Harvard achitecture", в то время как там написано "modified Harvard architecture" -- а это совсем разные вещи. 4. Опять и опять вопрошаю: если я использую ядро Cortex-M3 и храню и код, и данные в одной и той же памяти -- это гарвардская архитектура или фон-неймановская?
  12. О чём, собственно, я и говорю. Каюсь, таким способом микропроцессоры не использовал, но за идею спасибо :) Но вот код и данные в одной и той же памяти таки размещал-с -- в частности, в LPC1788, где внутри как раз Cortex-M3 и лежит.
  13. Да, внимательно. Я прекрасно знаю, что такое микроархитектура, и об этом я писал несколькими постами выше. Вот такие утверждения бредом и являются. Во-первых, поскольку гарвардская/фон-неймановская -- это архитектура (представление с точки зрения программиста), а не микроархитектура (представление с точки зрения разработчика процессора). Во-вторых, если Вы утверждаете, что Cortex-M3 -- гарвардская архитектура, значит, Вы утверждаете, что я не могу, используя Cortex-M3, разместить и код, и данные в физически одной и той памяти? Ведь именно это отличает архитектуры, а отнюдь не число шин (коих в Cortex-M3 три штуки, а не две, между прочим). Я прекрасно знаю, что такое ISA. А вот Вы, похоже, плохо представляете, в чём разница между, скажем, ARMv7-A и ARMv7-M, и реально не знаете, что такое эта самая ISA, иначе б не стали валить всё в одну кучу. Даже что касается собственно ISA (а она является лишь частью архитектуры), у них есть очень и очень существенные различия: ARMv7-A всегда имеет две совершенно разные системы команд (ARM и Thumb-2) и может иметь ещё и третью недосистему (ThumbEE), у ARMv7-M -- всего одна система команд (Thumb-2), причём не на 100% совпадающая с нею же из ARMv7-A; т.е. уже на уровне ISA эти архитектуры, мягко говоря, не эквивалентны. А ведь есть ещё и другая сторона архитектуры, связанная с состояниями процессора, обработкой прерываний и т.п. -- и в этой части у A- и M-профилей вообще ничего общего нет. Вот в том-то и дело, что "имеют в виду" и всё такое: в результате происходит смешивание понятий. Эта самая "modified harward architecture", если на то пошло, -- вообще не архитектура, поскольку относится к способу реализации, а архитектура находится на более высоком уровне и с реализацией не связана. Но это ещё полбеды; вот когда выбрасывают из её названия "модифицированная"...
  14. Извините, бред. Поскольку получается, что одно и то же ядро (например, Cortex-M3) может быть и фон-неймановским, и гарвардским в зависимости от того, как конкретно оно используется. Конкретно с Cortex-M3 (или там Cortex-M1) ничто не мешает не использовать ITCM и DTCM вообще, подключив всю память через AHB (как это делается, скажем, в Cortex-M0). Так что разделение на фон-неймановскую и гарвардскую -- это именно на уровне архитектуры, а не микроархитектуры, на уровне логических принципов, а не конкретной реализации. И, кстати, все современные высокопроизводительные процессоры одновременно обращаются за кодом и данными -- просто обращаются они не напрямую к памяти, а к кэшам. Что ни разу не делает их гарвардскими. Ну и, кстати говоря, здесь Вы свалили в одну кучу совершенно разные архитектуры. Cortex-M0 -- это ARMv6-M, которая никакого отношения, кроме сходства названия и совпадения части одной из систем команд, не имеет к просто ARMv6, к которой относятся ядра ARM11. То же самое для Cortex-M3 (ARMv7-M) и Cortex-A9 (ARMv7-A) -- у них абсолютно разные системные архитектуры.
  15. Так всё ещё хуже: АРМ то гарвардский, то фон-неймановский в зависимости от того, сколько шин из конкретного процессорного ядра торчит (а если довести до логического конца -- что я и сделал -- то даже одно и то же ядро может быть то такой архитектуры, то сякой в зависимости от того, как именно память к нему подключена). В общем, собственно, потому я и бросаюсь на такие определения, что они создают кашу в головах, что в дальнейшем чревато серьёзными проблемами -- в том числе тиражированием заблуждений. Всегда вспоминаю историю из детства: мать, вузовский преподаватель русского языка (тогда ещё доцент, позже профессором стала), возмущалась завкафедрой одного тогда ещё советского вуза, которая, будучи лингвистом по образованию, на полном серьёзе учила студентов, что звук и буква -- одно и то же. Для меня во 2-м или 3-м классе (точно не помню, когда это было) было самоочевидно, что это -- совсем разные вещи, причём не из-за того, что мать меня этому учила, просто... ну, это ж и так понятно: буква -- значок, и может обозначать звук, а может и не обозначать, может сочетаться с другими и образовывать новые звуки и т.п. Ну а кто сейчас Вику пишет и "сверяют друг друга" (кстати, пишется без дефиса -- это если в порядке придирок :) )? По большей части это как раз люди не особо-то грамотные (хотя бы потому, что реально высокообразованных всегда было очень немного, и у них редко достаточно времени и сил, чтоб сидеть и редактировать статьи на всяких там педиях -- тем более, что их правки запросто могут отменить), которые, в лучшем случае, транслируют то, что услышали в вузе или вычитали в книжке -- а услышать/вычитать можно разное.