95 lines
1.7 KiB
C++
95 lines
1.7 KiB
C++
#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);
|
|
|
|
} |