uboot移植linux2.6.24到powerpc上遇到dtb的问题

172 views
Skip to first unread message

林志平

unread,
Nov 26, 2009, 10:49:52 PM11/26/09
to linux-...@zh-kernel.org
Hi,大家好,第一次使用linux中文 maillist,现在遇到一个dtb的问题
使用的版本uboot2009.08, dtc:v1.0.0, linux2.6.24
linux/
make
make disclean
make ARCH=powerpc mpc8544ds_df_config
make menuconfig
make
生成uImage
然后使用v1.0.0版本的dtc编译mpc8544ds.dts(在内核相关目录下面)
dtc -I dts -O dtb -V 0x10 -f mpc8544ds.dts -o mpc8544ds.dtb
生成一个6.1k的mpc8544ds.dtb
使用tftpboot
tftpboot 0x1000000 mpc8544ds.dtb
tftpboot 0x1002000 uImage
=> bootm 0x1002000 - 0x1000000
## Booting kernel from Legacy Image at 01002000 ...
Image Name: Linux-2.6.24.2
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1940190 Bytes = 1.9 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 01000000
Booting using the fdt blob at 0x1000000
Uncompressing Kernel Image ... OK
Loading Device Tree to 00ffb000, end 00fff80a ... OK
WARNING: could not set linux,stdout-path FDT_ERR_NOTFOUND.
ERROR: /chosen node create failed - must RESET the board to recover.

提示信息说没有chosen这个节点,并且在创建的时候报错。然后我就在mpc8544ds.dts中添加了chosen这样的节点 chosen
{
linux,stdout-path = "/soc8544/serial@4500";
};
但是重新生成的mpc8544ds.dtb还是抱同样的错误,说没有找到chosen节点,这个比较奇怪啊
我该怎么改呢?
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org

Liu BangYun

unread,
Nov 27, 2009, 2:12:51 AM11/27/09
to 林志平, linux-...@zh-kernel.org
你可以看一下bootm命令,在u-boot里会自己创建/chosen节点

2009/11/27 林志平 <soly...@gmail.com>

Li Yang-R58472

unread,
Nov 27, 2009, 2:18:54 AM11/27/09
to 林志平, linux-...@zh-kernel.org
>Subject: uboot移植linux2.6.24到powerpc上遇到dtb的问题
>
>Hi,大家好,第一次使用linux中文 maillist,现在遇到一个dtb的问题
>使用的版本uboot2009.08, dtc:v1.0.0, linux2.6.24 linux/ make make
>disclean make ARCH=powerpc mpc8544ds_df_config make menuconfig make
>生成uImage
>然后使用v1.0.0版本的dtc编译mpc8544ds.dts(在内核相关目录下面)
>dtc -I dts -O dtb -V 0x10 -f mpc8544ds.dts -o mpc8544ds.dtb

试着加个参数"-p 1024"

- Leo

林志平

unread,
Nov 27, 2009, 4:16:18 AM11/27/09
to Li Yang-R58472, linux-...@zh-kernel.org
2009/11/27 Li Yang-R58472 <r58...@freescale.com>

> >Subject: uboot移植linux2.6.24到powerpc上遇到dtb的问题
> >
> >Hi,大家好,第一次使用linux中文 maillist,现在遇到一个dtb的问题
> >使用的版本uboot2009.08, dtc:v1.0.0, linux2.6.24 linux/ make make
> >disclean make ARCH=powerpc mpc8544ds_df_config make menuconfig make
> >生成uImage
> >然后使用v1.0.0版本的dtc编译mpc8544ds.dts(在内核相关目录下面)
> >dtc -I dts -O dtb -V 0x10 -f mpc8544ds.dts -o mpc8544ds.dtb
>
> 试着加个参数"-p 1024"
>
> - Leo
>

dtc 1.0.0版本没有-p这个参数
是不是dtc版本的问题呢,uboot用了最新的2009,dtc是不是也要跟上啊

