Анатолий @longtolik
Пользователь
Information
- Rating
- 8,616-th
- Location
- Россия
- Registered
- Activity
Specialization
3d Modeler, Neurochip application
From 10,000 €
Assembler
C
Programming microcontrollers
Embedded system
Arm Architecture
RISC-V
Real-time operating system
Electronics Development
Development of printed circuit board
Аналогичный случай был на соседней ферме :)...
То есть, в одном южном городе знакомые организовали производство черепицы по такой технологии. Всё шло хорошо, но через пару лет эта черепица стала разрушаться под жарким солнцем. Пришлось отдавать всем покупателям деньги. За саму черепицу и за кровельные работы...
Ждём компьютер в умных часах :)
Вопрос вырос из того, что сертифицирвать U-boot не представляется возможным, поэтому делают свои загрузчики.
С сертификацией BIOS могут быть сложности. А с него начинается работа компьютера, и объёмы кода там большие. (Некоторые могут и в сеть выходить).
Хотел спросить, какой загрузчик используется, U-boot или собственный, но похоже, система с BIOS начинается. В требованиях к оборудованию написано 2 Гигабайта ОЗУ и 20 Гигабайт дисковой памяти, при этом процессор "желательно поновее", а вот какой он архитектуры, но сразу не понятно.
Подключал блок питания от ноутбука на 16 Вольт к аккумулятору через лампочку (насколько помню, от поворотника). Сначала она горела ярко (почти), по мере заряда напряжение аккумулятора росло, разность напряжения уменьшалась, и лампочка почти не светилась.. Она же и ток ограничивала, когда спираль горячая, сопротивление ее большое, когда холодная - маленькое.
Вот почему-то казалось слегка по-другому, например, как написано про Andriod NDK:
https://en.wikipedia.org/wiki/Android_NDK
И так далее...
На такой камере когда -то делал сканер Datamatrix.
https://youtu.be/MEAieQftYEo?si=2WOF2VgwtiiSWDMh
Изображение очень качественное, даже при 8 битах.
Спасибо за тест. Но в моем случае при размере 45000 выдает FAIL, при этом программа сообщает: Errors: 0
Точно, хотел про это написать, решил проверить, Вы опередили. В этих блоках питания применялись также быстродействующие предохранители, утверждалось, что серебряные..
Однако, ностальгический комментарий разрастается...
Некоторые варианты.
Программируемый калькулятор (в нем много машинных кодов, запуск программ с выводом на экранчик).
Или купить БК-0010М, или поискать эмулярор PDP-11 на PC.
КПК Palm IIIe со складной клавиатурой. На нем (прямо на нем) можно создавать, редактировать и выполнять программы на Assembler и C. Замечательная архитектура Motorola DragonBall (или MC68328).
Мне она нравится больше чем DEC PDP-11, к тому же, 32 бита, работа от двух мизинчиковых батарей.
Телефон на Android с Termux. Это - Linux в кармане, можно подключать мышь и клавиатуру по Bluetooth,
а также мониторы или телевизоры по кабелю USB Type C - HDMI. Можно создавать программы на любом языке, можно установить Far Manager, редакторы двоичных файлов, редактировать BIN файлы и запускать их.
Raspberry Pi Zero 2W (или другие). Можно работать как на Linux, так и на голом железе.
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 // альтеративно - такая команда
...
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
Таким образом, можно создать базу данных (на самом деле - кодов). Из этих "кирпичиков" построить программу, передать на нее управление, и она будет работать.
Можно применить генетические алгоритмы, то есть, "выживать" будут лучшие экземпляры.
Также не исключено добавление случайных кодов, в случае ошибки возникнет прерывание по неправильному коду операции, этот код может быть подправлен и т. д.
Тут нужно смотреть, чтобы изменения кода происходили, не мешая кешу команд и данных.
Самомодифицирующиеся программы существуют уже давно.
Про 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.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.
И еще: "Нейроинтеллект: от нейрона к нейрокомпьютеру" авторы Соколов, Е.Н.; Вайткявичус, Г.Г. - отлично описано то, что сейчас происходит в нейросетях... Вообще, в те годы было много книг про искусственный интеллект.