• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Мой сборщик и флешер

pvvx

Активный участник сообщества
pvvx, хороший технарь, но его жаба загрызает,
если не он это сделал,
поэтому он сначала нагадит на чужое,
а потом начнет хвалить свое.
Ну такой он человек, бывает!!.
Я не хвалю своё - не путайте с собой и своими повадками. :)

@Neov - К примеру, чтобы собрать проект для RTL8711AM модуля, в вашей версии требуется переписать очень много – более половины файлов конфигов и ещё кучу скриптов для загрузки в SDRAM Jlink-у для отладки хоть на начальном этапе. Т.е. надо делать двойные действия – кроме отработки тестовых скриптов Jlink-у, ещё писать программу их переложения на Питоне. Написанного полноценного программатора или даже заготовки то у вас на Питоне нема… Был-бы – было бы легче, выковыряв его и прилепив к маке :)
Это вы предлагаете "телепузикам" проделать самим? :)
 

Neov

Member
pvvx, хороший технарь, но его жаба загрызает,
если не он это сделал,
поэтому он сначала нагадит на чужое,
а потом начнет хвалить свое.
Ну такой он человек, бывает!!.
Ни в коем случае не принижаю способностей @pvvx, а даже наоборот считаю его гениальным в своей области, но похоже гениальность просто так не приходит :)
 

nikolz

Well-known member
Я не хвалю своё - не путайте с собой и своими повадками. :)

@Neov - К примеру, чтобы собрать проект для RTL8711AM модуля, в вашей версии требуется переписать очень много – более половины файлов конфигов и ещё кучу скриптов для загрузки в SDRAM Jlink-у для отладки хоть на начальном этапе. Т.е. надо делать двойные действия – кроме отработки тестовых скриптов Jlink-у, ещё писать программу их переложения на Питоне. Написанного полноценного программатора или даже заготовки то у вас на Питоне нема… Был-бы – было бы легче, выковыряв его и прилепив к маке :)
Неужели только гадите на чужое?
ну тогда пусть будет по -вашему.- " Гадите на то, что не Вы сделали" Так верно?
 

pvvx

Активный участник сообщества
Неужели только гадите на чужое?
ну тогда пусть будет по -вашему.- " Гадите на то, что не Вы сделали" Так верно?
Опять не так. "Нахожу и привожу альтернативные варианты для выбора пользователями" и "хаю свои решения с запросом альтернативы". Вам это безусловно не нравиться и это не ваш путь - проверено уже за год диалога с вами. Ведь ваше решение - есть самое-самое и не подлежит обсуждению или альтернативному решению - одна реклама того чего нет или ради запутывания пользователей (наверно чтобы поиздеваться) :) Так шо успокойтесь.
------
@Neov - Произведите оценку, как на разных типах программаторов (список типов можно посмотреть в OpenOCD, включая DAPLink) сделать загрузку SDRAM в модули cбуквой “М” для быстрой отладки без записи Flash(она нужна и пользователям в Arduino). Вариантов не так уж и много –

1) Производить калибровку SDRAM через Jtag/SWD на всех их типах и заливать RAM и SDRAM код, поставив флаг “не инить SDRAM– она уже загружена” в регистре 0x40000210.

2) Сделать специальную точку перехвата управления в boot-loader-е, когда он произведет инициализацию оборудования SDRAM для возможности загрузки туда и в SRAM кода и далее запуска продолжения исполнения уже с загруженными областями RAM.

Первый вариант должен учитывать какую частоту CPU будет использовать приложение и настраиваться для каждого проекта, с корректировкой таблиц инициализации в 9-ом секторе и финг знает ещё чаго. Второй вариант – штатное исполнение, как это будет при загрузке с Flash, и работает по установкам в коде приложения пользователя, т.е. описывается на CИ в самом приложении, и не передается внешнему Jtag/SWD загрузчику – его дело только залить код и данные по адресам памяти, а не ковыряться в регистрах оборудования чипа. Оба варианта имеют свои причуды. Других вариантов пока не поступало :)

