[External] Re: U-Boot Tests for ARM Architecture
Brownlie, Lewis
Lewis.Brownlie at Honeywell.com
Wed Jul 22 21:32:53 CEST 2020
Thank you for your response.
I will have to look into it more to see if I should use the given post_word_load() and and post_word_store() functions or if I should define CONFIG_POST_EXTERNAL_WORD_FUNCS and create my own functions. If I end up doing the former, I will have to define CONFIG_SYS_POST_WORD_ADDR with a memory address as you said; does it matter what address I use? Can I use any address, or are there any I should avoid?
As for UART, I would like to run a loopback test on the board's UART, something similar to uart_post_test() in drivers/serial/serial.c. From what I can tell from reading test/py/README.md, the tests in test/py are for testing U-Boot itself and not the board, which is not what I want. I apologize for not making that more clear.
Thanks again,
-Lewis
-----Original Message-----
From: Heinrich Schuchardt <xypron.debian at gmx.de>
Sent: Wednesday, July 22, 2020 12:08 PM
To: Brownlie, Lewis <Lewis.Brownlie at Honeywell.com>; u-boot at lists.denx.de
Subject: [External] Re: U-Boot Tests for ARM Architecture
On 22.07.20 00:28, Brownlie, Lewis wrote:
> Hello all,
>
> I am fairly new to U-Boot, and I want to perform memory and UART tests
> on the ARM-based NXP LX2160A Reference Design Board using U-Boot. In
> doing research I discovered the POST tests, but it seems that these
> are intended for MPC823E-based boards. Is it possible/feasible to use
> POST to perform my tests, or is there a better way? (I am aware of
> the mtest command for memory but I would like to find something
> better, plus this doesn't help with UART.)
>
>
> I have done a little work on the POST code, so if using POST is a viable option, here are some questions I have regarding it:
>
> If I #define CONFIG_POST in include/configs/lx2160ardb.h and build U-Boot, I receive errors that _POST_WORD_ADDR is not defined. In looking at include/post.h, it appears that to fix this I must have CONFIG_SYS_POST_WORD_ADDR defined in lx2160ardb.h with some value. If I #define CONFIG_SYS_POST_WORD_ADDR 0x10 in lx2160ardb.h, where 0x10 is just some dummy value, U-Boot builds with no errors, but like I said it's just a dummy value and I know it can't be used. I don't know what exactly _POST_WORD_ADDR and CONFIG_SYS_POST_WORD_ADDR do or what value I should use. Am I going about this in the right way, and if so where should I get the value to use for CONFIG_SYS_POST_WORD_ADDR?
>
> FWIW, this piece of code found in include/post.h is what I'm mainly looking at:
>
> #ifndef CONFIG_POST_EXTERNAL_WORD_FUNCS #ifdef
> CONFIG_SYS_POST_WORD_ADDR
> #define _POST_WORD_ADDR CONFIG_SYS_POST_WORD_ADDR
> #else
>
> #if defined(CONFIG_ARCH_MPC8360)
> #include <linux/immap_qe.h>
> #define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CPM_POST_WORD_ADDR)
>
> #elif defined (CONFIG_MPC85xx)
> #include <asm/immap_85xx.h>
> #define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PIC_OFFSET + \
>
> offsetof(ccsr_pic_t, tfrr))
>
> #elif defined (CONFIG_MPC86xx)
> #include <asm/immap_86xx.h>
> #define _POST_WORD_ADDR (CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PIC_OFFSET + \
>
> offsetof(ccsr_pic_t, tfrr)) #endif
>
> #ifndef _POST_WORD_ADDR
> #error "_POST_WORD_ADDR currently not implemented for this platform!"
> #endif
> #endif /* CONFIG_SYS_POST_WORD_ADDR */
>
>
> Thank you :)
>
> -Lewis
>
post/drivers/memory.c looks rather generic so reusing it should be feasible.
post_word_load() and and post_word_store() retrieve and save a bitmask with bits like POST_POWERDOWN that define what test should be run.
If CONFIG_POST_EXTERNAL_WORD_FUNCS is not defined CONFIG_SYS_POST_WORD_ADDR defines a memory address that serves for saving the bitmask. This should work fine if you have static RAM.
If you do not want to use a memory location for communication, you can define your own post_word_load() and and post_word_store() functions. In this case you need to define CONFIG_POST_EXTERNAL_WORD_FUNCS.
Concerning UART testing I am wondering if you mean the UART with the console? What specifically do you want to test?
In test/py there are a lot of tests that you cat run on your board while communicating over the UART. Do you really need a UART specific test?
See test/py/README.md.
Best regards
Heinrich
More information about the U-Boot
mailing list