Table of Contents
Introduction
A Zynq® UltraScale+™ MPSoC has one system monitoring (SYSMON) block in both the PS and the PL. The SYSMON block has a register interface that can be used to configure the
block and provide the capability to monitor on and off-chip voltages as well as junction temperature. The SYSMON block also has built-in alarm generation logic that is used to
interrupt the processor based on certain alarm conditions. For example, it can shut down the system based on an over-temperature (OT) alarm generated from the SYSMON block.
The PL-SYSMON block has DRP, JTAG, and I2C interfaces to enable monitoring from the external master and the capability to interface with an external power management bus
(PMBus) device. The PS-SYSMON block is memory mapped to the PS. In comparison to JTAG and I2C transfers, this interface is more efficient at transferring data from software. The
PS-SYSMON block has an internal reference option.
HW/IP features
PL block
- 10-bit resolution
- 0.2 MSPS sample rate
- Support external analog input
- External mux supports
- 16 auxiliary channels
- 16 alarm output
- Interface supported JTAG, DRP or dedicated PS DRP, I2C and PMBus
- 2 temperature sensors
- VCCINT, VCCAUX, VCCBRAM, VCC_PSINTLP, VCC_PSINTFP, VCC_PSAUX system supply sensors
- 4 USER supply channels
PS block
- 10-bit resolution
- 1.0 MSPS sample rate
- 16 alarm output
- Interface supported JTAG or APB
- 1 temperature sensors
- VCCINT, VCCAUX, VCCBRAM, VCC_PSINTLP, VCC_PSINTFP, VCC_PSAUX system supply sensors
Missing features, known Issues, limitations
- Single pass sequence mode
- Bipolar channel modes
- External mux mode
Kernel configurations
To compile a kernel with a driver for the AMS enable the following kernel config option:Device Tree Settings
Device Tree Bindings Doc: https://gitenterprise.xilinx.com/Linux/linux-xlnx/blob/master/Documentation/devicetree/bindings/iio/adc/xilinx-ams.txt
xilinx_ams: ams@ffa50000 {
compatible = "xlnx,zynqmp-ams";
interrupt-parent = <&&gic>;
interrupts = <0 56 4>;
interrupt-names = "ams-irq";
reg = <0x0 0xffa50000 0x0 0x800>;
reg-names = "ams-base";
#address-cells = <2>;
#size-cells = <2>;
ranges;
ams_ps: ams_ps@ffa50800 {
compatible = "xlnx,zynqmp-ams-ps";
reg = <0x0 0xffa50800 0x0 0x400>;
};
ams_pl: ams_pl@ffa50c00 {
compatible = "xlnx,zynqmp-ams-pl";
reg = <0x0 0xffa50c00 0x0 0x400>;
};
}; |
Test Procedure
Test Case 1: Read channel value via sysfs
Test Case 2: Get rising event for channel using sample application
iio_event_monitor is a program that is located in tools/iio/iio_event_monitor.c inside the linux kernel source.
This application is being used here for monitoring sysmon events.
Test Case 3: Rising event – negative test using sample application
Test Case 4: Get falling event for voltage channel using sample application
Test Case 5: Falling event for voltage channel – negative test using sample applicationChange Log
2017.1Commit Id: d6b16bbd7699f21ed583df8eaa9fb30f3ce1f0e8
- Enable the clock through CCF
Commit Id: 05a452247ec248a0a6bd1679edd2fab7999adb11
Commit Id: c871c0555231c3478b161f299c6a18631ed893b7
Commit Id: 55157c770a0f6805f6e90e0b8e09f82d11c4abb9
Commit Id: acdbfc2832f380d42b80f78ff7e45645cc23ccd8
- Disable interrupts at boot up
Commit Id: c472eeb29c1a36c72f32d706ef6a342f6e20b2bd
Commit Id: 07149fcb0c986172d7f4267bdf5365d035ca1e3d
- enable clock before device initialization
Commit Id: f840025e3b6b72166e79306081041c83ecb45e87