From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n76.bullet.mail.sp1.yahoo.com (n76.bullet.mail.sp1.yahoo.com [98.136.44.48]) by ozlabs.org (Postfix) with SMTP id CC220DE32A for ; Thu, 21 Aug 2008 09:30:37 +1000 (EST) Date: Wed, 20 Aug 2008 16:24:46 -0700 (PDT) From: Laxmikant Rashinkar Subject: porting linux 2.6.27 to embedded powerpc board To: linuxppc-embedded@ozlabs.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-1932266656-1219274686=:49343" Message-ID: <424724.49343.qm@web46312.mail.sp1.yahoo.com> List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-1932266656-1219274686=:49343 Content-Type: text/plain; charset=us-ascii Hi, I have an embedded PowerPC (MPC8347) board that works fine with uboot and Linux 2.6.15. I am trying to upgrade the kernel so that it runs on the latest release - Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, but of course it does not boot. Things have changed drastically since 2.6.15 and the porting methodology used back then is obsolete now. Progress is a good thing :-) I have googled for info on how to accomplish this port but have found nothing so far. In particular, the fact that I am using uboot instead of open firmware makes the task a bit more daunting. The file Documentation/powerpc/booting-without-of.txt gives some info on the flattened device tree and and at the end of the "board support" section it states "I will describe later the boot process and various callbacks that your platform should implement." but that description is not part of the document. I am wondering where I can find more info that will help me accomplish this port. thanks a lot for your help. L.K --0-1932266656-1219274686=:49343 Content-Type: text/html; charset=us-ascii
Hi,

I have an embedded PowerPC (MPC8347) board that works fine with uboot and Linux 2.6.15.

I am trying to upgrade the kernel so that it runs on the latest release - Linux 2.6.27.
So far, I have gotten the kernel to compile on my platform, but of course it does not boot.

Things have changed drastically since 2.6.15 and the porting methodology used back then is obsolete now. Progress is a good thing :-) I have googled for info on how to accomplish this port but have found nothing so far. In particular, the fact that I am using uboot instead of open firmware makes the task a bit more daunting.

The file Documentation/powerpc/booting-without-of.txt gives some info on the flattened device tree and and at the end of the "board support" section it states "I will describe later the boot process and various callbacks that your platform should implement." but that description is not  part of the document.

I am wondering where I can find more info that will help me accomplish this port.

thanks a lot for your help.
L.K



