Отговори на тема  [ 209 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6, 7, 8 ... 14  Следваща
PLC 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
Цитат:
RISC ... CISC
в случая няма голямо значение
аз обработвам ARM инструкциите със C ... а проблема е че ARM е яко мазало ... от миналото
надграждали, напасвали ... нещо станало, същото и с документацията
ARMv7M го избрах заради:

- GCC - мултипплатформен tool, намира се по път и на път... и няма да пиша компилатор за специфичен байткод
Като го обвържа с VSCode/PlatformIO става: Инстал, Нов Проект, Компиле, Ъплоад. Пишеш на C / C++(второто ако - абстракции)

- Cortex M4 е минималния ARM способен на -fpic

- Писане на Апликация - стандартно C/C++ (не му пречи да изпълнява Arduino код, заради Екосистемата) ... джави, питони, скриптове - има

Миро, ти говориш за приложения изпълнявани от хардуерното ядро
а на мен целта е да емулирам софтуерно ядро (и няколко може зависи от ресурса)
- един вид хардуерното ядро да е защитено от апликацията и да я контрлолира на максимум
емулирам без да интерпретирам "текст" <--- бави повече и иска повече ресурси

Реално, Апликацията е C/C++ (с почти цялата им сила) --> ELF --> BIN или "байткод"
Ся дали ще е байткод или машинен код е все тая, емулатора изпълнява квото декодира
Намери ли грешка - ай чупка и свети "червената ламба", но хардуера работи, не е забил ...
ако има мрежа вероятно може да се ъпдейтне лесно по въздуха

BIN-а / Апликацията е малка по размер, мога и да API-рам много stdlib функции, така или иначе ги има в кернела

Наистина в момента не мога да говоря за ползи докато не изтествам всички инструкции
Загубите са - скорост... но Java & Python вероятно ще са по-бавни от емулацията

_________________
main[-1u]={1};


Последна промяна TheWizard на Сря Юни 18, 2025 6:46 pm, променена общо 1 път



Сря Юни 18, 2025 6:21 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
Цитат:
цитираните от теб функции са просто кофти, много кофти идея...

Androida така работи ... някаква апликация, за която е безразличен процесора на който работи

Основната идея при мен е: Апликация да работи на всевъзможни MCU
в момента работи на PC, след малко време СЪЩАТА тази апликация ще работи на ESP32 & PIC32MZ
Написана на C/C++ .... и компилирана с GCC

_________________
main[-1u]={1};


Сря Юни 18, 2025 6:38 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: PLC
TheWizard написа:
емулирам без да интерпретирам "текст" <--- бави повече и иска повече ресурси

Зависи от интерпретатор и от интерпретираното. Някои "интерпретатори" се държат като компилатори. Всъщност и ти може да направиш абсолютно същото. Демек вместо да декодираш всеки път всяка инструкция, просто да е заместваш с код.
Това се прави еднократно при зареждане и след това имаш практически само нейтив код.
Предимството на текста е:
1) Доста по-лесен за компилация и/или интерпретация. Ти ако искаш да компилираш ще изпаднеш в ужас да преизчисляваш преходи, офсети ала-бала. Ако не компилираш, пък има декодиране пак казвам на всяка инструкция и всяко нейно изпълнение.
2) Компилацията на текста не раздува размера. В общия случай в текста имаш командички, в компилирания имаш call-ве. При теб 2 байтова инструкция на АРМ, ако трябва да я заместиш с код на MIPS или друга архитектура и ако имаш всички проверки ще стане оле-мале. Ти предполагам не ползваш транс-компилация, а декодираш но пак казвам това забавя.
3) Текстът е на много, много по-високо ниво от една машинна инструкция. И даже и да го декодираш run time, след това изпълняваш нейтив код. Дори и прости неща като "if", "for()" и т.н. ги изпълняваш найтив. При теб ще са поредица от няколко инструкции, всяка от която декодираш и т.н. При по-сложни неща, както да кажем питона има обработки на матрици и тем подобни, там ще ти бие отвсякъде. Нямаш никакъв шанс.

Тъй де, казвам си просто мнението. Направи го, тествай... може пък и да не е толкова зле, колкото аз си мисля ;-)


Сря Юни 18, 2025 7:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
Цитат:
ще изпаднеш в ужас да преизчисляваш преходи, офсети ала-бала.

