[U-Boot] [PATCH V2 1/7] test/py: Implement pytest infrastructure
Stephen Warren
swarren at wwwdotorg.org
Wed Dec 16 19:41:10 CET 2015
On 12/16/2015 11:32 AM, Michal Simek wrote:
>
>
> 2015-12-16 19:09 GMT+01:00 Stephen Warren <swarren at wwwdotorg.org
> <mailto:swarren at wwwdotorg.org>>:
>
> On 12/16/2015 10:43 AM, Michal Simek wrote:
>
> Hi Stephen,
>
> 2015-12-16 17:27 GMT+01:00 Stephen Warren <swarren at wwwdotorg.org
> <mailto:swarren at wwwdotorg.org>
> <mailto:swarren at wwwdotorg.org <mailto:swarren at wwwdotorg.org>>>:
>
>
> On 12/16/2015 08:11 AM, Michal Simek wrote:
>
> On 9.12.2015 17:32, Stephen Warren wrote:
>
> On 12/02/2015 03:18 PM, Stephen Warren wrote:
>
> This tool aims to test U-Boot by executing
> U-Boot shell
> commands using
> the
> console interface. A single top-level script
> exists to
> execute or attach
> to the U-Boot console, run the entire script of
> tests
> against it, and
> summarize the results. Advantages of this
> approach are:
>
> - Testing is performed in the same way a user
> or script
> would interact
> with U-Boot; there can be no disconnect.
> - There is no need to write or embed
> test-related code
> into U-Boot
> itself.
> It is asserted that writing test-related
> code in
> Python is simpler and
> more flexible that writing it all in C.
> - It is reasonably simple to interact with
> U-Boot in
> this way.
>
> A few simple tests are provided as examples.
> Soon, we
> should convert as
> many as possible of the other tests in test/* and
> test/cmd_ut.c too.
>
> In the future, I hope to publish (out-of-tree)
> the hook
> scripts, relay
> control utilities, and udev rules I will use
> for my own
> HW setup.
>
>
> I finally got permission to publish these. Examples
> are at:
> https://github.com/swarren/uboot-test-hooks
>
>
> Interesting. What's the normal setup which you have for
> the board?
> I see from your description that you use numato usb
> relay - I
> expect one
> with more channels for reset.
> Then you are able to control boot mode. Is it also via
> the same
> relay?
> How do you power up the board?
>
>
> In my current setup I leave the board on all the time (or
> rather,
> manually turn on the power when I'm about to run the tests).
> Automating control of the power source is a step I'll take
> later.
>
>
> ok.
>
>
> For Tegra, there are two important signals: reset and
> "force recovery".
>
>
>
> Do you mean that these both signals are just connected out of chip?
>
>
> Yes. Reset is typically driven into the PMIC, and the signal to
> request force recovery is driven into Tegra itself.
>
> Typically there are push-buttons on development boards to control
> those two signals. I've simply wired my relays across those buttons
> to simulate the button press.
>
>
> ok I see.
>
>
> Each of these has a separate relay, so the system currently
> uses 2
> relays per target board. The numato relay board I own has 8
> relays,
> although there are a number of different models.
>
>
> ok
>
>
> On Tegra, when reset is pulsed:
>
> - If force-recovery is connected, the SoC enters USB
> recovery mode.
> In this state, SW can be downloaded over USB into RAM and
> executed.
>
>
> Is this bootrom feature?
>
>
> Yes.
>
> For xilinx boards there is all the time jtag available. It means
> download can be done via jtag instead.
>
>
> That sounds plausible. The only issue might be general system state;
> can you reset everything to POR defaults via JTAG before the download?
>
>
>
> There is cpu reset, Soc reset on the board which can be used but I have
> IP power switch. It means I can handle power which ensure correct state.
>
> If not, perhaps e.g. the eMMC controller was partially initialized
> by previous code, which might interfere with assumptions made by the
> new code that's downloaded?
>
>
> I think my power switch solves this without any problem.
>
>
> - If force-recovery is not connected, the SoC boots
> normally, from
> SW stored in flash (eMMC, SPI, ...)
>
>
> The example scripts always use recovery mode to download
> U-Boot into
> RAM rather than writing it to flash first and then
> resetting. This
> saves wear cycles on the flash, but does mean the download
> happens
> in the "reset" rather than "flash" script, which may make the
> examples a bit different than for some other SoCs.
>
>
> Are you testing all boot modes? Because I expect these needs to be
> tested too. Do you use SPL? If yes, are you going to test it in
> this way?
>
>
> With those example scripts, cold boot isn't being tested. However,
> (a) I could define a new board ID (or pick up environment variables)
> to cause that to be tested sometimes (b) I don't recall having seen
> any differences between cold boot and recovery mode boot in the
> past; we get a lot of quicker/lower-wear test coverage this way
> without too much additional risk.
>
>
> ok.
>
>
> SPL is in use. However, SPL on Tegra has a bit of a different job
> than it has on some other chips. The boot ROM always initializes
> SDRAM, and SPL actually runs on a different CPU and primarily has
> the job of booting the main CPU where the main U-Boot binary runs.
> For more information, see:
>
> ftp://download.nvidia.com/tegra-public-appnotes/index.html
>
>
> Interesting.
>
>
> Finally, the example scripts support two boards; my
> home/laptop dev
> setup that uses a Numato relay board to control the signals
> to the
> board I use there, and my work desktop dev setup that uses our
> "PM342" debug board to controll the signals. The latter works
> logically the same as the numato relay board, except it
> contains
> electronic switches driven by an FTDI chip.
>
> I expect this is FTDI chip on the target right?
>
>
> It's actually a separate common debug board. Most/all of our
> development boards (and perhaps some production boards) have a
> standardized connector into which the common debug board plugs.
>
>
>
> ok.
> I think my setup is not that far from what you are using and I expect
> that others SoCs will be very similar.
> Do you have any other testcases which you are running and you haven't sent?
Not at present.
As an FYI, I typically publish my local work-in-progress branch at:
git://github.com/swarren/u-boot.git tegra_dev
More information about the U-Boot
mailing list