Jump to content
  • 0

Eclypse-Z7 FPGA Fan


zygot

Question

I have yet to hear the FPGA fan run on this board. The documentation and  even schematics are confusing as to just how this is supposed to work.

Can anyone shed some light on this and indicate if the FPGA fan is currently supported? Clearly control is tied to another header and involves a controller external to the FPGA.

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

The Platform MCU (IC23) controls the FPGA fan. Fan speed can be set to one of four different speeds using the decutil Linux application: minimum, medium, maximum, and auto. The decutil application is included with the Linux image. My colleagues did not agree with using udev to set the default permissions to "rw" for all users of the I2C controller so you will need to use "sudo" to run the decutil applicatin, otherwise you will get an error. The commands for setting the various fan speeds are as follows:

decutil setfancfg -fanid 1 -speed minimum
decutil setfancfg -fanid 1 -speed medium
decutil setfancfg -fanid 1 -speed maximum
decutil setfancfg -fanid 1 -speed auto

If you configure the fan speed to "auto" (factory default) then the fan will only turn on when the Zynq die temperature exceeds 40C and will automatically switch between minimum, medium, and maximum speed based on the temperature. Once the temperature falls below 35C the fan will turn off again.

The configuration is stored in the MCU flash and will be preserved across power cycles.

The documentation for decutil can be found here: https://reference.digilentinc.com/_media/reference/programmable-logic/eclypse-z7/decutil.1.pdf

Thanks,
Michael

Link to comment
Share on other sites

  • 0

@malexander,

Ok, that's something.

Currently, I'm doing development for bare-metal applications so I'm not booting into the FS, just booting into JTAG mode. So, how do I control the FPGA fan when there's no OS to run decutil or any other application/utility?

On the subject of permissions; it a real hassle having to do 'sudo systemctl poweroff' and then have to type in a password just to shut down the OS before hitting the power off switch.

I can only imagine the debates that went on while developing this product; and am happy not to have been involved. Still, the result is an OS that doesn't seem to know what it exists for, at least on running development code, and a board that can, in theory, support bare-metal, Xilinx RTOS, or other configurations. As of today, I find the Eclypse OS as more of a distraction than a platform for developing applications. Lot's of disconnected appendages in the Eclypse-Z7 ecosystem. 

You don't have to work to hard to confuse me but I have a distinct feeling that I'm not alone here.

Regardless, of application I need to be able to run the FAN.

P.S. Juggling various Linux, Xilinx and other platforms while working on multiple projects might be fun for software guys but it really is a headache for poor old me. Debian might be mother, but her offspring certainly don;t play well together. Let's see, is it ifconfig, no wait what am I running at the moment? ARRRRG!!!

Edited by zygot
Link to comment
Share on other sites

  • 0

@zygot

Presently there is no bare metal equivalent of decutil, any existing libraries, or example code for communicating with the Platform MCU from bare metal. When I was involved in the development process the primary use cases that people were describing always involved a Linux OS so I didn't take the time to develop any software for communicating with the Platform MCU from bare metal. Clearly this is an over site on my part. We will discuss this internally and decide if this is something that will be developed by the software team or by my team and come up with a plan to produce a usable bare metal solution.

Thanks,
Michael

Link to comment
Share on other sites

  • 0

Thanks, The FAN isn't a fire yet ( as far as I know ) so I don't need a solution today, but I'll certainly need to turn it on and off at some point.

The people who argued that an Eclypse-Z7 Linux OS is a normal use case  didn't seem to get the hardware people on board and have a lot of work to do to make that a reality. As of now its only purpose seems to be to connect the Ethernet port to the SDK for running Linux applications from the SDK.

For what it's worth, I'd argue for not having a live FS, so that no one can destroy the FS accidently. There should be space available in the FLASH to store inter-session configurations, setting and what have you.

Link to comment
Share on other sites

  • 0

@malexanderIs anyone closer to making the Eclypse-Z7 fan control available to non-Linux application code? Is there any plan to provide a Standalone source for accessing the PMCU registers from the ZYNQ? The protocol isn't supported by Xilinx PS example code as far as I can tell.

It would be nice if developers would update the Digilent GIT repository with status commentary so that users would be able to know when changes worthy of going to the trouble of updating the source is appropriate.

Edited by zygot
Link to comment
Share on other sites

  • 0

