I've been trying unsucessfully to enable EMIOs in Vivado, and then access them from Pulsar Linux.
In one attempt using the block diagram tool, I enabled all 64 EMIOs and modified the one-below-top-level module as follows:
(* CORE_GENERATION_INFO = "ps_1,IP_Integrator,{x_ipVendor=xilinx.com,x_ipLibrary=BlockDiagram,x_ipName=ps_1,x_ipVersion=1.00.a,x_ipLanguage=VERILOG,numBlks=1,numReposBlks=1,numNonXlnxBlks=0,numHierBlks=0,maxHierDepth=0,synth_mode=Global}" *) (* HW_HANDOFF = "ps_1.hwdef" *)
module ps_1
(. . .);
ps_1_processing_system7_0_0 processing_system7_0
(. . .
.GPIO_I({1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,1'b1,. . .1'b1}),
. . .);
endmodule
and then synthesized, implemented, created the bitstream, and programmed the FPGA.
From linux I try to read one input as follows,
echo 64 > /sys/class/gpio/export
echo in > /sys/class/gpio64/direction
cat > /sys/class/gpio64/value
but it always returns 0. Iu2019ve tried various other port numbers above 53 with the same result.
Any ideas? Is there something else I need to do on the Linux side?
Thanks.