AT91RM9200 hang in atmel_serial_putc

Peter Kardos kardos.peter.sk at gmail.com
Mon Aug 22 02:00:48 PDT 2016


During the weekend I've played with this some more...
It seems that the "breakage" was introduced with v2016.05. This version
introduced the "exception vector remapping to 0xFFFF*".
Unfortunately AT91RM9200 has peripherals in this region.

I'll test the patch tonight when i get home.

Peter

On 2016-08-22 08:10, Sascha Hauer wrote:
> On Thu, Aug 18, 2016 at 11:15:33PM +0200, Peter Kardos wrote:
>> Hi Sascha,
>>
>> I may have something. It seems the memory (MMU?) gets "messed" up;
>>
>> Reading the debug uart registers (v2015.07) gives reasonable results, like
>>      (gdb) x/32w 0xfffff200
>>      0xfffff200:    0x00000000    0x00000800    0x00000000 0x00000000
>>      0xfffff210:    0x00000000    0x40001a1a    0x00000000 0x00000000
>>      0xfffff220:    0x00000021    0x00000000    0x00000000 0x00000000
>>      0xfffff230:    0x00000000    0x00000000    0x00000000 0x00000000
>>      0xfffff240:    0x09290781    0x00000000    0x00000000 0x00000000
>>
>> However the content from v2016.08 gives
>>
>> 0xFFFFF200    D78D7E1F    F1139ADE    413E0FE5    BBFB6DF2
>> 0xFFFFF210    7D78666E    79CBDEA6    8FB2CB03    BEF6C2B7
>> 0xFFFFF220    C9071D17    FA1EFA2D    C4BCD95E    27D73C7C
>> 0xFFFFF230    727C3437    DFBDEBED    69C45C2A    7F5958F6
>> 0xFFFFF240    834B237E    F8B8A211    1AC74D66    FAE06274
> Uh, this indeed seems to be messed up by the MMU, more specifically
> during setup of the vector table. Could you try the attached patch?
> It's not a solution, but is a clear indication that the bug is in this
> area.
>
> Sascha
>
> ---------------------------8<--------------------------------
>
>  From eb66f09db694a0bc1fc88cde8d86e47faf6debf9 Mon Sep 17 00:00:00 2001
> From: Sascha Hauer <s.hauer at pengutronix.de>
> Date: Mon, 22 Aug 2016 08:05:38 +0200
> Subject: [PATCH] ARM: Disable vector table (tmp)
>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---
>   arch/arm/cpu/mmu.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/arch/arm/cpu/mmu.c b/arch/arm/cpu/mmu.c
> index a31bce4..fc26077 100644
> --- a/arch/arm/cpu/mmu.c
> +++ b/arch/arm/cpu/mmu.c
> @@ -289,6 +289,8 @@ static void create_vector_table(unsigned long adr)
>   	u32 *exc;
>   	int idx;
>   
> +	return;
> +
>   	vectors_sdram = request_sdram_region("vector table", adr, SZ_4K);
>   	if (vectors_sdram) {
>   		/*




More information about the barebox mailing list