Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jan 2013 15:34:32 +0100
From:      Aleksander Dutkowski <aleek@FreeBSD.org>
To:        freebsd-ppc@freebsd.org
Subject:   Re: OpenFirmware issue on P1010
Message-ID:  <CABkKHSZKuujMVemOpodQANQVa7AnTn=V9kZN6iJdHs2K2wX6-Q@mail.gmail.com>
In-Reply-To: <CABkKHSZXSQAVML7c=yiSnf_sirn-QF32OLMsv=f_=C5MSau1HA@mail.gmail.com>
References:  <CABkKHSZ=GGh0FQ%2BG7cvHHhiBmJuGhhgLd5iWAActw8pdqk%2BV-w@mail.gmail.com> <51027F6C.7090403@semihalf.com> <CABkKHSZXSQAVML7c=yiSnf_sirn-QF32OLMsv=f_=C5MSau1HA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jan 25, 2013 at 1:49 PM, Zbyszek Bodek <zbb@semihalf.com> wrote:
> Hello Aleksander,
>
> Please check my answer inline.
>
>
> On 25.01.2013 13:10, Aleksander Dutkowski wrote:
>>
>> hi!
>>
>> I am porting FreeBSD on P1010RDB platform. I modified existing MPC85XX
>> config (i.e. removed SMP), created p1010rdb.dts from p1020rdb.dts etc,
>> and ran the kernel via u-boot:
>> tftp 0x1000000 fbsd.elf
>> go 0x10000e0
>
>
> Apart from other hints that you gave, are you trying to boot an elf file via
> tftp command or this is in fact a .bin file (objcopied) but with the .elf
> postfix ?
Yes I am booting elf file. I am using readelf to find the offset of
__start function. (in this case, offset is 0xe0). I was able to do the
ame trick on BeagleBoard-xM and it worked perfectly, but I'll check
the solution with raw binary.
>
> It is impossible to boot an elf file via tftpboot/go commands. If this is
> what you are doing then try to create a bin file using objcopy (for powerpc)
> and then boot.
>
> For example:
> /obj/path/to/powerpc/objcopy -S -O binary /obj/path/to/powerpc/kernel
> fbsd.bin
>
> Of course you should also extract the "kernel start address" to ensure that
> you are executing (go) the bin file in a right way:
>
> /obj/path/to/powerpc/objdump -f /obj/path/to/powerpc/kernel
>
> And an additional thought - make sure that you are using statically embedded
> dtb when booting directly from u-boot:
>
> options         FDT_DTB_STATIC

Yes, I am using statically embedded dtb :)
>
>
>>
>> Nothing happened, so I used CodeWarrior IDE with CW USB Tap, and it
>> turned out, that OF_install() call in sys/powerpc/booke/machedp.c
>> returns false. I inspected this function and moreover, I inspected the
>> structure, which is pointer from set_ofw_set linker set:
>>
>> $ powerpc-rtems-objdump -s kernel | grep set_ofw_set
>> Contents of section set_ofw_set:
>>   c03694f0 c037ab54                             .7.T
>>
>> (gdb) p (ofw_def_t)*0xc037ab54
>> $1 = {name = 0xc03339a4 "ofw_fdt", methods = 0xc0319350, size = 0,
>> baseclasses = 0x0, refs = 0, ops = 0x0}
>>
>> As we can se, name field is correct. But this function seems to fail
>> in strcmp().
>> I have found the issue [1] on bugtracker, so Im quite sure, that the
>> problem is ith linker sets on powerpc (but this issue is quite old now
>> ;) ), but  the fix is not working for me - it crashes while compiling:
>>
>> cc -c -O -pipe  -std=c99 -Wa,-me500 -g -Wall -Wredundant-decls
>> -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes
>> -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
>> -fformat-extensions  -Wmissing-include-dirs -fdiagnostics-show-option
>>   -nostdinc  -I. -I/usr/home/aleek/src/p1010-github/sys
>> -I/usr/home/aleek/src/p1010-github/sys/contrib/altq
>> -I/usr/home/aleek/src/p1010-github/sys/contrib/libfdt -D_KERNEL
>> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common
>> -finline-limit=15000 --param inline-unit-growth=100 --param
>> large-function-growth=1000  -msoft-float -Wa,-many
>> -fno-omit-frame-pointer -msoft-float -mno-altivec -ffreestanding
>> -fstack-protector -Werror
>> /usr/home/aleek/src/p1010-github/sys/dev/ofw/openfirm.c
>> cc1: warnings being treated as errors
>> /usr/home/aleek/src/p1010-github/sys/dev/ofw/openfirm.c: In function
>> 'OF_install':
>> /usr/home/aleek/src/p1010-github/sys/dev/ofw/openfirm.c:126: warning:
>> assignment from incompatible pointer type
>> /usr/home/aleek/src/p1010-github/sys/dev/ofw/openfirm.c:126: warning:
>> comparison of distinct pointer types lacks a cast
>>
>> Do you have any idea, how to fix this?
>>
>>
>>
>> [1] http://www.freebsd.org/cgi/query-pr.cgi?pr=140241
>>
>
> Sorry to ignore the rest of your observations at the moment but I wanted to
> make sure that everything is OK with the running process.
>
> Best regards and good luck
> Zbyszek Bodek

-- 
regards
aleek



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABkKHSZKuujMVemOpodQANQVa7AnTn=V9kZN6iJdHs2K2wX6-Q>