Zróbmy sobie jądro – część II O procesorze słów kilka

Herman Żatuchin Android 2013-05-02

logo-ZSJ

Witam w drugiej części poradnika poświęconego modyfikacjom kerneli naszych urządzeń. W poprzednim wydaniu poznaliśmy podstawy oraz przygotowaliśmy solidną bazę do zmian i ulepszania. Teraz dowiemy się, jak podkręcić procesor, zmniejszyć napięcie na poszczególne taktowanie czy też dodać zarządcę. Nie przedłużając – do roboty!

Zajmiemy się najpierw zwiększeniem taktowania urządzenia. Sam proces nie jest trudny, wystarczy znaleźć tylko odpowiednie pliki oraz podmienić w nich wartości na żądane. Podkręcenie procesora nie wiąże się z szybszym rozładowaniem baterii – za to odpowiada napięcie, dlatego przy odpowiednim dobraniu wartości nie powinniśmy odczuć krótszego działania na jednym ładowaniu. Nie zalecam (początkowo) zbyt dużego podkręcania, gdyż urządzenie może się nie uruchomić i konieczny będzie powrót do stanu poprzedniego (polecam robić kopie zapasowe).

W przypadku LG Optimus Black potrzebujemy pliku o nazwie opp3xxx_data.c, który znajdziemy pod ścieżką arch/arm/mach-omap2. Już po samej nazwie widać bezpośredni związek z zastosowanym w smartfonie układzie (OMAP 3630). Po jego otworzeniu przechodzimy do 159 linii zaczynającej się od static struct. Jak można  zauważyć standardowe taktowania to 300, 600, 800 i 1000 MHz. Z mojego doświadczenia wiem, że najniższe można spokojnie jeszcze obniżyć, co pozwoli nam na nieco większą zmianę woltażu. Nie polecam natomiast za bardzo podkręcać górnego – wielu użytkowników skarżyło się, że dodając tylko 100 MHz więcej urządzenie pracuje niestabilnie, wyłącza się itd. Tego nie chcemy, także decydujemy się na bezpieczniejszy próg – 1100 MHz. Liczby zostały podane jednak bez przedrostka „mega”, więc my też musimy takie podać. W 169 linii zmieniamy więc z „1000000000” na „1100000000” (pozostałe wartości edytuje się na tej samej zasadzie). Jeśli chcieliśmy zmienić tylko taktowanie, to możemy zamknąć plik i przejść do kompilacji, którą opisałem w poprzedniej części poradnika.

W przypadku, kiedy zależy nam na dłuższy działaniu baterii powinniśmy zainteresować się plikami odpowiedzialnymi za napięcie. Są to wyżej wymieniony plik oraz, znajdujący się w tym samym folderze omap3_voltages.h. W tym pierwszym trzeba cofnąć się do 87 linii. Jak widać każde taktowanie ma zdefiniowane określony woltaż. W tym przypadku na pewno wszystko można bezpieczne są wartości  960000, 1050000, 1225000 i 1375000. Trzeba jednak zaznaczyć, że zależy to głównie od urządzenia, ale te wartości są najbardziej uniwersalne, schodzenie niżej polecam tylko zapalonym testerom 😉 Jak jednak sprawdziłem na wielu urządzeniach bezpieczną granicą jest zejście o 7-10% niżej od oryginalnego napięcia. Wracamy jednak do modyfikacji – w omap3_voltages.h należy zmienić na te same wartości, co w poprzednim. Jeśli jednak urządzenie nie będzie chciało się uruchomić, to stopniowo zwiększamy minimalne, aż do momentu udanego boota.

Ostatnią omawianą rzeczą w tej części poradnika będzie dodanie zarządcy – rzecz nie jest trudna do zrobienia, a przyda się w przypadkach, kiedy chcemy otrzymać (kto by się spodziewał J ) lepsze zarządzanie działaniem telefonu. Po pierwsze: potrzebujemy plik z zarządcą, który chcemy dodać. Kiedy już wybierzemy pożądany przez nas governor (uwaga: niektóre są przygotowane tylko dla urządzeń wielordzeniowych), wrzucamy go do drivers/cpufreq/. Następnie należy dodać odpowiedni kod, by urządzenie zaczęło go rozpoznawać. Musimy więc otworzyć plik Kconfig znajdujący się w tym samym folderze, co wklejony przez nas poprzedni plik. Pod config CPU_FREQ_DEFAULT_GOV_HOTPLUG doklejamy konfigurację zarządcy (w moim przypadku SmartAss V2):

config CPU_FREQ_DEFAULT_GOV_SMARTASS2
     bool „smartass2”
     select CPU_FREQ_GOV_SMARTASS2
     help
      Use the CPUFreq governor ‚smartassV2’ as default.

Następnie przewijamy nieco niżej, konkretnie do miejsca, gdzie nazwa zaczyna się od config CPU_FREQ_GOV i dodajemy do tego:

config CPU_FREQ_GOV_SMARTASS2
  tristate „‚smartassV2’ cpufreq governor”
  depends on CPU_FREQ
   help
     ‚smartassV2’ – a „smart” optimized governor.

Zamykamy plik, po czym w tym samym folderze uruchamiamy i pod linią obj-$(CONFIG_CPU_FREQ_GOV_HOTPLUG)  += cpufreq_hotplug.o dopisujemy

obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2)  += cpufreq_smartass2.o

Po wykonaniu tej operacji możemy w końcu przejść do kompilacji. Mogę powiedzieć, że dodawanie zarządcy to operacja uniwersalna i powyższa instrukcja pasuje niemal do każdego typu jądra (niezależnie od producenta itp.)

Przedstawione działania powinny poprawić płynność działania smartfona oraz czas działania na jednym ładowaniu baterii. W kolejnym wydaniu zajmiemy się głównie dodawaniem kolejnej możliwości ustawienia taktowania, podkręcaniem procesora graficznego czy paroma usprawnieniami mającymi polepszyć nasze doznania z urządzeniem. W razie wszelkich wątpliwości zapraszam do kontaktu mailowego: herman.zatuchin@android.com.pl lub pozostawienia komentarza pod tym artykułem – postaram się odpowiedzieć na Wasze pytania. Udanej kompilacji!



  • Mia_

    Czekam na poradnik o portowaniu. 🙂
    Ważne, byś nie zaniedbał tej serii.
    Mam takie pytanko, OMAP 3630 i OMAP 3610 bardzo się różnią? :p

    • Herman Żatuchin

      Nie, to są naprawdę nieznaczące różnice (patrz: Defy i Optimus Black). Możesz spokojnie opierać się o ten poradnik, gdybyś chciała zrobić sobie jądro 😉

  • clockworkmod

    Czy mógłby mi ktoś podać link do GNU?

  • Kamilosxp

    Będą poradniki dotyczące portowania ROM’ów? 🙂

    • Herman Żatuchin

      Będą. Pokrótce omówię temat, pomyślę jeszcze o budowaniu od podstaw (pierwszym królikiem doświadczalnym jestem ja 🙂 ) Z pewnością będzie o portowaniu PACa, Paranoida itd.

      • Kamilosxp

        Co jaki czas będą wychodziły te artykuły? 🙂

        • Herman Żatuchin

          Jak na razie staram się trzymać tego, by co tydzień przynajmniej jeden się pojawił. Niestety, mam swoje ograniczenia czasowe.