GCC !!! се грижи за това ... и не само :wink:

Миро бря, използвам 90% готова, безплатна и мултиплатформена технология - C/C++, GCC, -fPIC
само въпрос на реализация - ARM емулатор - декодиране и изпълнение на машинен код ( aka байткод )

Интересното е, че никой до сега не се сетил за C2ME :D
( поне аз не знам )
жаби, змии, луа/муа... интерпретация - бавно и ресурс

_________________
main[-1u]={1};


Последна промяна TheWizard на Сря Юни 18, 2025 8:29 pm, променена общо 3 пъти



Сря Юни 18, 2025 7:45 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
кода на ТЕСТ Апликацията ( GCC компилирана до BIN )
която трябва да се изпълнява на различни архитектури MCU
( бинарния файл без никаква промяна )

Код:
#include "api.h"
#include <stdint.h>
#include <unistd.h>
#include <errno.h>
#include <stdio.h>
// #include <reent.h>

void *_sbrk(intptr_t incr)
{
   extern uint8_t _heap_start;
   extern uint8_t _heap_end;
   static uint8_t *heap_ptr = NULL;
   uint8_t *prev_heap;
   if (heap_ptr == NULL)
      heap_ptr = &_heap_start;
   prev_heap = heap_ptr;
   if ((heap_ptr + incr) > &_heap_end)
   {
      errno = ENOMEM; // Няма достатъчно място
      return (void *)-1;
   }
   heap_ptr += incr;
   return (void *)prev_heap;
}

int _write(int file, const char *ptr, int len)
{
   if (file != STDOUT_FILENO && file != STDERR_FILENO)
   {
      errno = EBADF;
      return -1;
   }
   for (int i = 0; i < len; i++)
      api_putchar(ptr[i]);
   return len;
}

int startup(void)
{
   extern void __sinit(struct _reent *);
   __sinit(_GLOBAL_REENT);
   //__sinit(_impure_ptr);
   return 1;
}

int aaa = 0x1234000;
int bbb = 0x0005678;
int sec, mil, mic;

int test(int x)
{
   for (int i = 0; i < 10; i++)
      x += bbb;
   return x;
}

int main(void)
{
#if 1
   printf("[APP] Hello World\n");
   aaa = test(aaa);
   delay(500);
   digitalWrite(0, 0);
   delayMicroseconds(500000);
   digitalWrite(0, 1);
   sec = seconds();
   mil = millis();
   mic = micros();
   return 0;
#else
   // return strlen("Hello World 42");
#endif
}


заради софт флоат printf() бина е 15к и RAM стек 1к

_________________
main[-1u]={1};


Сря Юни 18, 2025 8:14 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: PLC
Ако това приложение можеш да го емулираш на N на брой платформи, то броят на платформите за които може да се компилира е N+M.
Демек няма платформа на която ще може да го емулираш, а няма да можеш да го компилираш. Обратното очевадно не е вярно.
Това, че емулацията ще забави поне 10 пъти изпълнението е без всякакво съмнение.
Аргументите, че ще постигнеш по-висока надеждност и сигурност са далеч от реалността. Сигурност не се постига така.

С две думи вкарваш една стъпка в процеса, която има сигурни недостатъци и нито едно предимство. Това е моето мнение, с което не искам да те разубеждавам. Може да пропускам нещо. И дори да не пропускам, всички ние често правим глупости по една или друга причина. Ето примерно последната глупост, която аз съчиних беше да модифицирам Лемпел-Зив алгоритъма да не ползва RAM. Голяма простотия. Идеята на алгоритъма е да работи с памет, а аз просто го скопих... Единственото ми оправдание е, че поне в тоя случай ме принудиха. Но има простотии, които съм правел и без някой да ме кара ;-)


Чет Юни 19, 2025 11:50 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
Миро - по твоята логика Андроид / Java / Python / WebAssembly и подобни не трябва да съществуват
Първите две директно емулират байткод, Питона и той може
при мен машинния код се явява същия байткод като при горните само, че e писан и компилиран от C/С++
... които горните също са над 10 пъти по-бавни от хардуерното ядро, което ги контролира на "макс"

за платформите - достатъчно е да може апликацията да се компилира на Win/Lin/Mac ( GCC за М4 го може)
а емулатора, да се изпълнява на Win/Lin/Mac (за симулация) и STM32 / ESP32 / PIC32 / RISC-V - това е достатъчно

Ся, аз не гоня приложение управляващо ядрен реактор или варела на Мъск ...
и на 10 мипса да цъка ( при хардуер MCU на 200MHz ) има приложения и то много...

_________________
main[-1u]={1};


Чет Юни 19, 2025 6:25 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 06, 2007 8:44 pm
Мнения: 3175
Местоположение: Пловдив
Мнение Re: PLC
Не съм много вещ в материята, но от моята "камбанария" (която не е много висока) целта на новите езици и технологии за програмиране е да може всеки хванат от гората (а на последък и AI) да може да пише приложения, които да могат да вървят на всичко и под всякакви ОС-ове. Цената за всичко това е огромни по размер приложения, които вървят бавно или за да вървят бързо искат майка си и баща си като хардуер ... (За консумираната енергия от устройства с такъв софтуер въобще не отварям приказка)
За направата на такива развойни тулове и програмни езици и технологии поддържащи много видове хардуер и различни ОС-ове се изисква огромни усилия за разработване, тестване и поддръжка, при това от високо квалифициран персонал. Колкото по-сложно е едно нещо, толкова е по-ненадеждно, с повече проблеми и трудно за поддържане.

Каква всъщност е "ползата от файдата" от подобна "голяма" автоматизажия правена за да се използва от нискоквалифициран персонал и въобще ще има ли някакъв "келепир"?

Много такива големи проекти са започнати и зарязани като развитие и поддръжка, защото работата по тях в един момент става много и няма кой да я върши...


Чет Юни 19, 2025 7:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
аз правя ТЕСТ ... някъде му казват R&D

Аз не съм като Миро и разни други тук - които като се почувстват "застрашени"
замръзнали в някакви теории и архаични разбирания
започват да разстягат локуми и "теореми": N+M ... демек - няма да стане !?!?

Аз не искам да става - Аз искам да се убедя, че не става...

Интересното е че никой не споменава - направи така - ще стане по-добре

- НЯМА ДА СТАНЕ !!! ... и седнал и пише - не мога да те разбера...
Какво разбирате изобщо ? Колите, Световната Икономика ... Курвите ?

Не се обиждай ... за какво да ти се обиждам бе Миро ... за "теоремите" и "локумите"

_________________
main[-1u]={1};


Чет Юни 19, 2025 8:25 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: PLC
TheWizard написа:
Какво разбирате изобщо ? Колите, Световната Икономика ... Курвите ?

Очевидно аз разбирам от "разтягане на локуми". Разбирам, защото това съм учил и с това си изкарвам хляба последните 30-40 години. През това време съм срещал много като теб, които без теория се опитват да постигнат нещо, но никой не е успял. Всъщност има изключения, но не съм имал късмет да ги познавам лично. Например наскоро "аматьор" направи пробив при оптимизация на дърво с решения. Много интересна идея, буквално накъса шортите на много академици. Пожелавам ти да си следващия такъв самороден гений.


Чет Юни 19, 2025 9:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
амии обясни ми като си учил какво точно не става от моята аматьорска идея
Ето, връщам те във времето когато си учил теорията
Това как работи

Java "текст" -> компилатор -> JAR(байткод) -> MCU -> VM(емулатор)
или
С/С++ "текст" -> GCC(ARMv7) -> ELF/BIN -> MCU -> Емулатор

или кое точно не разбра? PIC ( got / plt )?

може да обясниш на аматьорите как така Windows PC изпълни код от ARMv7-M ( Cortex M4 )

или как PIC32(в случая) изпълнява машинен код от 6502

Обясни ни как става тази магия

_________________
main[-1u]={1};


Пет Юни 20, 2025 4:05 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: PLC
Смисълът да се изучават локумите е да знаеш какви локуми има, какви вкусове има и кой локум за кой вкус става.
Не случайно всяка научна статия започва с въведение, в което се посочва един или повече проблеми, какви решения съществуват до момента и какво ново решение се предлага. От там насетне се гледа само дали предложеното решение наистина решава посочените проблеми и дали е по-добро от алтернативните.
В случая джабата решава един кръг проблеми. Докато 8051 емулаторите решават коренно различни проблеми.
Между двете няма нищо общо. Фактатът че ги поставяш в една кошница означава, че не си наясно какво целиш и как ще го постигнеш.
Или поне не си го обяснил достатъчно добре тук...