--0-1932266656-1219274686=:49343-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from protonic.prtnl (protonic.xs4all.nl [213.84.116.84]) by ozlabs.org (Postfix) with ESMTP id 7492DDE42B for ; Thu, 21 Aug 2008 20:14:27 +1000 (EST) From: David Jander To: linuxppc-embedded@ozlabs.org Subject: Re: porting linux 2.6.27 to embedded powerpc board Date: Thu, 21 Aug 2008 11:43:45 +0200 References: <424724.49343.qm@web46312.mail.sp1.yahoo.com> In-Reply-To: <424724.49343.qm@web46312.mail.sp1.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Message-Id: <200808211143.45782.david.jander@protonic.nl> Cc: Laxmikant Rashinkar List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: > Hi, > > I have an embedded PowerPC (MPC8347) board that works fine with uboot and > Linux 2.6.15. > > I am trying to upgrade the kernel so that it runs on the latest release - > Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, > but of course it does not boot. Well, honestly I don't know where to look for information either (other than the source-code and examples from others), but here is a list with points to look out for (I have just done the same thing as you for a MPC5200B-based board): 1. Upgrade to latest u-boot first (recent git seems to be fine). There have been a lot of changes in u-boot lately about OF and device-tree related things. I suspect you need a fairly recent version of u-boot to go well with the latest kernel. It's also generally a good idea IMHO. 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back in 2.6.15 is obsolete and broken now). 3. Look at other platforms that use the same processor, and pick a simple one as starting point. Look out for the dts (device-tree-source file in arch/powerpc/boot/dts), copy and modify one to reflect your hardware. Recently a lot of changes happend in the kernel, changing device names, obsoleting "device-type" tags, etc..., so some of the current DTS sources included in the kernel might not even work (wrong device name, missing information, wrong use of "device-type", etc...), so watch out for these kind of issues too. 4. Be sure that the device(s) necessary to produce output on your console are correctly placed in the DT. Also make sure that u-boot knows about it (#define OF_STDOUT_PATH... in your u-boot board config file) 5. When compiling the device tree, it may be necessary to add some extra reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which might be slightly exaggerated), because u-boot may add something to it, and if it can't, linux won't boot. 6. Remember to always specify the "rootfstype=" option on the commandline if booting from anything other than NFS. This was not necessary back in the 2.6.15-times AFAICR. 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", don't forget the dash if you are not using an initrd). If you don't do this, u-boot can't fix your DT, and the kernel probably won't find it either. 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The command used to compile, should probably be something like this: $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 dts/myplatform.dts Load the resulting .dtb file directly with u-boot (don't make an u-image out of it). That's all I remember right now... hope it helps. Regards, -- David Jander From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-gx0-f21.google.com (mail-gx0-f21.google.com [209.85.217.21]) by ozlabs.org (Postfix) with ESMTP id 9E68EDEF30 for ; Fri, 22 Aug 2008 00:52:38 +1000 (EST) Received: by gxk14 with SMTP id 14so123200gxk.9 for ; Thu, 21 Aug 2008 07:52:36 -0700 (PDT) Message-ID: Date: Thu, 21 Aug 2008 08:52:36 -0600 From: "Grant Likely" Sender: glikely@secretlab.ca To: "David Jander" , devicetree-discuss@ozlabs.org Subject: Re: porting linux 2.6.27 to embedded powerpc board In-Reply-To: <200808211143.45782.david.jander@protonic.nl> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 References: <424724.49343.qm@web46312.mail.sp1.yahoo.com> <200808211143.45782.david.jander@protonic.nl> Cc: Laxmikant Rashinkar , linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Thu, Aug 21, 2008 at 3:43 AM, David Jander wrote: > On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: >> Hi, >> >> I have an embedded PowerPC (MPC8347) board that works fine with uboot and >> Linux 2.6.15. >> >> I am trying to upgrade the kernel so that it runs on the latest release - >> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, >> but of course it does not boot. > > Well, honestly I don't know where to look for information either (other than > the source-code and examples from others), but here is a list with points to > look out for (I have just done the same thing as you for a MPC5200B-based > board): > > 1. Upgrade to latest u-boot first (recent git seems to be fine). There have > been a lot of changes in u-boot lately about OF and device-tree related > things. I suspect you need a fairly recent version of u-boot to go well with > the latest kernel. It's also generally a good idea IMHO. You don't *have* to do this though. There is a target called 'cuImage.' which will embed the device tree blob in the kernel image and is backwards compatible with older u-boot versions. See arch/powerpc/boot/Makefile and arch/powerpc/boot/wrapper to see how this is generated. There is a new document that might help in Documentation/powerpc/bootwrapper.txt > 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back in > 2.6.15 is obsolete and broken now). Not just broken; completely removed! :-) > 3. Look at other platforms that use the same processor, and pick a simple one > as starting point. Look out for the dts (device-tree-source file in > arch/powerpc/boot/dts), copy and modify one to reflect your hardware. > Recently a lot of changes happend in the kernel, changing device names, > obsoleting "device-type" tags, etc..., so some of the current DTS sources > included in the kernel might not even work (wrong device name, missing > information, wrong use of "device-type", etc...), so watch out for these kind > of issues too. The goal is *not* to break existing device trees because we do not know what has been deployed already and it some cases it is not feasible to update the device tree on a device. So, even though conventions have been refined and changed, backwards compatibility with older trees is supposed to be preserved. 3b. Once you've written your device tree, post it to the devicetree-discuss@ozlabs.org mailing list and ask for review. > 4. Be sure that the device(s) necessary to produce output on your console are > correctly placed in the DT. Also make sure that u-boot knows about it > (#define OF_STDOUT_PATH... in your u-boot board config file) > > 5. When compiling the device tree, it may be necessary to add some extra > reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which > might be slightly exaggerated), because u-boot may add something to it, and > if it can't, linux won't boot. > > 6. Remember to always specify the "rootfstype=" option on the commandline if > booting from anything other than NFS. This was not necessary back in the > 2.6.15-times AFAICR. > > 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", > don't forget the dash if you are not using an initrd). If you don't do this, > u-boot can't fix your DT, and the kernel probably won't find it either. > > 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel > (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The > command used to compile, should probably be something like this: > > $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 dts/myplatform.dts There is a makefile target now to help you with this and pass the right options for reserving entries: $ make myplatform.dtb The dtb image will appear in arch/powerpc/boot > Load the resulting .dtb file directly with u-boot (don't make an u-image out > of it). > > That's all I remember right now... hope it helps. > > Regards, > > -- > David Jander > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from az33egw02.freescale.net (az33egw02.freescale.net [192.88.158.103]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "az33egw02.freescale.net", Issuer "Thawte Premium Server CA" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 86E1DDEF5B for ; Fri, 22 Aug 2008 02:58:49 +1000 (EST) Message-ID: <48AD93E7.5010304@freescale.com> Date: Thu, 21 Aug 2008 11:12:23 -0500 From: Scott Wood MIME-Version: 1.0 To: David Jander Subject: Re: porting linux 2.6.27 to embedded powerpc board References: <424724.49343.qm@web46312.mail.sp1.yahoo.com> <200808211143.45782.david.jander@protonic.nl> In-Reply-To: <200808211143.45782.david.jander@protonic.nl> Content-Type: text/plain; charset=UTF-8; format=flowed Cc: Laxmikant Rashinkar , linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , David Jander wrote: > 4. Be sure that the device(s) necessary to produce output on your console are > correctly placed in the DT. Also make sure that u-boot knows about it > (#define OF_STDOUT_PATH... in your u-boot board config file) OF_STDOUT_PATH is deprecated; you should enable CONFIG_OF_SERIAL_VIA_ALIAS, and provide aliases in the device tree for serial0, serial1, etc. > 6. Remember to always specify the "rootfstype=" option on the commandline if > booting from anything other than NFS. This was not necessary back in the > 2.6.15-times AFAICR. It still should not be necessary. > 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", > don't forget the dash if you are not using an initrd). If you don't do this, > u-boot can't fix your DT, and the kernel probably won't find it either. s/probably/definitely/ > 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel > (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The > command used to compile, should probably be something like this: Or just use the most recent DTC. -Scott From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n78.bullet.mail.sp1.yahoo.com (n78.bullet.mail.sp1.yahoo.com [98.136.44.42]) by ozlabs.org (Postfix) with SMTP id 689AFDE7BB for ; Fri, 22 Aug 2008 07:12:16 +1000 (EST) Date: Thu, 21 Aug 2008 14:12:15 -0700 (PDT) From: Laxmikant Rashinkar Subject: Re: porting linux 2.6.27 to embedded powerpc board To: Scott Wood , David Jander MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-701845607-1219353135=:22152" Message-ID: <750378.22152.qm@web46310.mail.sp1.yahoo.com> Cc: linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-701845607-1219353135=:22152 Content-Type: text/plain; charset=us-ascii Just wanted to thank all of you for the detailed feedback and suggestions. I am going to try them out now and keep my fingers crossed. thanks again LK ----- Original Message ---- From: Scott Wood To: David Jander Cc: linuxppc-embedded@ozlabs.org; Laxmikant Rashinkar Sent: Thursday, August 21, 2008 9:12:23 AM Subject: Re: porting linux 2.6.27 to embedded powerpc board David Jander wrote: > 4. Be sure that the device(s) necessary to produce output on your console are > correctly placed in the DT. Also make sure that u-boot knows about it > (#define OF_STDOUT_PATH... in your u-boot board config file) OF_STDOUT_PATH is deprecated; you should enable CONFIG_OF_SERIAL_VIA_ALIAS, and provide aliases in the device tree for serial0, serial1, etc. > 6. Remember to always specify the "rootfstype=" option on the commandline if > booting from anything other than NFS. This was not necessary back in the > 2.6.15-times AFAICR. It still should not be necessary. > 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", > don't forget the dash if you are not using an initrd). If you don't do this, > u-boot can't fix your DT, and the kernel probably won't find it either. s/probably/definitely/ > 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel > (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The > command used to compile, should probably be something like this: Or just use the most recent DTC. -Scott --0-701845607-1219353135=:22152 Content-Type: text/html; charset=us-ascii
Just wanted to thank all of you for the detailed feedback and suggestions.
I am going to try them out now and keep my fingers crossed.

thanks again
LK

----- Original Message ----
From: Scott Wood <scottwood@freescale.com>
To: David Jander <david.jander@protonic.nl>
Cc: linuxppc-embedded@ozlabs.org; Laxmikant Rashinkar <lk.atwork@yahoo.com>
Sent: Thursday, August 21, 2008 9:12:23 AM
Subject: Re: porting linux 2.6.27 to embedded powerpc board

David Jander wrote:
> 4. Be sure that the device(s) necessary to produce output on your console are
> correctly placed in the DT. Also make sure that u-boot knows about it
> (#define OF_STDOUT_PATH... in your u-boot board config file)

OF_STDOUT_PATH is deprecated; you should enable
CONFIG_OF_SERIAL_VIA_ALIAS, and provide aliases in the device tree for
serial0, serial1, etc.

> 6. Remember to always specify the "rootfstype=" option on the commandline if
> booting from anything other than NFS. This was not necessary back in the
> 2.6.15-times AFAICR.

It still should not be necessary.

> 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb",
> don't forget the dash if you are not using an initrd). If you don't do this,
> u-boot can't fix your DT, and the kernel probably won't find it either.

s/probably/definitely/

> 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel
> (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The
> command used to compile, should probably be something like this:

Or just use the most recent DTC.

-Scott


--0-701845607-1219353135=:22152-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n75.bullet.mail.sp1.yahoo.com (n75.bullet.mail.sp1.yahoo.com [98.136.44.51]) by ozlabs.org (Postfix) with SMTP id 69558DE744 for ; Sat, 23 Aug 2008 04:27:32 +1000 (EST) Date: Fri, 22 Aug 2008 11:26:20 -0700 (PDT) From: Laxmikant Rashinkar Subject: Re: porting linux 2.6.27 to embedded powerpc board To: linuxppc-embedded@ozlabs.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-79516427-1219429580=:39935" Message-ID: <484406.39935.qm@web46302.mail.sp1.yahoo.com> List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-79516427-1219429580=:39935 Content-Type: text/plain; charset=us-ascii Hi, I still haven't gotten anything to work :-( I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm using cuImage. The args to dtc are as listed by David Jander My cmd line args are: setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600 ramdisk_size=65536 When I attempt to boot my image it just hangs w/o any output. I dearly wish I could get some console output. Here is the actual display from uboot: ## Booting image at 00800000 ... Image Name: Linux-2.6.27-rc2 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 1640425 Bytes = 1.6 MB Load Address: 00400000 Entry Point: 0040055c Verifying Checksum ... OK Uncompressing Kernel Image ... OK ## Loading RAMDisk Image at 01000000 ... Image Name: flash_root.ext3.gz Image Type: PowerPC Linux RAMDisk Image (gzip compressed) Data Size: 13450106 Bytes = 12.8 MB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK Two questions: 1) the load address and entry point for the kernel (see above) are non-zero. When we load via uImage, they are always zero. Is this normal? dtc has not options to set the load address and entry point. 2) When I build my kernel, I get two warnings. Could these be causing a problem? WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from the variable contig_page_data to the variable .init.data:bootmem_node_data The variable contig_page_data references the variable __initdata bootmem_node_data If the reference is valid then annotate the variable with __init* (see linux/init.h) or name the variable: *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, MODPOST vmlinux.o WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the variable contig_page_data to the variable .init.data:bootmem_node_data The variable contig_page_data references the variable __initdata bootmem_node_data If the reference is valid then annotate the variable with __init* (see linux/init.h) or name the variable: *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, thanks so much for your help. LK ----- Original Message ---- From: David Jander To: linuxppc-embedded@ozlabs.org Cc: Laxmikant Rashinkar Sent: Thursday, August 21, 2008 2:43:45 AM Subject: Re: porting linux 2.6.27 to embedded powerpc board On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: > Hi, > > I have an embedded PowerPC (MPC8347) board that works fine with uboot and > Linux 2.6.15. > > I am trying to upgrade the kernel so that it runs on the latest release - > Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, > but of course it does not boot. Well, honestly I don't know where to look for information either (other than the source-code and examples from others), but here is a list with points to look out for (I have just done the same thing as you for a MPC5200B-based board): 1. Upgrade to latest u-boot first (recent git seems to be fine). There have been a lot of changes in u-boot lately about OF and device-tree related things. I suspect you need a fairly recent version of u-boot to go well with the latest kernel. It's also generally a good idea IMHO. 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back in 2.6.15 is obsolete and broken now). 3. Look at other platforms that use the same processor, and pick a simple one as starting point. Look out for the dts (device-tree-source file in arch/powerpc/boot/dts), copy and modify one to reflect your hardware. Recently a lot of changes happend in the kernel, changing device names, obsoleting "device-type" tags, etc..., so some of the current DTS sources included in the kernel might not even work (wrong device name, missing information, wrong use of "device-type", etc...), so watch out for these kind of issues too. 4. Be sure that the device(s) necessary to produce output on your console are correctly placed in the DT. Also make sure that u-boot knows about it (#define OF_STDOUT_PATH... in your u-boot board config file) 5. When compiling the device tree, it may be necessary to add some extra reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which might be slightly exaggerated), because u-boot may add something to it, and if it can't, linux won't boot. 6. Remember to always specify the "rootfstype=" option on the commandline if booting from anything other than NFS. This was not necessary back in the 2.6.15-times AFAICR. 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", don't forget the dash if you are not using an initrd). If you don't do this, u-boot can't fix your DT, and the kernel probably won't find it either. 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The command used to compile, should probably be something like this: $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 dts/myplatform.dts Load the resulting .dtb file directly with u-boot (don't make an u-image out of it). That's all I remember right now... hope it helps. Regards, -- David Jander --0-79516427-1219429580=:39935 Content-Type: text/html; charset=us-ascii
Hi,

I still haven't gotten anything to work :-(

I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm using cuImage.<myboard>
The args to dtc are as listed by David Jander

My cmd line args are:
setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600 ramdisk_size=65536

When I attempt to boot my image it just hangs w/o any output. I dearly wish I could get some console output.
Here is the actual display from uboot:

## Booting image at 00800000 ...
   Image Name:   Linux-2.6.27-rc2
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1640425 Bytes =  1.6 MB
   Load Address: 00400000
   Entry Point:  0040055c
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
## Loading RAMDisk Image at 01000000 ...
   Image Name:   flash_root.ext3.gz
   Image Type:   PowerPC Linux RAMDisk Image (gzip compressed)
   Data Size:    13450106 Bytes = 12.8 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK

Two questions:

1) the load address and entry point for the kernel (see above) are non-zero. When we load via uImage, they are always zero. Is this normal? dtc has not options to set the load address and entry point.

2) When I build my kernel, I get two warnings. Could these be causing a problem?

WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from the variable contig_page_data to the variable .init.data:bootmem_node_data
The variable contig_page_data references
the variable __initdata bootmem_node_data
If the reference is valid then annotate the
variable with __init* (see linux/init.h) or name the variable:
*driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,


  MODPOST vmlinux.o
WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the variable contig_page_data to the variable .init.data:bootmem_node_data
The variable contig_page_data references
the variable __initdata bootmem_node_data
If the reference is valid then annotate the
variable with __init* (see linux/init.h) or name the variable:
*driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,

thanks so much for your help.

LK

----- Original Message ----
From: David Jander <david.jander@protonic.nl>
To: linuxppc-embedded@ozlabs.org
Cc: Laxmikant Rashinkar <lk.atwork@yahoo.com>
Sent: Thursday, August 21, 2008 2:43:45 AM
Subject: Re: porting linux 2.6.27 to embedded powerpc board

On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote:
> Hi,
>
> I have an embedded PowerPC (MPC8347) board that works fine with uboot and
> Linux 2.6.15.
>
> I am trying to upgrade the kernel so that it runs on the latest release -
> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform,
> but of course it does not boot.

Well, honestly I don't know where to look for information either (other than
the source-code and examples from others), but here is a list with points to
look out for (I have just done the same thing as you for a MPC5200B-based
board):

1. Upgrade to latest u-boot first (recent git seems to be fine). There have
been a lot of changes in u-boot lately about OF and device-tree related
things. I suspect you need a fairly recent version of u-boot to go well with
the latest kernel. It's also generally a good idea IMHO.

2. I assume you are porting to arch/powerpc (the old arch/ppc you used back in
2.6.15 is obsolete and broken now).

3. Look at other platforms that use the same processor, and pick a simple one
as starting point. Look out for the dts (device-tree-source file in
arch/powerpc/boot/dts), copy and modify one to reflect your hardware.
Recently a lot of changes happend in the kernel, changing device names,
obsoleting "device-type" tags, etc..., so some of the current DTS sources
included in the kernel might not even work (wrong device name, missing
information, wrong use of "device-type", etc...), so watch out for these kind
of issues too.

4. Be sure that the device(s) necessary to produce output on your console are
correctly placed in the DT. Also make sure that u-boot knows about it
(#define OF_STDOUT_PATH... in your u-boot board config file)

5. When compiling the device tree, it may be necessary to add some extra
reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which
might be slightly exaggerated), because u-boot may add something to it, and
if it can't, linux won't boot.

6. Remember to always specify the "rootfstype=" option on the commandline if
booting from anything other than NFS. This was not necessary back in the
2.6.15-times AFAICR.

7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb",
don't forget the dash if you are not using an initrd). If you don't do this,
u-boot can't fix your DT, and the kernel probably won't find it either.

8. Be sure to use the correct version of the DTC (DT compiler) for your kernel
(the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The
command used to compile, should probably be something like this:

$ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 dts/myplatform.dts

Load the resulting .dtb file directly with u-boot (don't make an u-image out
of it).

That's all I remember right now... hope it helps.

Regards,

--
David Jander

--0-79516427-1219429580=:39935-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-gx0-f21.google.com (mail-gx0-f21.google.com [209.85.217.21]) by ozlabs.org (Postfix) with ESMTP id 0EA34DE919 for ; Sat, 23 Aug 2008 05:45:56 +1000 (EST) Received: by gxk14 with SMTP id 14so1411828gxk.9 for ; Fri, 22 Aug 2008 12:45:54 -0700 (PDT) Message-ID: Date: Fri, 22 Aug 2008 13:45:54 -0600 From: "Grant Likely" Sender: glikely@secretlab.ca To: "Laxmikant Rashinkar" Subject: Re: porting linux 2.6.27 to embedded powerpc board In-Reply-To: <484406.39935.qm@web46302.mail.sp1.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 References: <484406.39935.qm@web46302.mail.sp1.yahoo.com> Cc: linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Fri, Aug 22, 2008 at 12:26 PM, Laxmikant Rashinkar wrote: > Hi, > > I still haven't gotten anything to work :-( > > I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm > using cuImage. > The args to dtc are as listed by David Jander Please post you .dts file and the filename you are using for it. g. > > My cmd line args are: > setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600 > ramdisk_size=65536 > > When I attempt to boot my image it just hangs w/o any output. I dearly wish > I could get some console output. > Here is the actual display from uboot: > > ## Booting image at 00800000 ... > Image Name: Linux-2.6.27-rc2 > Image Type: PowerPC Linux Kernel Image (gzip compressed) > Data Size: 1640425 Bytes = 1.6 MB > Load Address: 00400000 > Entry Point: 0040055c > Verifying Checksum ... OK > Uncompressing Kernel Image ... OK > ## Loading RAMDisk Image at 01000000 ... > Image Name: flash_root.ext3.gz > Image Type: PowerPC Linux RAMDisk Image (gzip compressed) > Data Size: 13450106 Bytes = 12.8 MB > Load Address: 00000000 > Entry Point: 00000000 > Verifying Checksum ... OK > Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK > > Two questions: > > 1) the load address and entry point for the kernel (see above) are non-zero. > When we load via uImage, they are always zero. Is this normal? dtc has not > options to set the load address and entry point. > > 2) When I build my kernel, I get two warnings. Could these be causing a > problem? > > WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from the > variable contig_page_data to the variable .init.data:bootmem_node_data > The variable contig_page_data references > the variable __initdata bootmem_node_data > If the reference is valid then annotate the > variable with __init* (see linux/init.h) or name the variable: > *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, > > > MODPOST vmlinux.o > WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the > variable contig_page_data to the variable .init.data:bootmem_node_data > The variable contig_page_data references > the variable __initdata bootmem_node_data > If the reference is valid then annotate the > variable with __init* (see linux/init.h) or name the variable: > *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, > > thanks so much for your help. > > LK > > ----- Original Message ---- > From: David Jander > To: linuxppc-embedded@ozlabs.org > Cc: Laxmikant Rashinkar > Sent: Thursday, August 21, 2008 2:43:45 AM > Subject: Re: porting linux 2.6.27 to embedded powerpc board > > On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: >> Hi, >> >> I have an embedded PowerPC (MPC8347) board that works fine with uboot and >> Linux 2.6.15. >> >> I am trying to upgrade the kernel so that it runs on the latest release - >> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, >> but of course it does not boot. > > Well, honestly I don't know where to look for information either (other than > the source-code and examples from others), but here is a list with points to > look out for (I have just done the same thing as you for a MPC5200B-based > board): > > 1. Upgrade to latest u-boot first (recent git seems to be fine). There have > been a lot of changes in u-boot lately about OF and device-tree related > things. I suspect you need a fairly recent version of u-boot to go well with > the latest kernel. It's also generally a good idea IMHO. > > 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back > in > 2.6.15 is obsolete and broken now). > > 3. Look at other platforms that use the same processor, and pick a simple > one > as starting point. Look out for the dts (device-tree-source file in > arch/powerpc/boot/dts), copy and modify one to reflect your hardware. > Recently a lot of changes happend in the kernel, changing device names, > obsoleting "device-type" tags, etc..., so some of the current DTS sources > included in the kernel might not even work (wrong device name, missing > information, wrong use of "device-type", etc...), so watch out for these > kind > of issues too. > > 4. Be sure that the device(s) necessary to produce output on your console > are > correctly placed in the DT. Also make sure that u-boot knows about it > (#define OF_STDOUT_PATH... in your u-boot board config file) > > 5. When compiling the device tree, it may be necessary to add some extra > reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which > might be slightly exaggerated), because u-boot may add something to it, and > if it can't, linux won't boot. > > 6. Remember to always specify the "rootfstype=" option on the commandline if > booting from anything other than NFS. This was not necessary back in the > 2.6.15-times AFAICR. > > 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", > don't forget the dash if you are not using an initrd). If you don't do this, > u-boot can't fix your DT, and the kernel probably won't find it either. > > 8. Be sure to use the correct version of the DTC (DT compiler) for your > kernel > (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). > The > command used to compile, should probably be something like this: > > $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 > dts/myplatform.dts > > Load the resulting .dtb file directly with u-boot (don't make an u-image out > of it). > > That's all I remember right now... hope it helps. > > Regards, > > -- > David Jander > > > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n67.bullet.mail.sp1.yahoo.com (n67.bullet.mail.sp1.yahoo.com [98.136.44.47]) by ozlabs.org (Postfix) with SMTP id BD5F4DF1DA for ; Sat, 23 Aug 2008 05:57:19 +1000 (EST) Date: Fri, 22 Aug 2008 12:57:16 -0700 (PDT) From: Laxmikant Rashinkar Subject: Re: porting linux 2.6.27 to embedded powerpc board To: Grant Likely MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-390654204-1219435036=:86130" Message-ID: <922373.86130.qm@web46308.mail.sp1.yahoo.com> Cc: linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-390654204-1219435036=:86130 Content-Type: text/plain; charset=us-ascii Hi, my .dts file is called mpc834x_mds.dts. (My processor is MPC8347) Here are its contents. /* * MPC8349E MDS Device Tree Source * * Copyright 2005, 2006 Freescale Semiconductor Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. */ /dts-v1/; / { model = "MPC8349EMDS"; compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS"; #address-cells = <1>; #size-cells = <1>; aliases { ethernet0 = &enet0; ethernet1 = &enet1; serial0 = &serial0; serial1 = &serial1; pci0 = &pci0; pci1 = &pci1; }; cpus { #address-cells = <1>; #size-cells = <0>; PowerPC,8349@0 { device_type = "cpu"; reg = <0x0>; d-cache-line-size = <32>; i-cache-line-size = <32>; d-cache-size = <32768>; i-cache-size = <32768>; timebase-frequency = <0>; // from bootloader bus-frequency = <0>; // from bootloader clock-frequency = <0>; // from bootloader }; }; memory { device_type = "memory"; reg = <0x00000000 0x10000000>; // 256MB at 0 }; bcsr@e2400000 { device_type = "board-control"; reg = <0xe2400000 0x8000>; }; soc8349@e0000000 { #address-cells = <1>; #size-cells = <1>; device_type = "soc"; compatible = "simple-bus"; ranges = <0x0 0xe0000000 0x00100000>; reg = <0xe0000000 0x00000200>; bus-frequency = <0>; wdt@200 { device_type = "watchdog"; compatible = "mpc83xx_wdt"; reg = <0x200 0x100>; }; i2c@3000 { #address-cells = <1>; #size-cells = <0>; cell-index = <0>; compatible = "fsl-i2c"; reg = <0x3000 0x100>; interrupts = <14 0x8>; interrupt-parent = <&ipic>; dfsrr; rtc@68 { compatible = "dallas,ds1374"; reg = <0x68>; }; }; i2c@3100 { #address-cells = <1>; #size-cells = <0>; cell-index = <1>; compatible = "fsl-i2c"; reg = <0x3100 0x100>; interrupts = <15 0x8>; interrupt-parent = <&ipic>; dfsrr; }; spi@7000 { cell-index = <0>; compatible = "fsl,spi"; reg = <0x7000 0x1000>; interrupts = <16 0x8>; interrupt-parent = <&ipic>; mode = "cpu"; }; dma@82a8 { #address-cells = <1>; #size-cells = <1>; compatible = "fsl,mpc8349-dma", "fsl,elo-dma"; reg = <0x82a8 4>; ranges = <0 0x8100 0x1a8>; interrupt-parent = <&ipic>; interrupts = <71 8>; cell-index = <0>; dma-channel@0 { compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; reg = <0 0x80>; interrupt-parent = <&ipic>; interrupts = <71 8>; }; dma-channel@80 { compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; reg = <0x80 0x80>; interrupt-parent = <&ipic>; interrupts = <71 8>; }; dma-channel@100 { compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; reg = <0x100 0x80>; interrupt-parent = <&ipic>; interrupts = <71 8>; }; dma-channel@180 { compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel"; reg = <0x180 0x28>; interrupt-parent = <&ipic>; interrupts = <71 8>; }; }; /* phy type (ULPI or SERIAL) are only types supported for MPH */ /* port = 0 or 1 */ usb@22000 { compatible = "fsl-usb2-mph"; reg = <0x22000 0x1000>; #address-cells = <1>; #size-cells = <0>; interrupt-parent = <&ipic>; interrupts = <39 0x8>; phy_type = "ulpi"; port1; }; /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ usb@23000 { compatible = "fsl-usb2-dr"; reg = <0x23000 0x1000>; #address-cells = <1>; #size-cells = <0>; interrupt-parent = <&ipic>; interrupts = <38 0x8>; dr_mode = "otg"; phy_type = "ulpi"; }; mdio@24520 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,gianfar-mdio"; reg = <0x24520 0x20>; phy0: ethernet-phy@0 { interrupt-parent = <&ipic>; interrupts = <17 0x8>; reg = <0x0>; device_type = "ethernet-phy"; }; phy1: ethernet-phy@1 { interrupt-parent = <&ipic>; interrupts = <18 0x8>; reg = <0x1>; device_type = "ethernet-phy"; }; }; enet0: ethernet@24000 { cell-index = <0>; device_type = "network"; model = "TSEC"; compatible = "gianfar"; reg = <0x24000 0x1000>; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <32 0x8 33 0x8 34 0x8>; interrupt-parent = <&ipic>; phy-handle = <&phy0>; linux,network-index = <0>; }; enet1: ethernet@25000 { cell-index = <1>; device_type = "network"; model = "TSEC"; compatible = "gianfar"; reg = <0x25000 0x1000>; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <35 0x8 36 0x8 37 0x8>; interrupt-parent = <&ipic>; phy-handle = <&phy1>; linux,network-index = <1>; }; serial0: serial@4500 { cell-index = <0>; device_type = "serial"; compatible = "ns16550"; reg = <0x4500 0x100>; clock-frequency = <0>; interrupts = <9 0x8>; interrupt-parent = <&ipic>; }; serial1: serial@4600 { cell-index = <1>; device_type = "serial"; compatible = "ns16550"; reg = <0x4600 0x100>; clock-frequency = <0>; interrupts = <10 0x8>; interrupt-parent = <&ipic>; }; crypto@30000 { compatible = "fsl,sec2.0"; reg = <0x30000 0x10000>; interrupts = <11 0x8>; interrupt-parent = <&ipic>; fsl,num-channels = <4>; fsl,channel-fifo-len = <24>; fsl,exec-units-mask = <0x7e>; fsl,descriptor-types-mask = <0x01010ebf>; }; /* IPIC * interrupts cell = * sense values match linux IORESOURCE_IRQ_* defines: * sense == 8: Level, low assertion * sense == 2: Edge, high-to-low change */ ipic: pic@700 { interrupt-controller; #address-cells = <0>; #interrupt-cells = <2>; reg = <0x700 0x100>; device_type = "ipic"; }; }; pci0: pci@e0008500 { cell-index = <1>; interrupt-map-mask = <0xf800 0x0 0x0 0x7>; interrupt-map = < /* IDSEL 0x11 */ 0x8800 0x0 0x0 0x1 &ipic 20 0x8 0x8800 0x0 0x0 0x2 &ipic 21 0x8 0x8800 0x0 0x0 0x3 &ipic 22 0x8 0x8800 0x0 0x0 0x4 &ipic 23 0x8 /* IDSEL 0x12 */ 0x9000 0x0 0x0 0x1 &ipic 22 0x8 0x9000 0x0 0x0 0x2 &ipic 23 0x8 0x9000 0x0 0x0 0x3 &ipic 20 0x8 0x9000 0x0 0x0 0x4 &ipic 21 0x8 /* IDSEL 0x13 */ 0x9800 0x0 0x0 0x1 &ipic 23 0x8 0x9800 0x0 0x0 0x2 &ipic 20 0x8 0x9800 0x0 0x0 0x3 &ipic 21 0x8 0x9800 0x0 0x0 0x4 &ipic 22 0x8 /* IDSEL 0x15 */ 0xa800 0x0 0x0 0x1 &ipic 20 0x8 0xa800 0x0 0x0 0x2 &ipic 21 0x8 0xa800 0x0 0x0 0x3 &ipic 22 0x8 0xa800 0x0 0x0 0x4 &ipic 23 0x8 /* IDSEL 0x16 */ 0xb000 0x0 0x0 0x1 &ipic 23 0x8 0xb000 0x0 0x0 0x2 &ipic 20 0x8 0xb000 0x0 0x0 0x3 &ipic 21 0x8 0xb000 0x0 0x0 0x4 &ipic 22 0x8 /* IDSEL 0x17 */ 0xb800 0x0 0x0 0x1 &ipic 22 0x8 0xb800 0x0 0x0 0x2 &ipic 23 0x8 0xb800 0x0 0x0 0x3 &ipic 20 0x8 0xb800 0x0 0x0 0x4 &ipic 21 0x8 /* IDSEL 0x18 */ 0xc000 0x0 0x0 0x1 &ipic 21 0x8 0xc000 0x0 0x0 0x2 &ipic 22 0x8 0xc000 0x0 0x0 0x3 &ipic 23 0x8 0xc000 0x0 0x0 0x4 &ipic 20 0x8>; interrupt-parent = <&ipic>; interrupts = <66 0x8>; bus-range = <0 0>; ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>; clock-frequency = <66666666>; #interrupt-cells = <1>; #size-cells = <2>; #address-cells = <3>; reg = <0xe0008500 0x100>; compatible = "fsl,mpc8349-pci"; device_type = "pci"; }; pci1: pci@e0008600 { cell-index = <2>; interrupt-map-mask = <0xf800 0x0 0x0 0x7>; interrupt-map = < /* IDSEL 0x11 */ 0x8800 0x0 0x0 0x1 &ipic 20 0x8 0x8800 0x0 0x0 0x2 &ipic 21 0x8 0x8800 0x0 0x0 0x3 &ipic 22 0x8 0x8800 0x0 0x0 0x4 &ipic 23 0x8 /* IDSEL 0x12 */ 0x9000 0x0 0x0 0x1 &ipic 22 0x8 0x9000 0x0 0x0 0x2 &ipic 23 0x8 0x9000 0x0 0x0 0x3 &ipic 20 0x8 0x9000 0x0 0x0 0x4 &ipic 21 0x8 /* IDSEL 0x13 */ 0x9800 0x0 0x0 0x1 &ipic 23 0x8 0x9800 0x0 0x0 0x2 &ipic 20 0x8 0x9800 0x0 0x0 0x3 &ipic 21 0x8 0x9800 0x0 0x0 0x4 &ipic 22 0x8 /* IDSEL 0x15 */ 0xa800 0x0 0x0 0x1 &ipic 20 0x8 0xa800 0x0 0x0 0x2 &ipic 21 0x8 0xa800 0x0 0x0 0x3 &ipic 22 0x8 0xa800 0x0 0x0 0x4 &ipic 23 0x8 /* IDSEL 0x16 */ 0xb000 0x0 0x0 0x1 &ipic 23 0x8 0xb000 0x0 0x0 0x2 &ipic 20 0x8 0xb000 0x0 0x0 0x3 &ipic 21 0x8 0xb000 0x0 0x0 0x4 &ipic 22 0x8 /* IDSEL 0x17 */ 0xb800 0x0 0x0 0x1 &ipic 22 0x8 0xb800 0x0 0x0 0x2 &ipic 23 0x8 0xb800 0x0 0x0 0x3 &ipic 20 0x8 0xb800 0x0 0x0 0x4 &ipic 21 0x8 /* IDSEL 0x18 */ 0xc000 0x0 0x0 0x1 &ipic 21 0x8 0xc000 0x0 0x0 0x2 &ipic 22 0x8 0xc000 0x0 0x0 0x3 &ipic 23 0x8 0xc000 0x0 0x0 0x4 &ipic 20 0x8>; interrupt-parent = <&ipic>; interrupts = <67 0x8>; bus-range = <0 0>; ranges = <0x02000000 0x0 0xb0000000 0xb0000000 0x0 0x10000000 0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000 0x01000000 0x0 0x00000000 0xe2100000 0x0 0x00100000>; clock-frequency = <66666666>; #interrupt-cells = <1>; #size-cells = <2>; #address-cells = <3>; reg = <0xe0008600 0x100>; compatible = "fsl,mpc8349-pci"; device_type = "pci"; }; }; thanks LK ----- Original Message ---- From: Grant Likely To: Laxmikant Rashinkar Cc: linuxppc-embedded@ozlabs.org Sent: Friday, August 22, 2008 12:45:54 PM Subject: Re: porting linux 2.6.27 to embedded powerpc board On Fri, Aug 22, 2008 at 12:26 PM, Laxmikant Rashinkar wrote: > Hi, > > I still haven't gotten anything to work :-( > > I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm > using cuImage. > The args to dtc are as listed by David Jander Please post you .dts file and the filename you are using for it. g. > > My cmd line args are: > setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600 > ramdisk_size=65536 > > When I attempt to boot my image it just hangs w/o any output. I dearly wish > I could get some console output. > Here is the actual display from uboot: > > ## Booting image at 00800000 ... > Image Name: Linux-2.6.27-rc2 > Image Type: PowerPC Linux Kernel Image (gzip compressed) > Data Size: 1640425 Bytes = 1.6 MB > Load Address: 00400000 > Entry Point: 0040055c > Verifying Checksum ... OK > Uncompressing Kernel Image ... OK > ## Loading RAMDisk Image at 01000000 ... > Image Name: flash_root.ext3.gz > Image Type: PowerPC Linux RAMDisk Image (gzip compressed) > Data Size: 13450106 Bytes = 12.8 MB > Load Address: 00000000 > Entry Point: 00000000 > Verifying Checksum ... OK > Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK > > Two questions: > > 1) the load address and entry point for the kernel (see above) are non-zero. > When we load via uImage, they are always zero. Is this normal? dtc has not > options to set the load address and entry point. > > 2) When I build my kernel, I get two warnings. Could these be causing a > problem? > > WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from the > variable contig_page_data to the variable .init.data:bootmem_node_data > The variable contig_page_data references > the variable __initdata bootmem_node_data > If the reference is valid then annotate the > variable with __init* (see linux/init.h) or name the variable: > *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, > > > MODPOST vmlinux.o > WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the > variable contig_page_data to the variable .init.data:bootmem_node_data > The variable contig_page_data references > the variable __initdata bootmem_node_data > If the reference is valid then annotate the > variable with __init* (see linux/init.h) or name the variable: > *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, > > thanks so much for your help. > > LK > > ----- Original Message ---- > From: David Jander > To: linuxppc-embedded@ozlabs.org > Cc: Laxmikant Rashinkar > Sent: Thursday, August 21, 2008 2:43:45 AM > Subject: Re: porting linux 2.6.27 to embedded powerpc board > > On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: >> Hi, >> >> I have an embedded PowerPC (MPC8347) board that works fine with uboot and >> Linux 2.6.15. >> >> I am trying to upgrade the kernel so that it runs on the latest release - >> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, >> but of course it does not boot. > > Well, honestly I don't know where to look for information either (other than > the source-code and examples from others), but here is a list with points to > look out for (I have just done the same thing as you for a MPC5200B-based > board): > > 1. Upgrade to latest u-boot first (recent git seems to be fine). There have > been a lot of changes in u-boot lately about OF and device-tree related > things. I suspect you need a fairly recent version of u-boot to go well with > the latest kernel. It's also generally a good idea IMHO. > > 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back > in > 2.6.15 is obsolete and broken now). > > 3. Look at other platforms that use the same processor, and pick a simple > one > as starting point. Look out for the dts (device-tree-source file in > arch/powerpc/boot/dts), copy and modify one to reflect your hardware. > Recently a lot of changes happend in the kernel, changing device names, > obsoleting "device-type" tags, etc..., so some of the current DTS sources > included in the kernel might not even work (wrong device name, missing > information, wrong use of "device-type", etc...), so watch out for these > kind > of issues too. > > 4. Be sure that the device(s) necessary to produce output on your console > are > correctly placed in the DT. Also make sure that u-boot knows about it > (#define OF_STDOUT_PATH... in your u-boot board config file) > > 5. When compiling the device tree, it may be necessary to add some extra > reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which > might be slightly exaggerated), because u-boot may add something to it, and > if it can't, linux won't boot. > > 6. Remember to always specify the "rootfstype=" option on the commandline if > booting from anything other than NFS. This was not necessary back in the > 2.6.15-times AFAICR. > > 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", > don't forget the dash if you are not using an initrd). If you don't do this, > u-boot can't fix your DT, and the kernel probably won't find it either. > > 8. Be sure to use the correct version of the DTC (DT compiler) for your > kernel > (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). > The > command used to compile, should probably be something like this: > > $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 > dts/myplatform.dts > > Load the resulting .dtb file directly with u-boot (don't make an u-image out > of it). > > That's all I remember right now... hope it helps. > > Regards, > > -- > David Jander > > > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. --0-390654204-1219435036=:86130 Content-Type: text/html; charset=us-ascii
Hi,

my .dts file is called mpc834x_mds.dts. (My processor is MPC8347)
Here are its contents.

/*
 * MPC8349E MDS Device Tree Source
 *
 * Copyright 2005, 2006 Freescale Semiconductor Inc.
 *
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 */

/dts-v1/;

/ {
        model = "MPC8349EMDS";
        compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS";
        #address-cells = <1>;
        #size-cells = <1>;

        aliases {
                ethernet0 = &enet0;
                ethernet1 = &enet1;
                serial0 = &serial0;
                serial1 = &serial1;
                pci0 = &pci0;
                pci1 = &pci1;
        };

        cpus {
                #address-cells = <1>;
                #size-cells = <0>;

                PowerPC,8349@0 {
                        device_type = "cpu";
                        reg = <0x0>;
                        d-cache-line-size = <32>;
                        i-cache-line-size = <32>;
                        d-cache-size = <32768>;
                        i-cache-size = <32768>;
                        timebase-frequency = <0>;       // from bootloader
                        bus-frequency = <0>;            // from bootloader
                        clock-frequency = <0>;          // from bootloader
                };
        };

        memory {
                device_type = "memory";
                reg = <0x00000000 0x10000000>;  // 256MB at 0
        };

        bcsr@e2400000 {
                device_type = "board-control";
                reg = <0xe2400000 0x8000>;
        };

        soc8349@e0000000 {
                #address-cells = <1>;
                #size-cells = <1>;
                device_type = "soc";
                compatible = "simple-bus";
                ranges = <0x0 0xe0000000 0x00100000>;
                reg = <0xe0000000 0x00000200>;
                bus-frequency = <0>;

                wdt@200 {
                        device_type = "watchdog";
                        compatible = "mpc83xx_wdt";
                        reg = <0x200 0x100>;
                };

                i2c@3000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        cell-index = <0>;
                        compatible = "fsl-i2c";
                        reg = <0x3000 0x100>;
                        interrupts = <14 0x8>;
                        interrupt-parent = <&ipic>;
                        dfsrr;

                        rtc@68 {
                                compatible = "dallas,ds1374";
                                reg = <0x68>;
                        };
                };

                i2c@3100 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        cell-index = <1>;
                        compatible = "fsl-i2c";
                        reg = <0x3100 0x100>;
                        interrupts = <15 0x8>;
                        interrupt-parent = <&ipic>;
                        dfsrr;
                };

                spi@7000 {
                        cell-index = <0>;
                        compatible = "fsl,spi";
                        reg = <0x7000 0x1000>;
                        interrupts = <16 0x8>;
                        interrupt-parent = <&ipic>;
                        mode = "cpu";
                };

                dma@82a8 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
                        reg = <0x82a8 4>;
                        ranges = <0 0x8100 0x1a8>;
                        interrupt-parent = <&ipic>;
                        interrupts = <71 8>;
                        cell-index = <0>;
                        dma-channel@0 {
                                compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
                                reg = <0 0x80>;
                                interrupt-parent = <&ipic>;
                                interrupts = <71 8>;
                        };
                        dma-channel@80 {
                                compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
                                reg = <0x80 0x80>;
                                interrupt-parent = <&ipic>;
                                interrupts = <71 8>;
                        };
                        dma-channel@100 {
                                compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
                                reg = <0x100 0x80>;
                                interrupt-parent = <&ipic>;
                                interrupts = <71 8>;
                        };
                        dma-channel@180 {
                                compatible = "fsl,mpc8349-dma-channel", "fsl,elo-dma-channel";
                                reg = <0x180 0x28>;
                                interrupt-parent = <&ipic>;
                                interrupts = <71 8>;
                        };
                };

                /* phy type (ULPI or SERIAL) are only types supported for MPH */
                /* port = 0 or 1 */
                usb@22000 {
                        compatible = "fsl-usb2-mph";
                        reg = <0x22000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupt-parent = <&ipic>;
                        interrupts = <39 0x8>;
                        phy_type = "ulpi";
                        port1;
                };
                /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
                usb@23000 {
                        compatible = "fsl-usb2-dr";
                        reg = <0x23000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupt-parent = <&ipic>;
                        interrupts = <38 0x8>;
                        dr_mode = "otg";
                        phy_type = "ulpi";
                };

                mdio@24520 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "fsl,gianfar-mdio";
                        reg = <0x24520 0x20>;

                        phy0: ethernet-phy@0 {
                                interrupt-parent = <&ipic>;
                                interrupts = <17 0x8>;
                                reg = <0x0>;
                                device_type = "ethernet-phy";
                        };
                        phy1: ethernet-phy@1 {
                                interrupt-parent = <&ipic>;
                                interrupts = <18 0x8>;
                                reg = <0x1>;
                                device_type = "ethernet-phy";
                        };
                };

                enet0: ethernet@24000 {
                        cell-index = <0>;
                        device_type = "network";
                        model = "TSEC";
                        compatible = "gianfar";
                        reg = <0x24000 0x1000>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupts = <32 0x8 33 0x8 34 0x8>;
                        interrupt-parent = <&ipic>;
                        phy-handle = <&phy0>;
                        linux,network-index = <0>;
                };

                enet1: ethernet@25000 {
                        cell-index = <1>;
                        device_type = "network";
                        model = "TSEC";
                        compatible = "gianfar";
                        reg = <0x25000 0x1000>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupts = <35 0x8 36 0x8 37 0x8>;
                        interrupt-parent = <&ipic>;
                        phy-handle = <&phy1>;
                        linux,network-index = <1>;
                };

                serial0: serial@4500 {
                        cell-index = <0>;
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <0x4500 0x100>;
                        clock-frequency = <0>;
                        interrupts = <9 0x8>;
                        interrupt-parent = <&ipic>;
                };

                serial1: serial@4600 {
                        cell-index = <1>;
                        device_type = "serial";
                        compatible = "ns16550";
                        reg = <0x4600 0x100>;
                        clock-frequency = <0>;
                        interrupts = <10 0x8>;
                        interrupt-parent = <&ipic>;
                };

                crypto@30000 {
                        compatible = "fsl,sec2.0";
                        reg = <0x30000 0x10000>;
                        interrupts = <11 0x8>;
                        interrupt-parent = <&ipic>;
                        fsl,num-channels = <4>;
                        fsl,channel-fifo-len = <24>;
                        fsl,exec-units-mask = <0x7e>;
                        fsl,descriptor-types-mask = <0x01010ebf>;
                };

                /* IPIC
                 * interrupts cell = <intr #, sense>
                 * sense values match linux IORESOURCE_IRQ_* defines:
                 * sense == 8: Level, low assertion
                 * sense == 2: Edge, high-to-low change
                 */
                ipic: pic@700 {
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <2>;
                        reg = <0x700 0x100>;
                        device_type = "ipic";
                };
        };

        pci0: pci@e0008500 {
                cell-index = <1>;
                interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
                interrupt-map = <

                                /* IDSEL 0x11 */
                                 0x8800 0x0 0x0 0x1 &ipic 20 0x8
                                 0x8800 0x0 0x0 0x2 &ipic 21 0x8
                                 0x8800 0x0 0x0 0x3 &ipic 22 0x8
                                 0x8800 0x0 0x0 0x4 &ipic 23 0x8

                                /* IDSEL 0x12 */
                                 0x9000 0x0 0x0 0x1 &ipic 22 0x8
                                 0x9000 0x0 0x0 0x2 &ipic 23 0x8
                                 0x9000 0x0 0x0 0x3 &ipic 20 0x8
                                 0x9000 0x0 0x0 0x4 &ipic 21 0x8

                                /* IDSEL 0x13 */
                                 0x9800 0x0 0x0 0x1 &ipic 23 0x8
                                 0x9800 0x0 0x0 0x2 &ipic 20 0x8
                                 0x9800 0x0 0x0 0x3 &ipic 21 0x8
                                 0x9800 0x0 0x0 0x4 &ipic 22 0x8

                                /* IDSEL 0x15 */
                                 0xa800 0x0 0x0 0x1 &ipic 20 0x8
                                 0xa800 0x0 0x0 0x2 &ipic 21 0x8
                                 0xa800 0x0 0x0 0x3 &ipic 22 0x8
                                 0xa800 0x0 0x0 0x4 &ipic 23 0x8

                                /* IDSEL 0x16 */
                                 0xb000 0x0 0x0 0x1 &ipic 23 0x8
                                 0xb000 0x0 0x0 0x2 &ipic 20 0x8
                                 0xb000 0x0 0x0 0x3 &ipic 21 0x8
                                 0xb000 0x0 0x0 0x4 &ipic 22 0x8

                                /* IDSEL 0x17 */
                                 0xb800 0x0 0x0 0x1 &ipic 22 0x8
                                 0xb800 0x0 0x0 0x2 &ipic 23 0x8
                                 0xb800 0x0 0x0 0x3 &ipic 20 0x8
                                 0xb800 0x0 0x0 0x4 &ipic 21 0x8

                                /* IDSEL 0x18 */
                                 0xc000 0x0 0x0 0x1 &ipic 21 0x8
                                 0xc000 0x0 0x0 0x2 &ipic 22 0x8
                                 0xc000 0x0 0x0 0x3 &ipic 23 0x8
                                 0xc000 0x0 0x0 0x4 &ipic 20 0x8>;
                interrupt-parent = <&ipic>;
                interrupts = <66 0x8>;
                bus-range = <0 0>;
                ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
                          0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
                          0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
                clock-frequency = <66666666>;
                #interrupt-cells = <1>;
                #size-cells = <2>;
                #address-cells = <3>;
                reg = <0xe0008500 0x100>;
                compatible = "fsl,mpc8349-pci";
                device_type = "pci";
        };

        pci1: pci@e0008600 {
                cell-index = <2>;
                interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
                interrupt-map = <

                                /* IDSEL 0x11 */
                                 0x8800 0x0 0x0 0x1 &ipic 20 0x8
                                 0x8800 0x0 0x0 0x2 &ipic 21 0x8
                                 0x8800 0x0 0x0 0x3 &ipic 22 0x8
                                 0x8800 0x0 0x0 0x4 &ipic 23 0x8

                                /* IDSEL 0x12 */
                                 0x9000 0x0 0x0 0x1 &ipic 22 0x8
                                 0x9000 0x0 0x0 0x2 &ipic 23 0x8
                                 0x9000 0x0 0x0 0x3 &ipic 20 0x8
                                 0x9000 0x0 0x0 0x4 &ipic 21 0x8

                                /* IDSEL 0x13 */
                                 0x9800 0x0 0x0 0x1 &ipic 23 0x8
                                 0x9800 0x0 0x0 0x2 &ipic 20 0x8
                                 0x9800 0x0 0x0 0x3 &ipic 21 0x8
                                 0x9800 0x0 0x0 0x4 &ipic 22 0x8

                                /* IDSEL 0x15 */
                                 0xa800 0x0 0x0 0x1 &ipic 20 0x8
                                 0xa800 0x0 0x0 0x2 &ipic 21 0x8
                                 0xa800 0x0 0x0 0x3 &ipic 22 0x8
                                 0xa800 0x0 0x0 0x4 &ipic 23 0x8

                                /* IDSEL 0x16 */
                                 0xb000 0x0 0x0 0x1 &ipic 23 0x8
                                 0xb000 0x0 0x0 0x2 &ipic 20 0x8
                                 0xb000 0x0 0x0 0x3 &ipic 21 0x8
                                 0xb000 0x0 0x0 0x4 &ipic 22 0x8

                                /* IDSEL 0x17 */
                                 0xb800 0x0 0x0 0x1 &ipic 22 0x8
                                 0xb800 0x0 0x0 0x2 &ipic 23 0x8
                                 0xb800 0x0 0x0 0x3 &ipic 20 0x8
                                 0xb800 0x0 0x0 0x4 &ipic 21 0x8

                                /* IDSEL 0x18 */
                                 0xc000 0x0 0x0 0x1 &ipic 21 0x8
                                 0xc000 0x0 0x0 0x2 &ipic 22 0x8
                                 0xc000 0x0 0x0 0x3 &ipic 23 0x8
                                 0xc000 0x0 0x0 0x4 &ipic 20 0x8>;
                interrupt-parent = <&ipic>;
                interrupts = <67 0x8>;
                bus-range = <0 0>;
                ranges = <0x02000000 0x0 0xb0000000 0xb0000000 0x0 0x10000000
                          0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
                          0x01000000 0x0 0x00000000 0xe2100000 0x0 0x00100000>;
                clock-frequency = <66666666>;
                #interrupt-cells = <1>;
                #size-cells = <2>;
                #address-cells = <3>;
                reg = <0xe0008600 0x100>;
                compatible = "fsl,mpc8349-pci";
                device_type = "pci";
        };
};


