Re: ARM memory layout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sascha,

thanks for the help. The patches work for my non-relocatable barebox. Malloc space is now below barebox.

Best regards,
  Daniel

Am 16.06.2016 um 15:22 schrieb Sascha Hauer:
Hi Daniel,

On Thu, Jun 16, 2016 at 12:11:10PM +0200, Daniel Krüger wrote:
Hello,

during the porting of barebox to a new i.MX35 board I stumbled over some
crazy things with the memory layout. The comments in file
arch/arm/cpu/entry.c seem to be wrong or at least misleading.

We configured barebox as non-relocatable image. So I think the configured
TEXT_BASE is very important.

I use the following configuration with 128 MB RAM:
CONFIG_TEXT_BASE=0x87000000
CONFIG_STACK_SIZE=0x100000
CONFIG_MALLOC_SIZE=0xd00000

The stack is configured very large in this project, because of other reason.

I get the following memory layout:
     0x87ffffff top of RAM
      |           free-space (see arm_mem_stack() in
      |                       arch/arm/include/asm/barebox-arm.h)
     0x87ff0000 start of 64 kB free-space (vector table)
     0x87feffff top of stack
      |
     0x87ef0000 start of 1 MB reserved stack space
     0x87eeffff
      |         16 kB early translation table
     0x87eec000 early TTB (translation table base)
     0x87eebfff malloc end
      |          13 MB malloc space
     0x871ec000 malloc start
      |         some small free space
      |         barebox binary
     0x87000000 TEXT_BASE

This does not comply to the comment in the above mentioned source file.
There the malloc space and the vector table are missing.

I would expect some check in the source code, when TEXT_BASE is too high or
barebox binary is too large, so they collide with malloc space or stack. By
reverse engineering the detailed memory layout above, I discovered that in
another project the TEXT_BASE falls within the malloc space.

How does is run on other ARM boards? Are they all running with
CONFIG_RELOCATABLE=Y?

Most of them do, yes.

It seems !CONFIG_RELOCATABLE became broken with:

| commit 65071bd0910ef109c86b9645c570a6ceed7de534
| Author: Markus Pargmann <mpa@xxxxxxxxxxxxxx>
| Date:   Tue Dec 8 10:39:29 2015 +0100
|
|   arm: Clarify memory layout calculation

I just sent out a series from which the first patch should fix your
issue. The malloc space should be below the barebox image, not above it.
BTW you shouldn't have to specify the malloc size, barebox can pick a
sensible default for you if you specify it to 0.

Sascha


--

SYS TEC electronic GmbH
Am Windrad 2
08468 Heinsdorfergrund

Telefon : +49 (0) 3765 38600-0
Fax     : +49 (0) 3765 38600-4100
Email   : daniel.krueger@xxxxxxxxxxxxxxxxxxxxx
Website : http://www.systec-electronic.com

Managing Directors  :
  Dipl.-Phys. Siegmar Schmidt, Dipl. Ing. (FH) Armin von Collrepp
Commercial registry : Amtsgericht Chemnitz, HRB 28082
USt.-Id Nr.         : DE150534010


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox




[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux