KolibriOS в BIOS ( coreboot / SeaBIOS ) на G505S - успех!

Using Kolibri in embedded systems
  • art_zh wrote:на АМД системную частоту при перегреве скидывает специальный встроенный микроконтроллер.
    который программируется по дефолту в отдельном модуле BIOS (и в coreboot тоже - AMD давно слила туда свой микрокод)
    art_zh, есть всякие файлы типа GnbSmuFirmwareTN.h ( https://github.com/coreboot/coreboot/bl ... rmwareTN.h ) но по сути это не исходники а бинарники - куча огромных массивов из непонятных 32-битных значений без комментариев :( Я конечно благодарю AMD за то что открыла кучу вендоркода, без которого coreboot на G505S был бы невозможен... Но вот микрокод, что для SMU что для процессора ( https://github.com/coreboot/blobs/blob/ ... fam15h.bin ) - AMD так и не открыла :?
    olodar wrote:Раз он [power/fan control?] есть в корбуте, значит, можно просто как-то выпилить?
    Поискав в исходниках коребута по словам "heat", "temperature", "tmax", "tj_max" и прочее - я нашёл один интересный файл:
    ./coreboot/src/vendorcode/amd/agesa/f15tn/Proc/GNB/Modules/GnbInitTN/GnbEarlyInitTN.c
    https://github.com/coreboot/coreboot/bl ... lyInitTN.c

    Это какие-то исходники реализующие взаимодействие с SMU ; там есть функция TjMaxDecode , переменные Delta_T_org и Delta_T_new - в которые наверное сохраняется разница между температурой перегрева и текущей температурой , и в зависимости от значений этих переменных на строках 606-745 определяется Cpu_New_Pwr - сколько мощности подать на CPU и на GPU . В принципе, можно попробовать выставить параметры так чтобы NomPow=MidPow=MaxPow , особое внимание обратить на TjOffset и CfgGnbSwTjOffset . Кстати в файле ./coreboot/src/vendorcode/amd/agesa/f15tn/Include/PlatformInstall.h на строках 2218 - 2222 есть такой кусок кода:

    Code: Select all

    #ifdef BLDCFG_GNB_THERMAL_SENSOR_CORRECTION
      #define CFG_GNB_THERMAL_SENSOR_CORRECTION  BLDCFG_GNB_THERMAL_SENSOR_CORRECTION
    #else
      #define CFG_GNB_THERMAL_SENSOR_CORRECTION  0
    #endif
    
    #ifdef BLDCFG_IGPU_SUBSYSTEM_ID
    Может выставить тут два нуля? Ещё в файле относящемуся к южному мосту - coreboot/src/southbridge/amd/agesa/hudson/hudson.c - есть очень интересный код на строках 182-190 :

    Code: Select all

    static void hudson_final(void *chip_info)
    {
    #if !CONFIG_ACPI_ENABLE_THERMAL_ZONE
    #if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
    	/* AMD AGESA does not enable thermal zone, so we enable it here. */
    	enable_imc_thermal_zone();
    #endif
    #endif
    }
    Закомментировать или удалить enable_imc_thermal_zone(); ? А в src/mainboard/lenovo/g505s/BiosCallOuts.c начиная со 105 строки :

    Code: Select all

    static void oem_fan_control(FCH_DATA_BLOCK *FchParams)
    {
    	/* Enable IMC fan control. the recommand way */
    #if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
    ...
    Интересно...
  • Почему у тебя меню menuconfig криво рисуется, и вообще всё странно выглядит? В какой операционной системе ты пытаешься собирать, неужели в винде?
    Собирал я на своем VPS через SSH-сессию под виндой. На дедике хоть и проц слабый, но собирается значительно быстрее, чем на своих машинах. Потому что для сборки нужен в первую очередь быстрый инет, а процессор уходит на второй план.
    опенсорсные AMD-шные драйвера для этого семейства дискретных видеокарт пока ещё не подоспели
    Они не нужны, линукс все равно не сможет завести crossfire, да и даже сможет, то чем этот crossfire нагружать? Игры под линуксом видеокарту вообще не грузят, зато процессор всегда на 100%.
    Зависит от того, собираешься ли ты пользоваться клавиатурой ноутбука
    Так если даже и сразу клава не будет иннициализирована, то ОСь же должна загрузить драйвер для клавиатуры и запустить ее?
    Если будут лишние деньги купи вот эту вот баночку 10 грамм GC-Extreme с лопаткой в комплекте, выгоднее чем шприцы и надолго хватит
    Я уже использую grizzly kryonaut - очень хорошая паста! Полностью раскрывает систему охлаждения.
    Поведение вентилятора зависит не от прошивки биос чипа а от прошивки EC-контроллера! Это такой квадратный чип со 128 ногами, ENE KB9012QF A3, у него есть прошивка размером 128 КБ. Её можно обновить двумя способами:
    Тут уж точно ничего непонятно :D Проще говоря - бери интел.
    А насчет недоверия к интелу - где-то я слышал (не помню, о каком проце шла речь, то ли о FX-8350, или о A10, который недавно делал GTX 630), что процессор сбрасывал частоту при полной загрузке ядер и было это потому, чтобы процессор не выходил за пределы заявленного TDP (скорее всего, речь шла о А10). Как после такого можно доверять жулику-амд? Другое дело, если бы они дали выбрать юзеру, хочет ли он это, или нет, а амд даже выбора не дала!
    И, да, насчет троттлинга. Троттлинг у нормальных производителей должен сбрасывать частоту при перегреве процессора, но никак не при нагрузке! Что я сделал: разобрал ноут на улице и прикрепил радиатор к процу (всмысле на теплотрубку, с термопастой), мониторил и максимальная температура была 38 !!!!! по Цельсию! И процессор все равно сбрасывал частоту до 2,8 гГц, а потом до 2,05 и даже до 900 мГц!!! иногда проседала! Я не знаю, может быть, процессору просто нехватает питанки, мб цепь питания слабая?
  • придётся делать загрузочный диск/флешку с 32-битной убунтой
    Как вариант - установить 32-х битную ОС в контейнер LXC, она будет запускаться на голом железе. Проще всего. Для флешки, в моем случае, придется собирать собственный образ с компилятором (уже есть руками собранная установочная флешка), так как максимальная флешка у меня на 1 гб :D
    Еще можно чрутнуться в 32-битную ОСь.
  • А что не так? Однопоточные программы на четырёхъядерном процессоре работают ничуть не быстрее чем на двухъядерном. Зачем покупателю платить больше? Как заставить его раскошелиться? Вот и придумали, что при использовании только одного ядра процессор повышает напряжение и частоту. Естественно, прожорливость и нагрев при этом сильно растут, но остаются в заявленных пределах. А вот если процессор повысит напряжение при полной нагрузке, то на средненькой материнке могут сгореть питальники, чему пользователь огорчится гораздо больше. Для ноутбучной материнки это особо актуально.
  • Pathoswithin wrote:А что не так? Однопоточные программы на четырёхъядерном процессоре работают ничуть не быстрее чем на двухъядерном. Зачем покупателю платить больше? Как заставить его раскошелиться? Вот и придумали, что при использовании только одного ядра процессор повышает напряжение и частоту. Естественно, прожорливость и нагрев при этом сильно растут, но остаются в заявленных пределах. А вот если процессор повысит напряжение при полной нагрузке, то на средненькой материнке могут сгореть питальники, чему пользователь огорчится гораздо больше. Для ноутбучной материнки это особо актуально.
    Ну вот, интел опять выигрывает. Мало того, что у интела голое ядро быстрее ядра амд под разгоном, так интел еще и холодный в турбобусте. Кстати, когда покупал ноут, то также смотрел на ноут HP (модель не помню), но процессор был А10 четвертого поколения, и у него тепловыделение значительно ниже, чем у этого. Интересно, как бы на том ноуте себя все это дело повело... Тоже две видюхи.
  • Ах, да. Данный ноут был хорош уже давно, когда стоил 20к руб. Сейчас он 30к уже не стоит. Да и с производства его сняли уже :(
  • В одинаковых режимах Intel и AMD ведут себя одинаково. У тебя же стоит Power control +20%, так чем ты не доволен? Даже материнка до сих пор не сгорела. У меня была Asus, в биосе установил "авторазгон 30%"; что характерно, Pentium выдержал, а вот материнка свои возможности переоценила... С тех пор разгоняю только вручную, а напряжение только понижаю.
  • olodar wrote: [опенсорсные AMD-шные драйвера] не нужны, линукс все равно не сможет завести crossfire, да и даже сможет, то чем этот crossfire нагружать? Игры под линуксом видеокарту вообще не грузят, зато процессор всегда на 100%.
    Дело в том что например на убунте 16.04 - старые закрытые драйвера AMD (Catalyst) то ли вообще не работают то ли работают криво, а в опенсорсных драйверах AMD пока ещё нет поддержки этой дискретной видеокарты. Так что дискретная видеокарта на новых линуксах вообще не работает т.к. сидит без драйверов! и нужно или подождать выхода линуксового ядра 4.11 или на свой страх и риск пересобирать уже вышедшее ядро 4.10 с включенной экспериментальной поддержкой этой видюхи. В принципе можно подождать 4.11 и пока что пользоваться только встроенной видеокартой...
    floppy121 wrote:Зависит от того, собираешься ли ты пользоваться клавиатурой ноутбука :lol:
    olodar wrote:Так если даже и сразу клава не будет иннициализирована, то ОСь же должна загрузить драйвер для клавиатуры и запустить ее?
    это ведь шутка была! там дальше написано:
    floppy121 wrote:Если серьёзно, нажми кнопку ? на этой опции и ты увидишь что некоторым payload-ам вроде filo, которые не инициализируют PS/2 сами, нужно чтобы coreboot до них проинициализировал, а некоторые - например SeaBIOS - инициализируют сами и помощь коребута им не нужна. Кстати, у меня в конфиге коребута (во вложениях из первого письма в этой теме) опция CONFIG_DRIVERS_PS2_KEYBOARD, но при этом и в SeaBIOS клавиатура работает, и даже в filo работает - потому что SeaBIOS уже проинициализировал эту клавиатуру до filo, который у меня в качестве "вторичного" payload-а и может быть загружен только из меню загрузки SeaBIOS-а
    То есть: всё что грузится после SeaBIOS или после GRUB - операционная система или вторичный payload, неважно ---> уже имеет рабочую проинициализированную клавиатуру в своём распоряжении (так как в эти продвинутые payload-ы встроена инициализация клавиатуры), а вот если поставить чтобы после coreboot сразу грузился какой-нибудь базовый payload не умеющий инициализировать клавиатуру, то естественно клавиатура работать не будет
    floppy121 wrote:Поведение вентилятора зависит не от прошивки биос чипа а от прошивки EC-контроллера! Это такой квадратный чип со 128 ногами, ENE KB9012QF A3, у него есть прошивка размером 128 КБ. Её можно обновить двумя способами:
    olodar wrote:Тут уж точно ничего непонятно :D
    На материнской плате Lenovo G505S есть два (надеюсь что только два) чипа с энергонезависимой флэш-памятью:
    1) "биос-чип" объёмом 4МБ, в котором хранится и откуда грузится биос - с ним всё понятно
    2) EC-контроллер, который состоит из: микро процессора на архитектуре 8051, флэш-памяти 128 КБ для хранения прошивки, несколько портов ввода-выво