Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .drone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ pipeline:
commands:
- echo "build-debs for ${ARCHITECTURE}-${DISTRIBUTION}-${CODENAME}:${IMAGE_TAG}"
- ${UPDATE_CMD}
- apt-get install --yes --no-install-recommends wiringpi libftdi-dev
- apt-get install --yes --no-install-recommends libftdi-dev
- debuild -us -uc -b
- mv ../*.deb .

Expand Down
46 changes: 19 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# Project
cmake_minimum_required(VERSION 3.10)
project(xc3sprog)
set(xc3sprog_VERSION_MAJOR 0)
set(xc3sprog_VERSION_MINOR 0)

SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
set(CMAKE_CXX_FLAGS "-g -Wall")
cmake_minimum_required(VERSION 2.6)

if(${WIN32})
if(WIN32)
set(USE_STATIC_FTDI ON)
IF( ${CMAKE_COMPILER_IS_GNUCXX} )
IF(CMAKE_COMPILER_IS_GNUCXX)
# link libstdc++ and others statically
add_definitions( -D__USE_MINGW_ANSI_STDIO )
SET (CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static-libgcc")
ENDIF( ${CMAKE_COMPILER_IS_GNUCXX} )
endif(${WIN32})
ENDIF()
endif()

option(USE_FTD2XX "Use FTDI libFTD2XX instead of free libftdi" ON)

Expand Down Expand Up @@ -60,14 +60,14 @@ set(CPACK_PACKAGE_DESCRIPTION "JTAG Progarmming tools")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_DESCRIPTION}
)
# Package settings
if(${UNIX})
if(UNIX)
set(CPACK_GENERATOR "DEB;RPM")
set(CPACK_CMAKE_GENERATOR "Unix Makefiles")
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME}-${VERSION_STRING}${PACK_ARCH})
endif(${UNIX})
endif()

if(${WIN32})
if(WIN32)
set(CPACK_GENERATOR "NSIS")
set(CPACK_CMAKE_GENERATOR "MinGW Makefiles")
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
Expand All @@ -76,7 +76,7 @@ if(${WIN32})
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${VERSION_STRING}-win32")
set(CPACK_NSIS_DISPLAY_NAME "libftdi")
set(CPACK_NSIS_MODIFY_PATH "ON")
endif(${WIN32})
endif()

set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)

Expand All @@ -85,9 +85,9 @@ set(CPACK_SOURCE_IGNORE_FILES "\\\\.svn" "build*")
set(CPACK_SOURCE_PACKAGE_FILE_NAME ${CPACK_PACKAGE_FILE_NAME})

# Subdirectories
if(${UNIX})
if(UNIX)
set(CPACK_SET_DESTDIR "ON")
endif(${UNIX})
endif()

#link libusb dynamic at runtime on windows at at compile time else
#this circumvents a problem with Debian
Expand Down Expand Up @@ -130,14 +130,7 @@ ADD_CUSTOM_COMMAND(OUTPUT cables.h

INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR})

option(USE_WIRINGPI "Use WiringPi" ON)

if(USE_WIRINGPI)
set (CONDITIONAL_FILES ${CONDITIONAL_FILES} "iomatrixcreator.cpp" "iomatrixvoice.cpp" "iowiringpi.cpp")
add_definitions( -DUSE_WIRINGPI )
endif(USE_WIRINGPI)

add_library(xc3sproglib STATIC sysfs.cpp sysfscreator.cpp sysfsvoice.cpp ioftdi.cpp
add_library(xc3sproglib STATIC iogpiomatrixcreator.cpp iogpiomatrixvoice.cpp iogpiodpi.cpp ioftdi.cpp
iofx2.cpp devicedb.cpp jtag.cpp jedecfile.cpp bitfile.cpp
iobase.cpp progalgxc95x.cpp utilities.cpp
progalgxcf.cpp progalgxcfp.cpp progalgxc3s.cpp
Expand All @@ -146,22 +139,21 @@ add_library(xc3sproglib STATIC sysfs.cpp sysfscreator.cpp sysfsvoice.cpp ioftdi
cabledb.cpp pdioverjtag.cpp xmega_pdi_nvm.cpp
${CONDITIONAL_FILES} devices.h cables.h)

if(USE_WIRINGPI)
set(LIBS ${LIBS} wiringPiDev wiringPi)
endif(USE_WIRINGPI)

set(GPIO_LIBS ${GPIO_LIBS} gpiod)

add_executable(xc2c_warp xc2c_warp.cpp)
target_link_libraries(xc2c_warp xc3sproglib ${CONDITIONAL_LIBS})
target_link_libraries(xc2c_warp xc3sproglib ${CONDITIONAL_LIBS} ${GPIO_LIBS})

add_executable(detectchain detectchain.cpp cables.h devices.h)
target_link_libraries(detectchain xc3sproglib ${LIBFTDI_LIBRARIES} ${LIBFTD2XX_LIBRARIES} ${CONDITIONAL_LIBS} ${LIBS} )
target_link_libraries(detectchain xc3sproglib ${LIBFTDI_LIBRARIES} ${LIBFTD2XX_LIBRARIES} ${CONDITIONAL_LIBS} ${GPIO_LIBS})

add_executable(xc3sprog xc3sprog.cpp javr.cpp srecfile.cpp progalgavr.cpp
devices.h)
target_link_libraries(xc3sprog xc3sproglib ${LIBFTDI_LIBRARIES} ${LIBFTD2XX_LIBRARIES} ${CONDITIONAL_LIBS} ${LIBS} )
target_link_libraries(xc3sprog xc3sproglib ${LIBFTDI_LIBRARIES} ${LIBFTD2XX_LIBRARIES} ${CONDITIONAL_LIBS} ${GPIO_LIBS})

add_executable(readdna readdna.cpp devices.h)
target_link_libraries(readdna xc3sproglib ${LIBFTDI_LIBRARIES} ${LIBFTD2XX_LIBRARIES} ${CONDITIONAL_LIBS} ${LIBS} )
target_link_libraries(readdna xc3sproglib ${LIBFTDI_LIBRARIES} ${LIBFTD2XX_LIBRARIES} ${CONDITIONAL_LIBS} ${GPIO_LIBS})



Expand Down
9 changes: 8 additions & 1 deletion Findlibftdi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,19 @@ if (NOT LIBFTDI_FOUND)

if(NOT WIN32)
include(FindPkgConfig)
pkg_check_modules(LIBFTDI_PKG libftdi)
pkg_check_modules(LIBFTDI_PKG QUIET libftdi)
if(NOT LIBFTDI_PKG_FOUND)
pkg_check_modules(LIBFTDI_PKG QUIET libftdi1)
endif(NOT LIBFTDI_PKG_FOUND)
endif(NOT WIN32)

find_path(LIBFTDI_INCLUDE_DIR
NAMES
ftdi.h
HINTS
${LIBFTDI_PKG_INCLUDE_DIRS}
PATH_SUFFIXES
libftdi1
PATHS
/usr/include
/usr/local/include
Expand All @@ -38,10 +43,12 @@ if (NOT LIBFTDI_FOUND)
find_library(LIBFTDI_LIBRARIES
NAMES
ftdi
ftdi1
HINTS
${LIBFTDI_PKG_LIBRARY_DIRS}
PATHS
/usr/lib
/usr/lib64
/usr/local/lib
)

Expand Down
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,48 @@
# Raspberry Pi specific fork

This fork repurposed this project and replaced obsolete librarary sysfs, and wiringpi as it was not working reliably enough to program without frequent mismatch errors or validation errors.

## Installation
This project has been tested on Raspberry Pi 4 with Bullseye 32-bit and Bookworm 32-bit and 64-bit.
It was checked only on cpld Xillinx XC9500XL series.


```
sudo apt install build-essential libusb-dev libftdi-dev libgpiod-dev git cmake
git clone https://github.com/arkadiuszmakarenko/xc3sprog.git
mkdir xc3sprog/build
cd xc3sprog/build
cmake ..
make
sudo make install
```
## Connecting GPIO
cable type : gpiod_creator

|GPIO |Header Pin |Function|
--- | --- | ---|
|4|7|TMS|
|17|11|TCK|
|22|13|TDO|
|27|15|TDI|

## JTAG Chain discovery

```
sudo xc3sprog -c gpiod_creator -j

```

## Programming
```
xc3sprog -c gpiod_creator -v -p {chain poistion eg. 0} {filename}.jed
```

---
Old docs
---



# Installation
```
Expand Down
18 changes: 6 additions & 12 deletions cabledb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,14 +155,10 @@ CABLES_TYPES CableDB::getCableType(const char *given_name)
return CABLE_FX2;
if (strcasecmp(given_name, "xpc") == 0)
return CABLE_XPC;
if (strcasecmp(given_name, "sysfsgpio_creator") == 0)
return CABLE_SYSFS_GPIO_CREATOR;
if (strcasecmp(given_name, "sysfsgpio_voice") == 0)
return CABLE_SYSFS_GPIO_VOICE;
if (strcasecmp(given_name, "matrix_creator") == 0)
return CABLE_MATRIX_CREATOR;
if (strcasecmp(given_name, "matrix_voice") == 0)
return CABLE_MATRIX_VOICE;
if (strcasecmp(given_name, "gpiod_creator") == 0)
return CABLE_GPIOD_CREATOR;
if (strcasecmp(given_name, "gpiod_voice") == 0)
return CABLE_GPIOD_VOICE;

return CABLE_UNKNOWN;
}
Expand All @@ -175,10 +171,8 @@ const char *CableDB::getCableName(const CABLES_TYPES type )
case CABLE_FTDI: return "ftdi";
case CABLE_FX2: return "fx2";
case CABLE_XPC: return "xpc";
case CABLE_MATRIX_CREATOR: return "matrix_creator";
case CABLE_MATRIX_VOICE: return "matrix_voice";
case CABLE_SYSFS_GPIO_CREATOR: return "sysfsgpio_creator";
case CABLE_SYSFS_GPIO_VOICE: return "sysfsgpio_voice";
case CABLE_GPIOD_CREATOR: return "gpiod_creator";
case CABLE_GPIOD_VOICE: return "gpiod_voice";
case CABLE_NONE: return "none";
case CABLE_UNKNOWN: return "unknown";
}
Expand Down
6 changes: 2 additions & 4 deletions cabledb.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@ enum CABLES_TYPES
CABLE_FTDI,
CABLE_FX2,
CABLE_XPC,
CABLE_SYSFS_GPIO_CREATOR,
CABLE_SYSFS_GPIO_VOICE,
CABLE_MATRIX_CREATOR,
CABLE_MATRIX_VOICE
CABLE_GPIOD_CREATOR,
CABLE_GPIOD_VOICE
};

struct cable_t
Expand Down
6 changes: 2 additions & 4 deletions cablelist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ jtaghs2 ftdi 6000000 0x0403:0x6014:Digilent USB Device:0:0xe8:0xeb:0x00
turtelizer ftdi 1500000 0x0403:0xbdc8:Turtelizer JTAG/RS232 Adapter:0:0x00:0x10:0x00:0x0
arm-usb-ocd-h ftdi 1500000 0x15ba:0x002b::1:0x00:0x10:0x00:0x08
tumpa ftdi 1500000 0x0403:0x8a98:TIAO USB Multi-Protocol Adapter:1
sysfsgpio_creator sysfsgpio_creator 0 NULL
sysfsgpio_voice sysfsgpio_voice 0 NULL
matrix_creator matrix_creator 0 NULL
matrix_voice matrix_voice 0 NULL
gpiod_creator gpiod_creator 0 NULL
gpiod_voice gpiod_voice 0 NULL
mimas_a7 ftdi 15000000 0x2A19:0x1009::2:0x00:0x4B:0x00:0x00
Loading