All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Stuebner <heiko@sntech.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 2/3] rockchip: rk3188: Add Radxa Rock board
Date: Mon, 27 Mar 2017 00:38:33 +0200	[thread overview]
Message-ID: <13311000.Ut1nIK35EQ@phil> (raw)
In-Reply-To: <CAPnjgZ2hrfONB29WVGhNLeBedsrKWuhu4qZ9APc8RX-JiK-gNw@mail.gmail.com>

Am Sonntag, 26. März 2017, 15:28:44 CEST schrieb Simon Glass:
> Hi Heiko,
> 
> On 26 March 2017 at 15:00, Heiko Stuebner <heiko@sntech.de> wrote:
> > Am Sonntag, 26. März 2017, 22:52:16 CEST schrieb Heiko Stuebner:
> >> Am Sonntag, 26. März 2017, 22:41:35 CEST schrieb Heiko Stuebner:
> >> > Am Sonntag, 26. März 2017, 22:13:08 CEST schrieb Heiko Stuebner:
> >> > > Am Sonntag, 26. März 2017, 14:00:51 CEST schrieb Simon Glass:
> >> > > > Hi Heiko,
> >> > > >
> >> > > > On 26 March 2017 at 13:59, Simon Glass <sjg@chromium.org> wrote:
> >> > > > > Hi Heiko,
> >> > > > >
> >> > > > > On 26 March 2017 at 13:06, Heiko Stuebner <heiko@sntech.de> wrote:
> >> > > > >> Hi Simon,
> >> > > > >>
> >> > > > >> Am Samstag, 25. März 2017, 20:39:08 CEST schrieb Simon Glass:
> >> > > > >>> On 23 March 2017 at 17:41, Heiko Stuebner <heiko@sntech.de> wrote:
> >> > > > >>> > The Rock is a RK3188 based single board computer by Radxa.
> >> > > > >>> > Currently it still relies on the proprietary DDR init and
> >> > > > >>> > cannot use the generic SPL, but at least is able to boot
> >> > > > >>> > a linux kernel and system up to a regular login prompt.
> >> > > > >>> >
> >> > > > >>> > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> >> > > > >>> > Reviewed-by: Simon Glass <sjg@chromium.org>
> >> > > > >>> > Tested-by: Kever Yang <kever.yang@rock-chips.com>
> >> > > > >>> > ---
> >> > > > >>> >  arch/arm/dts/Makefile                 |   1 +
> >> > > > >>> >  arch/arm/dts/rk3188-radxarock.dts     | 382 ++++++++++++++++++++++++++++++++++
> >> > > > >>> >  arch/arm/mach-rockchip/rk3188/Kconfig |  11 +
> >> > > > >>> >  board/radxa/rock/Kconfig              |  15 ++
> >> > > > >>> >  board/radxa/rock/MAINTAINERS          |   6 +
> >> > > > >>> >  board/radxa/rock/Makefile             |   7 +
> >> > > > >>> >  board/radxa/rock/rock.c               |   7 +
> >> > > > >>> >  configs/rock_defconfig                |  58 ++++++
> >> > > > >>> >  include/configs/rock.h                |  30 +++
> >> > > > >>> >  9 files changed, 517 insertions(+)
> >> > > > >>> >  create mode 100644 arch/arm/dts/rk3188-radxarock.dts
> >> > > > >>> >  create mode 100644 board/radxa/rock/Kconfig
> >> > > > >>> >  create mode 100644 board/radxa/rock/MAINTAINERS
> >> > > > >>> >  create mode 100644 board/radxa/rock/Makefile
> >> > > > >>> >  create mode 100644 board/radxa/rock/rock.c
> >> > > > >>> >  create mode 100644 configs/rock_defconfig
> >> > > > >>> >  create mode 100644 include/configs/rock.h
> >> > > > >>>
> >> > > > >>> I am still having trouble applying this patch. I get build errors:
> >> > > > >>>
> >> > > > >>>        arm:  +   rock
> >> > > > >>> +arch/arm/Makefile:22: CONFIG_CPU_V7  -march=armv7-a
> >> > > > >>> +make[2]: *** No rule to make target 'dts/dt.dtb', needed by
> >> > > > >>> 'tpl/u-boot-tpl.dtb'.  Stop.
> >> > > > >>> +make[1]: *** [tpl/u-boot-tpl.bin] Error 2
> >> > > > >>> +make: *** [sub-make] Error 2
> >> > > > >>>     0    0    1 /1      rock
> >> > > > >>>
> >> > > > >>> Also there seems to be a duplicate config:
> >> > > > >>>
> >> > > > >>>        arm:  +   rock
> >> > > > >>> +In file included from include/configs/rock.h:11:0,
> >> > > > >>> +                 from include/config.h:5,
> >> > > > >>> +                 from include/common.h:21,
> >> > > > >>> +                 from arch/arm/lib/asm-offsets.c:15:
> >> > > > >>> + #define CONFIG_SYS_THUMB_BUILD
> >> > > > >>> + ^
> >> > > > >>> +                 from lib/asm-offsets.c:15:
> >> > > > >>> +In file included from include/linux/kconfig.h:4:0,
> >> > > > >>> +                 from <command-line>:0:
> >> > > > >>> +include/generated/autoconf.h:10:0: note: this is the location of the
> >> > > > >>> previous definition
> >> > > > >>> + #define CONFIG_SYS_THUMB_BUILD 1
> >> > > > >>
> >> > > > >> looks like this got run over by another Kconfig migration on march-18.
> >> > > > >> New patches (migration + rock board) coming up shortly.
> >> > > > >
> >> > > > > Thanks - what toolchain are you using to test this?
> >> > > >
> >> > > > Also I am still getting this error:
> >> > > >
> >> > > >  buildman rock$
> >> > > > boards.cfg is up to date. Nothing to do.
> >> > > > Building current source for 1 boards (1 thread, 8 jobs per thread)
> >> > > >        arm:  +   rock
> >> > > > +make[2]: *** No rule to make target 'dts/dt.dtb', needed by
> >> > > > 'tpl/u-boot-tpl.dtb'.  Stop.
> >> > > > +make[1]: *** [tpl/u-boot-tpl.bin] Error 2
> >> > > > +make: *** [sub-make] Error 2
> >> > > >     0    0    1 /1      rock
> >> > >
> >> > > that is really strange.
> >> > >
> >> > > I'm building with the armhf cross-compiler from Debian testing, which is
> >> > >
> >> > > arm-linux-gnueabihf-gcc (Debian 6.3.0-5) 6.3.0 20170124
> >> > >
> >> > > My git history also is up-to-date it seems:
> >> > > 14ef0b180b rockchip: rk3188: Add Radxa Rock board
> >> > > d0348986cc rockchip: rk3188: follow THUMB_BUILD Kconfig migration
> >> > > 3bffe88d68 rockchip: video: Split out HDMI controller code
> >> > > a188a5a35c rockchip: i2c: Add compatibles for Rockchip Cortex-A9 socs
> >> > > 903fae5666 rockchip: rk3188: Setup the armclk in spl
> >> > > 7957cc4bd0 rockchip: clk: rk3188: Allow configuration of the armclk
> >> > >
> >> > > with 3bffe88d68 being your current head and my build commands being
> >> > >
> >> > > make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- clean
> >> > > make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- rock_defconfig
> >> > > make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
> >> >
> >> > that also works with a "make mrproper" before everything else.
> >> >
> >> >
> >> > > Strangely the tpl shouldn't require a dtb at all, as it needs to use
> >> > > OF_PLATDATA. Am I missing some config option somewhere?
> >> >
> >> > I also did play around a bit with buildman just now:
> >> >
> >> > At first I forgot the "$" after rock, so build everything with rock in the
> >> > name and the radxarock failed because the somewhat old 4.9 toolchain
> >> > used seems to produce a TPL image that is over the size constraints.
> >> > I.e. 1020 bytes on 4.9 vs. 792 bytes on 6.3.0 .
> >> >
> >> > When I drop the SPL_MAX_SIZE from rk3188_common.h for the TPL build
> >> >     tools/buildman/buildman -P rock
> >> > builds 14 boards and finishes sucessfully including the radxarock.
> >> >
> >> >
> >> > Now when I try buildman -P rock$ I seem to also get the error about the
> >> > missing dts/dt.dtb , which does not occur in my regular builds and also
> >> > not when building the bigger number of boards. I guess I need to figure
> >> > out what is different in that case.
> >>
> >> sorry for spamming, but
> >>
> >> also when entering .bm-work/rock where buildman failed and doing just my
> >>
> >>       make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
> >>
> >> in that directory created by buildman, produces perfectly fine images.
> >> (buildman does create the .config, so I'm just finishing the build, buildman
> >> failed at for unknown reasons)
> >
> > and a
> >         tools/buildman/buildman -PVv -T1 -j1 rock$
> >
> > also finishes sucessfully, so it looks like that is more some sort of build
> > concurrency issue, with the platdata not being created in time for some
> > reason.
> 
> Yes I think that is right. I will see if I can fix that.
> 
> Re the toolchain, if I pull in this patch then I will likely cause a
> build breakable on common toolchains. What do you think is the best
> option? Can the TPL be shrunk a little with gcc 4.9?

