Обновить
26
0.1
Анатолий @longtolik

Пользователь

Отправить сообщение

Однако, ностальгический комментарий разрастается...

Некоторые варианты.

  1. Программируемый калькулятор (в нем много машинных кодов, запуск программ с выводом на экранчик).
    Или купить БК-0010М, или поискать эмулярор PDP-11 на PC.

  2. КПК Palm IIIe со складной клавиатурой. На нем (прямо на нем) можно создавать, редактировать и выполнять программы на Assembler и C. Замечательная архитектура Motorola DragonBall (или MC68328).
    Мне она нравится больше чем DEC PDP-11, к тому же, 32 бита, работа от двух мизинчиковых батарей.

  3. Телефон на Android с Termux. Это - Linux в кармане, можно подключать мышь и клавиатуру по Bluetooth,
    а также мониторы или телевизоры по кабелю USB Type C - HDMI. Можно создавать программы на любом языке, можно установить Far Manager, редакторы двоичных файлов, редактировать BIN файлы и запускать их.

  4. Raspberry Pi Zero 2W (или другие). Можно работать как на Linux, так и на голом железе.

  5. Arduino Vidor 4000 с Intel Cyclone на борту. Есть IP процессоров, можно и свой процессор создать и загрузить.
    Есть выход HDMI. Сам я только проверил цепочку от схемы в Quartus в бит-файл для мигания светодиодом.

Эти устройства заменяют D1 и D2. То есть, два в одном.

Если говорить об устройстве D2, то его можно выполнить даже на Arduino Uno. К нему подключить связь с D1 и экран, например, OLED или LCD.

Для связи D1 и D2 подойдут, как проводные (UART), так и беспроводные интерфейсы: Bluetooth (на HC-05, 06), BLE (HM-11), Wi-Fi (ESP9266), IrDA.

Программировать в кодах немного сложновато. Исключение - DEC PDP-11, там только пересчет смещения ветвления вручную рутинный.

Поэтому можно сделать свой Assembler. Когда-то в журнале "Микропроцессорные средства и системы" приводились такие проекты - типа универсальный Assembler для любых мнемоник в любые коды.

А еще можно сделать генерацию кода с помощью LLM.
Как-то попробовал в Off-Line на Raspberry Pi 5 - подключил к LLM свое резюме. А потом спрашивал про себя на разных языках. Система послушно выдавала информацию.
Подобным образом можно подключить документ, который содержит машинные коды.
Потом вы говорите что-то вроде: переслать из регистра R2 в R3. Для этого у системы будет ответ типа: "10203", что соответствует "MOV R2,R3". Эти строки машинного кода можно преобразовать в двоичный вид, поместить в файл, и будет готовый бинарник для исполнения. А еще можно будет делать целые куски кода или подпрограммы, например, "вывести "Testing 123" на терминал".

Применение Code-T5(CodeT5 - модель для понимания, а также генерации кода).
Для анализа исходного текста программ:
https://youtu.be/MlW2GAPPV2w?si=D8PnUJsoNIYSjxeU
(озвучка ужасная, лучше не слушать, сейчас лучше справляюсь).
Задача была документировать тексты программ, генерациют кода не пробовал.

Пожалуйста, если будут полезные проекты, можно было бы поучаствовать. Не только на RPI, но и на других платах (на голом железе).
Кстати, посмотрел Вашу публикацию о Inkscape Plugin, интересная штука. А я делал Plugin для вывода графики на плоттер, то есть, в G-code для ЧПУ. Для плоттера на бутылках BottleBot, а потом подправил для Line-US. Ещё из этого делал координаты для текстов для 3D графики. (Сами надписи располагались на поверхности усеченного конуса, в циферблате для часов)

Еще там была проверка готовности через регистр состояния.
Коллега делал проверку бита готовности через TSTB и потом ветвление.
Позже я понял, что надо делать через BPL, так как бит готовности - он же старший в байте, поэтому соответствует знаку.
Потом, когда RT-11 (ФОДОС) появился, фокус ему показывал
MOV #123, R0
EMT O341 // .TTYOUT R0
EMT O350 // EXIT

Встраивание данных в код

Кусок программы от Peter Lemon на ассемблере
Инициализация Frame Buffer
...
FB_Init:
mov w0,FB_STRUCT + MAIL_TAGS
mov x1,MAIL_BASE
orr x1,x1,PERIPHERAL_BASE
str w0,[x1,MAIL_WRITE + MAIL_TAGS] ; Mail Box Write

ldr w0,[FB_POINTER] ; W0 = Frame Buffer Pointer
cbz w0,FB_Init ; IF (Frame Buffer Pointer == Zero) Re-Initialize Frame Buffer
...

Он транслируется в FASM, но выдает ошибки в GCC aarch64-linux-gnu

Поэтому сначала я вставлял машинные коды нетранслируемых команд как директивы .word ...
а после преобразовал текст программы.
...
FB_Init:
mov w0, FB_STRUCT+MAIL_TAGS
.word 0x5282a900 // альтеративно - такая команда

mov	x1, MAIL_BASE
orr	x1,x1, PERIPHERAL_BASE
str	w0, [x1,MAIL_WRITE + MAIL_TAGS]	// Mail Box Write

adr	x1, FB_POINTER		//.word 0x18000700 //ldr w0,[FB_POINTER] // W0 = Frame Buffer Pointer []
ldr	w0, [x1]					// Store Frame Buffer Pointer Physical Address
cbz	w0, FB_Init				// IF (Frame Buffer Pointer == Zero) Re-Initialize Frame Buffer

and	w0, w0,0x3FFFFFFF	// Convert Mail Box Frame Buffer Pointer From BUS Address To Physical Address ($CXXXXXXX -> $3XXXXXXX)
adr	x1, FB_POINTER		// already there
str	w0, [x1]					// Store Frame Buffer Pointer Physical Address

...

Дизассемблер:

0000000000000094 :
94: 5282a900 mov w0, #0x1548 // #5448
98: 5282a900 .word 0x5282a900
9c: d2971001 mov x1, #0xb880 // #47232
a0: b2681421 orr x1, x1, #0x3f000000
a4: b9002820 str w0, [x1, #40]
a8: 1000a8a1 adr x1, 15bc
ac: b9400020 ldr w0, [x1]
b0: 34ffff20 cbz w0, 94
b4: 12007400 and w0, w0, #0x3fffffff
b8: 1000a821 adr x1, 15bc
bc: b9000020 str w0, [x1]
c0: b26a03ff mov sp, #0x400000 // #4194304
c4: 14001682 b 5acc

Две первые строки 
mov	w0, FB_STRUCT+MAIL_TAGS
.word 0x5282a900

выдают один и тот же машинный код
94:	5282a900 	...
98:	5282a900 	...

Таким образом, можно создать базу данных (на самом деле - кодов). Из этих "кирпичиков" построить программу, передать на нее управление, и она будет работать.
Можно применить генетические алгоритмы, то есть, "выживать" будут лучшие экземпляры.
Также не исключено добавление случайных кодов, в случае ошибки возникнет прерывание по неправильному коду операции, этот код может быть подправлен и т. д.

Тут нужно смотреть, чтобы изменения кода происходили, не мешая кешу команд и данных.

Самомодифицирующиеся программы существуют уже давно.

Про Raspberry Pi
Пробовал на 3+A и B, 2W - все с процессором A53. Четыре ядра работают - это позволяет на каждом выполнять свою задачу без переключений. С Raspberry Pi 5 на голом железе пока не пробовал - там чип ввода-вывода поставили.

Это здорово, когда мы чувствуем железо.

Последний раз использовал машинные коды, когда для Raspberry Pi 3 делал звук/видео буфер на голом железе. FASM интерпретировал мнемонику в машинный код, а GCC - нет. Пришлось в текст программы вставить кусок данных. Заработало.

А в общем, до сих пор помню многие коды из PDP-11.

Можно купить БК-0010 и пробовать..

Ещё делал дизассемблер на лету для IBM совместимых компьютеров . Надо было убрать кусок кода, который защиту на Com port проверял. Через T бит после каждой команды выполнялос прерывание, и дизассемблировалась команда. На 386SX работало с приемлемой скоростью.

Да, дерево - это здорово. Недавно сделал аудио колонки из бочонков и цилиндров (так они на сайте называются, но, скорее, стаканы). Из цельных кусков дерева.. А знакомый делает на продажу мыши и флешки деревянные...

Из цельного куска ...подразумевается, в хорошем случае, что берется параллелепипед и из него на станке с ЧПУ фрезеруется изделие. Так делают капоты у Rolls Royce, вроде. Другой вариант - когда делается отливка и доводится форма лёгкой фрезеровкой..

Для сравнения - первые каменные орудия, пусть и примитивные, начал колотить Человек Умелый, 2 300 000 лет назад

Интересно, когда, по-вашему, появился человек

А нельзя в заголовке было написать: "нет альтернатив (замены) иностранному ПО?

А то можно понять так, что у нас оно есть, а иностранных аналогов нет.

Извините, если не в тему, но когда-то в лаборатории по надзору за стандартами и измерительной техников пооверяли приборы по гальваническим элементам. Эти элементы выдавали Э.Д.С. 2.1 Вольт, не очень зависимо от степени разряда. Ещё есть серебряные элементы питания, у них напряжение стабильно до конца срока службы. Например, SR927W1 для часов

Если речь идёт о Raspberry pi 5, то положение резистора на плате соответствует объёму памяти. Это удобно при покупке, например, на a Aliexpress, сразу виден объем по фото .

«Мини‑ЭВМ PDP-11: программирование и организация машины» М.Сингер - до сих пор на одном из почётных мест на книжной полке. Потом наш НИИЭМ купил документацию в ГПНТБ на RT-11 на английском языке за 800 р. Стопка листов формата А4 была с метр высотой. Почти всё перечитал. Сейчас то же самое есть, по-моему на сайте pdp11.org (или как-то так).
Раз уж речь зашла - по RSX-11 документация была на русском в нескольких мешках (!) за 5000 рублей.
Ассемблер и архитектура PDP-11 - классика, его до сих пор изучают в американском ВУЗе (не помню, каком). Ещё помню коды команд, например, 12737.
Одна только штука чего стоит - когда одной командой можно поменять содержимое ячейки памяти (чтение-модификация-запись). И не надо, как в x86 сначала считывать в регистр, модифицировать, а потом записывать в память разными командами. Да и запись - читаешь слева направо, код команды, операнд источник, операнд приемник. А не так: код, потом почему-то приемник, потом источник в (x86), а в ARM так вообще и так и эдак.

Но, что интересно, потом программировал Palm IIIe, у него - Motorola DragonBall 69328.
Он вообще меня поразил, 32-бита, ассемблер - еще красивее, чем PDP-11 (по крайней мере, тогда мне так показалось).

Еще книга в те годы была "Компьютеры, применение в химии" немецких авторов (книга моя в другом городе). Там были отлично описаны математические алгоритмы решения почти всего с примерами на Basic.

И еще: "Нейроинтеллект: от нейрона к нейрокомпьютеру" авторы Соколов, Е.Н.Вайткявичус, Г.Г. - отлично описано то, что сейчас происходит в нейросетях... Вообще, в те годы было много книг про искусственный интеллект.

Клавиатура - очень удобная, у нее даже панель под клавишами вогнутая. Интерфейс - Bluetooth, на пальчиковых батарейках/аккумуляторах не скажу точно, но пол-года работает. Откликается мгновенно, не надо ждать, как у других, пока проснутся

Искал такую несколько лет назад новую. Нашел только на eBay из Канады с французской раскладкой (одна клавиша дополнительная). Работает как с macOS, так и с Windows, надо только драйвер вытащить из пакета для Windows пол macOS.

Она - мембранная, но нисколько не хуже механических или механо-оптических.

Вот была книга: "Нейроинтеллект: от нейрона до нейрокомпьютера". Ещё в 1989 году. Кстати, попала, например, в библиотеку конгресса, хотя, что называется, сделана в СССР.

Немного непонятно про 15 триллионов, если нейронов 15 миллиардов, то у каждого по 1000 аксонов? То есть, связей с другими.

Именно так, в смысле что с подтяжкой, возможно, не к питанию, а к какому-то делителю. Только конкретно не помню, сколько вольт точно. Мы измеряли. Про это и написано в документе. Еще интересные моменты - вроде, разные области памяти работают с разной скоростью. Заметил однозначно, что если программу отлаживать в RAM (0x20000000 адрес, насколько помню), то в случае программных задержек-циклов будет одни величины. Потом, если записать ее во Flash (0x60000000) то будут другие времена задержек, хотя она оттуда в RAM идет на исполнение.

Пока такое нашёл:
https://www.slkoric.com/other-else-63359/55150-55792.html
Позже поищу сам PDF документ об отличиях GD32 от STM32. Сразу не нашелся, но, в любом случае, после выходных спрошу на Элвисе - туда я точно выложил на Git.
Там еще указаны несколько временных задержек, которые надо увеличить, иначе GD32 не может работать.


В прошлом году сделал проект для GD32 в EmBitz IDE. Всё работает: и отладка через ST-Link, и регистры можно смотреть, и т.д. И в ОЗУ, и во Flash пишется прямо из IDE.

На процессор есть Errata - некоторые задержки надо править после Cube.

Еще штука - там написано, что ножка, настроенная на вход, имеет напряжение 2.6 Вольта. Вот мы с схемотехником спорили. Он доказывал, что я ее на выход настроил. Пока не показал ему под нос место в документе...

В САПР "Кулон" на базе "Электроники 100-25" были два запоминающих дисплея для графики на ЭЛТ. У них разрешение было 1024х1024 (насколько помню). Определялось, скорее всего, количеством разрядов ЦАП, так как сигналы были аналоговыми. Графопостроители, например в составе "Искры-226" тоже были аналоговые.

Когда-то сделал приложение для часов, показывающее параметры автомобиля через Bluetooth и OBD2. Особого ажиотажа не было, хотя японцы интересовались и автомеханик из США. Ему удобно было работать под капотом и тут же на руке видеть данные. Было и отдельное приложение, и циферблат ...

https://youtu.be/I7HYW9iIwuU?si=JwE5lZ9NfspvsSHk

Есть книга "О физической природе шаровой молнии". В ней описан случай - где-то "шарики" зарождались сами по себе в насосной станции, вызвали дежурных электриков, те переделали заземление, и генерация шаровых молний прекратилась. Потом приехали ученые, пытались отсоединить заземление, но уже ничего не происходило.
Есть еще книжка-брошюра "Генерация шаровой молнии в домашних условиях". Описывается несложная установка, но я ее не повторял...

Не хочу тратить ничьё время, вкратце:
- по логике - если в вакууме есть хоть какой из видов материи, то это уже не пустота и не вакуум;
- поле - это и есть поле, понятие придумали специально для того, чтобы их различать, а не путать (или подумайте - какой, по-вашему это вид материи? Протоны, электроны, мезоны или кварки?
- нас учили - электрический ток создает магнитное поле, оно, в свою очередь, индуцирует опять же электрическое и т.д. Подобно контуру из катушки и конденсатора. Вот это и "помогает" волне распространяться в вакууме.
- есть хорошие книги по теории поля;
- есть книги по ТОЭ (теоретическим основам электротехники), как раз про теорию поля применительно к электромагнитным процессам;
- всё это сложно, наш преподаватель - доктор технических наук поговаривал, что на "5" этот предмет знает только Бог, сам преподаватель - на "4", а студенты не могут более чем на "3". И он - прав;
Писать статью про измерение потенциала зеркальным гальванометром, про то, что длина волны связана с частотой колебаний (она не связана, а определяется, нужно это различать), про то, что магнетизм определяется диполем а не доменом и прочее - не совсем корректно. Молодежь может прочитать и подумать, что это правда...
(Вот зарекался не связываться с Хабром, и опять...)

Информация

В рейтинге
3 484-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

3d моделлер, Neurochip application
От 10 000 €
Assembler
C
Программирование микроконтроллеров
Встраиваемая система
ARM architecture
RISC-V
Операционная система реального времени
Разработка электроники
Разработка печатных плат