#include "Jtag.h" Jtag::Jtag():jtag_tms(152),jtag_tck(156),jtag_tdi(155),jtag_tdo(72),COM_BOOT0(153) { printf("Jtag()\n"); char fname[128]; write_dev("/sys/class/gpio/export", 152); write_dev("/sys/class/gpio/export", 156); write_dev("/sys/class/gpio/export", 155); write_dev("/sys/class/gpio/export", 72); write_dev("/sys/class/gpio/export", 153); jtag_tms.setDirection(Gpio::out); jtag_tck.setDirection(Gpio::out); jtag_tdi.setDirection(Gpio::out); jtag_tdo.setDirection(Gpio::in); COM_BOOT0.setDirection(Gpio::out); COM_BOOT0.setValue(Gpio::High); jtag_tms.setValue(Gpio::Low); jtag_tck.setValue(Gpio::Low); jtag_tdi.setValue(Gpio::Low); } void Jtag::TMS_Wr(u8 value) { if(value == 1) jtag_tms.setValue(Gpio::High); else jtag_tms.setValue(Gpio::Low); } u8 Jtag::TMS_RD() { return jtag_tms.getValue(); } void Jtag::TCK_Wr(u8 value) { if(value == 1) jtag_tck.setValue(Gpio::High); else jtag_tck.setValue(Gpio::Low); } u8 Jtag::TCK_RD() { return jtag_tck.getValue(); } void Jtag::TDI_Wr(u8 value) { if(value == 1) jtag_tdi.setValue(Gpio::High); else jtag_tdi.setValue(Gpio::Low); } u8 Jtag::TDI_RD() { return jtag_tdi.getValue(); } u8 Jtag::TDO_RD() { return jtag_tdo.getValue(); } void Jtag::Anlogic_Calibration(void) { /*Apply 2 pulses to TCK.*/ TCK_Wr(1); TCK_Wr(1); TCK_Wr(0); TCK_Wr(1); TCK_Wr(0); TCK_Wr(1); TCK_Wr(1); /*Delay for 1 millisecond. Pass on 1000 = 1ms delay.*/ Anlogic_ProcessRunTestTck(10000) ; /*Apply 2 pulses to TCK*/ TCK_Wr(1); TCK_Wr(1); TCK_Wr(0); TCK_Wr(1); TCK_Wr(0); TCK_Wr(1); TCK_Wr(1); }