thanks
LK


----- Original Message ----
From: Grant Likely <grant.likely@secretlab.ca>
To: Laxmikant Rashinkar <lk.atwork@yahoo.com>
Cc: linuxppc-embedded@ozlabs.org
Sent: Friday, August 22, 2008 12:45:54 PM
Subject: Re: porting linux 2.6.27 to embedded powerpc board

On Fri, Aug 22, 2008 at 12:26 PM, Laxmikant Rashinkar
<lk.atwork@yahoo.com> wrote:
> Hi,
>
> I still haven't gotten anything to work :-(
>
> I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm
> using cuImage.<myboard>
> The args to dtc are as listed by David Jander

Please post you .dts file and the filename you are using for it.

g.

>
> My cmd line args are:
> setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600
> ramdisk_size=65536
>
> When I attempt to boot my image it just hangs w/o any output. I dearly wish
> I could get some console output.
> Here is the actual display from uboot:
>
> ## Booting image at 00800000 ...
>    Image Name:  Linux-2.6.27-rc2
>    Image Type:  PowerPC Linux Kernel Image (gzip compressed)
>    Data Size:    1640425 Bytes =  1.6 MB
>    Load Address: 00400000
>    Entry Point:  0040055c
>    Verifying Checksum ... OK
>    Uncompressing Kernel Image ... OK
> ## Loading RAMDisk Image at 01000000 ...
>    Image Name:  flash_root.ext3.gz
>    Image Type:  PowerPC Linux RAMDisk Image (gzip compressed)
>    Data Size:    13450106 Bytes = 12.8 MB
>    Load Address: 00000000
>    Entry Point:  00000000
>    Verifying Checksum ... OK
>    Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK
>
> Two questions:
>
> 1) the load address and entry point for the kernel (see above) are non-zero.
> When we load via uImage, they are always zero. Is this normal? dtc has not
> options to set the load address and entry point.
>
> 2) When I build my kernel, I get two warnings. Could these be causing a
> problem?
>
> WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from the
> variable contig_page_data to the variable .init.data:bootmem_node_data
> The variable contig_page_data references
> the variable __initdata bootmem_node_data
> If the reference is valid then annotate the
> variable with __init* (see linux/init.h) or name the variable:
> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,
>
>
>  MODPOST vmlinux.o
> WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the
> variable contig_page_data to the variable .init.data:bootmem_node_data
> The variable contig_page_data references
> the variable __initdata bootmem_node_data
> If the reference is valid then annotate the
> variable with __init* (see linux/init.h) or name the variable:
> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console,
>
> thanks so much for your help.
>
> LK
>
> ----- Original Message ----
> From: David Jander <david.jander@protonic.nl>
> To: linuxppc-embedded@ozlabs.org
> Cc: Laxmikant Rashinkar <lk.atwork@yahoo.com>
> Sent: Thursday, August 21, 2008 2:43:45 AM
> Subject: Re: porting linux 2.6.27 to embedded powerpc board
>
> On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote:
>> Hi,
>>
>> I have an embedded PowerPC (MPC8347) board that works fine with uboot and
>> Linux 2.6.15.
>>
>> I am trying to upgrade the kernel so that it runs on the latest release -
>> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform,
>> but of course it does not boot.
>
> Well, honestly I don't know where to look for information either (other than
> the source-code and examples from others), but here is a list with points to
> look out for (I have just done the same thing as you for a MPC5200B-based
> board):
>
> 1. Upgrade to latest u-boot first (recent git seems to be fine). There have
> been a lot of changes in u-boot lately about OF and device-tree related
> things. I suspect you need a fairly recent version of u-boot to go well with
> the latest kernel. It's also generally a good idea IMHO.
>
> 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back
> in
> 2.6.15 is obsolete and broken now).
>
> 3. Look at other platforms that use the same processor, and pick a simple
> one
> as starting point. Look out for the dts (device-tree-source file in
> arch/powerpc/boot/dts), copy and modify one to reflect your hardware.
> Recently a lot of changes happend in the kernel, changing device names,
> obsoleting "device-type" tags, etc..., so some of the current DTS sources
> included in the kernel might not even work (wrong device name, missing
> information, wrong use of "device-type", etc...), so watch out for these
> kind
> of issues too.
>
> 4. Be sure that the device(s) necessary to produce output on your console
> are
> correctly placed in the DT. Also make sure that u-boot knows about it
> (#define OF_STDOUT_PATH... in your u-boot board config file)
>
> 5. When compiling the device tree, it may be necessary to add some extra
> reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which
> might be slightly exaggerated), because u-boot may add something to it, and
> if it can't, linux won't boot.
>
> 6. Remember to always specify the "rootfstype=" option on the commandline if
> booting from anything other than NFS. This was not necessary back in the
> 2.6.15-times AFAICR.
>
> 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb",
> don't forget the dash if you are not using an initrd). If you don't do this,
> u-boot can't fix your DT, and the kernel probably won't find it either.
>
> 8. Be sure to use the correct version of the DTC (DT compiler) for your
> kernel
> (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC).
> The
> command used to compile, should probably be something like this:
>
> $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0
> dts/myplatform.dts
>
> Load the resulting .dtb file directly with u-boot (don't make an u-image out
> of it).
>
> That's all I remember right now... hope it helps.
>
> Regards,
>
> --
> David Jander
>
>
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>



