January 3rd, 2017

worklog: REPL. Я придумал, зачем мне нужен скриптовый язык ;)

...естественно -- для прототипирования кода! Или даже для написания какой-то высокоуровневой логики типа того же GUI - разумеется, связать нажатия физических кнопок с отрисовкой каких-то штук на экране и вызовом нижележащих функций можно и на Си, и на ассемблере, но лично я очень сильно не уверен, что расположение, вид, цвет и т.п. всех этих нарисованных очагов графических конструктов получится с первой попытки и сразу идеальным. Поэтому нужно прототипирование, но для него понадобится две вещи:
1) работающая графическая библиотека
2) консоль, при помощи которой можно заставить эту библиотеку отобразить что-нибудь интересное.

Без перекомпиляции-перепрошивки основной программы это можно сделать.. ну.. множеством способов, разумеется, начиная от классики типа RPC (это без московской потреархии, просто remote procedure call), заканчивая всякими там хипстерскими наворотами - но идеально было бы завести именно что небольшой такой скриптовый язык, пришитый к вышеупомянутой библиотеке.

Загвоздка в том, что ни библиотеки, ни языка пока нет.

Точнее, язык есть, он даже работает, даже можно какие-то несложные нахлобучки делать, но он очень далёк от того, что я хотел бы получить. А использовать готовые (для STM32 есть javascript, есть python, есть Lua... есть даже scheme, написанная на ассемблере - что меня очень пугает) не хочу.

Скорее всего, задача окажется неподъёмной. Но, быть может, наоборот.

worklog: графикс

Сейчас центральный контроллер - старая добрая STM32F103. Графического модуля в нём нет, поэтому использую видеочип SSD1963, по счастливому стечению обстоятельств он установлен на платке LCD-панели.

В принципе, всё довольно просто. Чип подключен так, что его регистры команд и данных отображены в память, занимая всего два адреса. Соответственно, читать-писать можно очень просто и быстро, микросхема оказалась способна прожевать данные, высылаемые через DMA микроконтроллера.

Играюсь щас с разными командами. Понадобился вот мне скролл - есть SET_SCROLL_AREA (и её дополнение SET_SCROLL_START). Аппаратный скролл очень быстрый, но скроллить можно только вверх-вниз (что, в принципе, логично) и только по всей ширине экрана (что уже не так удобно). Т.е. идею о том, что будущий софт будет плавненько скроллить часть экрана с "waterfall" дисплеем, придётся реализовать чисто программными средствами (считать часть экрана, переписать обратно со сдвигом). Если использовать DMA и скроллить построчно, то памяти надо не так много и, наверное, даже относительно быстро будет работать. Надо попробовать...

Обнаружил какие-то странные артефакты: изображение на дисплее не очень стабильно и есть дефект вывода данных.
Collapse )