[U-Boot] FDT: Question about embedded fdt enable

Simon Glass
2012-05-30T14:26:54Z

Hi Donghwa,

On Wed, May 30, 2012 at 12:37 AM, Donghwa Lee <dh09.lee@samsung.com> wrote:

> On Wed, May 23, 2012 at 15:13, Simon Glass wrote:
>
> > HI Donghwa,
> >
> > On Wed, May 23, 2012 at 12:39 AM, Donghwa Lee <dh09.lee@samsung.com<mailto:
> dh09.lee at samsung.com>> wrote:
> >
> > Dear, Simon Glass
> >
> > I am preparing device tree in Exynos SoC and had already tested by
> using
> > CONFIG_OF_SEPARATE. But, I couldn't test by using CONFIG_OF_EMBED
> because
> > it has a compiler problem to make a binary in the dts/Makefile.
> >
> > When I had used configuration as seaboard that I had changed
> configuration
> > from CONFIG_OF_SEPARATE to CONFIG_OF_EMBED, it had a same problem.
> >
> > How did you test in seaboard as it embedded? Is there any more
> configuration
> > to compile ebedded option?
> >
> >
> > Can you please send me the compiler output - then I can help with this.
> >
> > I do use embedded for testing only. But there is an alignment patch
> which is needed and was NAKed. So it is not reliable at present.
> >
> >
> >
> > please reply my question.
> >
> > Thank you,
> > Donghwa Lee
> >
> >
> > Regards,
> > Simon
> >
>
> Dear, Simon Glass
>
> Thank you for your reply. Below log is my compiler problem that was
> stopped while objcopy.
>
> # We want the output format and arch.
> # We also hope to win a prize for ugliest Makefile / shell interaction
> # We look in the LDSCRIPT first.
> # Then try the linker which should give us the answer.
> # Then check it worked.
> oformat=`cat | sed -r -n 's/^OUTPUT_FORMAT[ ("]*([^")]*).*/\1/p'` ;\
> oarch=`cat | sed -r -n 's/^OUTPUT_ARCH[ ("]*([^")]*).*/\1/p'` ;\
> \
> [ -z ${oformat} ] && \
>
> oformat=`/opt/tools/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/arm-linux-gnueabi-gcc
> -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__
> -DCONFIG_SYS_TEXT_BASE=0x63300000
> -I/home/leedonghwa/project/mainline/u-boot-trats/include -fno-builtin
> -ffreestanding -nostdinc -isystem
> /opt/tools/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/../lib/gcc/arm-linux-gnueabi/4.7.1/include
> -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-interwork
> -march=armv5 -Wall -Wstrict-prototypes -fno-stack-protector
> -Wno-format-nonliteral -Wno-format-security -fstack-usage -Wl,--verbose
> 2>&1 | sed -r -n 's/^OUTPUT_FORMAT[ ("]*([^")]*).*/\1/p'` ;\
> [ -z ${oarch} ] && \
>
> oarch=`/opt/tools/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/arm-linux-gnueabi-gcc
> -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__
> -DCONFIG_SYS_TEXT_BASE=0x63300000
> -I/home/leedonghwa/project/mainline/u-boot-trats/include -fno-builtin
> -ffreestanding -nostdinc -isystem
> /opt/tools/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/../lib/gcc/arm-linux-gnueabi/4.7.1/include
> -pipe -DCONFIG_ARM -D__ARM__ -marm -mabi=aapcs-linux -mno-thumb-interwork
> -march=armv5 -Wall -Wstrict-prototypes -fno-stack-protector
> -Wno-format-nonliteral -Wno-format-security -fstack-usage -Wl,--verbose
> 2>&1 | sed -r -n 's/^OUTPUT_ARCH[ ("]*([^")]*).*/\1/p'` ;\
> \
> [ -z ${oformat} ] && \
> echo "Cannot read OUTPUT_FORMAT from lds file " && \
> exit 1 || true ;\
> [ -z ${oarch} ] && \
> echo "Cannot read OUTPUT_ARCH from lds file " && \
> exit 1 || true ;\
> \
> cd ./ && \
>
> /opt/tools/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/bin/arm-linux-gnueabi-objcopy
> -I binary -O ${oformat} -B ${oarch} \
> dt.dtb dt.o
>
>
I don't actually see any output here, or any error. What is going wrong,
please?

> And I have one more question about passing *.dtb to kernel.
> I had make a .dtb binary by using CONFIG_OF_SEPARATE and confirmed
> normally working in u-boot.
> When kernel is booting, how could kernel access .dtb binary?
> Could kernel access dtb binary by setting /memreserve/ in u-boot .dts file
> or by using "fdtaddrcontrol"
> environment variable in u-boot board file?
> But, by my result, dt_phys address in setup_machine_fdt() in
> arch/arm/devtree.c had always indicated only
> one point regardless of /memreserve/ or fdtcontroladdr.
>

Please be very careful - this is a completely separate FDT. The use of
CONFIG_OF_CONTROL is for U-Boot's internal configuration only. The same FDT
should not be passed to Linux in the normal case. Please continue to use
the existing FDT support for passing a .dtb file to the kernel.

So you have an FDT for U-Boot which is available via CONFIG_OF_SEPARATE,
and an FDT which U-Boot passes to the kernel, which is read using the
normal uImage/Fit image method.

Regards,
Simon

>
> Thank you,
> Donghwa Lee
>
>