• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 ?
 
Сверху Снизу