Так что решайте, как это предоставить “телепузикам” типа Nikolz для всех вариантов Jtag/SWD, коих уже много работает и адаптировано для RTL модулей (стандартный ARM-Cortex..) :)

Переписывать make на waf может любой “телепузик”, включая возможность автоматической трансляции waf<->make<->cmake<->"конфиги сборки для разных сред". Это дело автомата, а не споров – на чем лучше написать скрипт сборки, без возможности залить в чип полученной прошивки :) Ameba Arduino и RtlDuino без проблем сжираются Visual Studio, но вот залить итого в чип не может. Ваш конфиг сборки пока не понимает ни одна альтернативная среда. :( Это о кроссплатформенности и совместимости...
 
Последнее редактирование:

Neov

Member
Произведите оценку, как на разных типах программаторов
Так вы уже оценили, более чем вы, я пока в ближайшее время более оценить не смогу :)

Переписывать make на waf может любой “телепузик”, включая возможность автоматической трансляции waf<->make<->cmake<->"конфиги сборки для разных сред". Это дело автомата, а не споров – на чем лучше написать скрипт сборки, без возможности залить в чип полученной прошивки :) Ameba Arduino и RtlDuino без проблем сжираются Visual Studio, но вот залить итого в чип не может. Ваш конфиг сборки пока не понимает ни одна альтернативная среда. :( Это о кроссплатформенности и совместимости...
Повторяю, уже сбился со счета какой раз. Заливка во флеш имеется, отлажено для RTL8710AF, ясно и четко в шапке написано. Даже, как вы их называете, "телепузик" смог прошить. В планах заливка в RAM, отладка AM чипов, если вы откроете секрет как заливать в SDRAM, то и это сделаем :) В планах отладка сборки в macOS. Проект успешно кушает Eclipse, как и любая другая IDE.



Так что решайте, как это предоставить “телепузикам” типа Nikolz
"доминируй, унижай, властвуй" :D
 

pvvx

Активный участник сообщества
"доминируй, унижай, властвуй" :D
Ну мне то пофигу - я за минуту поменяю и так и сяк для конкретного проекта. Без выбора варианта от "телепузиков" тут никак. А они молчат, что предполагает встроить все варианты - чтобы они-же потом запутались и не смогли разобраться вообще :)
Первым же начнет орать тот кто, хоть немного разбирается, но не поймет зачем и по чему так. Вот вы уже начали :) По этому вам и дается выбор.
 

Neov

Member
Не поленился поставить MinGW ради бенчмарка:
make / single process
make / multi process
waf / single process
waf / multi process

Код:
$time PATH=$PATH:/c/projects/wafmeba-RTL00MP3/tools/5.4\ 2016q3/bin/ mingw32-make
  ...
real  1m21.065s
user  0m0.015s
sys  0m0.015s


$time PATH=$PATH:/c/projects/wafmeba-RTL00MP3/tools/5.4\ 2016q3/bin/ mingw32-make -j
  ...
real  0m38.266s
user  0m0.015s
sys  0m0.000s

python waf build -j1
...
Waf: Leaving directory `c:\projects\wafmeba-RTL00MP3\build'
'build' finished successfully (55.487s)

python waf build
...
Waf: Leaving directory `c:\projects\wafmeba-RTL00MP3\build'
'build' finished successfully (26.572s)
;)

при этом при параллельной сборке в make stdout явно колбасило
 

pvvx

