[U-Boot] [PATCH v3 1/4] mips: add base support for atheros ath79 based SOCs

Marek Vasut
2015-12-27T12:25:52Z

On Sunday, December 27, 2015 at 12:37:37 PM, Daniel Schwierzeck wrote:
> Am 27.12.2015 um 12:04 schrieb Marek Vasut:
> > On Sunday, December 27, 2015 at 11:18:25 AM, Wills Wang wrote:
> >> On 12/27/2015 06:09 PM, Marek Vasut wrote:
> >>> On Sunday, December 27, 2015 at 09:07:36 AM, Wills Wang wrote:
> >>>> On 12/27/2015 03:38 PM, Marek Vasut wrote:
> >>>>> On Sunday, December 27, 2015 at 08:33:26 AM, Wills Wang wrote:
> >>>>>> On 12/27/2015 02:37 AM, Marek Vasut wrote:
> >>>>>>> On Saturday, December 26, 2015 at 07:29:51 PM, Wills Wang wrote:
> >>>>>>>> WASP is ar9341.
> >>>>>>>
> >>>>>>> Please do not top post.
> >>>>>>>
> >>>>>>> Did you try if the memory is accessible on your platform ? AR9331 I
> >>>>>>> have here has the SRAM at 0xbd007000 , just like that machine in
> >>>>>>> [1] .
> >>>>>>
> >>>>>> I found there is a memory segment at 0xbd000000...0xbd007fff. it's
> >>>>>> independent of DDR physical memory, can be read and wrote, but
> >>>>>> hardware can't boot up if don't execute lowlevel_init.S when define
> >>>>>> CONFIG_SYS_INIT_SP_ADDR=0xbd007000 to set C stack into SRAM.
> >>>>>
> >>>>> Stack grows down, so of course if you put stack at the beginning of
> >>>>> SRAM, that cannot work ;-) Put it at the end , 0xbd008000.
> >>>>
> >>>> This memory segment was mapped circularly at 0xbd000000...0xbdffffff.
> >>>
> >>> So is this area at 0xbd008000 usable for stack or not ?
> >>
> >> Same times board can boot up, but in a very unstable. i use the
> >> following setting:
> >>
> >> #define CONFIG_SYS_INIT_RAM_ADDR 0xbd000000
> >
> > Should be 0xbd007000
> >
> >> #define CONFIG_SYS_INIT_RAM_SIZE (32 * SZ_1K)
> >
> > Should be 4 KiB large.
> >
> >> #define CONFIG_SYS_INIT_SP_OFFSET \
> >>
> >> (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
> >>
> >> #define CONFIG_SYS_INIT_SP_ADDR \
> >>
> >> (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
> >
> > Did you investigate why the board has problems ?
>
> according to the description above by Wills those three defines setup
> the values correctly for start.S:
>
> #define CONFIG_SYS_INIT_RAM_ADDR 0xbd000000
> #define CONFIG_SYS_INIT_RAM_SIZE (32 * SZ_1K)
> #define CONFIG_SYS_INIT_SP_ADDR \
> (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE)
>
> The stack pointer will then be set to the end of the SRAM area with a 16
> Byte alignment. The resulting address should be 0xbd007ff0. From this
> address, the size of gd_t and CONFIG_SYS_MALLOC_F_LEN will be
> subtracted. The remaining space is available for the initial stack.
>
> Which value did you chose for CONFIG_SYS_MALLOC_F_LEN? It must be big
> enough to satisfy all malloc requests by the DM stack and small enough
> to fit in 32k minus stack size and gd_t size.

Careful about those 32k, I think the code which I referenced only uses 4k area.

> Important note: do net set CONFIG_SKIP_LOWLEVEL_INIT yet because that
> leaves you without initialized RAM or caches. If the setup does not work
> yet, you likely need to init some extra bits to make the SRAM working.

Best regards,