Пет Юни 20, 2025 9:05 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: PLC
Аз така и не разбрах какво не харесваш в една идея
( навярно не можеш да обясниш )

А тя идеята я предъвквам от години, просто сега дойде Музата за реализация и тестове
и щото се наложи да мисля едно PLC и възникна въпроса:
Как инджинера ще си напише Ладер логиката (нали знаеш какво е това, да не обяснявам)
и в търсене на универсален скрипт/компилатор/байткод реших да пробвам - емулация на машинен код
Ся дали ще е емулация на байткод или машинен код - то едно и също !!!
и решава същите "проблеми", които решават всички останали

1. Защо машинен код - защото GCC е безплатен, мултиплатформен и решава задачата (апликацията на инджинера) на 100%
За него има MAKE, CMAKE, SCONS ... мултиплатформени и безплатни IDE-та ... навярно и шарени графични ладери
или казано - работещи и достъпни TOOLS

2. Инжинера пише на C/C++ ( и RUST може ) ( не ти харесва С ? )
не на скриптов език - тях ги има вече !!! Жаби, Змии, Лули/Мули
Няма C виртуална машина за "малки" MCU

3. но ако емулирам ARMv7-M ( Cortex M4 ) каквото напишеш за него може да се емулира !!!
Не само Ладер логика ... софтуерно Ардуино !?! ( около 30 API calls ) - като пример за С++

4. Джигитайците много пъти ми казваха
- Не искаме нативно клиентско изпълнение на нашия хардуер. Не искаме клиента да ни бърника по хардуера
- Добре, но аз НЕ искам да пиша на Java, Python, Lua - искам С/С++
Има ли C2ME ? Open Source?

5. и тн... Разбра ли нещо?

До тука какво не ти харесва ИДЕЯТА ... от твоята "научна" гледна точка
Правил си го вече? Знаеш проблемите?
Кой от твоите локуми помогнаха в случая ?

_________________
main[-1u]={1};


Пет Юни 20, 2025 6:28 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Съб Мар 18, 2006 12:44 pm
Мнения: 172
Мнение Re: PLC
По принцип нещата при Embedded вървят с няколко години, а понякога и повече след останалите родове програмиране по отношение на средствата и методите за разработка. При десктоп имаме Virtual Machines, QEMU, Containers (Docker, Podman, etc.) -- няма лошо да се пробва нещо подобно и за микроконтролер. Дали ще работи добре и дали ще има полза е друг въпрос. Факт е, че мегахерците и броя на ядрата дори в микроконтролерите, за добро или за лошо, постоянно расте.


Пет Юни 20, 2025 6:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: PLC
TheWizard написа:
и в търсене на универсален скрипт/компилатор/байткод реших да пробвам - емулация на машинен код
Ся дали ще е емулация на байткод или машинен код - то едно и също !!!
и решава същите "проблеми", които решават всички останали

Джабата като език е мислена да бъде виртуализирана. Ц/Ц++ като език е мислен да бъде компилиран.
Байткода е мислен за виртуална машина. Машинният код е правен за директно изпълнение на конкретна архитектура.
Изобщо не са едни и същи, напротив много различни са както на входа (ниво сорс код) така и на изхода (изходен код).
И не, не решават едни и същи проблеми. Ако решаваха, по-доброто решение щеше да остане, а другото да е изчезнало досега.

Относно PLC- та не разбирам с какво точно помагат емулациите или виртуализациите. Ако беше направил библиотека за ладер за Ардино или PlatformIO или за малинки или калинки или за боза или за лайнукс или джаба или Ц++, нямаше да видим тоя разговор. Защото щеше да има поне някаква връзка с PLC.
Това което правиш, обаче има толкова връзка с PLC, колкото и с CNC или произволно друго приложение. Демек няма никаква връзка, с нищо не помага за решаването на който да е проблем. Ти просто добавяш още един проблем във веригата.
То даже и като АРМ емулатор не става, защото не може да емулираш произволен АРМ код, трябва да е компилиран с PIC и т.н.


Пет Юни 20, 2025 10:41 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 209 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5, 6, 7, 8 ... 14  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни