Как стать автором
Обновить

Комментарии 9

Спасибо, все это очень пригодится! С линковщиком так вообще возиться не хотелось, но после ваших объяснений это будет гораздо проще.
Я все забываю написать. Вот скомпиленная дока от свежего ld в одном файле: d.pr/f/PSyW, а то в сети гуляют только разрезанные на куски, а там поиск неудобен.
Ух, неплохой документ, спасибо. Действительно, по кускам гуглил в своё время.
А бывает ли литература на русском по ARM серии Cortex A?
И есть ли возможность на чипсетах Cortex M использовать дисплеи 2k/4k по DSI?
Ну и USB 3.x, либо другой вариант скоростного общения с Cortex M?
Собственный поиск приводит к мысли, что 2k/4k и USB 3.x возможно только на Cortex A…
Ну и USB 3.x, либо другой вариант скоростного общения с Cortex M?

А откуда там USB 3.0+ быть? Нормальные частоты для микроконтроллеров на Cortex-M — до 200 с небольшим MHz (и то, это для Cortex-M7). Туда 5 Gbit/s, используемые в USB 3.0, пролезут на пределе в кольцевой буфер, если пролезут вообще, но не более. На полезную нагрузку тактов не останется.


Если вы уверены, что вам не хватит USB 2.0 HS (480 Mbit/s), то бывают специализированные чипы для предоставления интерфейса USB 3.0 к памяти (в которую, например, пишут из FPGA/ADC). Можно посмотреть в сторону cypress'овских поделий.


Стоит также отметить, что разводить плату и отлаживать 3.0 может быть безумно весело. Таки высокоскоростной интерфейс. И, если на проце окажется только MAC, то могут понадобиться дополнительные чипы для реализации 3.0.


А так из высокоскоростного — SPI (обычно может работать на частотах до 1/2 частоты контроллера). Можно ещё использовать FMSC (на stm32 или аналог у других вендоров), если пушить данные с контроллера на что-то предоставляющее более-менее стандартный интерфейс внешней памяти.


А бывает ли литература на русском по ARM серии Cortex A?

Скорее всего, оно того не стоит, если судить по тому, что я видел в продаже про ARM7 и Cortex-M. Ошибки перевода, наложенные на ошибки/неоднозначности оригинала — это очень весело, а errata всё равно читать придётся в оригинале и сопоставлять с оригиналами документации/даташитов и пр.

cypress'овские поделия тоже по всей видимости уже далеко не Cortex M и ARM7.

ошибки/неоднозначности это все ерунда. непонятно с чего начать. я так понимаю главная проблема Cortex A — это многозадачность. собственно, чтобы что то поднять нужно иметь ядро ОС и это уже большие проблемы для использования в роли «микроконтроллера». но мне как программисту это кажется меньшее из зол. не так давно научился пользоваться феном и вот теперь хочу Cortex A в минимальной обвязке…
cypress'овские поделия тоже по всей видимости уже далеко не Cortex M и ARM7.

Да, там arm9, который относительно похож на cortex-a.


главная проблема Cortex A — это многозадачность. собственно, чтобы что то поднять нужно иметь ядро ОС и это уже большие проблемы для использования в роли «микроконтроллера». но мне как программисту это кажется меньшее из зол. не так давно научился пользоваться феном и вот теперь хочу Cortex A в минимальной обвязке…

Нет. Главное отличие, что cortex-a — уже ни пол раза не микроконтроллер. Это полноценный процессор, setup которого существенно сложнее. Инициализация в минимальном варианте будет включать настройку кэшей, MMU, настройку внешней памяти (RAM и ROM). В общем, если вы не в курсе отличий, как работает MMU и написание примитивной многозадачной ОС вас пугает — лучше к Cortex-A/R не приближаться за версту.


В некоторых случаях у процессу первоначального запуска доступа у вас просто не будет, например, из-за использования проприетарных блобов в firmware. Т. е. bare metal похож на таковой в случае x86, где firmware/bios/uefi уже есть как данность. Как пример можно глянуть на boot sequence rpi.

Да не пугает меня многозадачность. О ней я выше и написал… И про роль микроконтроллера также написал. Запускал я раньше на x486 примитивный защищенный режим и книжка была про ассемблер об этом защищенном режиме. Собственно, что-то такое же хочется для Cortex-A с нужной литературой. Начать можно на каком нибудь старом девайсе (например Galaxy S), а потом перебраться на собственный чипсет. bga, многослойность и металлизированные отверстия конечно могут остановить, но это зависит от результатов первых тестов.

Тогда первым делом на arm infocenter, читать technical reference manual (или искать перевод где-нибудь). Потом искать data sheet и app notes для имеющегося проца и надеяться, что есть описание начальной загрузки и периферии не под NDA. Переводы trm вполне могут быть в продаже (видел для M3, M0+, но не для A), но рассчитывать на наличие русскоязычного datasheet'а какого-нибудь mtk или exynos не стоит.


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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории