|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:53 am
The Internet of Stupid Things
| Автор |
Съобщение |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: The Internet of Stupid Things
Grubi аз не разбрах: ще правиш "бойлер" или ще си купуваш
_________________ main[-1u]={1};
|
| Чет Фев 29, 2024 6:48 pm |
|
 |
|
Grubi
Ранг: Форумен бог
Регистриран на: Чет Мар 16, 2006 9:42 am Мнения: 12095 Местоположение: Гьотеборг
|
 Re: The Internet of Stupid Things
Ще купувам, само остана и в бизнеса с бойлери да влизам. Щото тоя с осцилоскопите вече го оправих  Но се оказа, че този който е изкарал 20 години, баща му го е преправял с някакъв колга...та леко настръхнах, но явно са свършили работата добре, щом не е имало злополуки, проблеми и течове.
|
| Чет Фев 29, 2024 8:16 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: The Internet of Stupid Things
palavrov, плямпам с некъв от екипа на Zephyr имало LLEXT зареждане от ELF... да питам: тва LLEXT може ли да изпълнява Position-Independent Code, по-точно има ли syscall-ове към кернела релокация на кернел функции към user app
PS: заеби ... тва е само лоадера ... за PIC, някой трябва да си играе да го допише
_________________ main[-1u]={1};
|
| Пет Мар 01, 2024 11:24 am |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: The Internet of Stupid Things
Абе и аз го мернах като новина. Подозирам, че е някаква шитня от рода на .ехе файловете навремето за дос и "сегментите" на 16 битовият х86 в реален режим т.е. доналинкване по време на зареждане => специален файлов формат или тежък елф код в ОС-а. Съмнявам се да е нещо елегантно.
Та като говорим за елегантни неща - тези дни направих compile time events - в една линкерска секция вкарвам всички event handlers и като трябва да се вика някой event се обикалят всички handlers закачени в тази секция и се викат тези които трябва. Да, има runt time overhead обаче спестява адски много код за закачане и разкачане на event handlers в списъци и т.н. И това развърза толкова много неща, че разкарах сумати излишен код (и като сорс и като binary).
_________________ Мразя да мразя ...
|
| Пет Мар 01, 2024 12:52 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: The Internet of Stupid Things
тва TI го правеха "нон стоп"  обаче толкова сложно е реализирано като build, че едвам се разбира какво точно са направили а накрая се окзава линкерска секция/таблица .... е само ELF лоадер, но за PIC реализацията липсва
_________________ main[-1u]={1};
|
| Пет Мар 01, 2024 1:06 pm |
|
 |
|
Н'бабане Гт'муан'га
Ранг: Форумен бог
Регистриран на: Сря Яну 25, 2012 9:14 am Мнения: 5298
|
 Re: The Internet of Stupid Things
Аз имам един въпрос относно това покет бигълче... Подкарах го накрая, обаче нямам идея какво да инсталирам под уиндоус за да напиша нещо за него. Има ли някакво свясно ИДЕ? (по юзърски, не 'професионално')  Нещо дето да си напиша кода и то да компилира и да го метне на борда. Или ако не така, какъв изобщо е процеса за писане за тия неща?
_________________ 'просто' е технически синоним на 'красиво'
|
| Пет Мар 01, 2024 2:32 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: The Internet of Stupid Things
трябва ти крос linux-gcc и нещо от сорта gcc hello.c -o hello тръгни първо от "лесното" после дири IDE https://ioflood.com/blog/gcc-linux-command/PS http://jkuhlm.bplaced.net/hellobone/hard float Linaro https://releases.linaro.org/components/ ... gnueabihf/как се мятка ELF-a в бигъла - нямам си на идея
_________________ main[-1u]={1};
|
| Пет Мар 01, 2024 2:36 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: The Internet of Stupid Things
Бабане, предполагам, че има някакъв плъгин за VSCode с който да стане без усилия. Nordic са направили доста прилична поддръжка за техните чипове, би трябвало да има и нещо подобно но за какъв да е микроконтролер.
Ако не става под боза, можеш да пробваш с WSL и там да си накичиш линукските компилатори - това почти е вградено в vscode. Е, не е много юзер френдли ама то пълно щастие няма ...
_________________ Мразя да мразя ...
|
| Пет Мар 01, 2024 3:45 pm |
|
 |
|
Н'бабане Гт'муан'га
Ранг: Форумен бог
Регистриран на: Сря Яну 25, 2012 9:14 am Мнения: 5298
|
 Re: The Internet of Stupid Things
