30 янв. 2012 г.

Установка Linux с нуля на SK-AT91SAM9260-SIM300 (part 1 - инструментальные средства)

Как очевидно, данная серия постов будет посвящена процессу установки Линукса на отладочную плату SK-AT91SAM9260-SIM300. Особенностью данных постов является то, что я не буду использовать готовую инструментальную среду, которая поставляется вместе с платой на прилагаемом диске в виде образа VMWare. Кросскомпиляторы, загрузчики, ядро и корневую файловую систему я буду патчить и компилировать сам, используя оригинальные исходные коды с сайтов разработчиков.
Эта серия постов, увы, ориентирована в первую очередь на меня - чтобы я не забыл как делается то или иное действие. Поэтому, возможно некоторые, очевидные для меня моменты будут пропускаться. Если же я в чем-то не разобрался или в чем-то не уверен, то я отдельно напишу об этом в тексте поста и если у вас есть ответ на мой вопрос - пишите его в комментариях!

Предварительно, я дам ссылку на ресурс, который мне очень помог: .http://dmilvdv.narod.ru/AT91SAM9260/index.html

Итак, поехали. Сначала, в первом посте я опишу как получить используемые мной инструментальные средства - кросскомпилятор, загрузчик прошивок и так далее и покажу как всем этим пользоваться.

11 янв. 2012 г.

Профилировка программ в Linux'е

Для начала определим, что же такое "профилировка программ" и зачем она нужна. Профилировка программ - это процесс определения времени выполнения отдельных элементов программы с целью поиска "бутылочного горлышка".
Книга "Техника оптимизации программ" Криса К., дает еще одно определение профилировки:
Профилировкой мы будем называть измерение производительности как всей программы в целом, так и отдельных ее фрагментов, с целью нахождения "горячих" точек (Hot Spots), — тех участков программы,  на выполнение которых расходуется наибольшее количество времени.
Профилировка программ выполняется при помощи специальных утилит - профилировщиков, которые на основе собранных при выполнении программы данных вычисляют время выполнения практически для каждой логической единицы программы - строка кода, функции и так далее. А затем, эта информация представляется пользователю в виде таблиц или графиков.
Подобная информация может быть полезной если в вашей программе есть узкие места из-за которых ее производительность оставляет желать лучшего. Либо же, такая информация может пригодиться если вам необходимо портировать программу с "большого" PC на какой-нибудь низкопроизводительный микроконтроллер.

10 янв. 2012 г.

Программа для создания карточек настольной игры "Алиас"

Недавно, мне подарили настольную игру под названием "Алиас", суть которой заключается в угадывании слов и всяких "известных персонажей" по словесному описанию от партнера по команде.
Именно с угадыванием известных персонажей и возникли проблемы у компании из двух программистов и одного филолога. Если с такими людьми как Арнольд Шварценеггер или Уилл Смит не возникало никаких проблем, то попытки описать Колин Фарелл или Род Стюарта наталкивались на препятствие вида "эээ, а кто все эти люди?".
Тогда же, одному из двух программистов пришла в голову светлая идея - заменить всех этих "звезд эстрады и шоубизнеса" на таких привычных и понятных программистскому уху именах и фамилиях как: Линус Торвальдс, Ричард Столлман, Деннис Ритчи и так далее.
Естественно, рисовать карточки от руки было, что называется "не с руки", поэтому мною была написана простенькая программка, рисующая карточки автоматически.

1 янв. 2012 г.

Статический анализ кода на C в Linux'е

Теоретически ребенок может предпочесть общение с консолью и компилятором общению с реальными людьми, особенно если со сверстниками проблемы. Плюсы общения с машиной для него будут очевидны: даешь задание получаешь результат(кому еще ребенок может дать задание), если результат не верен, значит сам напортачил(а люди могут врать или ошибаться по морю причин и пойди разбери по какой именно). А еще у машины всегда есть время общаться с ребенком(она не скажет что устала на работе и ей нужно попить пивка).

К сожалению, поиски того, где же ты напортачил, могут затянуться если не использовать анализаторы кода. Там, где человек от усталости вполне может и пропустить какую-то, не вполне очевидную, ошибку, программа ничего не упустит и предупредит о том, что "здесь что-то не так".
Поскольку я пишу на C и использую GNUтые или же просто опенсорсные средства разработки (GNU Emacs, GNU GCC, Doxygen и так далее), то меня интересовали, в первую очередь, средства для статического анализа кода с открытыми исходниками. О них то, по меньшей мере о тех, которые мне приглянулись, и пойдет речь в данном посте.