пятница, 16 сентября 2011 г.

Загрузка TMS320C55xx в SDRAM

Цифровые сигнальные процессоры Texas Instruments серии C55xx имеют контроллер внешней памяти EMIF, обеспечивающий возможность работы с памятью типа Nand, Nor, асинхронными SRAM и синхронными SDRAM микросхемами памяти.

После того, как вы откомпилировали ваше приложение, с помощью утилиты hex55, входящей в состав Code Generation Tools для С5000 достаточно просто получить бинарный файл для прошивки во внешнюю энергонезависимую память. Встроенный загрузчик отлично справляется с загрузкой программы во внутреннюю SARAM без каких-либо дополнительных манипуляций. Однако, если ваша программа уже достаточно велика, возникает необходимость использования дополнительной внешней памяти, куда загрузчик должен загрузить программу или данные и запустить выполнение программы. Как это сделать, я и расскажу в этой статье на примере настройки SDRAM на отладочной плате EVM5515. Всё описанное может быть применено с некоторыми изменениями не только для использования SDRAM, но и любых других типов памяти (например, для исполнения программы непосредственно из энергонезависимой флэш-памяти).

среда, 22 июня 2011 г.

Графический интерфейс для консольного приложения.

Так сложилось, что пользователям нужны графические интерфейсы. Виноваты в этом Microsoft, Apple или природа человека, которому удобней манипулировать визуальными объектами, может быть, и что-либо ещё, но факт остается фактом - программистам удобно и правильно использовать консольные приложения, а пользователям, будьте добры, предоставьте окошечки с кнопочками.

И так, ситуация: имеется уже написанное и отлаженное консольное приложение, необходимо предоставить к нему графический интерфейс. Один из вариантов на python+PyQt под катом.

среда, 8 июня 2011 г.

pyserial vs gsm-modem

В одном из проектов появилась необходимость настройки gsm-модема (mc52i) через последовательный порт: AT-команды, настройка параметров модема, запись и чтение смс, настройка профиля GPRS и т.п.

Само собой, будем использовать наш любимый Python, а работы с COM-портом существует отличная библиотека PySerial.

Завелось, как говорится, сполпинка, но при увеличении размера скрипта, когда обмен шел интенсивно, практически каждый раз при работе вылетало исключение writeTimeoutError.

четверг, 21 апреля 2011 г.

Python. Срезы и передача массивов в функцию.

В python присутствует широко используемая операция среза, которая позволяет удобно получить из массива или списка набор элементов.

Например list[1:5] вернёт список из элементов списка list с первого по пятый, а list[3:] - все элементы list, начиная с третьего.

Есть интересный момент (оговорюсь, что я новичок в питоне) - если мы хотим, как в Си, передать в функцию часть массива по указателю, начиная с определенного элемента, то по-простому мы делаем так:

foo(list[n:])

в результате чего производится операция среза, генерируется новый массив из элементов лист (занимается память и тратятся ресурсы), и уже этот массив по ссылке передается функции.

Если массив - это массив строк, то при с увеличением размера файла это даст увеличение времени работы в геометрической прогрессии.

Как же сразу получить ссылку на часть массива, без создания нового?

Похоже, что никак, т.к. можно передать только ссылку на объект, а его надо, соответственно, сначала создать.

Пришлось слегка подкорректировать алгоритм так, что вызываем

foo(list,n)

и уже внутри функции обрабатываем с учетом индекса.

Вопрос, есть ли лучшее решение?

вторник, 8 февраля 2011 г.

Подсветка кода в блоге.

Для нормального программерского блога, само собой, необходима грамотная подсветка кода.

Для этой цели можно использовать онлайн-скрипты. Поддержку достаточно большого количества языков и неплохой внешний вид обеспечивают сайты ToHtml и HiLiteMe. Но мы не ищем легких путей и хотим автоматической подсветки кода, без хождения на сторонние сайты, да ещё с поддержкой хотя бы языка VHDL.

понедельник, 7 февраля 2011 г.

Для чего создан этот блог.

Моя профессия - программист. В основном - в области встраиваемых систем.
По ходу профессиональных занятий и личных увлечений часто приходится находить решения, чтобы сделать себе удобней, облегчить жизнь, что-то создать или запрограммировать. Проходит время, находятся новые занятия, а старое - начисто выветривается из головы.
Блог создан для фиксирования ответов на текущие вопросы.