Given a hardware register map, write a driver snippet to configure a peripheral in Intuitive embedded systems.
Implement the function below. Return dependency-ordered (address, value) writes, preserving unspecified reset bits and rejecting invalid field values, read-only fields, overlapping masks, unknown fields, duplicate addresses, or dependency cycles. Each register contains name, address, reset, width, fields, and optional after; each field contains name, mask, shift, and access (rw, ro, or w1c). settings maps register names to requested field values. Return None for invalid input.
def configure_peripheral(register_map, settings):