Gao Ya'nan

unread,
Nov 27, 2009, 5:45:26 AM11/27/09
to linux-...@zh-kernel.org
我说一下我的环境:ELDK 4.1 + Linux 2.6.31.6-denx。

我用的有 MPC875 和 MPC8378,没有直接用 dtc 命令生成,直接用 make ARCH=powerpc O=../xxxx
mpcmpc8544ds.dtb 生成文件的。

林志平

unread,
Nov 29, 2009, 10:09:28 PM11/29/09
to Gao Ya'nan, linux-...@zh-kernel.org
2009/11/27 Gao Ya'nan <abutt...@gmail.com>

> 我说一下我的环境:ELDK 4.1 + Linux 2.6.31.6-denx。
>
> 我用的有 MPC875 和 MPC8378,没有直接用 dtc 命令生成,直接用 make ARCH=powerpc O=../xxxx
> mpcmpc8544ds.dtb 生成文件的。
>

~~~~~~~~~~~~~~这句话怎么理解啊?
我直接make,没有.dtb文件生成

林志平

unread,
Nov 30, 2009, 1:13:21 AM11/30/09
to linux-...@zh-kernel.org
刚没有回复这个maillist,再重发一遍
我发现2.6.24下没有带dtc工具
2.6.31下面就带了这个工具,

make ARCH=powerpc ./arch/powerpc/boot/dts/mpc8544ds.dts mpc8544ds.dtb
这样就会生成mpc8544ds.dtb文件
生了uImage跟mpc8544ds.dtb

## tftpboot 0x1000000 mpc8544ds.dtb
## tftpboot 0x1004000 uImage
=> bootm 0x1004000 - 0x1000000
## Booting kernel from Legacy Image at 01004000 ...
Image Name: Linux-2.6.31

Image Type: PowerPC Linux Kernel Image (gzip compressed)

Data Size: 2400522 Bytes = 2.3 MB

Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 01000000
Booting using the fdt blob at 0x1000000
Uncompressing Kernel Image ... OK

之后就挂起了,你是什么板子啊,能够进入内核界面吗?
我还根据自己的板子修改了mpc8544ds.dts的内容,但还是挂起的,不知道为什么

>
> 2009/11/30 Liu BangYun <lban...@gmail.com>
>
> 我直接make也是没有。我采用的ltib自带的dtc来编译的;
>>
>> 2009/11/30 林志平 <soly...@gmail.com>

Gao Ya'nan

unread,
Nov 30, 2009, 8:20:48 AM11/30/09
to linux-...@zh-kernel.org
2009/11/30 林志平 <soly...@gmail.com>:

> 2009/11/27 Gao Ya'nan <abutt...@gmail.com>
>>
>> 我说一下我的环境:ELDK 4.1 + Linux 2.6.31.6-denx。
>>
>> 我用的有 MPC875 和 MPC8378,没有直接用 dtc 命令生成,直接用 make ARCH=powerpc O=../xxxx
>> mpcmpc8544ds.dtb 生成文件的。
>
> ~~~~~~~~~~~~~~这句话怎么理解啊?
是我多敲了一个 mpc,应该是 make ARCH=powerpc O=../xxxx mpc8378mds.dtb 或者 make
ARCH=powerpc O=../xxxx mpc885ads.dtb,就是用自带的规则生成 dtb 文件

> 我直接make,没有.dtb文件生成
我是这样用的,很正常,如果没有生成至少应该贴一下错误的信息吧。

胡建宾

unread,
Nov 30, 2009, 9:24:45 PM11/30/09
to Gao Ya'nan, linux-...@zh-kernel.org
Gao Ya'nan 写道:
dtb能自动生成吗?我一直都用dtc来手动生成。

林志平

