[gelöst] ARM32 3.0.8 Kernel

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 08.03.2017 16:52:21

Der Kernel wird wahrscheinlich per U-Boot geladen, 100% sicher ist das allerdings nicht, und eine serielle Konsole dran anschließen kann ich nicht, da ich nicht weiß ob und wie das geht, habe viele Kontakte auf dem Mainboard unter anderem GND TX RX und VCC.

Der Kernel der original bei dem Tabket dabei ist heißt 3.0.8 + irgendwelche Ziffern als Zusatz, mein neuer Kernel heißt einfach nur 3.0.8 aber ohne Zusatz, im Kernel Source gibt es eine Dateien die mkuboot.SH heißt und andere Hinweise weisen auf RedBoot hin, aber meine Kernel Images sind u-boot Images.

Wie genau soll das mit Diff gehen?

Hier ist dmesg, sieht richtig spannend aus.

Bootloader Code *scheint* zu fehlen im Quellcode, das gibt Ärger.

Mit freundlichen Grüßen

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 09.03.2017 07:02:58

Diff ist einfach:

Code: Alles auswählen

man diff
Damit siehst du wie sich zwei Dateien unterscheiden. Für die zwei Kernel würde ich es so machen:

Code: Alles auswählen

hexdump -C kernel-a.img > kernel-a.txt
hexdump -C kernel-b.img > kernel-b.txt
diff kernel-a.txt kernel-b.txt |less
Wenn du den ganz gleichen Kernel erzeigt hast, gibt es keine Unterschiede. Da aber der Buildcomputer anderst ist, wird sich aber 100% der Version String unterscheiden.

In dem dmesg dump. sieht man bsp dass der Kernel eine console hat. Das wird sicher dein RX/TX/GND pin sein. Hier aber Vorsicht. Das ist sicher kein normaler RS232 sondern vermutlich 3.3V oder 5V. Hier könnte man einen Buspirate [1] nehmen um darauf zuzugreifen. Mit einem Oszilloskop könntest du hier die Spannungslevel messen ohne Schaden anzurichten.

[2][3] Sind RS232 Adapter für 5 bzw. 3.3V. Der Buspirate kann praktisch alles und ist Spannungstolerant von 0-5.5V. Er ist das Schweizer Taschenmesser um auf solche Dinge zuzugreifen ;) [4] [5] [6]

Der dmesg Dump sagt ja auch noch, welche cmdline der Kernel hat, dass er uboot gebootet wurde.

Wenn du dann die console bedienen kannst, kannst du auch den uboot bedienen und sehr frühe Ausgaben sehen.

[1] http://www.watterott.com/de/Bus-Pirate
[2] http://www.watterott.com/de/TTL-232R-US ... -Converter
[3] http://www.watterott.com/de/TTL-232R-US ... verter-33V
[4] http://dangerousprototypes.com/docs/Bus ... 1_tutorial
[5] http://dangerousprototypes.com/docs/Bus_Pirate
[6] http://dangerousprototypes.com/docs/UART

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 09.03.2017 14:44:41

Anscheinend sind die Kernel sehr unterschiedlich, der diff Befehl zeigt mir enn ich Ende Knopf auf der Tastatur drücke: lines 412847-412889/412889 (END) an, heißt es ist viel anders?

Es wäre natürlich toll, wenn ich mein Tablet bedienen kann, bevor das <android Betriebssystem aufsetzt, ich könnte ja dann u-boot modifizieren, obwohl ich den Quellcode nicht habe, da der nicht im Kernel ist, richtig?

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 09.03.2017 15:36:21

Genau, du kannst mit der Serial console dann uboot bedienen bevor der Kernel gestartet hat. Vermutlich musst du uboot im ersten Schritt gar nicht ersetzen. Ich würde den bestehenden uboot nutzen. Ein schritt nach dem anderen ;)

Der Kernel ist meist ein zImage. Sprich komprimiert. Hier ergeben sich dann natürlich unterschiede. Ich habe im dmesg auch gesehen das der laufende Kernel mit gcc 4.4 oder so übersetzt wurde. Du hast 4.8 genutzt. Allein das gibt schon Unterschiede im Kernel. Stichwort: Optimierungen.

Der dmesg an sich, zeigt auch, das die Mali GPU genutzt wird. Hier könntest du auch mal schauen, ob das bei deiner config aktiv ist. Evtl kannst du auch aus /proc/config.gz die laufende Konfiguration auslesen. Bei Android ist das aber meiner Erfahrung nach, meist deaktiviert.

Mich hat das dmesg log irgendwie stark an einen RaspberryPi erinnert .... ;)

Du kannst auch aus dem zImage das uImage wieder extrahieren. Siehe
http://www.linuxquestions.org/questions ... ge-824499/
http://reverseengineering.stackexchange ... ing-zimage

Das könnte interessante Strings enthalten.

Code: Alles auswählen

man strings

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 09.03.2017 16:38:00

Ahja das mit den Strings war mir auch schon durch den Kopf gegangen, aber leider kannte ich den Befehl da noch nicht, aber ich habe in den Dateien aufwändig nach Strings gesucht mal schauen. Linux auf dem Tablet wäre richtig toll. Ich lese mal eben die Stings aus.

Das Tablet beherbergt folgende Dateien:

u-boot.bin im bootloader.img Format wegen dd Befehl,

Der Kernel ist laut file Befehl im uImage Format, so kommt das auch am Ende bei den Kernel Code raus.
Ein weiterer Kernel der das Tablet im Notfall welchen ich eh umgehen kann, wieder rettet, kann einfach den Bootloader und alles auf SD Karte machen und alles läuft wieder, also kin Brick möglich, habe ich denke schonmal gesagt. Ich habe hier die Strings und lade gerade noch den Kernel + Bootloader originelle Laufwerkabbilder vom Tablet hoch: https://www.dropbox.com/sh/cl6p06or6kbb ... oFbBa?dl=0 + filedescriptions, nur der bootloader hat paar interessante Stings, was darauf hindeuten lässt das der Bootloader kein großen Umfang an Funktionen bereitstellt?, sonst wären da mehr Strings, ich sehe nur Bilder beim Starten des Tablets. Also außer dmesg nicht viel los.

Hier ist noch was über u-boot Bootloader was mein Chipsatz betrifft, aber meiner hat weniger Funktionen: http://www.slatedroid.com/topic/95977-h ... ice/page-6 ich bin dort Amlogic8726, hoffe mir sagt dort jemand wie man das mit dem Bild macht. ;) Ich habe ja Zeit, hole mir Informationen von vielen Stellen.

Herzlichen Dank an schorsch_76 für die super Hilfe, mal schauen wo das Projekt hingeht. :THX:

Ich habe schon nachgeschaut ob die config in /proc ist aber Fehlanzeige, die originale Kernelkonfiguration gibt kein Swap und kein Aufbewahren der .config her.

Ich habe jetzt eine initlogo.rle Datei gefunden im laufenden System, habe die bei Dropbox hochgeladen, anscheinend ist es das was ich gesucht habe. Jetzt muss ich nurnoch mein Kernel beim kompilieren sagen das der diese nehmen soll.

Joe

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 10.03.2017 17:42:11

Was kann ich mit den Anschlüssen anfangen welche mein Mainboard bereitstellt mit folgenden Beschriftungen:

Code: Alles auswählen

GSG5-9102004A-G1 (Zeile darunter: JDK) -> Kamera
M805NC-MB
20120626
V1.3
SH
94V-0
E248779
1327
Nachfolgend sind Pins aufgelistet:
1.8_CM
2.8_CM
DC_5V
5V
VDDIO
VCCK
TDI
TDO
TMS
TCK
IO_AO
GND
VCOM
VDD1.1V
1.5V
VDD_RTC
L+ L- LED- -> Displaybeleuchtung
LED+ -> Displaybeleuchtung
B+ -> Akku
B- -> Akku
TC -> Akku
R+ -> Lautsprecher
R- -> Lautsprecher
AVDD2.5V
LCD_VCC
VGL
VGH
TX
RX
VCC
VOL-
VOL+
Kann ich wenn ich ein TTL Converter kaufe den für 5 Volt nehmen, und dann mit u-boot komminizieren? Obwohl u-boot wenige Strings hat? Wird das mit dem gehen?: http://m.ebay.de/itm/281353512577

Danke für Antworten, von den Sachen habe ich keinerlei Ahnung muss die aber wissen. :THX:

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 10.03.2017 20:02:20

Der Converter schaut gut aus. Wäre eine Versuch wert.

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 10.03.2017 20:16:52

Wo schließe ich den COM Anschluss dann an und wofür ist der silberne Anschluss? Ich sehe auch das das Teil einen Versuch wert ist, immerhin scheint mein Tablet mit 5V betrieben zu sein. Ich kenne mich auf dem Gebiet noch nucht aus, wird sich aber schnell ändern.

Ich denke mein Teil so: Der Programmierer schreibt Code für den ARM Cortex A* Compiler der dann nach dem compilieren zuvor in Assemblercode assembliert wird und dann im binär verständliche Prozessor Sprache, so damit der Programmiert sieht was auf dem Teil Mainboard los ist, braucht es eine serielle Konsole.

Funktioniert das mit den ganzen auch über COM Anschluss gut in Linux? COM Anschluss haben meine Geräte.

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 12.03.2017 11:09:11

Ich habe schon einmal eine serielle Konsole aufsetzen wollen: viewtopic.php?f=9&t=154964&hilit=freeco ... ge+gateway aber da war mir das alles noch zu komplex, na mal abwarten wenn das Teil ankommt, erstmal direkt an den FSG testen, und danach am Tablet, obwohl man nur drei Pinne brauch da die selber den Strom liefern,

schönen Sonntag :THX:

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 12.03.2017 11:44:03

Tty in linux funktioniert sehr gut. Ich nutze dafür Debianminicom.

Bin jetzt dann zwei Wochen im Land der Mitte und damit hier nicht aktiv :wink:

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 21.03.2017 16:31:48

Ich habe das gekaufte Modul von Ebay an meinem Tablet Mainboard aufgelötet RX zu RX, TX zu TX und GND zu GND. Sieht ganz gut aus, da die RX LED blinkt und die Power LED leuchtet.

Aber ich bekomme rein garnichts auf dem Bildschirm. Ich habe bei Windows XP denke die falschen Optionen aktiviert. Hoffe ich bekomme noch die Richtigen raus.

Sieht aber so aus als wenn ich ein UART Modul brauche anstatt meines jetztigen Modules, aber bei der WLAN NAS HDD hat das soweit funktioniert.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 23.03.2017 13:31:38

Du brauchst rx zu tx. :)

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 01.04.2017 13:42:30

So das Modul ist angeschlossen und gibt leider nicht alles an Text aus es pausiert aus irgendeinem Grunde die Ausgabe:

Code: Alles auswählen

[joe@localhost ~]$ minicom -D /dev/ttyS0 Welcome to minicom 2.7 OPTIONS: I18n Compiled on Mar  4 2014, 06:07:27. Port /dev/ttyS0, 21:14:08 Press CTRL-A Z for help on special keys   j        >00000>8 >df悂(.So°& , p.~ ?zj} .00& <ձ́: 0xbf000000 ? &0000 < % [    & / ݵ                                                                                                                                              ) [    0?LL             xHrt : 0xc033000 - 0c0a   (5 먩                                                             @? 82rX0,                                                                                           6000 - ,                                                                                                      0   ( kB) [    0?0< 8   .bs z 0,                                4 - 0xc0ca4800   (0 kB) [    0&eLUB: Genslab HWa00<<Jr0(^"՝ɅJ*,                                                                                    r0&HI}%IEM25                                                                                                                  00>0&:00x0&HM%IPaaea0 [    00&&             Hsable tie [    00>x0&0Pr} d0                                                                                                                  zr1                                                                           B!JQ"   091001@1] JINE pJIJVC prr   0 [    1~457065@1] devi"r] cpr822@1} r22@1 lbrʺ0}br] creat  v                                                                                                                                                   r@1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             j                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        {  ?]  NAND bbt YWсfactorblock at 12000000 ?+ >559536@0]  NAND bbt dYW20000'} [ 8 ~581464@0]  NAND ,dYWbl0000                                                                 r9zbw de000000 ?+ ']  NAND                                                 _  < 898]  NAND bb]"ѕbl                                                                                     с74000000 }                                                                                                 :2ʊ] nftl detect bad blk at : 0 z[ .p >60p715@0] nftl detebld block at 74800000                                     j                                           [  8r9b,"etbl                                                                             j                                                                                      +r9976@0] nftl detect bad blk at : 5           aj                                                                                                               ʲ} prij                                                                                       ъj                                                                                                 )                                                                                                                  r1@0] amr}  v1*                                                                                                                                                                       C [    IB5%DEB]B=Q=rº] HDMI DEBUG: HDMITX_M1B_I4                                                                                                 {    5.220244@0] hdmit}B5%J_ hdmr] hdmi                                                                                                                                                                          [    I@0] *** (a                             ª@1] [    Iª] SD/MMC initialirº] aml"                                                               Ne|r@0] NF=Jjrљ                                                                                                                                                 {r¢] arp_tabl                                                                                                                                                                        m [    6.141687@0] IPv6 over IPv4 tun"ɥr] NET: Re ɥ2r] nET: Registerɽ                                                                                                                           [    6.144735@0] lib80211: co"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    j                                                                                                                                                                        j                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    j                                                                                                                                                                        ) [    6.758533@0] [<c0639458>} (cpufreq    22Bf/                                                                          [    6.779106@0] [<c06386c0] (cpufre2B"ɥ184) [    6.799068@0] [<c057ade8>} (drive2 frB8c) [    6.817817@0] [<c057a5e0>] (bus/ fr(d_                                                           [    6.836392@0] [<c057b4d4>] (driver¢J2ɽ       Xrª] [<c0336590>} (do1  - [    6.879319@0] cpu freq limited to 120000000O¢] [      3187@1] ***********SCR************* [    6  ²] regJbr²ʂ] regulatr                                                        0_bJr8ezr] regulatrʚ] andrj͚20                                                                                                                                                          rʚ]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             : [    )] SD_SPEC[4]=2 [    6.975164@1] SCR__TRUTURErr_rʺ1] DATA_STAT_AFER_ERASE[1]0 [    6.975179@1] Rsv1[7}j                           [    6.975182@1] SD_SPEC3[1]=1 [    6.975185@1] CMD_SUPPORT[2                                 [    6.975188@1] Rs   6.rj                                                                          [    011892@0] gc0308 0-0021: chip found @ 0x42 (aml_i2c_adap0) [    7.017473@0] 00648001 80LO1861<>{00&OݗҒ] 0100<0&L&707n070?0?x ' .>S] 00&0&0l0700                                                                                                                                                / .631684@0] 000?<0&L                                                                                                                                                                          [    ] ****************switch status**************** [    7  ¢] Data_Structi                                 [    7.047482@0] Max0 [    7.051670@0] Support0} : 0x8001    Busy[0] : 0x0 [    ] Support[1] : 0x8001     Busy[1] : 0x0 [      ] Support[2] : 0x8001    Busy{2 [      ʂ] Supp001      Bu                                       {    ¢] Supp҂001       Bus [    ] Support[5} : 0x8003     Busy[5] : 0x0 [    7  º] Function 0 [    7.082636@0] Fun0042                                                 rʢ] Functij                                                                           [    7.098260@0] Functij                                                                                                      [    7.098263@0] [    L] 006t8001H0>y8618>y861,7{00&)ºL²] 0100xn7H07x0007                                                                                                  / .313363@0] 00000&Lₘ000&070j                                                                                                                                             .LL] 0000<0&0}                                                                                                                                                                          [    L&] ****************switch stat*************** [    7)] Data_Structij                                 [    7.133935@0] Max_Current 100 [    7.138107@0] Support[0] : 0x8001    Busy[0] : 0x0 [    L] Suppor 0x8001       Bus [    )} S001  Bu [    )] Suppo 0x8001        Busy[ [    )] Support[4] : 0x8001     gc0308_init OK!!!! [    LS] amlogi camedri08L_JBu [    7)@0] Functij                           [    7.177682@0] Functij                                                      [    7.181606@0] [    L] ******** gc0308Jx                                                   [    Lª@0] Fu                                                                       [    7.193653@0] Funtj                                                                                                 [    7.197559@0] Functij                                                                                                                            [    7.201487@0] Func01 card is w and at 33MHz High Speed mode!                                                                                                                ! [    7.212162@0] [    &&S]  cardblksd cardbl                                    rj>] WIFI  Enable! [    &S] [    &S] SD/MMC initializatiхѕ..>>>
Ich bitte um hilfe.

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 02.04.2017 15:59:30

Ich komme um einen sogenannten UART Adapter nicht drum herum: http://m.ebay.de/sch/i.html?_nkw=uart&i ... t&sqp=uart allein der Quarz sollte schon einen sagen das dort was bedeutend anders gestrickt ist, werde mir das Teilkaufen und sehen wie es läuft. Ansonsten bin ich fertig mit den Teil.
schorsch_76 hat geschrieben:Du brauchst rx zu tx. :)
Logisch, aber hätte ich vorher mal sehen sollen, :THX: aber UART muss her, dauert dann halt bissl.


Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 09.04.2017 19:33:49

Das dmesg zeigt nur die Sachen vom kernel und nix von den Bootloader, aber immerhin gibt es ja etwas, ist dann die Kernel Konsole das dmesg. Wie bekomme ich jetzt meine Eingaben vom Computer zu den Tablet?? Geht einfach nicht mit minicom, wie geht das?

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 09.04.2017 21:57:30

So ich kann jetzt Befehle zu meinem Tablet senden:

Code: Alles auswählen

loady   - load binary file over serial line (ymodem mode)
loop    - infinite loop on address range
md      - memory display
mm      - memory modify (auto-incrementing address)
mmc     - MMC sub system
mmcinfo - display MMC info
msleep  - delay execution for some time
mtdparts- define flash/nand partitions
mtest   - simple RAM read/write test
mw      - memory write (fill)
nand    - NAND sub-system
nboot   - boot from NAND device
nm      - memory modify (constant address)
poweroff- system power off
printenv- print environment variables
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saradc  - saradc sub-system
saveenv - save environment variables to persistent storage
secukey - NAND KEY sub-system
set_axp_debug- set axp debug
set_chgcur- set battery charging current
set_led_ctrl- set axp chg led control
set_resume_flag_cmd- set battery charging resume flag
setenv  - set environment variables
showvar - print local hushshell variables
sleep   - delay execution for some time
source  - run script from memory
suspend - suspend
test    - minimal test like /bin/sh
tiny_usbtool- start tiny USB tool for PC burner
true    - do nothing, successfully
unpackimg- unpack imgpack to single
usb     - USB sub-system
usbbc   - test usb bc
usbboot - boot from USB device
version - print monitor, compiler and linker version
video   - video sub-system
m6_yifang#version

U-Boot 2011.03-00000-g019561f-dirty(m6_yifang@next) (Nov 24 2012 - 11:25:03)
arm-none-eabi-gcc (Sourcery G++ Lite 2010q1-188) 4.4.1
GNU ld (Sourcery G++ Lite 2010q1-188) 2.19.51.20090709
m6_yifang#
Wie sollen wir jetzt weiter machen? @schorsch_76

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 10.04.2017 07:40:41

uboot hat eine boot Environment. Sprich Umgegungsvariable welche das Standardverhalten konfigurieren.

Nächste Schritte wären:
  • Deinen eigenen Kernel mit dem bestehenden uboot zu booten. Sehen wo er hängt.
  • Den bestehenden Kernel evtl. auf eine Konsole booten zu lassen in einem Linux Userland. Hier bietet sich bsp. Buildroot [1] an um damit ein minimales Filesystem zu bauen. Wenn dann die Linux Konsole auf ttyS0 läuft, kannst du sehen ob du dann ein Framebuffer Device für xorg laufen lassen kannst.
  • Ein neues uboot bauen und den alten und den neuen Kernel mit damit booten. Die uboot Version ist 2011.03-00000-g019561f-dirty (beachte das dirty. Das könnte, nicht muss, darauf hindeuten dass es Änderungen gibt oder gab.
Uboot src:

Code: Alles auswählen

git clone git://git.denx.de/u-boot.git
git checkout g019561f
Du könntest auch mit einem aktuellen uboot testen. Seit 2011 sind hier sicher viele patches in Upstream (denx.de) gelandet ;)

Jeder dieser Versuche liefert Erkenntnisse. ;)
Die weiteren Punkte hängen von deinem endgültigen Ziel ab ;)


[1] https://buildroot.org/

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 10.04.2017 21:11:24

Ich bin froh das es Leute wie dich gibt die einen helfen, ich hätte nicht gedacht das ich schon soweit komme. Hatte damals noch angst mein Tablet zu bricken. ^^

Ich werde auf jeden Fall Linux auf das Tablet drauf machen. Am besten Debian und das erstmal bis zur Konsole mit den tty localhost login: :) Den Flash-Speicher möchte ich dann auch noch selber partitionieren. Ich frage mich eigentlich ob es möglich ist u-boot vom System her aufzurufen und zu konfigurieren/sehen?

Dann kommen ja noch die ganze init Scripte/Compilierte Programme. Mal sehen ob mein Kernel überhaupt starten will. (Also was der ausgibt). Der Bootloader hat ein eingebautes FAT32 Dateisystem (ist aber fake im normal Betrieb). Müsste den Bootloader auf der SD Karte incl. Fat32 Dateisystem und dort den Kernel drauf ablegen und via. U-boot laden. Kann den uImage_recovery nennen. Muss dann die leiser Taste + einschalt Taste drücken dann nimmt der sich das Image.

Den Android Weg möchte ich nicht gehen, da der Kernel die ganzen Android Sachen nicht hat, und möglicherweise nie haben wird.

arm-none-eabi-gcc für u-boot.

Learning by doing. So geht das.

Joe

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 11.04.2017 10:04:46

So habe mein Kernel jetzt auf der MicroSD Karte gemacht innerhalb des vorgegebenen FAT32 Dateisystem, aber nun:

Code: Alles auswählen

 sdio_detect return 1
Device: SDIO Port B
Manufacturer ID: 0
OEM: 0
Name: sTran Speed: 40000000
Rd Block Len: 512
SD version 2.0
High Capacity: Yes
Capacity: 16010706944
Bus Width: 4-bit
reading aml_autoscript

** Unable to read "aml_autoscript" from mmc 0:1 **
reading uImage_recovery

2984216 bytes read
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.0.8
   Image Type:   ARM Linux Kernel Image (lzma compressed)
   Data Size:    2984152 Bytes = 2.8 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
machid from environment: 0x4e3e 
EFUSE machid is not set.
Using machid 0x4e3e from environment

Starting kernel ...
Habe den Kernel zu uImage_recovery umbenannt von uImage. Dieser Fehler ist schwer zu deuten.

USB-Sticks gehen noch nicht:

Code: Alles auswählen

m6_yifang#usb start
(Re)start USB...
USB:   dwc_usb driver version: 2.94 6-June-2012
USB (0) peri reg base: c1108400
USB (0) use clock source: XTAL input
USB (0) PHY Clock not detected!
USB (0) base addr: 0xc9040000
Force id mode: Host
dwc_otg: No USB device found !
Error, couldn't init Lowlevel part
m6_yifang#
Ich habe hier jetzt mal einen funktionierenden Kernel mit Bildern (TWRP Recovery):

Code: Alles auswählen

reading aml_autoscript

** Unable to read "aml_autoscript" from mmc 0:1 **
reading uImage_recovery

5325612 bytes read
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   TWRP recovery by wanim
   Image Type:   ARM Linux Kernel Image (lzma compressed)
   Data Size:    5325548 Bytes = 5.1 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
machid from environment: 0x4e3e 
EFUSE machid is not set.
Using machid 0x4e3e from environment

Starting kernel ...

[    0.000000@0] Initializing cgroup subsys cpu
[    0.000000@0] Linux version 3.0.8-g1a7e752 (jianwang@midcs-desktop) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Tue May 21 15:34:16 CST 2013
[    0.000000@0] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c53c7f
Hier ist die "Vollversion": https://www.dropbox.com/s/3w0wbkxygky4r ... ootup?dl=0

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 11.04.2017 13:59:40

So um jetzt mit u-boot weiter zu machen habe ich mal einen Ordner hier eingerichtet: https://www.dropbox.com/sh/9lp0bu3iga8m ... BuSQa?dl=0

Dort sind alle wichtige Ausgaben. Falls noch mehr Infos gebraucht werden bitte Bescheid sagen. ? und help sind beide gleich. Alias = Deckname. Oder? Habe printenv auch beigefügt, werde das Shellscript? lesbarer schreiben. Und mit den kann ich u-boot beim Start ein Verhalten mitgeben, aber in wie weit? Das probiere ich aus.

Ich möchte ganz gerne mein Nand Chip TOSHIBA umpartitionieren, dort sind MTD Partitionen, wer ist dafür zuständig das die Partitionen erstellt werden/wurden? Kernel oder Bootloader?

Beim Kernel bekomme ich eine Shell und zwar /system/bin/sh -> meine das wars, also nix neues. Gibt sonst nichts das den Kernel iwie beeinflussen kann. Habe die Shell auch im Android System, btw wenn das Tablet kein Android OS hat gibt es die Shell@Grouper auch nicht. Also unnötig zurzeit.

Also mit setenv kann man neue Variabeln anlegen, und bei meinem Tablet gibt es ja kein LAN Anschluss deshalb bringt das mit dem Netzwerk booten nichts. Aber es gibt Leute die haben ein LAN auf USB Converter wie ich und können den evtl. dann als LAN benutzen. Aber usbboot soll gehen, tut es aber nicht. Ka warum genau. Bin mal weiter lesen.

Mit saveenv wird das dann gespeichert habe normal 16 MB und der bootloader ist 275KB

Joe

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 11.04.2017 15:10:27

In meinem fertig kompilierten Kernel Archiv gibt es auch so eine vmlinux Datei:
For example here is how I create a U-Boot image of the 2.4.18 kernel I compiled for my control module:

$ cd ${PRJROOT}/images
$ mkimage -n '2.4.18 Control Module' \
> -A ppc -O linux -T kernel -C gzip -a 00000000 -e 00000000 \
> -d vmlinux-2.4.18.gz vmlinux-2.4.18.img
Image Name: 2.4.18 Control Module
Created: Wed Feb 5 14:19:08 2003
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 530790 Bytes = 518.35 kB = 0.51 MB
Load Address: 0x00000000
Entry Point: 0x00000000
http://etutorials.org/Linux+systems/emb ... .5+U-Boot/
Nothing will be output after that, and there will be no responses to any input from the terminal. To solve the problem, you need to tell the newer version of U-Boot to keep passing the clock speed in MHz to the older kernels. This is done by setting the clocks_in_mhz environment variable to 1:
Irgend so ein Fehler wird es in der Art sein, den der Kernel lösst sich einfach nicht starten. Komisch.

http://etutorials.org/Linux+systems/emb ... .5+U-Boot/

Ich habe mit

Code: Alles auswählen

nand erase 1
denke den ganzen Flash Speicher gelöscht. Aber dann bin ich mit das Clockworkmod recovery von Android wieder rein, und anscheinend sind diese Bereiche nicht fest definiertalso diese Rahmen werden beim starten vom Kernel immer angelegt. Hatte auch im Kernel eine datei mit den Partitionsbereichen drinnen gefunden gehabt. mtdparts gibt nichts sinvolles aus


Mein Kernel fehlt die Ramdisk und somit die ganzen init Prozesse, richtig?

Dasnverstehe ich jetzt nicht. Kann mir jemand helfen?
Zuletzt geändert von Joe58 am 11.04.2017 17:14:35, insgesamt 1-mal geändert.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 11.04.2017 17:14:05

Die Partitionen in den mtd devices werden über ein Image erstellt das hier bei der Produktion rein geschrieben wird.
MTD ist ein ganz eigenes Thema.
https://en.wikipedia.org/wiki/Memory_Technology_Device
https://en.wikipedia.org/wiki/Linux_on_embedded_systems

Die Partitionen sind auch nicht wirklich wie du sie am PC kennst. Es sind offsets, die sagen wo was anfängt und aufhört.

Ein Kernel muss nicht unbedingt eine Ramdisk haben.Er muss die root Partiton lesen können (hier gibt es bsp. wenn nötig Unterstützung durch die Initramfs, dann ist eine ramdisk nötig). ABER: Soweit kommst du ja noch gar nicht....

Der Startprozess von uboot ist Boardabhängig. Unter Arm ist das nicht so spezifiziert wie unter x86(_64).

Dein aktutes Problem hab ich jetzt nicht verstanden... bootet dein eigener Kernel nicht? Oder ist das log im dropbox von deinem Kernel?

Joe58

Re: ARM32 3.0.8 Kernel

Beitrag von Joe58 » 11.04.2017 18:14:15

Mein jetziges Problem ist das mein Kernel nicht bootet:

Code: Alles auswählen

reading uImage_recovery // Hier lädt der sich mein Kernel von der micro sd Karte namens uImage_recovery

2984216 bytes read
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.0.8
   Image Type:   ARM Linux Kernel Image (lzma compressed)
   Data Size:    2984152 Bytes = 2.8 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK // schonmal gut das das auch funzt
   Uncompressing Kernel Image ... OK // schonmal gut das das überhaupt funktioniert
machid from environment: 0x4e3e // kenne ich nicht
EFUSE machid is not set. // kenne ich nicht
Using machid 0x4e3e from environment // kenne ich nicht

Starting kernel ... // jo hier müsste der genau das ausgeben was nach dem Start im dmesg ist, :(
Genau nach starting Kernel müsste der weiter die ganzen Sachen ausgeben die in dmesg sind, also so wie das zumindest die Android Kernel machen.

Das dmesg Log in meiner Dropbox ist folglich von den vorkompilierten Android Kernel (nnlynx) wo AOKP aufsetzt, will aber Linux drauf machen. :) Also nicht von meinem Kernel.

Also müsste mein selber kompilierter Kernel sowas in der Art ausgeben (und dann das ganze dmesg halt):

Code: Alles auswählen

<6>[    0.000000@0] Initializing cgroup subsys cpu
<5>[    0.000000@0] Linux version 3.0.8-g1a7e752 (jianwang@midcs-desktop) (gcc version 4.4.3 (GCC) ) #2 SMP PREEMPT Tue May 21 15:34:00 CST 2013
<4>[    0.000000@0] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c53c7f
<4>[    0.000000@0] CPU: VIPT nonaliasing data cache, VIPT aliasing instruction cache
Der gibt aber leider nichts aus.

Natürlich kann ich mir es nicht nehmen lassen die ganze u-boot shell zu inspizieren. Sowas wie

Code: Alles auswählen

video dev bl_off
macht die Hintergrund Beleuchtung aus, und der andere Befehl macht diese wieder an. Oder die video dev set_bl_level 20 setzt die Beleuchtung sehr niedrig, einfach wunderbar! :THX: Hoffe ich kann bald noch eigene Funktionen rein bauen.

Code: Alles auswählen

video dev test
das Display zeigt was an, wow. Das ist cool. Ich mag u-boot.

Bin mal weiter u-boot Dokumentation lesen, und ausprobieren. Hoffentlich bekommen wir mein selbst kompilierten Kernel gebootet.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: ARM32 3.0.8 Kernel

Beitrag von schorsch_76 » 11.04.2017 19:27:11

Bei

Code: Alles auswählen

Starting kernel ... // jo hier müsste der genau das ausgeben was nach dem Start im dmesg ist, :(
hat uboot also den Kernel geladen und ist dort hingesprungen.

Vermutich fehlt was auf der cmdline.

Poste doch mal die Ausgabe von

Code: Alles auswählen

printenv

Antworten