[U-Boot] a few questions about u-boot POST tests

Robert P. J. Day rpjday at crashcourse.ca
Sun Mar 27 13:00:15 CEST 2016


  was just asked to add some POST tests to v2015.10 u-boot running on
legacy MPC8360-based system -- couple general questions, then some
specific ones.

  first, is the POST infrastructure used on a regular basis? that is,
are people regularly taking advantage of it? from a brief glimpse so
far, it's pretty impressive, i'm just curious if it's a standard part
of u-boot for developers.

   next, the documentation doesn't appear to be keeping up with the
actual code, as doc/README.POST is inaccurate in places, so let me ask
about a few things in there. first, there's this:

  "The list of available POST tests be kept in the post_tests
  [sic] array filled at U-Boot build time. The format of entry in
  this array will be as follows (array name is actually post_list):

  struct post_test {
        char *name;
        char *cmd;
        char *desc;
        int flags;
        int (*test)(bd_t *bd, int flags);
  };"

that's clearly(?) out of date, as post.h actually defines:

  struct post_test {
        char *name;
        char *cmd;
        char *desc;
        int flags;
        int (*test) (int flags);
        int (*init_f) (void);
        void (*reloc) (void);
        unsigned long testid;
  };

so at the very least that part should be updated (i can submit a patch
after i collect a few more things).

  next, about those additional function pointers, "init_f" and
"reloc", i notice that *none* of the standard tests defined in
post/tests.c uses either of them, oh, wait, i just noticed:

  {
      "SYSMON test",
      "sysmon",
      "This test monitors system hardware.",
      POST_RAM | POST_ALWAYS,
      &sysmon_post_test,
      &sysmon_init_f,
      &sysmon_reloc,
      CONFIG_SYS_POST_SYSMON
  },

so i'll look into that more closely, i must have missed that the first
time. for now, i'm going to assume that those two function pointers
are targeted more at board-specific routines than the generic ones in
post/tests.c.

  next, in README.POST, one reads:

"Also, the following board-specific routines will be called from the
U-Boot common code:

  o) int board_power_mode(void)

     This routine will return the mode the system is running in
     (POST_POWERON, POST_NORMAL or POST_SHUTDOWN).

  o) void board_poweroff(void)

     This routine will turn off the power supply of the board. It
     will be called on power-fail booting after running all POST
     tests."

the single reference i see to "board_power_mode()" is that line in
README.POST -- is there *supposed* to be a call to it from somewhere
in the u-boot code? i see no reference to any routine by that name
anywhere in the u-boot git log.

  similar question about "board_poweroff()" ... not a single
board-specific definition of it anywhere in u-boot. normally, based on
the pattern i've seen, if there is a board-specific routine that one
might implement for a given board, there is a __weakly-linked, generic
implementation for that routine, but there's nothing for
board_poweroff().

  some (predictable) pedantry -- given this:

    #define POST_ALWAYS         (POST_NORMAL    | \
                                 POST_SLOWTEST  | \
                                 POST_MANUAL    | \
                                 POST_POWERON   )

it's obviously pointless to have bit mask combinations such as:

  #if CONFIG_POST & CONFIG_SYS_POST_ETHER
    {
        "ETHERNET test",
        "ethernet",
        "This test verifies the ETHERNET operation.",
        POST_RAM | POST_ALWAYS | POST_MANUAL,     <-----------
        &ether_post_test,
        NULL,
        NULL,
        CONFIG_SYS_POST_ETHER
    },

since POST_ALWAYS subsumes POST_MANUAL, but that's just being
nitpicky, it clearly doesn't hurt.

  anyway, time to keep reading, i'll submit a couple simple patches to
update some things, and more as i figure this out more.

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================



More information about the U-Boot mailing list