Merge pull request #25 from kost/mac-support

Initial Mac OS X support
This commit is contained in:
Gwenhael Goavec-Merou 2020-03-15 16:09:36 +01:00 committed by GitHub
commit d8a6f90ab3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 30 additions and 7 deletions

View File

@ -107,23 +107,37 @@ include_directories(
${LIBFTDI_INCLUDE_DIRS}
)
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
find_library(LIBFTDI1STATIC libftdi1.a REQUIRED)
find_library(LIBUSB1STATIC libusb-1.0.a REQUIRED)
find_library(LIBARGPSTATIC libargp.a REQUIRED)
target_link_libraries(openFPGALoader ${LIBFTDI1STATIC} ${LIBUSB1STATIC} ${LIBARGPSTATIC})
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework CoreFoundation -framework IOKit")
link_directories(/usr/local/lib)
target_include_directories(openFPGALoader PRIVATE /usr/local/include)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set_target_properties(openFPGALoader PROPERTIES LINK_SEARCH_END_STATIC 1)
else()
target_link_libraries(openFPGALoader
${LIBUSB_LIBRARIES}
${LIBFTDI_LIBRARIES}
)
if(ENABLE_UDEV)
include_directories(${LIBUDEV_INCLUDE_DIRS})
target_link_libraries(openFPGALoader ${LIBUDEV_LIBRARIES})
endif()
if(NOT HAVE_ARGP)
target_link_libraries(openFPGALoader /usr/lib/libargp.a)
find_library(LIBARGPSTATIC libargp.a REQUIRED)
target_link_libraries(openFPGALoader ${LIBARGPSTATIC})
endif()
if (BUILD_STATIC)
set_target_properties(openFPGALoader PROPERTIES LINK_SEARCH_END_STATIC 1)
endif()
endif()
# libftdi < 1.4 as no usb_addr
if (${LIBFTDI_VERSION} VERSION_LESS 1.4)

View File

@ -331,13 +331,15 @@ bool Gowin::flashFLASH(uint8_t *data, int length)
* full bitstream
*/
int buffer_length = byte_length+(6*4);
unsigned char buffer[byte_length+(6*4)] = {
unsigned char buffer[byte_length+(6*4)];
unsigned char bufvalues[]={
0x47, 0x57, 0x31, 0x4E,
0xff, 0xff , 0xff, 0xff,
0xff, 0xff , 0xff, 0xff,
0xff, 0xff , 0xff, 0xff,
0xff, 0xff , 0xff, 0xff,
0xff, 0xff , 0xff, 0xff};
memcpy(buffer, bufvalues, sizeof bufvalues);
memcpy(buffer+6*4, data, byte_length);
int nb_xpage = buffer_length/256;

View File

@ -89,7 +89,9 @@ void SPIFlash::jtag_write_read(uint8_t cmd,
uint8_t *tx, uint8_t *rx, uint16_t len)
{
int xfer_len = len + 1 + ((rx == NULL) ? 0 : 1);
uint8_t jtx[xfer_len] = {reverseByte(cmd)};
uint8_t jtx[xfer_len];
jtx[0] = reverseByte(cmd);
/* uint8_t jtx[xfer_len] = {reverseByte(cmd)}; */
uint8_t jrx[xfer_len];
if (tx != NULL) {
for (int i=0; i < len; i++)
@ -182,11 +184,16 @@ int SPIFlash::sectors_erase(int base_addr, int size)
return 0;
}
int SPIFlash::write_page(int addr, uint8_t *data, int len)
int SPIFlash::write_page(int addr, uint8_t *data, int len)
{
uint8_t tx[len+3] = {(uint8_t)(0xff & (addr >> 16)),
uint8_t tx[len+3];
tx[0] = (uint8_t)(0xff & (addr >> 16));
tx[1] = (uint8_t)(0xff & (addr >> 8));
tx[2] = (uint8_t)(addr & 0xff);
/*uint8_t tx[len+3] = {(uint8_t)(0xff & (addr >> 16)),
(uint8_t)(0xff & (addr >> 8)),
(uint8_t)(addr & 0xff)};
(uint8_t)(addr & 0xff)};*/
for (int i=0; i < len; i++) {
tx[i+3] = data[i];
}