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

4 minuty czytania
Komentarze
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: [email protected] lub pozostawienia komentarza pod tym artykułem – postaram się odpowiedzieć na Wasze pytania. Udanej kompilacji!

Motyw