I've added Tom for comments, executive summary:
- rk3188-tpl is size limited to 1020 bytes
- gcc 6.3 produces a rk3188-tpl of 792 bytes
- gcc 4.9 makes it 1020 bytes
- buildman seems to always use gcc-4.9
- rk3188 board does not compile with buildman


Isn't holding on to a pretty old compiler for everything somewhat
strange? ;-)


I think the recent memset change in commit
	c67c8c604b6c ("board_init.c: Always use memset()")
did hurt us the most sizewise, as we're now using the libgeneric memset
which is quite a bit bigger than the naive fallback that existed in
board_init.c before.

Reverting and using the naive memset again brings us down to 952 bytes
again even on gcc-4.9 .

I guess I could just remove the TPL_LIBGENERIC option again and provide
a similarly small/naive memset in the rk3188 tpl board?

################

Or maybe just check if the size limit in u-boot-spl.lds is actually correct.
In our example gcc-4.9 produces a 1020bytes result and the SPL_SIZE_LIMIT
is set to (0x400 - 0x4) = 1020, so of course doing

diff --git a/arch/arm/cpu/u-boot-spl.lds b/arch/arm/cpu/u-boot-spl.lds
index 068163b73a..c9643efd96 100644
--- a/arch/arm/cpu/u-boot-spl.lds
+++ b/arch/arm/cpu/u-boot-spl.lds
@@ -72,7 +72,7 @@ SECTIONS
 }
 
 #if defined(CONFIG_SPL_MAX_SIZE)
-ASSERT(__image_copy_end - __image_copy_start < (CONFIG_SPL_MAX_SIZE), \
+ASSERT(__image_copy_end - __image_copy_start <= (CONFIG_SPL_MAX_SIZE), \
        "SPL image too big");
 #endif
 
does look somewhat correct. But of course that rides way to much on the
edge when every additional byte will break the build.


Heiko

  reply	other threads:[~2017-03-26 22:38 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-23 23:41 [U-Boot] [PATCH 0/3] rockchip: rk3188 fixed early stage and radxarock board Heiko Stuebner
2017-03-23 23:41 ` [U-Boot] [PATCH 1/3] rockchip: rk3188: enable TPL_LIBGENERIC for generic memset Heiko Stuebner
2017-03-26  2:40   ` Simon Glass
2017-03-23 23:41 ` [U-Boot] [PATCH 2/3] rockchip: rk3188: Add Radxa Rock board Heiko Stuebner
2017-03-26  2:39   ` Simon Glass
2017-03-26 19:06     ` Heiko Stuebner
2017-03-26 19:59       ` Simon Glass
2017-03-26 20:00         ` Simon Glass
2017-03-26 20:13           ` Heiko Stuebner
2017-03-26 20:41             ` Heiko Stuebner
2017-03-26 20:52               ` Heiko Stuebner
2017-03-26 21:00                 ` Heiko Stuebner
2017-03-26 21:28                   ` Simon Glass
2017-03-26 22:38                     ` Heiko Stuebner [this message]
2017-04-01  4:24                       ` Simon Glass
2017-04-04 16:29                         ` Tom Rini
2017-04-04 17:06                           ` Heiko Stuebner
2017-04-05  1:05                             ` Simon Glass
2017-03-23 23:41 ` [U-Boot] [PATCH 3/3] rockchip: rk3188: add README.rockchip paragraph describing sd boot Heiko Stuebner
2017-03-24  2:40   ` Kever Yang
2017-03-26  2:40     ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=13311000.Ut1nIK35EQ@phil \
    --to=heiko@sntech.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.