|
Cortex-M3 и М4, В чем разница? |
|
|
|
Dec 29 2013, 16:02
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Хочу ответов мудрых на вопрос: в чем отличие системы команд Cortex-M3 и М4 и насколько они совместимы? Если читать книжку по М3, то можно опыт перенести на М4? Спасибо.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 29)
|
Dec 29 2013, 17:46
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(SII @ Dec 29 2013, 20:19)  Спасибо. Ещё вопрос - что лучше начать изучать: ассемблер ARM или писать на Си? Вообще склоняюсь к асму, потому что скомпилировав программу-мигалку светодиода и посмотрев её размер, я ужаснулся - 12Кб!!! Даже с оптимизацией кода - 9. Проясните этот вопрос, пожалуйста.
|
|
|
|
|
Dec 29 2013, 18:07
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата 12Кб!!! Сдуру можно и х.. сломать полмегабайта накомпилить.
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Dec 29 2013, 18:35
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(skripach @ Dec 29 2013, 22:07)  Сдуру можно и х.. сломать полмегабайта накомпилить.  так что делать? я включил в проект startup-файл, файлы для конфигурации ввода-вывода и для тактирования. Без них просто не будет работать же.
Сообщение отредактировал af1283 - Dec 29 2013, 18:36
|
|
|
|
|
Dec 30 2013, 05:00
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата Без них просто не будет работать же. Будет. Таблица векторов, задание параметров входов/выходов и тактирования через регистры процессора, сама программа. Ассемблер тут нафиг не нужен, по размеру кода в килобайт гарантированно уложитесь. Цитата без знания ассемблера хороший специалист в области микроконтроллеров и т.п. вещей невозможен в принципе. Возможен. Хороший специалист при необходимости любую технологию осваивает в течение месяца. Знать ассемблеры под все ходовые платформы нет никакого резона.
|
|
|
|
|
Dec 30 2013, 06:40
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(SII @ Dec 29 2013, 20:19)  Вообще склоняюсь к асму, потому что скомпилировав программу-мигалку светодиода и посмотрев её размер, я ужаснулся - 12Кб!!! Да, согласен с вышесказанным, асм действительно желательно знать, или по крайне мере иметь представление(понимать, что за команды), писать лучше на си, конечно(все-таки это не аврка  ) По поводу 12 кило - вы в курсе вообще, что для инициализации периферии в арме надо несколько больше команд, чем в той-же аврке? И второе - компилятор как правило еще вставляет код каких-либо библиотек, типа stdio и тп, а это тоже объем. Причем объем кода растет сильно в начале проекта, по мере добавления новых процедур код будет расти медленнее(процедуры-то уже подключены) ЗЫ. Посмотрите в свойствах проекта, что там конкретно подключается, можно поглядеть в ассемблерный код(за одним и начать его осваивать), тогда все будет ясно.
|
|
|
|
|
Dec 30 2013, 14:47
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(ViKo @ Dec 30 2013, 09:23)  Если сами напишете на C, руководствуясь "Руководством...", то получите раз в 10 меньше размер. Так так, вот это очень интересно. Где более-менее подробно описана инициализация? Это практически самая важная инфа для меня! Цитата(mantech @ Dec 30 2013, 10:40)  писать лучше на си, конечно(все-таки это не аврка  ) Никогда не понимал, когда искусственно вводят борьбу противоположностей: си и асм совсем не два категоричных выбора, они логично дополняют друг друга. Разве я не прав? Цитата(mantech @ Dec 30 2013, 10:40)  По поводу 12 кило - вы в курсе вообще, что для инициализации периферии в арме надо несколько больше команд, чем в той-же аврке? И второе - компилятор как правило еще вставляет код каких-либо библиотек, типа stdio и тп, а это тоже объем. Да, я перехожу с AVR и не стесняюсь этого!  С командами инициализации периферии я ещё не успел познакомиться, поэтому, нет, не в курсе. А вот за стандартные библиотеки Си таки большое "спасибо". Цитата(mantech @ Dec 30 2013, 10:40)  Посмотрите в свойствах проекта, что там конкретно подключается, можно поглядеть в ассемблерный код(за одним и начать его осваивать), тогда все будет ясно. Посмотрел я необъятный код файла .lst и понял, что пока рано мне его смотреть. Нужна скелетная программа уровня " мы с божьей помощью проинициализировались" и вот там надо разобраться.
|
|
|
|
|
Dec 30 2013, 16:55
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(af1283 @ Dec 30 2013, 18:47)  Так так, вот это очень интересно. Где более-менее подробно описана инициализация? Это практически самая важная инфа для меня! В документации на процессор описано всё, что нужно. Естественно, думать при этом придётся самому, поскольку там не пошаговые инструкции. Т.е., если речь идёт, например, об установке нужной частоты работы, придётся самому определять значения, которые придётся загружать в регистры -- а для этого нужно, естественно, понимать, какой регистр для чего служит, как к ним обращаться и т.д. и т.п. В первый раз это может быть довольно сложно, но, однажды осмысленно решив задачу, проблем не будет ни с какими процессорами. Цитата Никогда не понимал, когда искусственно вводят борьбу противоположностей: си и асм совсем не два категоричных выбора, они логично дополняют друг друга. Разве я не прав? Ну, правильней сказать, что дополняют друг друга языки низкого уровня (ассемблеры) и высокого уровня -- ведь это не обязательно должен быть Си. Цитата Да, я перехожу с AVR и не стесняюсь этого!  С командами инициализации периферии я ещё не успел познакомиться, поэтому, нет, не в курсе Команд нет, есть регистры устройств, в которые что-то надо писать. Цитата Посмотрел я необъятный код файла .lst и понял, что пока рано мне его смотреть. Нужна скелетная программа уровня " мы с божьей помощью проинициализировались" и вот там надо разобраться. .lst -- это листинг, куда попадает много чего. Смотреть нужно исходные тексты.
|
|
|
|
|
Dec 30 2013, 18:24
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
SII, большое спасибо за помощь.
|
|
|
|
|
Jan 6 2014, 10:19
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(Метценгерштейн @ Jan 4 2014, 14:21)  знать асм надо- это дает понимание того, что такое проц вообще и как он работает. Спасибо, но почему асм не подходит для написания чего-либо совсем несложного? Я понимаю, что всем хочется побыстрее и попроще, но... Я пример на асме нашел только на одном американском сайте колледжа.
|
|
|
|
|
Jan 6 2014, 12:52
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(af1283 @ Jan 6 2014, 14:19)  Спасибо, но почему асм не подходит для написания чего-либо совсем несложного? Я понимаю, что всем хочется побыстрее и попроще, но... Я пример на асме нашел только на одном американском сайте колледжа. Потому что есть такая штука, как переносимость. Например я писал интерпретатор виртуальных задач для аврки, год назад пришлось портировать на арм, я писал на си, время на порт затратил 2 дня. А теперь представь, еслиб я на асме все это писал, и потом надо портировать на арм?? Да, возможно я получил бы еще процентов 5 быстродействия, но потратил бы как минимум пару месяцев. Воть PS. Надо учитывать одно - во времена 8мибитников, с быстродействием единицы миллионов оп\сек иногда требовалось написать что-то особо быстрое, с мин. кол-вом кода (пример - те же тини у аврок). Теперь, когда микруха стоит 50руб, а в ней 64к флеша 20к ОЗУ и 80 мипсов быстроты, эти требования уже не актуальны, и асм я знаю только на том уровне, чтоб оценить проблему при отладке...
|
|
|
|
|
Jan 6 2014, 18:34
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(mantech @ Jan 6 2014, 16:52)  Потому что есть такая штука, как переносимость. Например я писал интерпретатор виртуальных задач для аврки, год назад пришлось портировать на арм, я писал на си, время на порт затратил 2 дня. А теперь представь, еслиб я на асме все это писал, и потом надо портировать на арм?? Да, возможно я получил бы еще процентов 5 быстродействия, но потратил бы как минимум пару месяцев. Воть PS. Надо учитывать одно - во времена 8мибитников, с быстродействием единицы миллионов оп\сек иногда требовалось написать что-то особо быстрое, с мин. кол-вом кода (пример - те же тини у аврок). Теперь, когда микруха стоит 50руб, а в ней 64к флеша 20к ОЗУ и 80 мипсов быстроты, эти требования уже не актуальны, и асм я знаю только на том уровне, чтоб оценить проблему при отладке... Да, с точки зрения программирования я с вами целиком согласен. Но... Для меня, как для начинающего инженера, с программированием знакомым слабо, понятнее всего всё-таки когда я сначала сам пощупаю всё, что делает код, сам напишу кое-какие велосипеды на асме: покидаюсь байтами, помигаю чем придется; потом досконально разберусь в сишных библиотеках, возможно подпилю их, а тогда уже дело пойдёт на лад, ящитаю. Спасибо.
Сообщение отредактировал af1283 - Jan 6 2014, 18:34
|
|
|
|
|
Jan 6 2014, 18:48
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Снизу, от asm, идти конечно надежнее, но талмуд по нему для АРМ больше 500 страниц. А еще надо будет читать талмуд на конкретный процессор - это еще не одна сотня страниц.
Предлагаю идти сверху, от си, т.е. пишешь программу на си с Standard Peripherals Library Drivers, точнее берешь готовый пример и разбираешься как он работает - что в какой последовательно в какие регистры пишется и т.д. Потом можно для этого си-шного кода получить asm-исходник, и потрассировать программу по нему в железе.
Вот если бы у тебя был преподаватель, который имеет опыт и знает последовательность изучения, направит и подскажет и ответит на вопросы, тогда можно и с asm начинать.
|
|
|
|
|
Jan 6 2014, 18:56
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(HardEgor @ Jan 6 2014, 22:48)  Снизу, от asm, идти конечно надежнее, но талмуд по нему для АРМ больше 500 страниц. Объем, конечно, серьезный. Чтоб писать на avr асме - надо страниц 20 прочесть Цитата(HardEgor @ Jan 6 2014, 22:48)  берешь готовый пример и разбираешься как он работает - что в какой последовательно в какие регистры Отличный вариант, но чтоб потрассировать в железе мне разве не придется периферию переписывать под свою stm32f3disvovery? Да и ковыряться в большом объеме чужого кода ( тем более ассемблерного) как-то уныло. Лучше честно писать самому Неплохо бы совместить оба подхода. Цитата(HardEgor @ Jan 6 2014, 22:48)  Вот если бы у тебя был преподаватель, который имеет опыт и знает последовательность изучения, направит и подскажет и ответит на вопросы, тогда можно и с asm начинать. Это было бы шикарно, но преподаватель кроме avr, похоже, и знать ничего не желает.
Сообщение отредактировал af1283 - Jan 6 2014, 18:59
|
|
|
|
|
Jan 6 2014, 19:25
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(af1283 @ Jan 6 2014, 22:56)  Объем, конечно, серьезный. Чтоб писать на avr асме - надо страниц 20 прочесть  Не переживайте, для начала работы на асме читать всё это и не требуется. Половина инструкций нужна лишь для специфических вещей, да и отсутствует во многих АРМах; без другой прожить можно, хотя с их помощью можно писать эффективнее -- в общем, это как раз дело наживное. Кроме того, очень значительный объём руководства посвящён всяким другим вопросам, например, устройству защиты памяти (MPU) -- для начинающего всё это даром не нужно. Что касается документации на конкретный МК, то там тоже не требуется сразу читать все эти сотни, а то и тысячи страниц -- это ж не художественное произведение. Читаются те разделы, что нужны. Например, чтоб поморгать светодиодом, достаточно разобраться с GPIO и с настройкой ног процессора вообще. Синхронизацию процессора здесь настраивать не нужно -- вполне устроит то, с чем он начинает работать. Для более сложных вещей уже нужно и синхронизацию, но это один сравнительно небольшой раздел, а не 500 страниц. Ну и так далее
|
|
|
|
|
Jan 6 2014, 19:33
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Цитата(SII @ Jan 6 2014, 23:25)  Синхронизацию процессора здесь настраивать не нужно -- вполне устроит то, с чем он начинает работать. У них ещё и тактирование настраивается?  Или это что-то другое?
|
|
|
|
|
Jan 7 2014, 06:43
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(SII @ Jan 7 2014, 02:25)  Не переживайте, для начала работы на асме читать всё это и не требуется. Проблема в том что начинающий не знает что надо читать, а что нет. Так же чтобы запустить процессор нужно знать последовательность и надо знать что и как включать. Я точно также начинал с LPC - купил evaluation board, в комплекте шел компилятор и примеры, помигал, потрассировал, разобрался в идеологии, понял как использовать бибилотеки и только потом стал углубляться - читать описание на процессор и на asm. А потом перешел на STM32 - как раз рассылали бесплатные evaluation board  Цитата(af1283 @ Jan 7 2014, 01:56)  Отличный вариант, но чтоб потрассировать в железе мне разве не придется периферию переписывать под свою stm32f3disvovery? С платой идут готовые примеры под несколько компиляторов - вначале стоит их поизучать. Советую поставить Keil - его можно бесплатно скачать, есть ограничение на размер программы, но для примеров хватит. Потом можно и свои программы делать. Далее можно попробовать среду разработки Coocox - она бесплатная и там намного удобней интерфейс и большое количество примеров.
|
|
|
|
|
Jan 7 2014, 08:38
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Цитата(af1283 @ Jan 6 2014, 23:33)  У них ещё и тактирование настраивается?  Или это что-то другое? Именно. Несколько возможных источников синхронизации (работать начинает от внутренней RC-цепочки), разные возможные частоты процессора и периферии и т.д. и т.п. Но для моргания светодиодами это роли не играет, так что лично я сначала порекомендовал бы именно их победить (ну, можно с вариациями: например, при нажатии на кнопку зажигать один светодиод, при отпускании -- другой). На этой задаче вполне можно изучить самые важные команды процессора (mov, ldr, str, b, and и тому подобные), ну а после можно браться и за настройку синхронизации.
|
|
|
|
|
Jan 7 2014, 17:44
|
Группа: Участник
Сообщений: 13
Регистрация: 29-12-13
Пользователь №: 79 849

|
Спасибо всем за участие и приятную беседу. Я ещё вернусь!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|