Linuxの生xwindowでそんなの無いよ!という環境ではコマンドラインでアンインストーラ起動だそうです。
[installPath]/.xinstall/Vivado_2015.1/ xsetup –Uninstall
[installPath]/.xinstall/Vivado_2015.1/ xsetup –Uninstall
volatile unsigned int* mio_base;と書いてみると、みごとにMIO7のLEDが光ります。
mio_base = 0xe000a000;
*(mio_base + 0x81) = 0x80;
*(mio_base + 0x82) = 0x80;
*(mio_base + 0x10) = 0x80;
>echo 240 > /sys/class/gpio/exportとかやっても特に制御用のgpio204フォルダが出現するわけでもなく、正しく動いてるのかどうかわかりません。
GPIOs 906-1023, platform/e000a000.gpio, zynq_gpio:という箇所があるのを見つけました。906って、さっき出現したgpiochip906と同じです。
>echo 913 > /sys/class/gpio/export
axi_uart0: serial@43C00000 {
current-speed = <115200>;
clock-frequency = <100000000>;
compatible = "ns16550a";
interrupt-parent = <&ps7_scugic_0>;
interrupts = < 0 29 4>;
reg = < 0x43C00000 0x10000 >;
reg-offset = <0x1000>;
reg-shift = <2>;
xlnx,family = "zynq";
xlnx,has-external-rclk = <0x0>;
xlnx,has-external-xin = <0x0>;
xlnx,is-a-16550 = <0x1>;
xlnx,s-axi-aclk-freq-hz = <0x5F5E100>;
xlnx,use-modem-ports = <0x0>;
xlnx,use-user-ports = <0x0>;
xlnx,instance = "axi_uart16550_0";
};
8250/16550 and compatible serial supportさらに、DTSファイルにシリアルポートの初期化を記述する前提となる機能
Serial port on Open Firmware platform busも有効にしないとIPを認識してドライバが起動してくれません。
uartlite_1@42C00000 {
compatible = "xlnx,xps-uartlite-1.00.a";
reg = <0x42C00000 0x10000>;
device_type = "serial";
interrupt-parent = <&ps7_scugic_0>;
interrupts = <0 29 4>;
clock = <100000000>;
};
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfigこれで出たメニューで、driver → character → serialの中に、Xilinx uartlite serial port supportという項目があるのでチェックを付けて再ビルドします。
ret = request_irq(port->irq, ulite_isr, IRQF_TRIGGER_RISING, "uartlite", port);
#include <unistd.h>
#include <sys/mman.h>
#include <stdio.h>
#include <fcntl.h>
#define SIZE 0x1000
#define BASE_ADRS 0x43C30000
#define REG_DATA 0x00
#define REG_TRI 0x01
void main(){
int fd;
unsigned int *buf;
fd = open("/dev/mem", O_RDWR | O_SYNC);
if (fd == -1) {
printf("open failed");
return;
}
buf = mmap(NULL, SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, BASE_ADRS);
if (buf == MAP_FAILED) {
printf("mmap failed");
return;
}
int cnt=0;
int dat;
while(cnt++ < 1000000){
buf[REG_DATA] = 0x00;
//sleep(1);
buf[REG_DATA] = 0xFF;
//sleep(1);
}
munmap(buf, SIZE);
close(fd);
}
time ./test2
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver確かに初期化時に失敗しています。
ehci-pci: EHCI PCI platform driver
zynq-dr e0002000.ps7-usb: Unable to init USB phy, missing?