16 Commits
Author SHA1 Message Date
Marek Kraus 6306a00de7 Include Windows headers for missing data types 2023-08-01 14:38:55 +02:00
Ben V. Brown c87a4a092c Pragma -> ifndef 2023-08-01 21:36:39 +10:00
Ben V. Brown dbd7ee2257 Adjust DFU to avoid goto 2023-08-01 21:31:07 +10:00
Ben V. Brown 05b62d2fa5 Drop extra erase 2023-08-01 21:08:58 +10:00
Ben V. Brown d25bd65f15 Improve logging 2023-08-01 20:59:36 +10:00
Ben V. Brown ec44c2358b Update dfu_file.c 2023-08-01 18:49:14 +10:00
Ben V. Brown c63883bfa7 FIXUP! flash offset 2023-08-01 18:28:55 +10:00
Ben V. Brown 99a30ae9cc stdlib
Update dfu_file.c
2023-08-01 18:11:44 +10:00
Ben V. Brown 11c31d6eed Rebase address 2023-08-01 17:54:17 +10:00
Ben V. Brown 6724a9c682 Print flash address 2023-08-01 17:54:17 +10:00
Ben V. Brown 342a43b071 Pull in the generic parser
Fixup

.
2023-08-01 17:54:17 +10:00
Ben V. Brown d052d2ebe4 Pull out get file util
Update CMakeLists.txt
2023-08-01 17:45:09 +10:00
Ben V. Brown 9893a49376 Generic bin parser 2023-08-01 17:40:59 +10:00
Ben V. Brown cf00bedeaf Scratching out parsers 2023-08-01 08:26:56 +10:00
Ben V. Brown 013c1d0141 Relocate dfu parsing and link in 2023-08-01 08:18:32 +10:00
Ben V. Brown 98343db387 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
2023-08-01 07:44:40 +10:00
11 changed files with 12 additions and 191 deletions
-1
View File
@@ -1 +0,0 @@
use flake .
+1 -17
View File
@@ -2,22 +2,6 @@ name: Build
on: [push, pull_request]
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:
runs-on: windows-2022
defaults:
@@ -58,7 +42,7 @@ jobs:
- name: Upload results
uses: actions/upload-artifact@v3
with:
name: blips-apple-universal.zip
name: blips-apple-x86_64.zip
path: |
build/tools/blisp/blisp
if-no-files-found: error
+5 -12
View File
@@ -1,8 +1,7 @@
cmake_minimum_required(VERSION 3.16)
set(CMAKE_OSX_ARCHITECTURES "arm64;x86_64" CACHE STRING "" FORCE)
cmake_minimum_required(VERSION 3.22)
project(blisp C)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD 23)
option(BLISP_BUILD_CLI "Build CLI Tool" OFF)
option(BLISP_USE_SYSTEM_LIBRARIES "Use system-installed libraries" "${CMAKE_USE_SYSTEM_LIBRARIES}")
@@ -29,14 +28,14 @@ set(BLISP_PUBLIC_HEADERS
set_target_properties(libblisp PROPERTIES
PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}"
VERSION 0.0.4
VERSION 0.0.3
SOVERSION 1
LIBRARY_OUTPUT_DIRECTORY "shared"
OUTPUT_NAME "blisp")
set_target_properties(libblisp_static PROPERTIES
PUBLIC_HEADER "${BLISP_PUBLIC_HEADERS}"
VERSION 0.0.4
VERSION 0.0.3
SOVERSION 1
ARCHIVE_OUTPUT_DIRECTORY "static"
OUTPUT_NAME "blisp")
@@ -91,13 +90,7 @@ else()
endif()
endif()
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}
)
install(TARGETS libblisp libblisp_static DESTINATION lib)
if(BLISP_BUILD_CLI)
add_subdirectory(tools/blisp)
+2 -19
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)
[![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)
[![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)
[![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.4)
[![GitHub release](https://img.shields.io/github/v/release/pine64/blisp?color=5791ac)](https://github.com/pine64/blisp/releases/tag/v0.0.3)
<img src="./img/Gradient-white-blue-03.png" align="left" width="60" > <br clear="left" />
# BLISP
@@ -94,20 +94,3 @@ 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.
This is really only useful for debugging systems-level issues withing
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
@@ -1,49 +0,0 @@
{
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
@@ -1,9 +0,0 @@
(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
@@ -1,27 +0,0 @@
{
"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
@@ -1,44 +0,0 @@
{
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
@@ -1,9 +0,0 @@
(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) {
fprintf(stderr,
"Failed to erase flash. Tried to erase from 0x%08lu to 0x%08lu\n",
"Failed to erase flash. Tried to erase from 0x%08X to 0x%08X\n",
parsed_file.payload_address,
parsed_file.payload_address + parsed_file.payload_length + 1);
goto exit2;
}
printf("Flashing the firmware %lu bytes @ 0x%08lu...\n",
printf("Flashing the firmware %d bytes @ 0x%08X...\n",
parsed_file.payload_length, parsed_file.payload_address);
struct blisp_easy_transport data_transport =
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})
add_library(file_parsers STATIC
add_library(file_parsers
"${CMAKE_CURRENT_SOURCE_DIR}/bin/bin_file.c"
"${CMAKE_CURRENT_SOURCE_DIR}/dfu/dfu_file.c"
"${CMAKE_CURRENT_SOURCE_DIR}/dfu/dfu_crc.c"