Linux kernel compilen voor powerpc

Pagina: 1
Acties:

  • DizzyVacation
  • Registratie: November 2006
  • Niet online
Ik ben hier bezig met het compilen van een linux kernel voor een powerpc (MPC5200).

Nu heb ik met buildroot een toolchain en een rootfs gemaakt, ik heb de default config gebruikt waarvan ik alleen de ' Target Architecture' en de ' Target Architecture Variant' heb aangepast naar powerpc, 603e. Dit compiled allemaal zonder fouten.

Hierna heb ik een nieuwe linux kernel source gedownload en een Real Time linux patch.
Uitpakken, patchen, makefile aanpassen voor cross compiler.
Als config gebruik ik de meegeleverde MPC5200_defconfig, waarvan ik alleen de real time opties aanpas en de can-bus support aanzet.
'make uImage' uitvoeren, tot zover gaat alles zonder fouten.

Nu draait er op de powerpc de bootloader U-boot.
Hiermee heb ik met succes een meegeleverd linux systeempje kunne booten.
Maar als ik nu mijn kernel probeer te booten krijg ik even helemaal niks te zien en reboot het systeem ineens.

De meegeleverde kernel word wel met een 'Flattened Device Tree' geboot, maar als ik deze aan mijn kernel meegeef doet hij nog precies hetzelfde.

Ik heb helaas (nog) geen info over hoe de meegeleverde kernel gecompiled is.

Wat gaat/doe ik hier verkeerd?
Ik heb al veel gezocht, maar heb enige wat ik tegenkom zijn problemen waar de kernel al berichten geeft.

Alvast bedankt

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 02-12-2025

daft_dutch

>.< >.< >.< >.<

source downloaden en de config van boot naar .config kopieren.
dat zou het zelfde moeten geven

>.< >.< >.< >.<


  • Kosh66
  • Registratie: Oktober 2002
  • Laatst online: 25-12-2025
Hopelijk heb je geen last van onderstaande:

Even sprekende vanuit een situatie die ik onlangs meemaakte na een standaard linux x86-kernel upgrade... Na de reboot zag ik een mooie grub bootloader en toen niets meer....! 8)7
Na enig zoeken bleek dat o.a. de initrd-file een attribute van 600 had meegekregen i.p.v. 644. Na dit gecorrigeerd te hebben werkte het weer. 8)

  • DizzyVacation
  • Registratie: November 2006
  • Niet online
@daft_dutch
Ik heb geen .config file van de meegeleverde kernel, dus dat zal niet gaan.

@Kosh66
Ik maak geen gebruik van een initrd file. Dus daar zal het niet aan liggen.

  • ph0t0nix
  • Registratie: December 2006
  • Laatst online: 27-01 01:06
Aangezien de kernel GPL is, zou je de source moeten kunnen downloaden. De vraag is wel of de .config bij de source hoort of niet.
Als de kernel gecompileerd is met de CONFIG_IKCONFIG optie, dan kun je de config in het draaiende systeem vinden in de file /proc/config.gz.

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:56

Super_ik

haklust!

probeer deze toolchain eens om de kernel te compilen: ftp://mirror.switch.ch/mi...86/iso/ppc-2008-04-01.iso

hier staat hoe je 'm moet installeren/gebruiken http://www.denx.de/wiki/DULG/ELDK

van de meegeleverde kernel moet je een config file hebben gekregen, speciaal voor jou bordje, probeer die eerst eens te compilen, zonder aan de opties te zitten. compile ook je fdt mee.

* Super_ik doet dagelijks niets anders dan kernels op ppc bordjes laten draaien :)

[ Voor 8% gewijzigd door Super_ik op 16-09-2008 10:19 ]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

ph0t0nix schreef op dinsdag 16 september 2008 @ 10:09:
Aangezien de kernel GPL is, zou je de source moeten kunnen downloaden. De vraag is wel of de .config bij de source hoort of niet.
Dat is geen relevante vraag, de verplichting van de fabrikant is namelijk niet dat hij de sources moet leveren, maar alle middelen die jou in staat stellen het binaire product wat je hebt gekregen (kwa functionaliteit) na te maken. Dus ook buildscripts e.d., maar dan weer geen compiler.

It sounds like it could be either bad hardware or software


  • DizzyVacation
  • Registratie: November 2006
  • Niet online
Super_ik schreef op dinsdag 16 september 2008 @ 10:18:
probeer deze toolchain eens om de kernel te compilen: ftp://mirror.switch.ch/mi...86/iso/ppc-2008-04-01.iso

hier staat hoe je 'm moet installeren/gebruiken http://www.denx.de/wiki/DULG/ELDK

van de meegeleverde kernel moet je een config file hebben gekregen, speciaal voor jou bordje, probeer die eerst eens te compilen, zonder aan de opties te zitten. compile ook je fdt mee.

* Super_ik doet dagelijks niets anders dan kernels op ppc bordjes laten draaien :)
Ik heb het nu ook met de ELDK geprobeerd, maar blijft precies hetzelfde probleem.
De fdt heb ik ook gecompiled met 'make lite5200b.dtb', als ik deze erbij laad werkt hij nog niet.
Ook niet als ik de dtb gebruik die samen met de meegeleverde kernel werkte gebruik.

De .config file kan ik zo niet aankomen, het gaat hier om een zelfgemaakt bordje voor intern gebruik. Er word gewerkt aan een verbinding met het systeem waar alle documentatie over dit bordje staat. Tot dan zal ik zelf moeten prutsen.

[ Voor 3% gewijzigd door DizzyVacation op 16-09-2008 11:57 ]


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:56

Super_ik

haklust!

op welk adres laad je je kernel? via tftp neem ik aan?

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • DizzyVacation
  • Registratie: November 2006
  • Niet online
Ik laad mijn kernel idd via tftp, hij word geladen naar adres 0x200000

[ Voor 14% gewijzigd door DizzyVacation op 16-09-2008 19:35 ]


  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 09:56

Super_ik

haklust!

print ie wel 'uncompressing kernel... ok' ?

doe eens grep __log_buf System.map in je kernel dir, haal die voorste c eraf
dan nadat je board is gereboot, doe je in u-boot md.b dat adres, zonder die c. als het goed is zie je dan je kernel log buffer. mischien kan je hier iets uithalen.

mischien had je andere kernel een ingebakken bootargs lijn, wat geef jij mee in u-boot?

post eens een 'printenv' van u-boot.
En post eens wat jij allemaal in u-boot doet om je kernel te booten.

[ Voor 7% gewijzigd door Super_ik op 16-09-2008 22:36 ]

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


  • DizzyVacation
  • Registratie: November 2006
  • Niet online
Hij print iig wel 'uncompressing kernel... ok' met eventueel er nog onder 'Booting using flat device tree at <adres>'.

Die manier van die kernel log buffer later nog eens proberen.

Verder geef ik als bootargs het volgende mee in U-boot: 'console=ttyPSC0,115200', ook nog wat voor de nfs-root, maar dat maakt hier nog niks uit.

=> printenv
baudrate=115200
preboot=echo;echo Type "run boot_nfs" to mount root filesystem over NFS;echo
netdev=eth0
hostname=mac4
ethact=FEC ETHERNET
update=prot off 1:0-3; era 1:0-3; cp.b $(fileaddr) ff000000 $(filesize);prot on 1:0-3
clearenv=prot off 1:4; era 1:4; prot on 1:4
load=tftp $(offset) $(u-boot)
u-boot=mac4/u-boot.bin
offset=0x200000
boot_cf=fatload ide 0:1 $(offset) autoscr.cf.scr; autoscr $(offset)
boot_flash=fsload $(offset) boot/autoscr.flash.scr; autoscr $(offset)
boot_nfs=tftpboot $(offset) mac4/autoscr.scr; autoscr $(offset)
gateway=10.100.254.254
bootdelay=5
autostart=no
bootfile=System4.0
filesize=3ca2
fileaddr=200000
gatewayip=10.1.28.1
netmask=255.255.255.0
ipaddr=10.1.28.25
serverip=10.1.28.20
bootcmd=dhcp; setenv serverip $(tftpserver); tftpboot $(offset) bootscript; autoscr $(offset)
tftpserver=10.1.28.24
ethaddr=00:e0:ee:00:33:94
b_type=V38
b_rev=D
serial#=c65e700011542291
stdin=serial
stdout=serial
stderr=serial

Voor het booten gebruik ik 'run bargs_base bargs_nfs; tftpboot $(offset) $(uimage); tftp 0x400000 $(oftree); bootm $(offset) - 0x400000', deze staat met een paar andere regels in de file bootscript.

bargs_base zet bootargs met de console= waarde,
bargs_nfs plakt hier nog wat nfs dingen aan toe

edit:

Ok, zojuist die kernel buffer methode eens geprobeerd.

In mn kernel source map:
# grep __log_buf System.map
c0353fc4 b __log_buf

Nadat het systeem automatisch is gereset doe ik dit:
=> md.b 0353fc4
00353fc4: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00353fd4: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00353fe4: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00353ff4: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

Zo te zien doet hij hier ook niks.
Volgens mij boot die kernel gewoon helemaal niet, maar waardoor?

[ Voor 17% gewijzigd door DizzyVacation op 18-09-2008 16:14 ]


  • DizzyVacation
  • Registratie: November 2006
  • Niet online
Ik heb net ook nog geprobeerd dezelfde kernel versie als de meegeleverde kernel te compilen.
Hierbij het ik uiteraard de .config file van de meegeleverde kernel geprobeerd (heb ik gevonden nu).

Maar deze boot ook niet, dus of ik mis een of andere patch of ik compile niet op de juiste manier.
Pagina: 1