13 Commits
Author SHA1 Message Date
Dom Rodriguez 25bf9fe209 Merge 448d81bfd3 into 98784b1776 2024-12-01 16:43:56 +01:00
Dom Rodriguez 98784b1776 feat: Add Nix CI workflow
Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2024-12-01 16:43:49 +01:00
Dom Rodriguez 3490c37581 feat: Add Nix flake & derivation
This adds a Nix flake, shims for 'legacy' Nix, and a `.envrc` for
`direnv`. blisp is now able to run directly via:

`nix run github:pine64/blisp`

and for Nix/NixOS users, this helps with a one-click developer
environment.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2024-12-01 16:43:49 +01:00
Dom Rodriguez 448d81bfd3 fix: Fix mismatching format strings when writing
We were using the incorrect format string - this commit fixes that.

Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
2024-11-16 15:05:35 +00:00
Andre Fonseca 7a85414ece Enable macOS universal builds (#52)
* enable universal builds (x86_64/arm64) on macOS

* rename macOS build artifact filename

* update README.md
2023-08-28 11:25:41 +02:00
schrobandSchdro c41d128e73 Compile internal file_parsers lib always statically (#51)
Otherwise, depending on BUILD_SHARED_LIBS default, it may be
compiled dynamically. However, the resulting DSO currently would
not be installed, resulting in unusable installed blisp binary.

Co-authored-by: Schdro <>
2023-08-10 14:23:12 +10:00
Robert Lipe d2fef0af22 Merge pull request #49 from neil-forks/master
Add DESTINATION for PUBLIC_HEADERS targets
2023-08-07 22:21:47 -05:00
Neil Hanlon 2203a250e3 Add DESTINATION for PUBLIC_HEADERS targets 2023-08-07 22:49:15 -04:00
Robert Lipe 713e444656 Merge pull request #48 from neil-forks/master
WIP: Use CMAKE_INSTALL_LIBDIR for install destination to respect build forges
2023-08-07 21:24:22 -05:00
Neil Hanlon 3b47993de7 Use CMAKE_INSTALL_LIBDIR for install destination to respect build forges
CMAKE_INSTALL_LIBDIR should be popualted with either lib or lib64,
depending on the architecture. This change makes it so that this flag is
respected by blisp and the library, runtime, and archives are installed
to the location requested by the build.
2023-08-07 21:18:43 -04:00
Marek Kraus f601b6b965 Release v0.0.4 2023-08-03 08:21:21 +02:00
Marc JuulandMarek Kraus 48af2aded0 Adds support for compiling on Ubuntu 20.04 by lowering required cmake… (#44)
* Adds support for compiling on Ubuntu 20.04 by lowering required cmake version to 3.16 (from 3.22) and removing the "set(CMAKE_C_STANDARD 20)" line which is not supported by cmake 3.16

* Adds back the CMAKE_C_STANDARD flag but now sets it to 11, the highest version supported by cmake 3.16

---------

Co-authored-by: Marek Kraus <gamelaster@users.noreply.github.com>
2023-08-01 14:50:32 +02:00
Ben V. BrownandMarek Kraus f1b93a1881 DFU file support (#45)
* DFU file work

Just grabbing first one for now

Expose crc

Update CMakeLists.txt

Test DFU file

Split crc function

Fixup

Zero init struct
Dont null the pointer 🤦
correct fread

Adding tests

Create dfu_file.h

Format

Scratching out more parsing

Basic port parser

Scratching fread wrapper

* Relocate dfu parsing and link in

* Scratching out parsers

* Generic bin parser

* Pull out get file util

Update CMakeLists.txt

* Pull in the generic parser

Fixup

.

* Print flash address

* Rebase address

* stdlib

Update dfu_file.c

* FIXUP! flash offset

* Update dfu_file.c

* Improve logging

* Drop extra erase

* Adjust DFU to avoid goto

* Pragma -> ifndef

* Include Windows headers for missing data types

---------

Co-authored-by: Marek Kraus <gamelaster@outlook.com>
2023-08-01 22:43:56 +10:00
11 changed files with 191 additions and 12 deletions
+1
View File
@@ -0,0 +1 @@
use flake .
+17 -1
View File
@@ -2,6 +2,22 @@ name: Build
on: [push, pull_request] on: [push, pull_request]
jobs: jobs:
check-nix-flake:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
- name: Check Nix Flake
run: nix flake check --print-build-logs
check-nix-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
- name: Build package
run: nix build --print-build-logs
build-windows: build-windows:
runs-on: windows-2022 runs-on: windows-2022
defaults: defaults:
@@ -42,7 +58,7 @@ jobs:
- name: Upload results - name: Upload results
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
with: with:
name: blips-apple-x86_64.zip name: blips-apple-universal.zip
path: | path: |
build/tools/blisp/blisp build/tools/blisp/blisp
if-no-files-found: error if-no-files-found: error
+13 -6
View File
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.22) cmake_minimum_required(VERSION 3.16)
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
project(blisp C) project(blisp C)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_STANDARD 23) set(CMAKE_C_STANDARD 11)
option(BLISP_BUILD_CLI "Build CLI Tool" OFF) option(BLISP_BUILD_CLI "Build CLI Tool" OFF)
option(BLISP_USE_SYSTEM_LIBRARIES "Use system-installed libraries" "${CMAKE_USE_SYSTEM_LIBRARIES}") option(BLISP_USE_SYSTEM_LIBRARIES "Use system-installed libraries" "${CMAKE_USE_SYSTEM_LIBRARIES}")
@@ -28,14 +29,14 @@ set(BLISP_PUBLIC_HEADERS
set_target_properties(libblisp PROPERTIES set_target_properties(libblisp PROPERTIES
PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}" PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}"
VERSION 0.0.3 VERSION 0.0.4
SOVERSION 1 SOVERSION 1
LIBRARY_OUTPUT_DIRECTORY "shared" LIBRARY_OUTPUT_DIRECTORY "shared"
OUTPUT_NAME "blisp") OUTPUT_NAME "blisp")
set_target_properties(libblisp_static PROPERTIES set_target_properties(libblisp_static PROPERTIES
PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}" PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}"
VERSION 0.0.3 VERSION 0.0.4
SOVERSION 1 SOVERSION 1
ARCHIVE_OUTPUT_DIRECTORY "static" ARCHIVE_OUTPUT_DIRECTORY "static"
OUTPUT_NAME "blisp") OUTPUT_NAME "blisp")
@@ -90,7 +91,13 @@ else()
endif() endif()
endif() endif()
install(TARGETS libblisp libblisp_static DESTINATION lib) include(GNUInstallDirs)
install(TARGETS libblisp libblisp_static
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
if(BLISP_BUILD_CLI) if(BLISP_BUILD_CLI)
add_subdirectory(tools/blisp) add_subdirectory(tools/blisp)
@@ -99,4 +106,4 @@ endif()
if(COMPILE_TESTS) if(COMPILE_TESTS)
add_subdirectory(tools/blisp/src/cmd/dfu/tests) add_subdirectory(tools/blisp/src/cmd/dfu/tests)
endif(COMPILE_TESTS) endif(COMPILE_TESTS)
+19 -2
View File
@@ -1,7 +1,7 @@
[![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fpine64%2Fblisp&count_bg=%235791AC&title_bg=%23555555&icon=airplayaudio.svg&icon_color=%23D2D9DD&title=hits&edge_flat=false)](https://github.com/pine64/blisp/wiki/Update-Pinecil-V2) [![Hits](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2Fpine64%2Fblisp&count_bg=%235791AC&title_bg=%23555555&icon=airplayaudio.svg&icon_color=%23D2D9DD&title=hits&edge_flat=false)](https://github.com/pine64/blisp/wiki/Update-Pinecil-V2)
[![GitHub all downloads](https://img.shields.io/github/downloads/pine64/blisp/total?color=5791ac&logo=docusign&logoColor=white)](https://github.com/pine64/blisp/releases/tag/v0.0.3) [![GitHub all downloads](https://img.shields.io/github/downloads/pine64/blisp/total?color=5791ac&logo=docusign&logoColor=white)](https://github.com/pine64/blisp/releases/tag/v0.0.4)
[![Discord](https://img.shields.io/discord/463237927984693259?color=5791ac&logo=discord&logoColor=white)](https://discord.com/invite/pine64) [![Discord](https://img.shields.io/discord/463237927984693259?color=5791ac&logo=discord&logoColor=white)](https://discord.com/invite/pine64)
[![GitHub release](https://img.shields.io/github/v/release/pine64/blisp?color=5791ac)](https://github.com/pine64/blisp/releases/tag/v0.0.3) [![GitHub release](https://img.shields.io/github/v/release/pine64/blisp?color=5791ac)](https://github.com/pine64/blisp/releases/tag/v0.0.4)
<img src="./img/Gradient-white-blue-03.png" align="left" width="60" > <br clear="left" /> <img src="./img/Gradient-white-blue-03.png" align="left" width="60" > <br clear="left" />
# BLISP # BLISP
@@ -94,3 +94,20 @@ Because this is done at the lowest level of serial communication, the
displays aren't packet-aware or know about the chip's command set or such. displays aren't packet-aware or know about the chip's command set or such.
This is really only useful for debugging systems-level issues withing This is really only useful for debugging systems-level issues withing
the device or blisp itself. the device or blisp itself.
## Troubleshooting
### macOS
Depending on your current system security settings, modern versions of macOS requires all software to be notarised before you are able to execute it. This is specially true for software that is downloaded directly from the internet.
If that is the case, you will get an error that looks like the following:
> **“blisp” cannot be opened because the developer cannot be verified.**
>
> macOS cannot verify that this app is free from malware.
In that case, you will need to remove the *quarantine* flag that macOS adds to the executable. After that you should be able to run **blisp** as normal.
```bash
xattr -d com.apple.quarantine blisp
```
+49
View File
@@ -0,0 +1,49 @@
{
lib,
self,
stdenv,
fetchFromGitHub,
argtable,
cmake,
libserialport,
pkg-config,
testers,
IOKit ? null,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "blisp";
version = "0.0.4-unstable";
src = self;
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
argtable
libserialport
] ++ lib.optional stdenv.hostPlatform.isDarwin IOKit;
cmakeFlags = [
"-DBLISP_BUILD_CLI=ON"
"-DBLISP_USE_SYSTEM_LIBRARIES=ON"
];
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-error=implicit-function-declaration";
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
version = "v${finalAttrs.version}";
};
meta = with lib; {
description = "In-System-Programming (ISP) tool & library for Bouffalo Labs RISC-V Microcontrollers and SoCs";
license = licenses.mit;
mainProgram = "blisp";
homepage = "https://github.com/pine64/blisp";
platforms = platforms.unix;
maintainers = [ maintainers.bdd ];
};
})
+9
View File
@@ -0,0 +1,9 @@
(import (
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
) { src = ./.; }).defaultNix
Generated
+27
View File
@@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1731319897,
"narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dc460ec76cbff0e66e269457d7b728432263166c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
+44
View File
@@ -0,0 +1,44 @@
{
description = "A very basic flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
outputs =
{ self, nixpkgs, ... }@inputs:
let
systems = [
"x86_64-linux"
"aarch64-linux"
];
forEachSystem = nixpkgs.lib.genAttrs systems;
in
{
packages = forEachSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
with pkgs;
{
blisp = callPackage ./blisp.nix { inherit self; };
default = self.packages.${system}.blisp;
}
);
devShells = forEachSystem (
system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
with pkgs;
{
default = mkShell {
name = "blisp-dev";
nativeBuildInputs = [ self.packages.${system}.default ];
};
}
);
};
}
+9
View File
@@ -0,0 +1,9 @@
(import (
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
in
fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz";
sha256 = lock.nodes.flake-compat.locked.narHash;
}
) { src = ./.; }).shellNix
+2 -2
View File
@@ -222,13 +222,13 @@ blisp_return_t blisp_flash_firmware() {
if (ret != BLISP_OK) { if (ret != BLISP_OK) {
fprintf(stderr, fprintf(stderr,
"Failed to erase flash. Tried to erase from 0x%08X to 0x%08X\n", "Failed to erase flash. Tried to erase from 0x%08lu to 0x%08lu\n",
parsed_file.payload_address, parsed_file.payload_address,
parsed_file.payload_address + parsed_file.payload_length + 1); parsed_file.payload_address + parsed_file.payload_length + 1);
goto exit2; goto exit2;
} }
printf("Flashing the firmware %d bytes @ 0x%08X...\n", printf("Flashing the firmware %lu bytes @ 0x%08lu...\n",
parsed_file.payload_length, parsed_file.payload_address); parsed_file.payload_length, parsed_file.payload_address);
struct blisp_easy_transport data_transport = struct blisp_easy_transport data_transport =
blisp_easy_transport_new_from_memory(parsed_file.payload, blisp_easy_transport_new_from_memory(parsed_file.payload,
+1 -1
View File
@@ -8,7 +8,7 @@ file(GLOB_RECURSE sources
) )
list(APPEND ADD_SRCS ${sources}) list(APPEND ADD_SRCS ${sources})
add_library(file_parsers add_library(file_parsers STATIC
"${CMAKE_CURRENT_SOURCE_DIR}/bin/bin_file.c" "${CMAKE_CURRENT_SOURCE_DIR}/bin/bin_file.c"
"${CMAKE_CURRENT_SOURCE_DIR}/dfu/dfu_file.c" "${CMAKE_CURRENT_SOURCE_DIR}/dfu/dfu_file.c"
"${CMAKE_CURRENT_SOURCE_DIR}/dfu/dfu_crc.c" "${CMAKE_CURRENT_SOURCE_DIR}/dfu/dfu_crc.c"