@zygotWe are going to provide a bare metal project for configuring the PMCU. The task has been assigned to a specific person and is the next thing in their queue. Unfortunately I do not have a good estimate for when that work item will be completed but am hopeful that it will be sometime in early May.

Link to comment
Share on other sites

  • 0

@malexander

Hi, It's been a while since you scheyduled a fix for the EclypseZ7 fan for bare-metal applications. Any progress to report? Last I checked the Digilent repositories are still being updated with no commentary as to what's changed and that's a big problem for users.

Link to comment
Share on other sites

  • 0

@zygot

The Linux application was modified to be usable outside of Linux and it was renamed to dpmutil. An example was published under the "dpmutil" branch:

https://github.com/Digilent/Eclypse-Z7-SW/tree/dpmutil

Sorry I somehow forgot to send this to you but it looks like it has been there for a while. Please let us know if you run into any problems.

Thanks,
Michael

Link to comment
Share on other sites

  • 0
On 6/12/2020 at 1:51 PM, malexander said:

Please let us know if you run into any problems.

Yeah, there are problems. I guarantee you that whoever wrote the example code never bothered to test the 'setfancfg' command.; the command parser rejects any command line with an 'a' in it... But fixing that doesn't solve the problems.The enum and getinfo commands do appear to work. 

I tried setting the fan from my Eclypse-Z7 application project without success. I then created a project using your example and that doesn't work either.

 

Link to comment
Share on other sites

  • 0

@zygot

Specifying the fanid via a letter is not something that was supported in the original Linux application so I'm not surprised that the command line parser doesn't allow it. I forwarded the information you provided and have been told that the ability to set the fanid using a letter has been added and that the other issues have been fixed and pushed to git. Sorry for the inconvenience.

Link to comment
Share on other sites

  • 0

@malexander,

I don't know when these issues were fixed but I'm working with repository source that I got 2 days ago.

I think that the bigger issue is that whoever is writing the code isn't testing it on actual hardware. So, is it your belief that the dpmutil code example and dpmutil code have successfully changed the FPGA fan on real hardware?

Creating lots of branches on git is a bad idea since it's hard to tell what state the underlying dependencies are. That and the utter lack of commentary for both code changes, git submissions, and the Digilent git website. It can;t be easy for your developers and it sure as heck is a pain in (**a lot of places**) for customers to deal with. Digilent needs an adult to supervise its software development, especially if you want to keep working engineers, who have their own problems to solve, interested.

Link to comment
Share on other sites

  • 0

@zygot,

I pushed the fixes an hour ago. The fixed code was tested on hardware and works.

The initial commit was somewhat rushed to get you something to work with as soon as possible. I apologize for the inconvenience it may have caused.

Link to comment
Share on other sites

  • 0

I can confirm that the example can indeed change the Eclypse-Z7 fan settings. Just curious, is there a way to turn control aspects of the SYZYGY and support hardware that doesn't get stored, that is that doesn't survive a power off/on cycle?

 

Link to comment
Share on other sites

  • 0

Hi @zygot,

In the interest of clarifying your question, are you wanting to configure and control aspects of the connected SYZYGY module and the hardware on the Eclypse Z7 that are volatile?

Or are you looking to make different configurations become volatile? The phrasing of your question is a little difficult to interpret.

Thanks,
JColvin

Link to comment
Share on other sites

  • 0

I'd like to have my application change things like fan speed that aren't written to non-volatile memory, i.e the default settings appear after a power off/on cycle, and I want them only to be active when my application is running... or at least until power is turned off. The example code changes the power on settings. I wouldn't want to set a SYZYGY port Vio override and have it come up the same next power up.

Edited by zygot
Link to comment
Share on other sites

  • 0

@artvvb @zygot I have been trying to work with the routines that I downloaded from https://github.com/Digilent/Eclypse-Z7-SW/tree/dpmutil

Does the full code compile in Vitis. If not, what values should be used in the command that controls the Fan's settings. dpmutilFSetFanConfig(fanid, setEnable, enable, setSpeed, speed, setProbe, probe);

Edited by Udayan Mallik
Link to comment
Share on other sites

  • 0

@JColvin dpmutilFSetFanConfig(fanid, setEnable, enable, setSpeed, speed, setProbe, probe); What values should be used for the command. Since there is no fanid, setenable, enable, setspeed variables in the three Structs - what values do they accept? And what is their range? My FPGA is becoming very warm and might go up in smoke without a Fan.

Edited by Udayan Mallik
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...