Активный участник сообщества
Clean
all : 15:21:48 Build Finished (took 15s.886ms)
При этом участвует винч, которому уже вроде 10 лет: WDC WD6402AAEX-00Y9A0
Вам же сказано, для -j - реальные ядра, а эмуляция...
Большее время уходит на сборку бинарника - выдергивания из elf и компановки.
Надо попробовать ещё антивирус отключить - это ещё в 2 раза быстрее...
Интересно что будет на Ryzen c 16 реальными ядрами - его уже купить скоро можно, но я пока не готов к переносу системы (ей уже 6 лет без переустановок) - это месяц маяться...
По этому, чтобы реально сравнивать и получить итого, что быстрее, вам надо чтобы ваш скрипт давал показания не менее чем в 3..10 раз быстрее. Иначе большая зависимость от системы и какие комплектующие используются в ней.
Время при компиляции с -j нестабильно - очень много зависимостей от кешей системы и погоды. То, что привел - это первый проход при запуске Eclipse и тыканию clean, а затем all пимпочек :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Код:
$time PATH=$PATH:/c/projects/wafmeba-RTL00MP3/tools/5.4\ 2016q3/bin/ mingw32-make
  ...
real  1m21.065s
user  0m0.015s
sys  0m0.015s


$time PATH=$PATH:/c/projects/wafmeba-RTL00MP3/tools/5.4\ 2016q3/bin/ mingw32-make -j
  ...
real  0m38.266s
user  0m0.015s
sys  0m0.000s

python waf build -j1
...
Waf: Leaving directory `c:\projects\wafmeba-RTL00MP3\build'
'build' finished successfully (55.487s)

python waf build
...
Waf: Leaving directory `c:\projects\wafmeba-RTL00MP3\build'
'build' finished successfully (26.572s)
О - вот оно и использовалось - явная мухлевка - сначала запуск на загрузку дисковых кешей системы на сравниваемой, а потом уже своей "продвинутого и не совместимого ни с чем" скрипта. :) :)
Теоретически объяснить сможете, чем ваш скрипт быстрее? 99% работы CPU в нем – нагрузка на перелопачивание СИ кода GCC, остальное – дисковая система компа по открытию файлов. Как не оптимизируйте скрипт, получите +-1 % разницы на производительности CPU. Если у него больше реальных ядер – во столько РАЗ и быстрее. Т.е. смысла в оптимизации нет – проще сменить CPU или дисковую систему.

По старинке ещё сделайте – запустите RAM диск в своем скрипте :) Вдруг он даст скорость сборки больше на вашей конфигурации компа, совершенно не приспособленном для трансляции каждый день множественных проектов (по причине хотя-бы использования SSD – он любой за год в таких условиях вымрет, хоть в RAID)…
По вашим замерам можно сказать – у вас CPU в компе до 4-х реальных ядер (и ужасная файловая система - что-то из линукс наверно c эмулятором винды :) ). Если возьмете хотя-бы старинный 6-ти ядерник AMD– итого будет в 1.5 раза быстрее, т.к. частоты у ядер (и их производительность в таких задачах) различаются не в разы (не более +-10% если брать самый накрученный по частоте и самый древний :) ).
 
Последнее редактирование:

Neov

Member
О - вот оно и использовалось - явная мухлевка - сначала запуск на загрузку дисковых кешей системы на сравниваемой, а потом уже своей "продвинутого и не совместимого ни с чем" скрипта. :) :)
Теоретически объяснить сможете, чем ваш скрипт быстрее? 99% работы CPU в нем – нагрузка на перелопачивание СИ кода GCC, остальное – дисковая система компа по открытию файлов. Как не оптимизируйте скрипт, получите +-1 % разницы на производительности CPU. Если у него больше реальных ядер – во столько РАЗ и быстрее. Т.е. смысла в оптимизации нет – проще сменить CPU или дисковую систему.

По старинке ещё сделайте – запустите RAM диск в своем скрипте :) Вдруг он даст скорость сборки больше на вашей конфигурации компа, совершенно не приспособленном для трансляции каждый день множественных проектов (по причине хотя-бы использования SSD – он любой за год в таких условиях вымрет, хоть в RAID)…
По вашим замерам можно сказать – у вас CPU в компе до 4-х реальных ядер (и ужасная файловая система - что-то из линукс наверно c эмулятором винды :) ). Если возьмете хотя-бы старинный 6-ти ядерник AMD– итого будет в 1.5 раза быстрее, т.к. частоты у ядер (и их производительность в таких задачах) различаются не в разы (не более +-10% если брать самый накрученный по частоте и самый древний :) ).
И тут pvvx понесло, в стиле "нечего ответить - докопайся до орфографии" :)
Я показываю реальный результат, который идет на средненькой такой машине, со среднестатистическим cpu, на среднестатистической Windows и вытекающие железобетонные факты.

