This component manages configuration profiles for a board.

This component manages dynamic configuration of a board based upon the setting of an attribute, the driving of an input pin and entry/exit to/from functions. The selected configurations are made available to other components in the system which then reconfigure themselves accordingly.

This component does not correspond to hardware.

When the configure! attribute is written to, the value is interpreted as the name of a configuration spec. The corresponding configuration string is then obtained from the configuration root component by setting its lookup-dynamic-config! attribute and then, if successful, reading its found-dynamic-config attribute. A numeric handle is assigned to this configuration. The handle of the previous configuration is driven on the config-result pin. If an error occurs, a non-zero value will be driven on the config-error pin.

When the configure! pin is driven, the value is interpreted as the handle of a configuration which was previously driven on the config-result pin. This configuration is then selected and the handle of the previous configuration is driven on the config-result. If an error occurs, a non-zero value will be driven on the config-error pin.

When the profile-functions! attribute is written to, the value is interpreted as a specification of the form FUNCTION_NAME[,FUNCTION_NAME]*:CONFIG_NAME, where FUNCTION_NAME is the name of a function in the target software and CONFIG_NAME is the name of a configuration specified to the configuration root component via its dynamic-config attribute. The listed functions are then associated with the named configuration. The function-caller!, function-callee!, function-jump! and function-return! pins should be driven by the cpu component as the target software executes. The values driven on these pins are interpreted as memory addresses containing executable code. The addresses are driven on the function-address, which should be connected to the function? pin of the board's loader component. The name of the corresponding function is then obtained from the loader's current-function attribute. If the named function is associated with a configuration, that configuration is then selected.

When the warmup-functions! attribute is written to, the value is interpreted as a comma-separated list of function names in the target software. The listed functions are then associated with the configuration named sid-internal-warmup. When one of the listed functions is entered (see profile-fuinctions! above), this configuration is selected. The special function _Sid_config should be specified as a warmup function and it does not restore the previous configuration when returning to the function which called it.

When the reset pin is driven, the configuration identified by the start-config attribute is selected.

When the step! is driven, and the currently selected configuration has changed since the previous time the step! was driven, the specifiction of the currently selected configuration is passed on the new-config and the string representing the current configuration is made available to each component related via the client by setting their configure! attributes. Each client is then responsible for interpreting the specification and configuring themselves accordingly.

When a new configuration is selected, using one of the methods above, the step-control is driven with the value 1.

state is minimal.