Hi John,
The purpose is to allow the attributes on the CMOS hardware component to have defaults but still able to be overridden by configuration settings of the RTC component that contains it.
If in your assembly you had an instance of the RTC component called clock, then in your configuration section you could set clock.cmos_address_attributes
and clock.cmos_data_attributes to different values and these would override the settings in the underlying
hardware component.
assembly {
composition {
RTC clock;
}
configuration {
/* This is going to override the
cmos_data_attributes
attribute on the hardware CMOS device */
/* It is equivalent to clock.cmos.cmos_data_attributes = "0x72:0x72"; */
clock.cmos_data_attributes = "0x72:0x72";
}
The manual explains the '<-' feature here: https://github.com/seL4/camkes-tool/blob/master/docs/index.md#syntax-1
And there is an app in the camkes project that shows more examples here: https://github.com/seL4/camkes/blob/master/apps/attributes/attributes.camkes
Kind regards,
Kent
What is the meaning of the last two statements in the configuration block? what is the scoping rules for the "cmos_address_attributes" and "cmos_data_attributes" variables? It looks like these attributes are already set in the definition of the CMOS component? They seemed to be assigned again in the configuration block?import <RTC.idl4>;import <PutChar.idl4>;
component CMOS {hardware;provides IOPort cmos_address;provides IOPort cmos_data;attribute string cmos_address_attributes = "0x70:0x70";attribute string cmos_data_attributes = "0x71:0x71";
}
component RTC {provides RTC rtc;maybe uses PutChar putchar;uses IOPort cmos_address;uses IOPort cmos_data;attribute int heap_size = 0;
/* Connect the hardware RTC to the RTC component */composition {component CMOS cmos;connection seL4HardwareIOPort rtc_cmos_address(from cmos_address, to cmos.cmos_address);connection seL4HardwareIOPort rtc_cmos_data(from cmos_data, to cmos.cmos_data);}configuration {cmos.cmos_address_attributes <- cmos_address_attributes;cmos.cmos_data_attributes <- cmos_data_attributes;}}