В каждый случай несколько раз прогонял, дабы убедиться в объективности. Если есть замечания, что я не так запустил make, то предлагайте, посмотрим :)
 
Последнее редактирование:

Neov

Member
Теоретически объяснить сможете, чем ваш скрипт быстрее?
Читать нужно внимательней, что я писал. Предполагаю что make медленней за счет костыльной параллельности, использование cmd, несовершенство mingw32-make. Надо бы в linux протестировать
 

A_D

Active member
Я показываю реальный результат, который идет на средненькой такой машине, со среднестатистическим cpu, на среднестатистической Windows и вытекающие железобетонные факты.
Читать нужно внимательней, что я писал. Предполагаю что make медленней за счет ....
:D ЛОЛ.

Зы. уже не беря в расчет, что средненькая машина для всех разная. к примеру для меня добротный среднячок - это уже давно не новый i7 3770 c 16Гб ОЗУ, GTX 660, SSD intel 128Gb. А для кого то и довольно древний pentium 4 - вполне средненькая машина.
 

Neov

Member
лол, как легко вас рассмешить:rolleyes:
к примеру для меня добротный среднячок - это уже давно не новый i7 3770 c 16Гб ОЗУ, GTX 660, SSD intel 128Gb.
У вас отличные взгляды на добротных середнячков:) почти совпадает с моими. А вообще к чему вы? суть не в сравнении времени сборки на разных машинах, а в сравнении сабжа и make на конкретной машине :)
 

pvvx

Активный участник сообщества
Читать нужно внимательней, что я писал. Предполагаю что make медленней за счет костыльной параллельности, использование cmd, несовершенство mingw32-make. Надо бы в linux протестировать
И сколько эта костыльность, созданная ради совместимости и возможности использования в любых средах, меняет скорость компиляции-сборки?
Вроде вам написал - для процов более i386 - это +-1% :) Остальные 99% - это файловая система и кол-во РЕАЛЬНЫХ, а не ваших липовых ядер у CPU. Даже в однопоточном режиме обработки по одному файлу. Другие ядра при этом заняты файловой системой и её кещами.
Создатель waf наверно имеет i386, тогда - да. Там сильно скажется время перелопачивания процом тысяч лишних команд. На 2ГГц, для современных CPU - это ... в обшем сами подсчитаете - боюсь запутаться в нулях после запятой :) Тут если так сравнивать, то Питон будет явно медленнее заранее скомпилированных утилит и иметь меньше возможностей.
Вердикт то простой - waf не входит ни в одну имеющуюся систему сборки проектов и не имеет поддержки в них. Когда это будет, тогда и можно будет что-то сравнивать. Садитесь на стул и упритесь в комп на несколько лет - вам предстоит работать и работать с waf, его окружением и рекламой. А мы подождем, когда подготовите всё и потом уже будем сравнивать...
А пока размер набиваемого кода человеком для создания нового проекта в вашем waf превышает старые варианты, хоть make. Отношение более чем 1 к 2 и соответственно кол-во ошибок...
Я не против описаний в Питоне команд маке :) Мне пофигу. Доделывайте до нормального уровня. Что требуется - уже описано.
 
Последнее редактирование:

pvvx

Активный участник сообщества
У вас отличные взгляды на добротных середнячков:) почти совпадает с моими. А вообще к чему вы? суть не в сравнении времени сборки на разных машинах, а в сравнении сабжа и make на конкретной машине :)
Конкретная машина - это типа адаптированная под Питон? :)
Пользователям нужна среда с продвинутым редактором. У нас имеется Eclipse. В ней поддержки waf нет. Впишите.
Полностью отлаженный проект в Eclipse, если предполагается его раздача другим, собирается его мейкером. Замените его на waf. Или допишите среду с редакцией и такими-же возможностями к waf :)
 
Последнее редактирование:

Neov

Member
Конкретная машина - это типа адаптированная под Питон? :)
Пользователям нужна среда с продвинутым редактором. У нас имеется Eclipse. В ней поддержки waf нет. Впишите.
Полностью отлаженный проект в Eclipse, если предполагается его раздача другим, собирается его мейкером. Замените его на waf. Или допишите среду с редакцией и такими-же возможностями к waf :)
А бывают машины адаптированные под питон?:D скажем спасибо Гвидо Ван Россуму что позаботился о windows, и ненужно его запускать через mingw :)
И что Вы так пристали с Eclipse? Это сделает даже "телепузик" (как их называет pvvx), вот вам подтверждение
upload_2017-4-2_20-53-40.png
Позже выложу :)
 

Вложения

pvvx

Активный участник сообщества
У вас пока выходит какая-то Arduino без хелпинга и возможностей смены конфигурации типов программаторов, типов чипов из серии RTL8195/871x, среды (вынь/линух/..), опций проекта и его основных конфигов для "начинающих".

Может проще дать такому пользователю бинарник в виде экзешника с окошком выбора через какой программатор залить, а то даже это ваша система не позволяет и не доделана до такого примитивного уровня для той аудитории, которой вы предлагаете свой “продвинутый сборщик одного проекта без возможности изменения чего-либо”.
С вами тут не собачиться собралсь, а описываем что надо "телепузикам" и чего ещё нет для нормального и комфортного обучения с дальнейшей интеграцией в Eclipse. А этих действий у вас пока нуль. Различий, что имеющийся Makefile или ваши Питоньи скрипты пока не наблюдается. Но немного продвинутый пользователь быстрее разберется с маке, чем со скриптами Питона.
Как простой пример – тут многие не могут скачать с git, а у вас bitbucket. Там надо больше действий и они не описаны для телепузиков… (как скачать с git они могут найти в поиске по разнообразным запросам, а вот как с bitbucket - это сложнее найти :) )
Ну а раз вопросов такого плана в теме не наблюдаетcя, это значит что ваши поделка пока не нужна никому, кроме вас лично. Когда доделаете, то что вам пишут - тогда она может и будет востребована.
Я вот специально “туплю” и не вставляю поддержку разных чипов RTLи многое другое в текщие проекты – даю возможность другим это сделать, чтобы исполнилась их мечта - быть популярными. :p Да и целей "предоставить всё готовое" у меня нет - только начальная поддержка.
 
Последнее редактирование:

A_D

Active member
лол, как легко вас рассмешить:rolleyes:
видимо не поняли (хоть и специально выделено 2 слова жирным) - показываю реальный != Предполагаю. Что в жаркой дискуссии выглядит очень забавно.
У вас отличные взгляды на добротных середнячков:) почти совпадает с моими. А вообще к чему вы? суть не в сравнении времени сборки на разных машинах, а в сравнении сабжа и make на конкретной машине :)
обычно, если производятся тесты, то приводятся на какой конкретно машине, ОС это делалось, иначе выглядит опять как рекламная листовка с первого поста... всё на мифически среднем пк, средней ОС и со средней битностью цп\ос что ли ? (48бит)
 

aloika

Active member
Ну а раз вопросов такого плана в теме не наблюдаетcя, это значит что ваши поделка пока не нужна никому, кроме вас лично.
Вот я вполне себе "телепузик", глупо было бы отрицать. Проект скачал, всё сделал, как написано - подтверждаю, компилирует быстрее, заливается вроде как тоже. Прикольно.
Вопрос - что нужно править, чтобы натравить это дело на RTLHTTPD ?
 
Сверху Снизу