Electronics

Используем flashrom

Для прошивки SPI Flash можно пользоваться специализированными программаторами но при отсутствии таковых можно применить случайно оказавшийся под рукой микрокомпьютер с Linux на борту. Например OrangePi One с Armbian или RaspberryPi.

Компилируем для ARM

Как известно, программный код на языке выского уровня сам в микроконтроллер не полезет, его требуется предварительно скомпилировать в машинный код (мы не берём интерпретируемые языки, но в этом случае в микроконтроллер должен быть уже прошит интерпретатор). Для микроконтроллеров на базе ядра ARM/Cortex можно воспользовать кросскопилятором gcc-arm-none-eabi.

FlashROM: программирование SPI Flash

FlashROM - консольная утилита для идентификации, чтения, записи, проверки и стирания микросхем Flash памяти. Основное назначение - это перепрошивка BIOS, etc, а потому в списке устройств программирования много весьма специфичных. Но так же поддерживаются распространённые программаторы/адаптеры: ft2232_spi, serprog, buspirate_spi, rayer_spi, pony_spi Адаптеры rayer и pony подключается на LPT порт, так что в современных реалиях их использование затруднительно. SerProg serprog это не конкретный адаптер, а протокол взаимодействия с адаптером по UART интерфейсу (или через эмуляцию UART на USB).

Banana Pi

Banana Pi — семейство одноплатных компьютеров на базе микроконтроллеров с ядром ARM производства Allwinner.

Может работать под управлением различных операционных систем: Android 4.2, Android 4.4, Lubuntu, Raspbian, Debian, Fedora, Arch Linux, Gentoo, openSUSE, Berryboot, FreeBSD, OpenWrt, Slackware, Tiny Core Linux.

LPC-Link

Как многим заинтересованным лицам известно, хитрые платы LPCXpresso снабжены мега-дебаггером LPC-Link. Выпуск среды разработки code red в нативном виде под Linux позволил нам, сирым и убогим, познать радость пользования этим самым LPC-link’ом. В общих и целых чертах мы имеем следующее: Микроконтроллер задействованный в LPC-link начисто лишен какой бы то ни было долговременной памяти. Фирмварь в него надо грузить каждый раз после перетыкания и перед тем как начать шить target контроллер нам надо проверить, что там вообще на usb шине творится, в плане девайсов.

Segger J-Link

Распространённое аппаратное средство для отладки МК с ядром ARM по интерфейсу JTAG и SWD((В openocd так и нет нормальной поддержки этого интерфейса)). Оригинальный J-Link стоит достаточно дорого - более трёхсот долларов, что достаточно ощутимо для радиолюбительского кошелька. Но китайские товарищи расстарались, и наклепали вполне приличных клонов за небольшие деньги. Возможно, это мне попался такой экземпляр китайского клона, но в условиях производство с обилием силовых агрегатов вокруг, отладчик подвисал каждые несколько минут.

Silicon labs EC2/EC3 debugger linux driver

Поддержка оригинальных Silabs-овских дебаггеров EC2 и EC3 обеспечивается с помощью пакета http://ec2drv.sourceforge.net/|ec2drv Установка ec2drv В первую очередь, нам надо инсталлировать все необходимые утилиты и бибилиотеки. На Debian-based системах это можно сделать командой: apt-get install autoconf libtool libboost-dev libusb-dev libreadline5-dev subversion libboost-regex-dev Получаем исходный код: svn co https://ec2drv.svn.sourceforge.net/svnroot/ec2drv/ec2drv/trunk ec2drv Переходим в каталог проекта и инициируем automake: cd ec2drv make -f Makefile.cvs ./configure Поскольку пакет ec2drv не обновлялся с 2006 года, для установки на современные системы потребуется побить в бубен.

AVR Dragon

AVR Dragon средство программирования и отладки микроконтроллеров AVR. Позволяет отлаживать код размером до 32кб, хотя существует возможность доработки. Поддерживает программирование через интерфейс AVR ISP (6 pin), параллельный и последовательный высоковольтные интерфейсы. Отладка и программирование производится через интерфейсы AVR JTAG (10 pin) и dW (debug Wire). Ранние версии AVR Dragon имеют схемотехническую ошибку из-за которой велика вероятность выхода из строя цепей питания. Способ исправления описан в руководстве. AvrDuDe поддерживает все интерфейсы AVR Dragon, для отладки следует воспользоваться приложением AVaRICE - промежуточным звеном между железом AVR Dragon-а и отладчиком avr-gdb.

Inex PX-200

PICkit2 совместимый программатор. Скачать исходный код консольного приложения для posix совместимых систем можно с официального сайта Microchip. Распакуем полученный код и соберём его командой make linux. Для возможности работы из под обычного юзера пропишем правило для udev #/etc/udev/rules.d/77-pickit.rules SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="0033", GROUP="usb", SYMLINK+="pickit2" И добавим вашего пользователя в группу usb: sudo adduser your_login usb Возможно потребуется обновление программного обеспечения программатора: ./pk2cmd -D PK2V023200.hex

AT команды GSM модемов

PIN-код Если SIM-карта защищена PIN-кодом, после включения следует его “ввести” AT+CPIN="0000" Voice режим Для перехода в голосовой режим выполните команду: AT+FCLASS=8 После этого можно набирать номер ATD8911xxxxxxx; Обратите внимание на точку с запятой в конце номера. Она указывает, что должен быть произведён именно голосовой вызов. Ссылки по теме http://en.wikipedia.org/wiki/Voice_modem_command_set http://en.wikipedia.org/wiki/Hayes_command_set http://doc.qt.nokia.com/qtopia4.1/atcommands.html http://www.smssolutions.net/tutorials/gsm/receivesmsat/ AnyData CDMA Голосовой вызов: AT+CDV+7911xxxxxxx

LPC2368 SSP init as SPI

void sspInit(void) { // SSP1 (SPI) init sequense PCONP |= (1<<10); // PCSSP1 - power on PINSEL0 |= (2<<(7*2)) | (2<<(8*2)) | (2<<(9*2)) | (2<<(6*2)); // configure SPI1 pinouts // Serial Clock Rate: PCLK/CPSDVSR SSP1CR1 = 0x0 ; // disable SSP, must be off during changes SSP1CR0 = (8-1); // | (1<<6) /* CPOL */ | (1<<7) /* CPHA */; // | SSP_CR0_CPOL | SSP_CR0_CPHA; // DataSizeSelect=8, CPOL=1,CPHA=1 SSP1CPSR = 8; // SPICLK = PCLK/8 = 18MHz/8 = 2.

LPC2368 UART init

void uartInit(unsigned long baudrate) { /*------------------------------------------------ Setup serial port registers. ------------------------------------------------*/ PCONP |= (1<<3); // PCUART0 UART0 power/clock control bit. PINSEL0 |= (1<<(2*2)) | (1<<(2*3)); /* Enable TXD0, RXD0 */ U0LCR = 0x03; /* 8 bits, no Parity, 1 Stop bit */ U0IER = 0; /* Disable UART1 Interrupts */ U0FCR = 0x07; unsigned long DLreload; DLreload = ((Fpclk / 16UL) + (baudrate-1)) / baudrate; U0LCR |= 0x80; /* Set DLAB */ U0DLL = DLreload; U0DLM = (DLreload >> 8); U0LCR &= ~0x80; /* Clear DLAB */ } char uartGetc(void) { while (!

ModBus

Modbus — коммуникационный протокол, основанный на master-slave архитектуре. Разработан фирмой Modicon для использования в контроллерах с программируемой логикой (PLC). Стал стандартом де-факто в промышленности и широко применяется для организации связи промышленного электронного оборудования. Использует для передачи данных последовательные линии связи RS-485, RS-422, RS-232, а также сети TCP/IP. В настоящее время поддерживается некоммерческой организацией Modbus-IDA. (Материал из Википедии)

SPI to UART

Запись в TX FIFO Байт 0: Dir 7 6 5 4 3 2 1 0 DI 1 x x x x x x x DO tx_free 3 2 1 0 rx_ready 3 2 1 0 Далее передаются байты данных, в количестве не более чем tx_free. Байт N: Dir 7 6 5 4 3 2 1 0 DI data 7 6 5 4 3 2 1 0 DO tx_free 3 2 1 0 x x x x Чтение из RX FIFO Байт 0: