Создание автономного C-приложения с библиотекой matlab
Иногда нужно сделать приложение, которое общается с неким девайсом и выполняет сложные математические расчеты. Конечно, можно написать свои библиотеки или найти библиотеки сторонних разработчиков, но зачем, если все уже написано за нас? Намного проще написать матлабовскую функцию, отладить ее и использовать в своем приложении.
Дык на чем писать-то?
Среди эмбеддеров живы споры по поводу того – на каком языке лучше писать программы для контроллеров. Одни ратуют за ассемблер – мол, быстрее, компактнее, другие, те что за Си говорят, что на нем программы быстрее пишутся, а по скорости совсем слегка проигрывают ассемблеру. Оба этих класса эмбеддеров катят бочку на тех, кто пользуется C++: мол, он слишком медлителен прожорлив и опасен для встраиваемых систем. Ну что, устроим холивор?
Письмо в usb.org
Как известно, для того, чтобы сделать свое USB-устройство, необходимо присвоить ему идентификатор в виде комбинации 16-битных чисел — VID и PID.
VID – Vendor ID – идентификатор производителя выдается usb.org. Производитель должен присвоить каждому новому продукту идентификатор PID – Product ID. Таким образом, получается уникальная комбинация VID/PID
Комбинация VID/PID служит для того, чтобы операционная система подгрузила нужный драйвер.
Для того, чтобы получить даже одну комбинацию VID/PID, нужно заплатить usb.org довольно большую сумму – минимум 2000$. После этого вы получаете возможность сделать 65536 устройств.
Работа с GPIO
В этой статье я бы хотел рассказать вам про разные способы работы с GPIO-ножками контроллера, показать
способ который я выбрал для себя и объяснить, почему именно его я использую.
WTF Volatile?
Если вы пишите прошивки для микроконтроллеров на C/C++, но наверняка встречались с ситуациями, когда:
- Программа работает хорошо до тех пор, пока вы не включите оптимизацию
- Программа работает хорошо пока запрещены прерывания
- Драйвера аппаратуры прекрасно работают у ваших друзей/коллег, а у вас – глючат
- В многозадачных приложениях задачи по отдельности работают хорошо, а если запустить их вместе – происходит что-то страшное.
Все эти ситуации могут быть вызваны тем, что вы не используете ключевое слово volatile. Вы не одиноки, очень многие программисты не понимают зачем оно нужно.
(more…)