unread,
Dec 1, 2009, 12:21:02 AM12/1/09
to 胡建宾, Gao Ya'nan, linux-...@zh-kernel.org
嗯,可以的,不过奇怪的是,Make的最后阶段,生成uImage之后,就把生成的dtb又删掉了。。。
你可以仔细看一下,内核make之后打印出来的信息,在最后一部分。
我现在linux内核,起来之后在一个地方死掉了,
估计是需要改dts文件了。
dtc这个东西是不是还在改进中啊,新老版本的语法规则的不一样了,老的20表示32
新的20就是十进制20.。。
很奇怪,powerpc干嘛要搞出来dtc这样一个东西,以前的传参规则不是蛮好的。。。

2009/12/1 胡建宾 <hu...@bjcarnation.com.cn>

Liu BangYun

unread,
Dec 1, 2009, 12:28:30 AM12/1/09
to 林志平, Gao Ya'nan, linux-...@zh-kernel.org
嗯,还在改进中,比较郁闷的时候就像你说的这种情况,有的用16进制,有的十进制;
而且内核中的dts样例这些都有。
这东西还有待改进吧。看样子你是看了那个booting-without-of,原因这个上面说了啊.

2009/12/1 林志平 <soly...@gmail.com>

Li Yang-R58472

unread,
Dec 1, 2009, 1:53:57 AM12/1/09
to 林志平, 胡建宾, Gao Ya'nan, linux-...@zh-kernel.org

>Subject: Re: uboot移植linux2.6.24到powerpc上遇到dtb的问题
>
>嗯,可以的,不过奇怪的是,Make的最后阶段,生成uImage之后,就把生成的dtb又删掉了。。。
>你可以仔细看一下,内核make之后打印出来的信息,在最后一部分。
>我现在linux内核,起来之后在一个地方死掉了,
>估计是需要改dts文件了。
>dtc这个东西是不是还在改进中啊,新老版本的语法规则的不一样了,老的20表示32
>新的20就是十进制20.。。

dts的定义一直在更新,用起来确实有点麻烦。

关于新老格式可以看看dts前面有没有一行: /dts-v1/;
如果有,数字默认就是10进制,没有,数字默认是16进制。

>很奇怪,powerpc干嘛要搞出来dtc这样一个东西,以前的传参规则不是蛮好的。。。

开始主要是IBM给Mac和服务器用的,那些东西的配置确实比较复杂。后来慢慢就渗透到嵌入式powerpc平台。

- Leo

Gao Ya'nan

unread,
Dec 1, 2009, 8:22:43 AM12/1/09
to linux-...@zh-kernel.org
2009/12/1 Li Yang-R58472 <r58...@freescale.com>:

>
>>Subject: Re: uboot移植linux2.6.24到powerpc上遇到dtb的问题
>>
>>嗯,可以的,不过奇怪的是,Make的最后阶段,生成uImage之后,就把生成的dtb又删掉了。。。
>>你可以仔细看一下,内核make之后打印出来的信息,在最后一部分。
>>我现在linux内核,起来之后在一个地方死掉了,
>>估计是需要改dts文件了。
>>dtc这个东西是不是还在改进中啊,新老版本的语法规则的不一样了,老的20表示32
>>新的20就是十进制20.。。
>
> dts的定义一直在更新,用起来确实有点麻烦。
>
> 关于新老格式可以看看dts前面有没有一行: /dts-v1/;
> 如果有,数字默认就是10进制,没有,数字默认是16进制。
>
>>很奇怪,powerpc干嘛要搞出来dtc这样一个东西,以前的传参规则不是蛮好的。。。
>
> 开始主要是IBM给Mac和服务器用的,那些东西的配置确实比较复杂。后来慢慢就渗透到嵌入式powerpc平台。
>
> - Leo
>
关键是没有准确的文档,我都是看 MPC85xx 的模板来改 MPC875 的配置的。

增加了驱动编写的障碍,不过也可以降低移植难度。

Reply all
Reply to author
Forward
0 new messages