Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Realtek - SDK, прошивки и утилиты", создана пользователем Neov, 18 мар 2017.

  1. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    Там нет Visual Studio и прочего хлама, да всё что производиться программного потребляется потребителями на Windows.
    Как факт - все процессоры Ryzen у AMD идут с браком - не работают с GCC в Linux. Но это такой малый сегмент пользователей (менее 1%), что AMD не отзывает их и походу даже не собирается разбираться с причиной ошибки там (моё мнение - ошибки в ПО GCC Linux, которые старательно теперь выдают за глюки CPU. На других процах тоже имеются сбои при больших сборках на много потоков в GCC уже много лет.).
    В WSL проще, чем в виртуалке. Ничего "пробрасывать" не надо и работают любые *.exe совместно с linux утилитами (хоть в одном sh, make и т.д.).
     
    Последнее редактирование: 8 ноя 2017
  2. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    Т.е. Linux не умеет пользовать кеш диска в RAM? Отложенная запись и всё такое...
    Пробовал на m.2 PCIE x4 с трафиком 2.4Gbytes/sec запись-чтение - всё те-же единицы выходят. :(
    (До около 10 секунд сборки MP3 на RTL"A" и базовой "AT" на RTL"B")
    Arduino ещё не ставил... да и не выбрал что будет базовым компом (Ryzen7 или Threadripper)
     
    Последнее редактирование: 8 ноя 2017
  3. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    В тестах участвовали
    1. ubuntu 16.04 + HDD
    2. ubuntu 16.04 SSD btrfs + lzo
    но почему-то ramdisk не рассматривался,
    я к сожалению быстро не нашел сравнений производительности SSD btrfs и tmpfs, может на ram-е быстрее получится?
    видел кучу статей как снять нагрузку с SSD увеличить производительности за счет кеширования на ram-e, может стоит попробовать (если не жалко времени :))
     
    Последнее редактирование: 8 ноя 2017
  4. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    tmpfs в Win10 WSL ставится так Виртуальный диск в памяти: как создать ramdisk в Linux? - Записки дебианщика
    Копируем туда SDK и все остальное...
    Создаем configure.sh:
    python waf configure
    и build.sh:
    time python waf -j 32 clean
    time python waf -j 32 build

    и запускаем его из build.cmd хоть из эксплорера :):
    bash configure.sh
    bash build.sh
    pause

    Получаем (Ryzen 7 1700X, чипсет X370, RAM: Dual DDR4-3017 14-15-15-34 CR1, разгонов нет, все установки в Биос - Auto,
    Win10 WSL, проект RTL MP3, arm-none-eabi-gcc (15:4.9.3+svn231177-1) 4.9.3 20150529 (prerelease))
    :
    Ryzen7 1700x RamDisk (раскрыть)
    Код (Text):
    1. user@Ryzen1700x:/mnt/tmpfs/magres-wafmeba$ ./configure.sh
    2. invalid lock file in /mnt/tmpfs/magres-wafmeba
    3. Setting top to                           : /mnt/tmpfs/magres-wafmeba
    4. Setting out to                           : /mnt/tmpfs/magres-wafmeba/build
    5. arm-none-eabi-gcc is not in env or doesn't exists
    6. Checking for program 'arm-none-eabi-gcc' : /usr/bin/arm-none-eabi-gcc
    7. arm-none-eabi-nm is not in env or doesn't exists
    8. Checking for program 'arm-none-eabi-nm'  : /usr/bin/arm-none-eabi-nm
    9. arm-none-eabi-objcopy is not in env or doesn't exists
    10. Checking for program 'arm-none-eabi-objcopy' : /usr/bin/arm-none-eabi-objcopy
    11. 'configure' finished successfully (0.020s)
    12.  
    13. user@Ryzen1700x:/mnt/tmpfs/magres-wafmeba$ ./build.sh
    14. __INCLUDES : ../inc not found
    15. 'clean' finished successfully (0.259s)
    16.  
    17. real    0m0.518s
    18. user    0m0.109s
    19. sys     0m0.375s
    20. Waf: Entering directory `/mnt/tmpfs/magres-wafmeba/build'
    21. __INCLUDES : ../inc not found
    22. [  1/162] Compiling project/src/user/main.c
    23. [  2/162] Compiling project/src/user/wifi_console.c
    24. [  3/162] Compiling project/src/user/atcmd_user.c
    25. [  4/162] Compiling project/src/user/spiram_fifo.c
    26. [  5/162] Compiling project/src/mad/mad_version.c
    27. [  6/162] Compiling project/src/mad/mpg12/layer12.c
    28. [  7/162] Compiling project/src/mad/frame.c
    29. [  8/162] Compiling project/src/mad/layer3.c
    30. [  9/162] Compiling project/src/mad/align.c
    31. [ 10/162] Compiling project/src/mad/decoder.c
    32. [ 11/162] Compiling project/src/mad/huffman.c
    33. [ 12/162] Compiling project/src/mad/fixed.c
    34. [ 13/162] Compiling project/src/mad/bit.c
    35. [ 14/162] Compiling project/src/mad/synth.c
    36. [ 15/162] Compiling project/src/mad/timer.c
    37. [ 16/162] Compiling project/src/mad/stream.c
    38. [ 17/162] Compiling project/src/driver/i2s_freertos.c
    39. [ 18/162] Compiling RTL00_SDKV35a/component/soc/realtek/8195a/fwlib/ram_lib/rtl_bios_data.c
    40. .....
    41. [150/162] Processing ameba_ld: build/project/src/user/main.o build/project/src/user/wifi_console.o build/project/src/user/atcmd_user.o build/project/src/user/spiram_fifo.o
    42. .....
    43. build/RTL00_SDKV35a/component/soc/realtek/8195a/fwlib/ram_lib/rtl_boot.o -> build/app.axf
    44. [151/162] Compiling build/app.axf
    45. [152/162] Compiling build/app.axf
    46. [153/162] Compiling build/app.axf
    47. [154/162] Compiling build/app.axf
    48. [155/162] Compiling build/app.axf
    49. [156/162] Compiling build/sdram.bin.raw
    50. [157/162] Compiling build/ram_2.ota.bin.raw
    51. [158/162] Compiling build/ram_1.bin.raw
    52. [159/162] Compiling build/ram_2.bin.raw
    53. [160/162] Compiling build/ram_1.bin
    54. [161/162] Processing ameba_combine_task: build/ram_2.ota.bin build/sdram.bin -> build/ram_ota.bin
    55. [162/162] Processing ameba_combine_task: build/ram_1.bin.padded build/ram_2.bin build/sdram.bin -> build/ram_all.bin
    56. Waf: Leaving directory `/mnt/tmpfs/magres-wafmeba/build'
    57. 'build' finished successfully (5.323s)
    58.  
    59. real    0m5.592s
    60. user    0m4.359s
    61. sys     0m0.734s
    Т.е. вместо 10 +- 1 сек на HDD (или NVMe) выходит 5+ сек + время копирования с m.2 PCIE x4 на скорости к 2 GB/sec. Средняя загрузка проца при сборке ~50%. Антивирусы и другие активные приложения пачками в системе дают тормоз этому делу до 5..7%.
    WSL в Win10 сама медлительнее оригинального Linux, но серьезного выигрыша с ramdisk не выходит - его надо записывать и сохранять, писать всякое...
    Т.е. могло бы быстрее, но что-то там не так в GCC и 180 Ваттный Ryzen за сотню тыр.руб тоже не ускоряет, относительно простого Ryzen7 1700X за малую цену... Разницы между NVMe на PCIE с древним HDD WD20EARS тоже нет - все вокруг 10+-1 сек и загрузка CPU к 50%. Не научили ещё системы загружать NVMe на полный трафик... и в wind-е успешно работает кэширование дисков.
     
    Последнее редактирование: 9 ноя 2017
  5. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    Ерунда какая то, msdn говорит что поддерживают реально, а не мапят на hdd.
    а как смонтировался сам /mnt/tmpfs
    mount | grep '/mnt/tmpfs'
    что говорит?
     
  6. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    Что не понятно? WSL транслирует запросы к драйверам windows. Всё что идет аппаратно в nix - нафиг.
    Вся система linux/ubuntu то в NTFS, в папочке X:\Users\ИмяПользователя\Local Settings\Packages\CanonicalGroupLimited.UbuntuonWindows_xxxxxxx\LocalState\rootfs.
    А когда в RAM в tmpfs - то ей винда выделяет кусок памяти и ubuntu там сама копошиться как хочет. От этого немного быстрее запросы туда в ней.
    Писано же Микромягкими про WSL - это не виртуалка, а транслятор запросов.
    Кому сдалась ещё одна виртуальная машина со своей песочницей? Их и так много для wind-ы.
    Или вам не ясно как работает кэширование дисков в windows? Что неиспользуемая RAM используется для кэша дисков и операции с дисками всего в пару раз медленнее чем с RAM (т.к. надо время на разбор с самой организацией файловой структуры)?
     
    Последнее редактирование: 9 ноя 2017
  7. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    532
    Симпатии:
    60
    Да при чем тут это, я хотел просто узнать как смонтировался /mnt/tmpfs
    я смонтировал рам-диск в 1G и замапил как у Вас на /mnt/tmpfs
    и просил только вывести mount | grep '/mnt/tmpfs'
    ожидал увидеть tmpfs on /mnt/tmpfs type tmpfs (rw,relatime,size=1048576k)
    если это так, то как понимать wsl-file-system-support ведь говорят
    VFS defines several file system plugins: VolFs and DrvFs are used to represent files on disk, and the remainder are the in-memory file system TmpFs and pseudo file systems such as ProcFs, SysFs, and CgroupFs.
    русским по белому TmpFs и псевдо-фс в памяти, VolFs и DrvFs на диске.
    Не понятно почему нет прироста в производительности.
     
  8. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    Как это нет - 50% есть.
    Остальное уходит на системные вызовы у GCC и всякую кривописанную фигню. Наверно просто задержек в GCC понаставили :)
    Даже тест, который якобы вызывает ошибки у Ryzen7 при длительной нагрузке в Linux не может загрузить его на 100%. И падает по причине кривописи по привилегиям процессов и нарушения последовательности исполнения в самой GCC vs Linux. Там даже контроль питания мамки говорит что нагрузка не более 30% от номинального TDP.
    У WSL ещё хуже с атрибутами файлов и прочими расстановками разрешений. Но она пока ещё в стадии беты :) Там тоже часто есть сбои на вполне работавших ранее программах от Linux в начале, после загрузки. Проходит со временем, видимо после каких-то манипуляций с системой WSL... Вполне это всё может оказаться из-за кривизны дров NVMe и дисков в самой windows для систем Ryzen...
    Для Linux про это и говорить пока не о чем - там ещё старые подходы и дрова...
    В общем, для "многоядер" пока всё сыро... "на своей шкуре" = испытание на пользователях, и т.д. :)
     
    Последнее редактирование: 9 ноя 2017
  9. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    make.sh:
    time make -s clean
    OTA_IDX=1
    time make -s -j 32 all

    Для сравнения:
    Код (Text):
    1. user@Ryzen1700x:/mnt/tmpfs/sdk40b_at$ ./make.sh
    2. ===========================================================
    3. Clean
    4.  
    5. real    0m0.170s
    6. user    0m0.109s
    7. sys     0m0.063s
    8. ===========================================================
    9. Compile (build)
    10. project/src/main.c
    11. ../sdk40b/component/common/application/uart_adapter/uart_adapter.c
    12. ....
    13. <-- удалено 190 строк с файлами - не лезет в соо -->
    14. ....
    15. ===========================================================
    16. Link (build)
    17. ===========================================================
    18. Image manipulating
    19. ===========================================================
    20. b:268435456 s:268455936 e:268460236
    21. size 143545
    22. copy size 4300
    23. b:268435456 s:268455936 e:268460236
    24. size 4300
    25. copy size 4300
    26. b:0 s:0 e:0
    27. size 329344
    28. copy size 329344
    29. CHCKSUM ../sdk40b/component/soc/realtek/8711b/misc/iar_utility/common/tools/checksum1
    30. size = 333676
    31. checksum 20a59bf
    32.  
    33. real    0m5.279s
    34. user    0m25.484s
    35. sys     0m35.609s
    Т.е. те-же 5 сек, но загрузка CPU в % больше. Waf просрал.
    Видимо питон не хочет на полную работать - что-то его сдерживает...

    Это устаревшее описание для бета версии WSL начала года.
    Win10 после этого уже обновилась, совместно с WSL. По общему смыслу совпадает, но частности другие...
     
    Последнее редактирование: 9 ноя 2017
  10. Neov

    Neov Читатель

    Сообщения:
    209
    Симпатии:
    7
    видимо зорг лукавит и выдает желаемое за действительное :)
    я проверял на обычном 4ядерном ноутбучном цпу, результаты выше.
    а в ваши скрипты и ваши 100500 ядерники лезть не буду :)
     
  11. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    А зачем мне что-то выдумывать (?) - могу дать все исходные файлы маке с SDK4.0 для "B" серии и сами убедитесь (это не сикретно :)). Я тут выбираю какой комп будет основным дома и на какую концепцию переходить... Говорят надо на VS 2017. Вот счас запустил сборку на ней arm-none-eabi-... в среде WSL... Надо ещё попробовать как будет дружить Eclipse с WSL.
    Последние результаты на подгруженном всякими антивирусами и мониторами Ryzen1700x в WSL в tmpfs выходят:
    На маке - 5..5.5 сек
    На Waf - 6.1..6.5 сек.
    Waf-у не запустить 32 потока (по умолчанию у него 16)? Или что там у него?
    Могу дать табличку сравнений с 16 по 128 протоков... 32 выходит оптимальнее.
    И где у вас результат выше? Сами пишите 14 сек. Проекты практически одинаковы, в "AT" серии "B" файлов больше - там трансляция SSL либы и всей помойки SDK.
    Вы думаете на этом будет сильно быстрее? Процессор Qualcomm Centriq 2400: 48 ядер, 18 млрд транзисторов, частота 2,6 ГГц и TDP в 120 Вт :)
    Для меня пока выбор определяется экономичностью и бесшумностью совместно с производительностью, т.к. он будет работать непрерывно. И к "энтузиастам" для закупки самых крутых комплектующих в комп - фанатам 3D игр не отношусь, возраст наверно уже не тот :)
     
    Последнее редактирование: 10 ноя 2017
  12. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.394
    Симпатии:
    1.271
    @Neov - что подскажите? :
    Запускаем bash и в нем time python waf build, получаем сплошные ошибки:
    Лог1 (раскрыть)
    Код (Text):
    1. user@wsl:/mnt/c/00/magres-wafmeba$ time python waf build
    2. Waf: Entering directory `/mnt/c/00/magres-wafmeba/build'
    3. [  1/162] Compiling project/src/user/main.c
    4. [  2/162] Compiling project/src/user/wifi_console.c
    5. [  3/162] Compiling project/src/user/atcmd_user.c
    6. [  4/162] Compiling project/src/user/spiram_fifo.c
    7. [  5/162] Compiling project/src/mad/mad_version.c
    8. In file included from /mnt/c/00/magres-wafmeba/project/src/user/atcmd_user.c:5:0:
    9. /mnt/c/00/magres-wafmeba/RTL00_SDKV35a/component/os/freertos/freertos_v9.0.0/source/include/FreeRTOS.h:76:20: fatal error: /mnt/c/00/magres-wafmeba/RTL00_SDKV35a/component/common/api/wifi/rtw_wpa_supplicant/src/stddef.h: Invalid argument
    10.  #include <stddef.h>
    11.                     ^
    12. compilation terminated.
    13.  
    14. и так далее.... стерто - слишком много ошибок
    15. и такие ошибки:
    16.  
    17. /usr/include/newlib/stdint.h:64:19: error: missing binary operator before token "("
    18.  #elif __STDINT_EXP(INT_MAX) >= 0x7fff
    19.                    ^
    20. In file included from /mnt/c/00/magres-wafmeba/RTL00_SDKV35a/component/soc/realtek/8195a/misc/rtl_std_lib/include/rt_lib_rom.h:12:0,
    21.                  from /mnt/c/00/magres-wafmeba/RTL00_SDKV35a/component/common/api/platform/platform_stdlib.h:23,
    22.                  from /mnt/c/00/magres-wafmeba/project/inc/mad/global.h:54,
    23.                  from /mnt/c/00/magres-wafmeba/project/src/mad/mad_version.c:26:
    24. /mnt/c/00/magres-wafmeba/RTL00_SDKV35a/component/soc/realtek/8195a/cmsis/device/diag.h:16:37: fatal error: /mnt/c/00/magres-wafmeba/RTL00_SDKV35a/component/common/mbed/api/stddef.h: Invalid argument
    25.  #include <stddef.h> /* for size_t */
    26.                                      ^
    27. compilation terminated.
    28.  
    29. Итог понятен:
    30. Build failed
    31. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/user/atcmd_user.o'
    32. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/user/wifi_console.o'
    33. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/mad/mad_version.o'
    34. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/mad/frame.o'
    35. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/user/main.o'
    36. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/user/spiram_fifo.o'
    37. -> missing file: '/mnt/c/00/magres-wafmeba/build/project/src/mad/mpg12/layer12.o'
    38.  
    39. real    0m1.117s
    40. user    0m0.391s
    41. sys     0m0.609s

    Не хочет - одни ошибки.
    Тогда запускаем так: time python waf -j 1 build, всё собирается:
    Лог2 (раскрыть)
    Код (Text):
    1. user@wsl:/mnt/c/00/magres-wafmeba$ time python waf -j 1 build
    2. Waf: Entering directory `/mnt/c/00/magres-wafmeba/build'
    3. [  1/162] Compiling project/src/user/main.c
    4. [  2/162] Compiling project/src/user/wifi_console.c
    5. ... Тут часть стерта, чтобы влезло в сообщение - ошибок нет ...
    6. [151/162] Compiling build/app.axf
    7. [152/162] Compiling build/app.axf
    8. [153/162] Compiling build/ram_1.bin.raw
    9. [154/162] Compiling build/app.axf
    10. [155/162] Compiling build/ram_2.bin.raw
    11. [156/162] Compiling build/app.axf
    12. [157/162] Compiling build/ram_2.ota.bin.raw
    13. [158/162] Compiling build/app.axf
    14. [159/162] Compiling build/sdram.bin.raw
    15. [160/162] Compiling build/ram_1.bin
    16. [161/162] Processing ameba_combine_task: build/ram_1.bin.padded build/ram_2.bin build/sdram.bin -> build/ram_all.bin
    17. [162/162] Processing ameba_combine_task: build/ram_2.ota.bin build/sdram.bin -> build/ram_ota.bin
    18. Waf: Leaving directory `/mnt/c/00/magres-wafmeba/build'
    19. 'build' finished successfully (53.582s)
    20.  
    21. real    0m53.682s
    22. user    0m3.203s
    23. sys     0m1.109s

    Если скопировать все файлы SDK в среде WSL в новую директорию, то сборка в режиме нескольких потоков (-j 32) проходит.
    По этой причине есть намек Do not change Linux files using Windows apps and tools
    Что можете подсказать, что-бы waf заработал в WSL в Win10x64 ?
    Проблема кажется схожей с ошибками в Linux с gcc у Ryzen CPU, т.к. никто из Linux так и не взялся за получение доп. документации (c NDA?) на проц от AMD, кроме Microsoft Windows (в ней расписанных на многих сайтах ошибок с Ryzen нет). :) Но описанное здесь странное поведение gcc, проявляется на любом CPU в среде WSL c программами от ubuntu...
     
    Последнее редактирование: 25 ноя 2017

Поделиться этой страницей