STM32F030. С какой стороны подойти?

Микросхема интересная, и очень хочется ее поскорее захомутать. Но вот вопрос — с чего начать, с какой стороны начать ее грызть?

Можно начать вгрызаться в нее с уровня ассемблера. Изучить систему команд, набор регистров, понять специфику адресации, понять механизм обеспечения режимов работы (пользовательский, системный) и т.д. При этом вы будете знать очень хорошо «железную» часть микроконтроллера, но, к сожалению, чтобы написать сложную программу (например, прием информационного  потока из сети, вычисление Фурье-преобразований и вывод на графический дисплей спектрограмм) нужны немного другие знания.

Поэтому имеется второй подход — освоение микроконтроллера с уровня С. Тут способы адресации не так уж важны. При этом подходе мы поднимаемся чуть выше на следующий уровень абстракции. На этом уровне нас не интересуют конкретные адреса наших данных в оперативной памяти, нас не интересует способы доступа к этим данным. Мы занимаемся вычислениями. При этом, против ассемблерного подхода мы теряем примерно половину скорости работы, а объем программы возрастает примерно на в 1.5-2 раза. В большинстве случаев это приемлемо.

В последнее время (и это связано с появлением на рынке ядра Cortex) обозначился еще один подход. Этот подход еще больше повышает уровень абстрагирования от железа. Я говорю об использовании библиотек cmsis и библиотеки периферийных устройств фирмы ST Microelectronics. При этом подходе можно знать о микроконтроллере еще меньше. Здесь главное уметь писать программы на С и знать как «работают» структуры. Получающиеся объемы кода здесь поражают воображение — минимальная программа «моргание светодиодиком» (, которая на ассемблере или на С вписывается в 150-300 байт) может откомпилироваться в добрый десяток килобайт. Скорость тоже будет меньше, но работать еще как-то можно.

Есть еще один подход в освоении микроконтроллеров — Ардуино-подход. Но я его даже не рассматриваю.

Из трех, рассмотренных выше подходов, я решил избрать первый — самый железный. Давно хотел узнать в какие процессорные команды в Cortex-е компилируются те или иные С-шные команды.

Интерес подогревало еще и то, что в сравнении с AVR-ками объемы кода у Cortex-ов, конечно, больше, но ведь не в четыре же раза! AVR-ки 8-разрядные, Cortex-ы — 32-разрадяные. А взять MSP430 — эти 16-разрядные. Но у всех объем кода получается примерно одинаковый, а не в соотношении один к двум и к четырем. Почему?

Да потому, что сами команды у всех трех ядер — в основном 16-разрядные. Это обстоятельство и уравнивает все три типа микроконтроллеров между собой. А вот объем данных, которые они могут за один присест обглодать — это уже говорит об их вычислительной мощности. Так вот, мне бы очень хотелось посмотреть на специфику процессорного кода Cortex, и я это сейчас сделаю.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s