Most current FPGA-based systems use a single static configuration per FPGA during applications. However, an attractive feature of the FPGA-based Reconfigurable System-on-Chip (rSoC) technology is the ability to dynamically change the configuration on the FPGA according to the requirements of the system, allowing the system to adapt to different environments and applications. In this paper, we describe a self-reconfiguring rSoC system which automatically and dynamically loads peripheral interface controllers, based on the peripherals connected to the system. There are two defined areas on one FPGA chip. A fixed area is used for the constant logic circuits (such as soft-core CPU) and partial reconfiguration (PR) areas are used for changeable peripheral interface controllers. The auto-configuration process involves three different steps: peripheral auto detection, loading of a peripheral hardware interface configuration, and loading of a peripheral software driver.