Ами успях да компилирам някакво 'hello' и да го заметна натам... Даже и работи, така че вече съм 'експерт' 
_________________ 'просто' е технически синоним на 'красиво'
|
| Пет Мар 01, 2024 3:51 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: The Internet of Stupid Things
Мразим излишното усложняване. Моята реализация е супер изчистена - 50-100 реда код общо. Това е хедър файла:  |  |  |  | Код: typedef struct event_t { const char* const name; void* value; } event_t;
typedef void (*handler_t)(const void* const old_value, const void* const new_value); typedef struct event_handler_t { const event_t* const event; const handler_t handler; } event_handler_t;
void event_notify(const event_t* const event, const void* const old_value, const void* const new_value);
/* Events generator */
#define __DECLARE_EVENT(_name, _type, _default_value, _event, _value_t, _value, _set, _get) \ \ typedef _type _value_t; \ \ _value_t _value __attribute__((weak)) = _default_value; \ \ event_t _event __attribute__((weak, section(".events"))) = { \ .name = #_name, \ .value = &_value, \ }; \ \ __attribute__((weak)) void _set(_type value) \ { \ event_notify(&_event, &_value, &value); \ _value = value; \ } \ \ __attribute__((weak)) _type _get(void) \ { \ return _value; \ }
#define DECLARE_EVENT(_name, _type, _default_value) \ __DECLARE_EVENT( \ _name, \ _type, \ _default_value, \ CONCAT_N(__, _name, _event), \ CONCAT_N(__, _name, _value_t), \ CONCAT_N(__, _name, _value), \ CONCAT_N(_name, _set), \ CONCAT_N(_name, _get))
#define __EVENT_SUBSCRIBE(_event, _handler, _wrapper, _list, _value_t) \ __attribute__((weak)) void _wrapper(const void* const old_value, const void* const new_value) \ { \ _handler((const _value_t* const)old_value, (const _value_t* const)new_value); \ } \ \ event_handler_t _list __attribute__((weak, section(".event_handlers"))) = { \ .event = &_event, \ .handler = _wrapper \ }
#define EVENT_SUBSCRIBE(_name, _handler) \ __EVENT_SUBSCRIBE( \ CONCAT_N(__, _name, _event), \ _handler, \ CONCAT_N(__, _name, _wrapper_, __LINE__), \ CONCAT_N(__, _name, _list_, __LINE__), \ CONCAT_N(__, _name, _value_t))
|  |  |  |  |
Има само една функция в Ц файла: Линкерския файл за Зефир, не е проблем да се подкара за какъв да е базиран на ГЦЦ/ЦЛАНГ билд Дефиниране на евънт за управление на аналогов изход: Закачане на евънт хендлър: Извикване на евънта от някъде: Това горното е орязан и изтестване работещ код. Тънкото освен линкерските секции е да се ползват weak attributes за да не мрънка линкера, че се предефинират едни и същи неща.
_________________ Мразя да мразя ...
|
| Пет Мар 01, 2024 4:01 pm |
|
 |
|
Н'бабане Гт'муан'га
Ранг: Форумен бог
Регистриран на: Сря Яну 25, 2012 9:14 am Мнения: 5298
|
 Re: The Internet of Stupid Things
Тоя еклипс не знам за кой път го пробвам и все се убеждавам че е правен за 'девелопъри' (т.е. ония дето живеят пред мониторите)  Чисто нов проект, и вече не може да го компилира. Не бил конфигуриран. Баси тъпотията... Май ще трябва да стоя на CLI
_________________ 'просто' е технически синоним на 'красиво'
|
| Пет Мар 01, 2024 4:08 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: The Internet of Stupid Things
експерта, обясни кво направи  palavrov правих подобно за Position Independent Code https://github.com/Wiz-IO/OpenAPI
_________________ main[-1u]={1};
|
| Пет Мар 01, 2024 4:11 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: The Internet of Stupid Things
Жоре, аз много си се кефя на този код. Това ми е решението на 15 годишен омазан спагети код където хоризонтално всички модули си викаха калл баци помежду си и в един момент никой вече не го знае как и защо работи. И като трябва да се добави нова функционалност се пипа във всички файлове с което омазването във времето става още по голямо.
А така с тази простичка реализация там където се ти трябва да викнеш някакъв евънт не добавяш никакъв код пълен с ифдеф а имаш само един ред. Недостатъка е, че се извърта един цикъл в LUT за да се намери съответните хендлъри ама за не хард РТОС проекти това е приемливо. Пък и на практика не само, че не генерира излишен код ами даже го намалява т.е. теоретично трябва да успея да го подкарам и на старата им платформа с някакви атмеги.
_________________ Мразя да мразя ...
|
| Пет Мар 01, 2024 4:44 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
 Re: The Internet of Stupid Things
Бабане, предполагам си с Windows инстал тва (ADB) https://dl.google.com/android/repositor ... indows.zipвържи платчeто и пиши в терминала adb devicesако се покаже платчето, качаването става така:
_________________ main[-1u]={1};
|
| Съб Мар 02, 2024 1:38 pm |
|
 |
|
Н'бабане Гт'муан'га
Ранг: Форумен бог
Регистриран на: Сря Яну 25, 2012 9:14 am Мнения: 5298
|
 Re: The Internet of Stupid Things
Естествено, че съм с уиндоус. Аз си ценя времето на тоя свят и дори намека че може да съм с линукс е малко обиден Между другото, тия тулове не стават. Но аз вече намерих начина - качвам файла през ssh и така...
_________________ 'просто' е технически синоним на 'красиво'
|
| Съб Мар 02, 2024 1:47 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: Vasseto и 11 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|