--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

--0-390654204-1219435036=:86130-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from py-out-1112.google.com (py-out-1112.google.com [64.233.166.182]) by ozlabs.org (Postfix) with ESMTP id 8FEB6DF6B0 for ; Sat, 23 Aug 2008 06:04:40 +1000 (EST) Received: by py-out-1112.google.com with SMTP id a29so402185pyi.27 for ; Fri, 22 Aug 2008 13:04:39 -0700 (PDT) Message-ID: Date: Fri, 22 Aug 2008 14:04:38 -0600 From: "Grant Likely" Sender: glikely@secretlab.ca To: "Laxmikant Rashinkar" Subject: Re: porting linux 2.6.27 to embedded powerpc board In-Reply-To: <922373.86130.qm@web46308.mail.sp1.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 References: <922373.86130.qm@web46308.mail.sp1.yahoo.com> Cc: linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Add the following to the end of your dts file and see what happens: chosen { linux,stdout-path = &serial0; }; On Fri, Aug 22, 2008 at 1:57 PM, Laxmikant Rashinkar wrote: > Hi, > > my .dts file is called mpc834x_mds.dts. (My processor is MPC8347) > Here are its contents. > > /* > * MPC8349E MDS Device Tree Source > * > * Copyright 2005, 2006 Freescale Semiconductor Inc. > * > * This program is free software; you can redistribute it and/or modify it > * under the terms of the GNU General Public License as published by the > * Free Software Foundation; either version 2 of the License, or (at your > * option) any later version. > */ > > /dts-v1/; > > / { > model = "MPC8349EMDS"; > compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS"; > #address-cells = <1>; > #size-cells = <1>; > > aliases { > ethernet0 = &enet0; > ethernet1 = &enet1; > serial0 = &serial0; > serial1 = &serial1; > pci0 = &pci0; > pci1 = &pci1; > }; > > cpus { > #address-cells = <1>; > #size-cells = <0>; > > PowerPC,8349@0 { > device_type = "cpu"; > reg = <0x0>; > d-cache-line-size = <32>; > i-cache-line-size = <32>; > d-cache-size = <32768>; > i-cache-size = <32768>; > timebase-frequency = <0>; // from bootloader > bus-frequency = <0>; // from bootloader > clock-frequency = <0>; // from bootloader > }; > }; > > memory { > device_type = "memory"; > reg = <0x00000000 0x10000000>; // 256MB at 0 > }; > > bcsr@e2400000 { > device_type = "board-control"; > reg = <0xe2400000 0x8000>; > }; > > soc8349@e0000000 { > #address-cells = <1>; > #size-cells = <1>; > device_type = "soc"; > compatible = "simple-bus"; > ranges = <0x0 0xe0000000 0x00100000>; > reg = <0xe0000000 0x00000200>; > bus-frequency = <0>; > > wdt@200 { > device_type = "watchdog"; > compatible = "mpc83xx_wdt"; > reg = <0x200 0x100>; > }; > > i2c@3000 { > #address-cells = <1>; > #size-cells = <0>; > cell-index = <0>; > compatible = "fsl-i2c"; > reg = <0x3000 0x100>; > interrupts = <14 0x8>; > interrupt-parent = <&ipic>; > dfsrr; > > rtc@68 { > compatible = "dallas,ds1374"; > reg = <0x68>; > }; > }; > > i2c@3100 { > #address-cells = <1>; > #size-cells = <0>; > cell-index = <1>; > compatible = "fsl-i2c"; > reg = <0x3100 0x100>; > interrupts = <15 0x8>; > interrupt-parent = <&ipic>; > dfsrr; > }; > > spi@7000 { > cell-index = <0>; > compatible = "fsl,spi"; > reg = <0x7000 0x1000>; > interrupts = <16 0x8>; > interrupt-parent = <&ipic>; > mode = "cpu"; > }; > > dma@82a8 { > #address-cells = <1>; > #size-cells = <1>; > compatible = "fsl,mpc8349-dma", "fsl,elo-dma"; > reg = <0x82a8 4>; > ranges = <0 0x8100 0x1a8>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > cell-index = <0>; > dma-channel@0 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0 0x80>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > dma-channel@80 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0x80 0x80>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > dma-channel@100 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0x100 0x80>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > dma-channel@180 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0x180 0x28>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > }; > > /* phy type (ULPI or SERIAL) are only types supported for > MPH */ > /* port = 0 or 1 */ > usb@22000 { > compatible = "fsl-usb2-mph"; > reg = <0x22000 0x1000>; > #address-cells = <1>; > #size-cells = <0>; > interrupt-parent = <&ipic>; > interrupts = <39 0x8>; > phy_type = "ulpi"; > port1; > }; > /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ > usb@23000 { > compatible = "fsl-usb2-dr"; > reg = <0x23000 0x1000>; > #address-cells = <1>; > #size-cells = <0>; > interrupt-parent = <&ipic>; > interrupts = <38 0x8>; > dr_mode = "otg"; > phy_type = "ulpi"; > }; > > mdio@24520 { > #address-cells = <1>; > #size-cells = <0>; > compatible = "fsl,gianfar-mdio"; > reg = <0x24520 0x20>; > > phy0: ethernet-phy@0 { > interrupt-parent = <&ipic>; > interrupts = <17 0x8>; > reg = <0x0>; > device_type = "ethernet-phy"; > }; > phy1: ethernet-phy@1 { > interrupt-parent = <&ipic>; > interrupts = <18 0x8>; > reg = <0x1>; > device_type = "ethernet-phy"; > }; > }; > > enet0: ethernet@24000 { > cell-index = <0>; > device_type = "network"; > model = "TSEC"; > compatible = "gianfar"; > reg = <0x24000 0x1000>; > local-mac-address = [ 00 00 00 00 00 00 ]; > interrupts = <32 0x8 33 0x8 34 0x8>; > interrupt-parent = <&ipic>; > phy-handle = <&phy0>; > linux,network-index = <0>; > }; > > enet1: ethernet@25000 { > cell-index = <1>; > device_type = "network"; > model = "TSEC"; > compatible = "gianfar"; > reg = <0x25000 0x1000>; > local-mac-address = [ 00 00 00 00 00 00 ]; > interrupts = <35 0x8 36 0x8 37 0x8>; > interrupt-parent = <&ipic>; > phy-handle = <&phy1>; > linux,network-index = <1>; > }; > > serial0: serial@4500 { > cell-index = <0>; > device_type = "serial"; > compatible = "ns16550"; > reg = <0x4500 0x100>; > clock-frequency = <0>; > interrupts = <9 0x8>; > interrupt-parent = <&ipic>; > }; > > serial1: serial@4600 { > cell-index = <1>; > device_type = "serial"; > compatible = "ns16550"; > reg = <0x4600 0x100>; > clock-frequency = <0>; > interrupts = <10 0x8>; > interrupt-parent = <&ipic>; > }; > > crypto@30000 { > compatible = "fsl,sec2.0"; > reg = <0x30000 0x10000>; > interrupts = <11 0x8>; > interrupt-parent = <&ipic>; > fsl,num-channels = <4>; > fsl,channel-fifo-len = <24>; > fsl,exec-units-mask = <0x7e>; > fsl,descriptor-types-mask = <0x01010ebf>; > }; > > /* IPIC > * interrupts cell = > * sense values match linux IORESOURCE_IRQ_* defines: > * sense == 8: Level, low assertion > * sense == 2: Edge, high-to-low change > */ > ipic: pic@700 { > interrupt-controller; > #address-cells = <0>; > #interrupt-cells = <2>; > reg = <0x700 0x100>; > device_type = "ipic"; > }; > }; > > pci0: pci@e0008500 { > cell-index = <1>; > interrupt-map-mask = <0xf800 0x0 0x0 0x7>; > interrupt-map = < > > /* IDSEL 0x11 */ > 0x8800 0x0 0x0 0x1 &ipic 20 0x8 > 0x8800 0x0 0x0 0x2 &ipic 21 0x8 > 0x8800 0x0 0x0 0x3 &ipic 22 0x8 > 0x8800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x12 */ > 0x9000 0x0 0x0 0x1 &ipic 22 0x8 > 0x9000 0x0 0x0 0x2 &ipic 23 0x8 > 0x9000 0x0 0x0 0x3 &ipic 20 0x8 > 0x9000 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x13 */ > 0x9800 0x0 0x0 0x1 &ipic 23 0x8 > 0x9800 0x0 0x0 0x2 &ipic 20 0x8 > 0x9800 0x0 0x0 0x3 &ipic 21 0x8 > 0x9800 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x15 */ > 0xa800 0x0 0x0 0x1 &ipic 20 0x8 > 0xa800 0x0 0x0 0x2 &ipic 21 0x8 > 0xa800 0x0 0x0 0x3 &ipic 22 0x8 > 0xa800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x16 */ > 0xb000 0x0 0x0 0x1 &ipic 23 0x8 > 0xb000 0x0 0x0 0x2 &ipic 20 0x8 > 0xb000 0x0 0x0 0x3 &ipic 21 0x8 > 0xb000 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x17 */ > 0xb800 0x0 0x0 0x1 &ipic 22 0x8 > 0xb800 0x0 0x0 0x2 &ipic 23 0x8 > 0xb800 0x0 0x0 0x3 &ipic 20 0x8 > 0xb800 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x18 */ > 0xc000 0x0 0x0 0x1 &ipic 21 0x8 > 0xc000 0x0 0x0 0x2 &ipic 22 0x8 > 0xc000 0x0 0x0 0x3 &ipic 23 0x8 > 0xc000 0x0 0x0 0x4 &ipic 20 0x8>; > interrupt-parent = <&ipic>; > interrupts = <66 0x8>; > bus-range = <0 0>; > ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 > 0x10000000 > 0x42000000 0x0 0x80000000 0x80000000 0x0 > 0x10000000 > 0x01000000 0x0 0x00000000 0xe2000000 0x0 > 0x00100000>; > clock-frequency = <66666666>; > #interrupt-cells = <1>; > #size-cells = <2>; > #address-cells = <3>; > reg = <0xe0008500 0x100>; > compatible = "fsl,mpc8349-pci"; > device_type = "pci"; > }; > > pci1: pci@e0008600 { > cell-index = <2>; > interrupt-map-mask = <0xf800 0x0 0x0 0x7>; > interrupt-map = < > > /* IDSEL 0x11 */ > 0x8800 0x0 0x0 0x1 &ipic 20 0x8 > 0x8800 0x0 0x0 0x2 &ipic 21 0x8 > 0x8800 0x0 0x0 0x3 &ipic 22 0x8 > 0x8800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x12 */ > 0x9000 0x0 0x0 0x1 &ipic 22 0x8 > 0x9000 0x0 0x0 0x2 &ipic 23 0x8 > 0x9000 0x0 0x0 0x3 &ipic 20 0x8 > 0x9000 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x13 */ > 0x9800 0x0 0x0 0x1 &ipic 23 0x8 > 0x9800 0x0 0x0 0x2 &ipic 20 0x8 > 0x9800 0x0 0x0 0x3 &ipic 21 0x8 > 0x9800 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x15 */ > 0xa800 0x0 0x0 0x1 &ipic 20 0x8 > 0xa800 0x0 0x0 0x2 &ipic 21 0x8 > 0xa800 0x0 0x0 0x3 &ipic 22 0x8 > 0xa800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x16 */ > 0xb000 0x0 0x0 0x1 &ipic 23 0x8 > 0xb000 0x0 0x0 0x2 &ipic 20 0x8 > 0xb000 0x0 0x0 0x3 &ipic 21 0x8 > 0xb000 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x17 */ > 0xb800 0x0 0x0 0x1 &ipic 22 0x8 > 0xb800 0x0 0x0 0x2 &ipic 23 0x8 > 0xb800 0x0 0x0 0x3 &ipic 20 0x8 > 0xb800 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x18 */ > 0xc000 0x0 0x0 0x1 &ipic 21 0x8 > 0xc000 0x0 0x0 0x2 &ipic 22 0x8 > 0xc000 0x0 0x0 0x3 &ipic 23 0x8 > 0xc000 0x0 0x0 0x4 &ipic 20 0x8>; > interrupt-parent = <&ipic>; > interrupts = <67 0x8>; > bus-range = <0 0>; > ranges = <0x02000000 0x0 0xb0000000 0xb0000000 0x0 > 0x10000000 > 0x42000000 0x0 0xa0000000 0xa0000000 0x0 > 0x10000000 > 0x01000000 0x0 0x00000000 0xe2100000 0x0 > 0x00100000>; > clock-frequency = <66666666>; > #interrupt-cells = <1>; > #size-cells = <2>; > #address-cells = <3>; > reg = <0xe0008600 0x100>; > compatible = "fsl,mpc8349-pci"; > device_type = "pci"; > }; > }; > > > thanks > LK > > > ----- Original Message ---- > From: Grant Likely > To: Laxmikant Rashinkar > Cc: linuxppc-embedded@ozlabs.org > Sent: Friday, August 22, 2008 12:45:54 PM > Subject: Re: porting linux 2.6.27 to embedded powerpc board > > On Fri, Aug 22, 2008 at 12:26 PM, Laxmikant Rashinkar > wrote: >> Hi, >> >> I still haven't gotten anything to work :-( >> >> I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm >> using cuImage. >> The args to dtc are as listed by David Jander > > Please post you .dts file and the filename you are using for it. > > g. > >> >> My cmd line args are: >> setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600 >> ramdisk_size=65536 >> >> When I attempt to boot my image it just hangs w/o any output. I dearly >> wish >> I could get some console output. >> Here is the actual display from uboot: >> >> ## Booting image at 00800000 ... >> Image Name: Linux-2.6.27-rc2 >> Image Type: PowerPC Linux Kernel Image (gzip compressed) >> Data Size: 1640425 Bytes = 1.6 MB >> Load Address: 00400000 >> Entry Point: 0040055c >> Verifying Checksum ... OK >> Uncompressing Kernel Image ... OK >> ## Loading RAMDisk Image at 01000000 ... >> Image Name: flash_root.ext3.gz >> Image Type: PowerPC Linux RAMDisk Image (gzip compressed) >> Data Size: 13450106 Bytes = 12.8 MB >> Load Address: 00000000 >> Entry Point: 00000000 >> Verifying Checksum ... OK >> Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK >> >> Two questions: >> >> 1) the load address and entry point for the kernel (see above) are >> non-zero. >> When we load via uImage, they are always zero. Is this normal? dtc has not >> options to set the load address and entry point. >> >> 2) When I build my kernel, I get two warnings. Could these be causing a >> problem? >> >> WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from >> the >> variable contig_page_data to the variable .init.data:bootmem_node_data >> The variable contig_page_data references >> the variable __initdata bootmem_node_data >> If the reference is valid then annotate the >> variable with __init* (see linux/init.h) or name the variable: >> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, >> *_console, >> >> >> MODPOST vmlinux.o >> WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the >> variable contig_page_data to the variable .init.data:bootmem_node_data >> The variable contig_page_data references >> the variable __initdata bootmem_node_data >> If the reference is valid then annotate the >> variable with __init* (see linux/init.h) or name the variable: >> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, >> *_console, >> >> thanks so much for your help. >> >> LK >> >> ----- Original Message ---- >> From: David Jander >> To: linuxppc-embedded@ozlabs.org >> Cc: Laxmikant Rashinkar >> Sent: Thursday, August 21, 2008 2:43:45 AM >> Subject: Re: porting linux 2.6.27 to embedded powerpc board >> >> On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: >>> Hi, >>> >>> I have an embedded PowerPC (MPC8347) board that works fine with uboot and >>> Linux 2.6.15. >>> >>> I am trying to upgrade the kernel so that it runs on the latest release - >>> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, >>> but of course it does not boot. >> >> Well, honestly I don't know where to look for information either (other >> than >> the source-code and examples from others), but here is a list with points >> to >> look out for (I have just done the same thing as you for a MPC5200B-based >> board): >> >> 1. Upgrade to latest u-boot first (recent git seems to be fine). There >> have >> been a lot of changes in u-boot lately about OF and device-tree related >> things. I suspect you need a fairly recent version of u-boot to go well >> with >> the latest kernel. It's also generally a good idea IMHO. >> >> 2. I assume you are porting to arch/powerpc (the old arch/ppc you used >> back >> in >> 2.6.15 is obsolete and broken now). >> >> 3. Look at other platforms that use the same processor, and pick a simple >> one >> as starting point. Look out for the dts (device-tree-source file in >> arch/powerpc/boot/dts), copy and modify one to reflect your hardware. >> Recently a lot of changes happend in the kernel, changing device names, >> obsoleting "device-type" tags, etc..., so some of the current DTS sources >> included in the kernel might not even work (wrong device name, missing >> information, wrong use of "device-type", etc...), so watch out for these >> kind >> of issues too. >> >> 4. Be sure that the device(s) necessary to produce output on your console >> are >> correctly placed in the DT. Also make sure that u-boot knows about it >> (#define OF_STDOUT_PATH... in your u-boot board config file) >> >> 5. When compiling the device tree, it may be necessary to add some extra >> reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, >> which >> might be slightly exaggerated), because u-boot may add something to it, >> and >> if it can't, linux won't boot. >> >> 6. Remember to always specify the "rootfstype=" option on the commandline >> if >> booting from anything other than NFS. This was not necessary back in the >> 2.6.15-times AFAICR. >> >> 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", >> don't forget the dash if you are not using an initrd). If you don't do >> this, >> u-boot can't fix your DT, and the kernel probably won't find it either. >> >> 8. Be sure to use the correct version of the DTC (DT compiler) for your >> kernel >> (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). >> The >> command used to compile, should probably be something like this: >> >> $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 >> dts/myplatform.dts >> >> Load the resulting .dtb file directly with u-boot (don't make an u-image >> out >> of it). >> >> That's all I remember right now... hope it helps. >> >> Regards, >> >> -- >> David Jander >> >> >> _______________________________________________ >> Linuxppc-embedded mailing list >> Linuxppc-embedded@ozlabs.org >> https://ozlabs.org/mailman/listinfo/linuxppc-embedded >> > > > > -- > Grant Likely, B.Sc., P.Eng. > Secret Lab Technologies Ltd. > > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from az33egw01.freescale.net (az33egw01.freescale.net [192.88.158.102]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "az33egw01.freescale.net", Issuer "Thawte Premium Server CA" (verified OK)) by ozlabs.org (Postfix) with ESMTPS id 8020ADF6B9 for ; Sat, 23 Aug 2008 06:18:55 +1000 (EST) Message-ID: <48AF1F03.8030409@freescale.com> Date: Fri, 22 Aug 2008 15:18:11 -0500 From: Scott Wood MIME-Version: 1.0 To: Laxmikant Rashinkar Subject: Re: porting linux 2.6.27 to embedded powerpc board References: <484406.39935.qm@web46302.mail.sp1.yahoo.com> In-Reply-To: <484406.39935.qm@web46302.mail.sp1.yahoo.com> Content-Type: text/plain; charset=UTF-8; format=flowed Cc: linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Laxmikant Rashinkar wrote: > When I attempt to boot my image it just hangs w/o any output. I dearly > wish I could get some console output. Make sure you have /chosen/linux,stdout-path in your device tree. For output from the kernel itself, make sure the serial clock-frequency is correct. > 1) the load address and entry point for the kernel (see above) are > non-zero. When we load via uImage, they are always zero. Is this normal? Yes, it's normal. > 2) When I build my kernel, I get two warnings. Could these be causing a > problem? Probably not. -Scott From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n64.bullet.mail.sp1.yahoo.com (n64.bullet.mail.sp1.yahoo.com [98.136.44.189]) by ozlabs.org (Postfix) with SMTP id E9C82DF56B for ; Sat, 23 Aug 2008 06:26:21 +1000 (EST) Date: Fri, 22 Aug 2008 13:19:38 -0700 (PDT) From: Laxmikant Rashinkar Subject: Re: porting linux 2.6.27 to embedded powerpc board To: Grant Likely MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-855080617-1219436378=:20537" Message-ID: <423778.20537.qm@web46308.mail.sp1.yahoo.com> Cc: linuxppc-embedded@ozlabs.org List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-855080617-1219436378=:20537 Content-Type: text/plain; charset=us-ascii Bingo! I get console output now :-) The kernel oops now and most probably it is because I am using the initrd from my linux 2.6.15. That should be easy to fix. Thank you so much for your help. I could not have done this without you. gratefully LK ----- Original Message ---- From: Grant Likely To: Laxmikant Rashinkar Cc: linuxppc-embedded@ozlabs.org Sent: Friday, August 22, 2008 1:04:38 PM Subject: Re: porting linux 2.6.27 to embedded powerpc board Add the following to the end of your dts file and see what happens: chosen { linux,stdout-path = &serial0; }; On Fri, Aug 22, 2008 at 1:57 PM, Laxmikant Rashinkar wrote: > Hi, > > my .dts file is called mpc834x_mds.dts. (My processor is MPC8347) > Here are its contents. > > /* > * MPC8349E MDS Device Tree Source > * > * Copyright 2005, 2006 Freescale Semiconductor Inc. > * > * This program is free software; you can redistribute it and/or modify it > * under the terms of the GNU General Public License as published by the > * Free Software Foundation; either version 2 of the License, or (at your > * option) any later version. > */ > > /dts-v1/; > > / { > model = "MPC8349EMDS"; > compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS"; > #address-cells = <1>; > #size-cells = <1>; > > aliases { > ethernet0 = &enet0; > ethernet1 = &enet1; > serial0 = &serial0; > serial1 = &serial1; > pci0 = &pci0; > pci1 = &pci1; > }; > > cpus { > #address-cells = <1>; > #size-cells = <0>; > > PowerPC,8349@0 { > device_type = "cpu"; > reg = <0x0>; > d-cache-line-size = <32>; > i-cache-line-size = <32>; > d-cache-size = <32768>; > i-cache-size = <32768>; > timebase-frequency = <0>; // from bootloader > bus-frequency = <0>; // from bootloader > clock-frequency = <0>; // from bootloader > }; > }; > > memory { > device_type = "memory"; > reg = <0x00000000 0x10000000>; // 256MB at 0 > }; > > bcsr@e2400000 { > device_type = "board-control"; > reg = <0xe2400000 0x8000>; > }; > > soc8349@e0000000 { > #address-cells = <1>; > #size-cells = <1>; > device_type = "soc"; > compatible = "simple-bus"; > ranges = <0x0 0xe0000000 0x00100000>; > reg = <0xe0000000 0x00000200>; > bus-frequency = <0>; > > wdt@200 { > device_type = "watchdog"; > compatible = "mpc83xx_wdt"; > reg = <0x200 0x100>; > }; > > i2c@3000 { > #address-cells = <1>; > #size-cells = <0>; > cell-index = <0>; > compatible = "fsl-i2c"; > reg = <0x3000 0x100>; > interrupts = <14 0x8>; > interrupt-parent = <&ipic>; > dfsrr; > > rtc@68 { > compatible = "dallas,ds1374"; > reg = <0x68>; > }; > }; > > i2c@3100 { > #address-cells = <1>; > #size-cells = <0>; > cell-index = <1>; > compatible = "fsl-i2c"; > reg = <0x3100 0x100>; > interrupts = <15 0x8>; > interrupt-parent = <&ipic>; > dfsrr; > }; > > spi@7000 { > cell-index = <0>; > compatible = "fsl,spi"; > reg = <0x7000 0x1000>; > interrupts = <16 0x8>; > interrupt-parent = <&ipic>; > mode = "cpu"; > }; > > dma@82a8 { > #address-cells = <1>; > #size-cells = <1>; > compatible = "fsl,mpc8349-dma", "fsl,elo-dma"; > reg = <0x82a8 4>; > ranges = <0 0x8100 0x1a8>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > cell-index = <0>; > dma-channel@0 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0 0x80>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > dma-channel@80 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0x80 0x80>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > dma-channel@100 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0x100 0x80>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > dma-channel@180 { > compatible = "fsl,mpc8349-dma-channel", > "fsl,elo-dma-channel"; > reg = <0x180 0x28>; > interrupt-parent = <&ipic>; > interrupts = <71 8>; > }; > }; > > /* phy type (ULPI or SERIAL) are only types supported for > MPH */ > /* port = 0 or 1 */ > usb@22000 { > compatible = "fsl-usb2-mph"; > reg = <0x22000 0x1000>; > #address-cells = <1>; > #size-cells = <0>; > interrupt-parent = <&ipic>; > interrupts = <39 0x8>; > phy_type = "ulpi"; > port1; > }; > /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ > usb@23000 { > compatible = "fsl-usb2-dr"; > reg = <0x23000 0x1000>; > #address-cells = <1>; > #size-cells = <0>; > interrupt-parent = <&ipic>; > interrupts = <38 0x8>; > dr_mode = "otg"; > phy_type = "ulpi"; > }; > > mdio@24520 { > #address-cells = <1>; > #size-cells = <0>; > compatible = "fsl,gianfar-mdio"; > reg = <0x24520 0x20>; > > phy0: ethernet-phy@0 { > interrupt-parent = <&ipic>; > interrupts = <17 0x8>; > reg = <0x0>; > device_type = "ethernet-phy"; > }; > phy1: ethernet-phy@1 { > interrupt-parent = <&ipic>; > interrupts = <18 0x8>; > reg = <0x1>; > device_type = "ethernet-phy"; > }; > }; > > enet0: ethernet@24000 { > cell-index = <0>; > device_type = "network"; > model = "TSEC"; > compatible = "gianfar"; > reg = <0x24000 0x1000>; > local-mac-address = [ 00 00 00 00 00 00 ]; > interrupts = <32 0x8 33 0x8 34 0x8>; > interrupt-parent = <&ipic>; > phy-handle = <&phy0>; > linux,network-index = <0>; > }; > > enet1: ethernet@25000 { > cell-index = <1>; > device_type = "network"; > model = "TSEC"; > compatible = "gianfar"; > reg = <0x25000 0x1000>; > local-mac-address = [ 00 00 00 00 00 00 ]; > interrupts = <35 0x8 36 0x8 37 0x8>; > interrupt-parent = <&ipic>; > phy-handle = <&phy1>; > linux,network-index = <1>; > }; > > serial0: serial@4500 { > cell-index = <0>; > device_type = "serial"; > compatible = "ns16550"; > reg = <0x4500 0x100>; > clock-frequency = <0>; > interrupts = <9 0x8>; > interrupt-parent = <&ipic>; > }; > > serial1: serial@4600 { > cell-index = <1>; > device_type = "serial"; > compatible = "ns16550"; > reg = <0x4600 0x100>; > clock-frequency = <0>; > interrupts = <10 0x8>; > interrupt-parent = <&ipic>; > }; > > crypto@30000 { > compatible = "fsl,sec2.0"; > reg = <0x30000 0x10000>; > interrupts = <11 0x8>; > interrupt-parent = <&ipic>; > fsl,num-channels = <4>; > fsl,channel-fifo-len = <24>; > fsl,exec-units-mask = <0x7e>; > fsl,descriptor-types-mask = <0x01010ebf>; > }; > > /* IPIC > * interrupts cell = > * sense values match linux IORESOURCE_IRQ_* defines: > * sense == 8: Level, low assertion > * sense == 2: Edge, high-to-low change > */ > ipic: pic@700 { > interrupt-controller; > #address-cells = <0>; > #interrupt-cells = <2>; > reg = <0x700 0x100>; > device_type = "ipic"; > }; > }; > > pci0: pci@e0008500 { > cell-index = <1>; > interrupt-map-mask = <0xf800 0x0 0x0 0x7>; > interrupt-map = < > > /* IDSEL 0x11 */ > 0x8800 0x0 0x0 0x1 &ipic 20 0x8 > 0x8800 0x0 0x0 0x2 &ipic 21 0x8 > 0x8800 0x0 0x0 0x3 &ipic 22 0x8 > 0x8800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x12 */ > 0x9000 0x0 0x0 0x1 &ipic 22 0x8 > 0x9000 0x0 0x0 0x2 &ipic 23 0x8 > 0x9000 0x0 0x0 0x3 &ipic 20 0x8 > 0x9000 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x13 */ > 0x9800 0x0 0x0 0x1 &ipic 23 0x8 > 0x9800 0x0 0x0 0x2 &ipic 20 0x8 > 0x9800 0x0 0x0 0x3 &ipic 21 0x8 > 0x9800 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x15 */ > 0xa800 0x0 0x0 0x1 &ipic 20 0x8 > 0xa800 0x0 0x0 0x2 &ipic 21 0x8 > 0xa800 0x0 0x0 0x3 &ipic 22 0x8 > 0xa800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x16 */ > 0xb000 0x0 0x0 0x1 &ipic 23 0x8 > 0xb000 0x0 0x0 0x2 &ipic 20 0x8 > 0xb000 0x0 0x0 0x3 &ipic 21 0x8 > 0xb000 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x17 */ > 0xb800 0x0 0x0 0x1 &ipic 22 0x8 > 0xb800 0x0 0x0 0x2 &ipic 23 0x8 > 0xb800 0x0 0x0 0x3 &ipic 20 0x8 > 0xb800 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x18 */ > 0xc000 0x0 0x0 0x1 &ipic 21 0x8 > 0xc000 0x0 0x0 0x2 &ipic 22 0x8 > 0xc000 0x0 0x0 0x3 &ipic 23 0x8 > 0xc000 0x0 0x0 0x4 &ipic 20 0x8>; > interrupt-parent = <&ipic>; > interrupts = <66 0x8>; > bus-range = <0 0>; > ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 > 0x10000000 > 0x42000000 0x0 0x80000000 0x80000000 0x0 > 0x10000000 > 0x01000000 0x0 0x00000000 0xe2000000 0x0 > 0x00100000>; > clock-frequency = <66666666>; > #interrupt-cells = <1>; > #size-cells = <2>; > #address-cells = <3>; > reg = <0xe0008500 0x100>; > compatible = "fsl,mpc8349-pci"; > device_type = "pci"; > }; > > pci1: pci@e0008600 { > cell-index = <2>; > interrupt-map-mask = <0xf800 0x0 0x0 0x7>; > interrupt-map = < > > /* IDSEL 0x11 */ > 0x8800 0x0 0x0 0x1 &ipic 20 0x8 > 0x8800 0x0 0x0 0x2 &ipic 21 0x8 > 0x8800 0x0 0x0 0x3 &ipic 22 0x8 > 0x8800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x12 */ > 0x9000 0x0 0x0 0x1 &ipic 22 0x8 > 0x9000 0x0 0x0 0x2 &ipic 23 0x8 > 0x9000 0x0 0x0 0x3 &ipic 20 0x8 > 0x9000 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x13 */ > 0x9800 0x0 0x0 0x1 &ipic 23 0x8 > 0x9800 0x0 0x0 0x2 &ipic 20 0x8 > 0x9800 0x0 0x0 0x3 &ipic 21 0x8 > 0x9800 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x15 */ > 0xa800 0x0 0x0 0x1 &ipic 20 0x8 > 0xa800 0x0 0x0 0x2 &ipic 21 0x8 > 0xa800 0x0 0x0 0x3 &ipic 22 0x8 > 0xa800 0x0 0x0 0x4 &ipic 23 0x8 > > /* IDSEL 0x16 */ > 0xb000 0x0 0x0 0x1 &ipic 23 0x8 > 0xb000 0x0 0x0 0x2 &ipic 20 0x8 > 0xb000 0x0 0x0 0x3 &ipic 21 0x8 > 0xb000 0x0 0x0 0x4 &ipic 22 0x8 > > /* IDSEL 0x17 */ > 0xb800 0x0 0x0 0x1 &ipic 22 0x8 > 0xb800 0x0 0x0 0x2 &ipic 23 0x8 > 0xb800 0x0 0x0 0x3 &ipic 20 0x8 > 0xb800 0x0 0x0 0x4 &ipic 21 0x8 > > /* IDSEL 0x18 */ > 0xc000 0x0 0x0 0x1 &ipic 21 0x8 > 0xc000 0x0 0x0 0x2 &ipic 22 0x8 > 0xc000 0x0 0x0 0x3 &ipic 23 0x8 > 0xc000 0x0 0x0 0x4 &ipic 20 0x8>; > interrupt-parent = <&ipic>; > interrupts = <67 0x8>; > bus-range = <0 0>; > ranges = <0x02000000 0x0 0xb0000000 0xb0000000 0x0 > 0x10000000 > 0x42000000 0x0 0xa0000000 0xa0000000 0x0 > 0x10000000 > 0x01000000 0x0 0x00000000 0xe2100000 0x0 > 0x00100000>; > clock-frequency = <66666666>; > #interrupt-cells = <1>; > #size-cells = <2>; > #address-cells = <3>; > reg = <0xe0008600 0x100>; > compatible = "fsl,mpc8349-pci"; > device_type = "pci"; > }; > }; > > > thanks > LK > > > ----- Original Message ---- > From: Grant Likely > To: Laxmikant Rashinkar > Cc: linuxppc-embedded@ozlabs.org > Sent: Friday, August 22, 2008 12:45:54 PM > Subject: Re: porting linux 2.6.27 to embedded powerpc board > > On Fri, Aug 22, 2008 at 12:26 PM, Laxmikant Rashinkar > wrote: >> Hi, >> >> I still haven't gotten anything to work :-( >> >> I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm >> using cuImage. >> The args to dtc are as listed by David Jander > > Please post you .dts file and the filename you are using for it. > > g. > >> >> My cmd line args are: >> setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600 >> ramdisk_size=65536 >> >> When I attempt to boot my image it just hangs w/o any output. I dearly >> wish >> I could get some console output. >> Here is the actual display from uboot: >> >> ## Booting image at 00800000 ... >> Image Name: Linux-2.6.27-rc2 >> Image Type: PowerPC Linux Kernel Image (gzip compressed) >> Data Size: 1640425 Bytes = 1.6 MB >> Load Address: 00400000 >> Entry Point: 0040055c >> Verifying Checksum ... OK >> Uncompressing Kernel Image ... OK >> ## Loading RAMDisk Image at 01000000 ... >> Image Name: flash_root.ext3.gz >> Image Type: PowerPC Linux RAMDisk Image (gzip compressed) >> Data Size: 13450106 Bytes = 12.8 MB >> Load Address: 00000000 >> Entry Point: 00000000 >> Verifying Checksum ... OK >> Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK >> >> Two questions: >> >> 1) the load address and entry point for the kernel (see above) are >> non-zero. >> When we load via uImage, they are always zero. Is this normal? dtc has not >> options to set the load address and entry point. >> >> 2) When I build my kernel, I get two warnings. Could these be causing a >> problem? >> >> WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from >> the >> variable contig_page_data to the variable .init.data:bootmem_node_data >> The variable contig_page_data references >> the variable __initdata bootmem_node_data >> If the reference is valid then annotate the >> variable with __init* (see linux/init.h) or name the variable: >> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, >> *_console, >> >> >> MODPOST vmlinux.o >> WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the >> variable contig_page_data to the variable .init.data:bootmem_node_data >> The variable contig_page_data references >> the variable __initdata bootmem_node_data >> If the reference is valid then annotate the >> variable with __init* (see linux/init.h) or name the variable: >> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, >> *_console, >> >> thanks so much for your help. >> >> LK >> >> ----- Original Message ---- >> From: David Jander >> To: linuxppc-embedded@ozlabs.org >> Cc: Laxmikant Rashinkar >> Sent: Thursday, August 21, 2008 2:43:45 AM >> Subject: Re: porting linux 2.6.27 to embedded powerpc board >> >> On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: >>> Hi, >>> >>> I have an embedded PowerPC (MPC8347) board that works fine with uboot and >>> Linux 2.6.15. >>> >>> I am trying to upgrade the kernel so that it runs on the latest release - >>> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, >>> but of course it does not boot. >> >> Well, honestly I don't know where to look for information either (other >> than >> the source-code and examples from others), but here is a list with points >> to >> look out for (I have just done the same thing as you for a MPC5200B-based >> board): >> >> 1. Upgrade to latest u-boot first (recent git seems to be fine). There >> have >> been a lot of changes in u-boot lately about OF and device-tree related >> things. I suspect you need a fairly recent version of u-boot to go well >> with >> the latest kernel. It's also generally a good idea IMHO. >> >> 2. I assume you are porting to arch/powerpc (the old arch/ppc you used >> back >> in >> 2.6.15 is obsolete and broken now). >> >> 3. Look at other platforms that use the same processor, and pick a simple >> one >> as starting point. Look out for the dts (device-tree-source file in >> arch/powerpc/boot/dts), copy and modify one to reflect your hardware. >> Recently a lot of changes happend in the kernel, changing device names, >> obsoleting "device-type" tags, etc..., so some of the current DTS sources >> included in the kernel might not even work (wrong device name, missing >> information, wrong use of "device-type", etc...), so watch out for these >> kind >> of issues too. >> >> 4. Be sure that the device(s) necessary to produce output on your console >> are >> correctly placed in the DT. Also make sure that u-boot knows about it >> (#define OF_STDOUT_PATH... in your u-boot board config file) >> >> 5. When compiling the device tree, it may be necessary to add some extra >> reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, >> which >> might be slightly exaggerated), because u-boot may add something to it, >> and >> if it can't, linux won't boot. >> >> 6. Remember to always specify the "rootfstype=" option on the commandline >> if >> booting from anything other than NFS. This was not necessary back in the >> 2.6.15-times AFAICR. >> >> 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", >> don't forget the dash if you are not using an initrd). If you don't do >> this, >> u-boot can't fix your DT, and the kernel probably won't find it either. >> >> 8. Be sure to use the correct version of the DTC (DT compiler) for your >> kernel >> (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). >> The >> command used to compile, should probably be something like this: >> >> $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 >> dts/myplatform.dts >> >> Load the resulting .dtb file directly with u-boot (don't make an u-image >> out >> of it). >> >> That's all I remember right now... hope it helps. >> >> Regards, >> >> -- >> David Jander >> >> >> _______________________________________________ >> Linuxppc-embedded mailing list >> Linuxppc-embedded@ozlabs.org >> https://ozlabs.org/mailman/listinfo/linuxppc-embedded >> > > > > -- > Grant Likely, B.Sc., P.Eng. > Secret Lab Technologies Ltd. > > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. --0-855080617-1219436378=:20537 Content-Type: text/html; charset=us-ascii
Bingo! I get console output now :-)
The kernel oops now and most probably it is because I am using the initrd from my linux 2.6.15. That should be easy to fix.

Thank you so much for your help.  I could not  have done this without you.

gratefully
LK

----- Original Message ----
From: Grant Likely <grant.likely@secretlab.ca>
To: Laxmikant Rashinkar <lk.atwork@yahoo.com>
Cc: linuxppc-embedded@ozlabs.org
Sent: Friday, August 22, 2008 1:04:38 PM
Subject: Re: porting linux 2.6.27 to embedded powerpc board

Add the following to the end of your dts file and see what happens:

chosen {
        linux,stdout-path = &serial0;
};

On Fri, Aug 22, 2008 at 1:57 PM, Laxmikant Rashinkar
<lk.atwork@yahoo.com> wrote:
> Hi,
>
> my .dts file is called mpc834x_mds.dts. (My processor is MPC8347)
> Here are its contents.
>
> /*
>  * MPC8349E MDS Device Tree Source
>  *
>  * Copyright 2005, 2006 Freescale Semiconductor Inc.
>  *
>  * This program is free software; you can redistribute  it and/or modify it
>  * under  the terms of  the GNU General  Public License as published by the
>  * Free Software Foundation;  either version 2 of the  License, or (at your
>  * option) any later version.
>  */
>
> /dts-v1/;
>
> / {
>        model = "MPC8349EMDS";
>        compatible = "MPC8349EMDS", "MPC834xMDS", "MPC83xxMDS";
>        #address-cells = <1>;
>        #size-cells = <1>;
>
>        aliases {
>                ethernet0 = &enet0;
>                ethernet1 = &enet1;
>                serial0 = &serial0;
>                serial1 = &serial1;
>                pci0 = &pci0;
>                pci1 = &pci1;
>        };
>
>        cpus {
>                #address-cells = <1>;
>                #size-cells = <0>;
>
>                PowerPC,8349@0 {
>                        device_type = "cpu";
>                        reg = <0x0>;
>                        d-cache-line-size = <32>;
>                        i-cache-line-size = <32>;
>                        d-cache-size = <32768>;
>                        i-cache-size = <32768>;
>                        timebase-frequency = <0>;      // from bootloader
>                        bus-frequency = <0>;            // from bootloader
>                        clock-frequency = <0>;          // from bootloader
>                };
>        };
>
>        memory {
>                device_type = "memory";
>                reg = <0x00000000 0x10000000>;  // 256MB at 0
>        };
>
>        bcsr@e2400000 {
>                device_type = "board-control";
>                reg = <0xe2400000 0x8000>;
>        };
>
>        soc8349@e0000000 {
>                #address-cells = <1>;
>                #size-cells = <1>;
>                device_type = "soc";
>                compatible = "simple-bus";
>                ranges = <0x0 0xe0000000 0x00100000>;
>                reg = <0xe0000000 0x00000200>;
>                bus-frequency = <0>;
>
>                wdt@200 {
>                        device_type = "watchdog";
>                        compatible = "mpc83xx_wdt";
>                        reg = <0x200 0x100>;
>                };
>
>                i2c@3000 {
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>                        cell-index = <0>;
>                        compatible = "fsl-i2c";
>                        reg = <0x3000 0x100>;
>                        interrupts = <14 0x8>;
>                        interrupt-parent = <&ipic>;
>                        dfsrr;
>
>                        rtc@68 {
>                                compatible = "dallas,ds1374";
>                                reg = <0x68>;
>                        };
>                };
>
>                i2c@3100 {
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>                        cell-index = <1>;
>                        compatible = "fsl-i2c";
>                        reg = <0x3100 0x100>;
>                        interrupts = <15 0x8>;
>                        interrupt-parent = <&ipic>;
>                        dfsrr;
>                };
>
>                spi@7000 {
>                        cell-index = <0>;
>                        compatible = "fsl,spi";
>                        reg = <0x7000 0x1000>;
>                        interrupts = <16 0x8>;
>                        interrupt-parent = <&ipic>;
>                        mode = "cpu";
>                };
>
>                dma@82a8 {
>                        #address-cells = <1>;
>                        #size-cells = <1>;
>                        compatible = "fsl,mpc8349-dma", "fsl,elo-dma";
>                        reg = <0x82a8 4>;
>                        ranges = <0 0x8100 0x1a8>;
>                        interrupt-parent = <&ipic>;
>                        interrupts = <71 8>;
>                        cell-index = <0>;
>                        dma-channel@0 {
>                                compatible = "fsl,mpc8349-dma-channel",
> "fsl,elo-dma-channel";
>                                reg = <0 0x80>;
>                                interrupt-parent = <&ipic>;
>                                interrupts = <71 8>;
>                        };
>                        dma-channel@80 {
>                                compatible = "fsl,mpc8349-dma-channel",
> "fsl,elo-dma-channel";
>                                reg = <0x80 0x80>;
>                                interrupt-parent = <&ipic>;
>                                interrupts = <71 8>;
>                        };
>                        dma-channel@100 {
>                                compatible = "fsl,mpc8349-dma-channel",
> "fsl,elo-dma-channel";
>                                reg = <0x100 0x80>;
>                                interrupt-parent = <&ipic>;
>                                interrupts = <71 8>;
>                        };
>                        dma-channel@180 {
>                                compatible = "fsl,mpc8349-dma-channel",
> "fsl,elo-dma-channel";
>                                reg = <0x180 0x28>;
>                                interrupt-parent = <&ipic>;
>                                interrupts = <71 8>;
>                        };
>                };
>
>                /* phy type (ULPI or SERIAL) are only types supported for
> MPH */
>                /* port = 0 or 1 */
>                usb@22000 {
>                        compatible = "fsl-usb2-mph";
>                        reg = <0x22000 0x1000>;
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>                        interrupt-parent = <&ipic>;
>                        interrupts = <39 0x8>;
>                        phy_type = "ulpi";
>                        port1;
>                };
>                /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
>                usb@23000 {
>                        compatible = "fsl-usb2-dr";
>                        reg = <0x23000 0x1000>;
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>                        interrupt-parent = <&ipic>;
>                        interrupts = <38 0x8>;
>                        dr_mode = "otg";
>                        phy_type = "ulpi";
>                };
>
>                mdio@24520 {
>                        #address-cells = <1>;
>                        #size-cells = <0>;
>                        compatible = "fsl,gianfar-mdio";
>                        reg = <0x24520 0x20>;
>
>                        phy0: ethernet-phy@0 {
>                                interrupt-parent = <&ipic>;
>                                interrupts = <17 0x8>;
>                                reg = <0x0>;
>                                device_type = "ethernet-phy";
>                        };
>                        phy1: ethernet-phy@1 {
>                                interrupt-parent = <&ipic>;
>                                interrupts = <18 0x8>;
>                                reg = <0x1>;
>                                device_type = "ethernet-phy";
>                        };
>                };
>
>                enet0: ethernet@24000 {
>                        cell-index = <0>;
>                        device_type = "network";
>                        model = "TSEC";
>                        compatible = "gianfar";
>                        reg = <0x24000 0x1000>;
>                        local-mac-address = [ 00 00 00 00 00 00 ];
>                        interrupts = <32 0x8 33 0x8 34 0x8>;
>                        interrupt-parent = <&ipic>;
>                        phy-handle = <&phy0>;
>                        linux,network-index = <0>;
>                };
>
>                enet1: ethernet@25000 {
>                        cell-index = <1>;
>                        device_type = "network";
>                        model = "TSEC";
>                        compatible = "gianfar";
>                        reg = <0x25000 0x1000>;
>                        local-mac-address = [ 00 00 00 00 00 00 ];
>                        interrupts = <35 0x8 36 0x8 37 0x8>;
>                        interrupt-parent = <&ipic>;
>                        phy-handle = <&phy1>;
>                        linux,network-index = <1>;
>                };
>
>                serial0: serial@4500 {
>                        cell-index = <0>;
>                        device_type = "serial";
>                        compatible = "ns16550";
>                        reg = <0x4500 0x100>;
>                        clock-frequency = <0>;
>                        interrupts = <9 0x8>;
>                        interrupt-parent = <&ipic>;
>                };
>
>                serial1: serial@4600 {
>                        cell-index = <1>;
>                        device_type = "serial";
>                        compatible = "ns16550";
>                        reg = <0x4600 0x100>;
>                        clock-frequency = <0>;
>                        interrupts = <10 0x8>;
>                        interrupt-parent = <&ipic>;
>                };
>
>                crypto@30000 {
>                        compatible = "fsl,sec2.0";
>                        reg = <0x30000 0x10000>;
>                        interrupts = <11 0x8>;
>                        interrupt-parent = <&ipic>;
>                        fsl,num-channels = <4>;
>                        fsl,channel-fifo-len = <24>;
>                        fsl,exec-units-mask = <0x7e>;
>                        fsl,descriptor-types-mask = <0x01010ebf>;
>                };
>
>                /* IPIC
>                  * interrupts cell = <intr #, sense>
>                  * sense values match linux IORESOURCE_IRQ_* defines:
>                  * sense == 8: Level, low assertion
>                  * sense == 2: Edge, high-to-low change
>                  */
>                ipic: pic@700 {
>                        interrupt-controller;
>                        #address-cells = <0>;
>                        #interrupt-cells = <2>;
>                        reg = <0x700 0x100>;
>                        device_type = "ipic";
>                };
>        };
>
>        pci0: pci@e0008500 {
>                cell-index = <1>;
>                interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
>                interrupt-map = <
>
>                                /* IDSEL 0x11 */
>                                  0x8800 0x0 0x0 0x1 &ipic 20 0x8
>                                  0x8800 0x0 0x0 0x2 &ipic 21 0x8
>                                  0x8800 0x0 0x0 0x3 &ipic 22 0x8
>                                  0x8800 0x0 0x0 0x4 &ipic 23 0x8
>
>                                /* IDSEL 0x12 */
>                                  0x9000 0x0 0x0 0x1 &ipic 22 0x8
>                                  0x9000 0x0 0x0 0x2 &ipic 23 0x8
>                                  0x9000 0x0 0x0 0x3 &ipic 20 0x8
>                                  0x9000 0x0 0x0 0x4 &ipic 21 0x8
>
>                                /* IDSEL 0x13 */
>                                  0x9800 0x0 0x0 0x1 &ipic 23 0x8
>                                  0x9800 0x0 0x0 0x2 &ipic 20 0x8
>                                  0x9800 0x0 0x0 0x3 &ipic 21 0x8
>                                  0x9800 0x0 0x0 0x4 &ipic 22 0x8
>
>                                /* IDSEL 0x15 */
>                                  0xa800 0x0 0x0 0x1 &ipic 20 0x8
>                                  0xa800 0x0 0x0 0x2 &ipic 21 0x8
>                                  0xa800 0x0 0x0 0x3 &ipic 22 0x8
>                                  0xa800 0x0 0x0 0x4 &ipic 23 0x8
>
>                                /* IDSEL 0x16 */
>                                  0xb000 0x0 0x0 0x1 &ipic 23 0x8
>                                  0xb000 0x0 0x0 0x2 &ipic 20 0x8
>                                  0xb000 0x0 0x0 0x3 &ipic 21 0x8
>                                  0xb000 0x0 0x0 0x4 &ipic 22 0x8
>
>                                /* IDSEL 0x17 */
>                                  0xb800 0x0 0x0 0x1 &ipic 22 0x8
>                                  0xb800 0x0 0x0 0x2 &ipic 23 0x8
>                                  0xb800 0x0 0x0 0x3 &ipic 20 0x8
>                                  0xb800 0x0 0x0 0x4 &ipic 21 0x8
>
>                                /* IDSEL 0x18 */
>                                  0xc000 0x0 0x0 0x1 &ipic 21 0x8
>                                  0xc000 0x0 0x0 0x2 &ipic 22 0x8
>                                  0xc000 0x0 0x0 0x3 &ipic 23 0x8
>                                  0xc000 0x0 0x0 0x4 &ipic 20 0x8>;
>                interrupt-parent = <&ipic>;
>                interrupts = <66 0x8>;
>                bus-range = <0 0>;
>                ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0
> 0x10000000
>                          0x42000000 0x0 0x80000000 0x80000000 0x0
> 0x10000000
>                          0x01000000 0x0 0x00000000 0xe2000000 0x0
> 0x00100000>;
>                clock-frequency = <66666666>;
>                #interrupt-cells = <1>;
>                #size-cells = <2>;
>                #address-cells = <3>;
>                reg = <0xe0008500 0x100>;
>                compatible = "fsl,mpc8349-pci";
>                device_type = "pci";
>        };
>
>        pci1: pci@e0008600 {
>                cell-index = <2>;
>                interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
>                interrupt-map = <
>
>                                /* IDSEL 0x11 */
>                                  0x8800 0x0 0x0 0x1 &ipic 20 0x8
>                                  0x8800 0x0 0x0 0x2 &ipic 21 0x8
>                                  0x8800 0x0 0x0 0x3 &ipic 22 0x8
>                                  0x8800 0x0 0x0 0x4 &ipic 23 0x8
>
>                                /* IDSEL 0x12 */
>                                  0x9000 0x0 0x0 0x1 &ipic 22 0x8
>                                  0x9000 0x0 0x0 0x2 &ipic 23 0x8
>                                  0x9000 0x0 0x0 0x3 &ipic 20 0x8
>                                  0x9000 0x0 0x0 0x4 &ipic 21 0x8
>
>                                /* IDSEL 0x13 */
>                                  0x9800 0x0 0x0 0x1 &ipic 23 0x8
>                                  0x9800 0x0 0x0 0x2 &ipic 20 0x8
>                                  0x9800 0x0 0x0 0x3 &ipic 21 0x8
>                                  0x9800 0x0 0x0 0x4 &ipic 22 0x8
>
>                                /* IDSEL 0x15 */
>                                  0xa800 0x0 0x0 0x1 &ipic 20 0x8
>                                  0xa800 0x0 0x0 0x2 &ipic 21 0x8
>                                  0xa800 0x0 0x0 0x3 &ipic 22 0x8
>                                  0xa800 0x0 0x0 0x4 &ipic 23 0x8
>
>                                /* IDSEL 0x16 */
>                                  0xb000 0x0 0x0 0x1 &ipic 23 0x8
>                                  0xb000 0x0 0x0 0x2 &ipic 20 0x8
>                                  0xb000 0x0 0x0 0x3 &ipic 21 0x8
>                                  0xb000 0x0 0x0 0x4 &ipic 22 0x8
>
>                                /* IDSEL 0x17 */
>                                  0xb800 0x0 0x0 0x1 &ipic 22 0x8
>                                  0xb800 0x0 0x0 0x2 &ipic 23 0x8
>                                  0xb800 0x0 0x0 0x3 &ipic 20 0x8
>                                  0xb800 0x0 0x0 0x4 &ipic 21 0x8
>
>                                /* IDSEL 0x18 */
>                                  0xc000 0x0 0x0 0x1 &ipic 21 0x8
>                                  0xc000 0x0 0x0 0x2 &ipic 22 0x8
>                                  0xc000 0x0 0x0 0x3 &ipic 23 0x8
>                                  0xc000 0x0 0x0 0x4 &ipic 20 0x8>;
>                interrupt-parent = <&ipic>;
>                interrupts = <67 0x8>;
>                bus-range = <0 0>;
>                ranges = <0x02000000 0x0 0xb0000000 0xb0000000 0x0
> 0x10000000
>                          0x42000000 0x0 0xa0000000 0xa0000000 0x0
> 0x10000000
>                          0x01000000 0x0 0x00000000 0xe2100000 0x0
> 0x00100000>;
>                clock-frequency = <66666666>;
>                #interrupt-cells = <1>;
>                #size-cells = <2>;
>                #address-cells = <3>;
>                reg = <0xe0008600 0x100>;
>                compatible = "fsl,mpc8349-pci";
>                device_type = "pci";
>        };
> };
>
>
> thanks
> LK
>
>
> ----- Original Message ----
> From: Grant Likely <grant.likely@secretlab.ca>
> To: Laxmikant Rashinkar <lk.atwork@yahoo.com>
> Cc: linuxppc-embedded@ozlabs.org
> Sent: Friday, August 22, 2008 12:45:54 PM
> Subject: Re: porting linux 2.6.27 to embedded powerpc board
>
> On Fri, Aug 22, 2008 at 12:26 PM, Laxmikant Rashinkar
> <lk.atwork@yahoo.com> wrote:
>> Hi,
>>
>> I still haven't gotten anything to work :-(
>>
>> I'm using Uboot 1.1.4 and Linux 2.6.27 but instead of using uImage, I'm
>> using cuImage.<myboard>
>> The args to dtc are as listed by David Jander
>
> Please post you .dts file and the filename you are using for it.
>
> g.
>
>>
>> My cmd line args are:
>> setenv bootargs root=/dev/ram0 init=/rescue rw console=ttyS0,9600
>> ramdisk_size=65536
>>
>> When I attempt to boot my image it just hangs w/o any output. I dearly
>> wish
>> I could get some console output.
>> Here is the actual display from uboot:
>>
>> ## Booting image at 00800000 ...
>>    Image Name:  Linux-2.6.27-rc2
>>    Image Type:  PowerPC Linux Kernel Image (gzip compressed)
>>    Data Size:    1640425 Bytes =  1.6 MB
>>    Load Address: 00400000
>>    Entry Point:  0040055c
>>    Verifying Checksum ... OK
>>    Uncompressing Kernel Image ... OK
>> ## Loading RAMDisk Image at 01000000 ...
>>    Image Name:  flash_root.ext3.gz
>>    Image Type:  PowerPC Linux RAMDisk Image (gzip compressed)
>>    Data Size:    13450106 Bytes = 12.8 MB
>>    Load Address: 00000000
>>    Entry Point:  00000000
>>    Verifying Checksum ... OK
>>    Loading Ramdisk to 0f29d000, end 0ff70b7a ... OK
>>
>> Two questions:
>>
>> 1) the load address and entry point for the kernel (see above) are
>> non-zero.
>> When we load via uImage, they are always zero. Is this normal? dtc has not
>> options to set the load address and entry point.
>>
>> 2) When I build my kernel, I get two warnings. Could these be causing a
>> problem?
>>
>> WARNING: mm/built-in.o(.data+0x8ec): Section mismatch in reference from
>> the
>> variable contig_page_data to the variable .init.data:bootmem_node_data
>> The variable contig_page_data references
>> the variable __initdata bootmem_node_data
>> If the reference is valid then annotate the
>> variable with __init* (see linux/init.h) or name the variable:
>> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one,
>> *_console,
>>
>>
>>  MODPOST vmlinux.o
>> WARNING: vmlinux.o(.data+0xfe74): Section mismatch in reference from the
>> variable contig_page_data to the variable .init.data:bootmem_node_data
>> The variable contig_page_data references
>> the variable __initdata bootmem_node_data
>> If the reference is valid then annotate the
>> variable with __init* (see linux/init.h) or name the variable:
>> *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one,
>> *_console,
>>
>> thanks so much for your help.
>>
>> LK
>>
>> ----- Original Message ----
>> From: David Jander <david.jander@protonic.nl>
>> To: linuxppc-embedded@ozlabs.org
>> Cc: Laxmikant Rashinkar <lk.atwork@yahoo.com>
>> Sent: Thursday, August 21, 2008 2:43:45 AM
>> Subject: Re: porting linux 2.6.27 to embedded powerpc board
>>
>> On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote:
>>> Hi,
>>>
>>> I have an embedded PowerPC (MPC8347) board that works fine with uboot and
>>> Linux 2.6.15.
>>>
>>> I am trying to upgrade the kernel so that it runs on the latest release -
>>> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform,
>>> but of course it does not boot.
>>
>> Well, honestly I don't know where to look for information either (other
>> than
>> the source-code and examples from others), but here is a list with points
>> to
>> look out for (I have just done the same thing as you for a MPC5200B-based
>> board):
>>
>> 1. Upgrade to latest u-boot first (recent git seems to be fine). There
>> have
>> been a lot of changes in u-boot lately about OF and device-tree related
>> things. I suspect you need a fairly recent version of u-boot to go well
>> with
>> the latest kernel. It's also generally a good idea IMHO.
>>
>> 2. I assume you are porting to arch/powerpc (the old arch/ppc you used
>> back
>> in
>> 2.6.15 is obsolete and broken now).
>>
>> 3. Look at other platforms that use the same processor, and pick a simple
>> one
>> as starting point. Look out for the dts (device-tree-source file in
>> arch/powerpc/boot/dts), copy and modify one to reflect your hardware.
>> Recently a lot of changes happend in the kernel, changing device names,
>> obsoleting "device-type" tags, etc..., so some of the current DTS sources
>> included in the kernel might not even work (wrong device name, missing
>> information, wrong use of "device-type", etc...), so watch out for these
>> kind
>> of issues too.
>>
>> 4. Be sure that the device(s) necessary to produce output on your console
>> are
>> correctly placed in the DT. Also make sure that u-boot knows about it
>> (#define OF_STDOUT_PATH... in your u-boot board config file)
>>
>> 5. When compiling the device tree, it may be necessary to add some extra
>> reserved entries to the compiled tree (I am using dtc -p 10240 -R 20,
>> which
>> might be slightly exaggerated), because u-boot may add something to it,
>> and
>> if it can't, linux won't boot.
>>
>> 6. Remember to always specify the "rootfstype=" option on the commandline
>> if
>> booting from anything other than NFS. This was not necessary back in the
>> 2.6.15-times AFAICR.
>>
>> 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb",
>> don't forget the dash if you are not using an initrd). If you don't do
>> this,
>> u-boot can't fix your DT, and the kernel probably won't find it either.
>>
>> 8. Be sure to use the correct version of the DTC (DT compiler) for your
>> kernel
>> (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC).
>> The
>> command used to compile, should probably be something like this:
>>
>> $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0
>> dts/myplatform.dts
>>
>> Load the resulting .dtb file directly with u-boot (don't make an u-image
>> out
>> of it).
>>
>> That's all I remember right now... hope it helps.
>>
>> Regards,
>>
>> --
>> David Jander
>>
>>
>> _______________________________________________
>> Linuxppc-embedded mailing list
>> Linuxppc-embedded@ozlabs.org
>> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>>
>
>
>
> --
> Grant Likely, B.Sc., P.Eng.
> Secret Lab Technologies Ltd.
>
>



--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.

--0-855080617-1219436378=:20537-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from n66.bullet.mail.sp1.yahoo.com (n66.bullet.mail.sp1.yahoo.com [98.136.44.50]) by ozlabs.org (Postfix) with SMTP id 5AE88DE647 for ; Tue, 26 Aug 2008 02:58:40 +1000 (EST) Date: Mon, 25 Aug 2008 09:51:58 -0700 (PDT) From: Laxmikant Rashinkar Subject: Re: porting linux 2.6.27 to embedded powerpc board To: linuxppc-embedded@ozlabs.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-1761968134-1219683118=:963" Message-ID: <181798.963.qm@web46309.mail.sp1.yahoo.com> List-Id: Linux on Embedded PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-1761968134-1219683118=:963 Content-Type: text/plain; charset=us-ascii Hi, I now have the system booted all the up to the shell prompt. However, my two NIC cards are not up. When the system is booting, I get the following error: TCP cubic registered NET: Registered protocol family 17 RPC: Registered udp transport module. RPC: Registered tcp transport module. 24520:00 not found eth0: Could not attach to PHY IP-Config: Failed to open eth0 IP-Config: Device `eth0' not found. here is the networking section from my .dts file mdio@24520 { #address-cells = <1>; #size-cells = <0>; compatible = "fsl,gianfar-mdio"; reg = <0x24520 0x20>; phy0: ethernet-phy@0 { interrupt-parent = <&ipic>; interrupts = <17 0x8>; reg = <0x0>; device_type = "ethernet-phy"; }; phy1: ethernet-phy@1 { interrupt-parent = <&ipic>; interrupts = <18 0x8>; reg = <0x1>; device_type = "ethernet-phy"; }; }; enet0: ethernet@24000 { cell-index = <0>; device_type = "network"; model = "TSEC"; compatible = "gianfar"; reg = <0x24000 0x1000>; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <32 0x8 33 0x8 34 0x8>; interrupt-parent = <&ipic>; phy-handle = <&phy0>; linux,network-index = <0>; }; enet1: ethernet@25000 { cell-index = <1>; device_type = "network"; model = "TSEC"; compatible = "gianfar"; reg = <0x25000 0x1000>; local-mac-address = [ 00 00 00 00 00 00 ]; interrupts = <35 0x8 36 0x8 37 0x8>; interrupt-parent = <&ipic>; phy-handle = <&phy1>; linux,network-index = <1>; }; Does anything here seem to be wrong? thanks for your help LK ----- Original Message ---- From: David Jander To: linuxppc-embedded@ozlabs.org Cc: Laxmikant Rashinkar Sent: Thursday, August 21, 2008 2:43:45 AM Subject: Re: porting linux 2.6.27 to embedded powerpc board On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote: > Hi, > > I have an embedded PowerPC (MPC8347) board that works fine with uboot and > Linux 2.6.15. > > I am trying to upgrade the kernel so that it runs on the latest release - > Linux 2.6.27. So far, I have gotten the kernel to compile on my platform, > but of course it does not boot. Well, honestly I don't know where to look for information either (other than the source-code and examples from others), but here is a list with points to look out for (I have just done the same thing as you for a MPC5200B-based board): 1. Upgrade to latest u-boot first (recent git seems to be fine). There have been a lot of changes in u-boot lately about OF and device-tree related things. I suspect you need a fairly recent version of u-boot to go well with the latest kernel. It's also generally a good idea IMHO. 2. I assume you are porting to arch/powerpc (the old arch/ppc you used back in 2.6.15 is obsolete and broken now). 3. Look at other platforms that use the same processor, and pick a simple one as starting point. Look out for the dts (device-tree-source file in arch/powerpc/boot/dts), copy and modify one to reflect your hardware. Recently a lot of changes happend in the kernel, changing device names, obsoleting "device-type" tags, etc..., so some of the current DTS sources included in the kernel might not even work (wrong device name, missing information, wrong use of "device-type", etc...), so watch out for these kind of issues too. 4. Be sure that the device(s) necessary to produce output on your console are correctly placed in the DT. Also make sure that u-boot knows about it (#define OF_STDOUT_PATH... in your u-boot board config file) 5. When compiling the device tree, it may be necessary to add some extra reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which might be slightly exaggerated), because u-boot may add something to it, and if it can't, linux won't boot. 6. Remember to always specify the "rootfstype=" option on the commandline if booting from anything other than NFS. This was not necessary back in the 2.6.15-times AFAICR. 7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb", don't forget the dash if you are not using an initrd). If you don't do this, u-boot can't fix your DT, and the kernel probably won't find it either. 8. Be sure to use the correct version of the DTC (DT compiler) for your kernel (the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The command used to compile, should probably be something like this: $ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 dts/myplatform.dts Load the resulting .dtb file directly with u-boot (don't make an u-image out of it). That's all I remember right now... hope it helps. Regards, -- David Jander --0-1761968134-1219683118=:963 Content-Type: text/html; charset=us-ascii
Hi,

I now have the system booted all the up to the shell prompt.
However, my two NIC cards are not up.

When the system is booting, I get the following error:

TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
24520:00 not found
eth0: Could not attach to PHY
IP-Config: Failed to open eth0
IP-Config: Device `eth0' not found.

here is the networking section from my .dts file

                mdio@24520 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        compatible = "fsl,gianfar-mdio";
                        reg = <0x24520 0x20>;

                        phy0: ethernet-phy@0 {
                                interrupt-parent = <&ipic>;
                                interrupts = <17 0x8>;
                                reg = <0x0>;
                                device_type = "ethernet-phy";
                        };
                        phy1: ethernet-phy@1 {
                                interrupt-parent = <&ipic>;
                                interrupts = <18 0x8>;
                                reg = <0x1>;
                                device_type = "ethernet-phy";
                        };
                };

                enet0: ethernet@24000 {
                        cell-index = <0>;
                        device_type = "network";
                        model = "TSEC";
                        compatible = "gianfar";
                        reg = <0x24000 0x1000>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupts = <32 0x8 33 0x8 34 0x8>;
                        interrupt-parent = <&ipic>;
                        phy-handle = <&phy0>;
                        linux,network-index = <0>;
                };

                enet1: ethernet@25000 {
                        cell-index = <1>;
                        device_type = "network";
                        model = "TSEC";
                        compatible = "gianfar";
                        reg = <0x25000 0x1000>;
                        local-mac-address = [ 00 00 00 00 00 00 ];
                        interrupts = <35 0x8 36 0x8 37 0x8>;
                        interrupt-parent = <&ipic>;
                        phy-handle = <&phy1>;
                        linux,network-index = <1>;
                };

Does anything here seem to be wrong?

thanks for your help
LK


----- Original Message ----
From: David Jander <david.jander@protonic.nl>
To: linuxppc-embedded@ozlabs.org
Cc: Laxmikant Rashinkar <lk.atwork@yahoo.com>
Sent: Thursday, August 21, 2008 2:43:45 AM
Subject: Re: porting linux 2.6.27 to embedded powerpc board

On Thursday 21 August 2008 01:24:46 Laxmikant Rashinkar wrote:
> Hi,
>
> I have an embedded PowerPC (MPC8347) board that works fine with uboot and
> Linux 2.6.15.
>
> I am trying to upgrade the kernel so that it runs on the latest release -
> Linux 2.6.27. So far, I have gotten the kernel to compile on my platform,
> but of course it does not boot.

Well, honestly I don't know where to look for information either (other than
the source-code and examples from others), but here is a list with points to
look out for (I have just done the same thing as you for a MPC5200B-based
board):

1. Upgrade to latest u-boot first (recent git seems to be fine). There have
been a lot of changes in u-boot lately about OF and device-tree related
things. I suspect you need a fairly recent version of u-boot to go well with
the latest kernel. It's also generally a good idea IMHO.

2. I assume you are porting to arch/powerpc (the old arch/ppc you used back in
2.6.15 is obsolete and broken now).

3. Look at other platforms that use the same processor, and pick a simple one
as starting point. Look out for the dts (device-tree-source file in
arch/powerpc/boot/dts), copy and modify one to reflect your hardware.
Recently a lot of changes happend in the kernel, changing device names,
obsoleting "device-type" tags, etc..., so some of the current DTS sources
included in the kernel might not even work (wrong device name, missing
information, wrong use of "device-type", etc...), so watch out for these kind
of issues too.

4. Be sure that the device(s) necessary to produce output on your console are
correctly placed in the DT. Also make sure that u-boot knows about it
(#define OF_STDOUT_PATH... in your u-boot board config file)

5. When compiling the device tree, it may be necessary to add some extra
reserved entries to the compiled tree (I am using dtc -p 10240 -R 20, which
might be slightly exaggerated), because u-boot may add something to it, and
if it can't, linux won't boot.

6. Remember to always specify the "rootfstype=" option on the commandline if
booting from anything other than NFS. This was not necessary back in the
2.6.15-times AFAICR.

7. Boot with a device-tree (in u-boot: "bootm $addrofkernel - $addrofdtb",
don't forget the dash if you are not using an initrd). If you don't do this,
u-boot can't fix your DT, and the kernel probably won't find it either.

8. Be sure to use the correct version of the DTC (DT compiler) for your kernel
(the sources are included nowadays, somewhere in arch/powerpc/boot IIRC). The
command used to compile, should probably be something like this:

$ ./dtc -p 10240 -R 20 -I dts -o myplatform.dtb -O dtb -b 0 dts/myplatform.dts

Load the resulting .dtb file directly with u-boot (don't make an u-image out
of it).

That's all I remember right now... hope it helps.

Regards,

--
David Jander

--0-1761968134-1219683118=:963--