The files in this directory define a basic set of functionality for each
board. They are loaded by calling "load_generic_config", normally done
as part of the baseboard description for a given board.

This functionality is a partial replacement for the tool-specific
configuration previously found in the testsuite/config directory. Note
that no tool-specific actions are defined here; they still need to be
defined by the tool-specific config files. However, for tools that
simply wish to download and execute programs on a board, the
functionality here should be sufficient.

The functions that can be defined are:

${board}_open
${board}_close
${board}_exec
${board}_binary
${board}_reboot
${board}_download
${board}_upload
${board}_transmit
${board}_send
${board}_file
${board}_spawn
${board}_load

Normally these functions are invoked indirectly by the testcases when
they invoke the remote_xxx version of the function.

The ${board}_xxx functions will be called in preference to the default
versions (or the ones specified by the "connect" protocol in the board
description). However, the version defined by the "connect" protocol
are still accessible by calling remote_raw_xxx, which will ignore any
board-specific or generic versions of these functions.
