Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c1431f0ab | ||
|
|
772078f8f6 | ||
|
|
46244b8f5f | ||
|
|
5fc59f40bc | ||
|
|
460cd3c602 | ||
|
|
e391d6dac8 | ||
|
|
41afff5ea4 | ||
|
|
187ae2821b | ||
|
|
cb52c273b4 | ||
|
|
5a523e64d8 | ||
|
|
970f622bff | ||
|
|
293438fa61 | ||
|
|
455c1a30cb | ||
|
|
58e4919c0e | ||
|
|
dd7b0a6e3b | ||
|
|
59396baf76 | ||
|
|
8d9340c05b | ||
|
|
0930a000fa | ||
|
|
332560d2d2 | ||
|
|
0344a79f65 | ||
|
|
4577b118bc | ||
|
|
ad8aca5793 | ||
|
|
8bb9711793 | ||
|
|
3cb0490e5e | ||
|
|
58fa1ed6a4 | ||
|
|
9aa78ef5bf | ||
|
|
7c4c354828 | ||
|
|
c3407e1410 | ||
|
|
492243f801 | ||
|
|
6f0b1adc14 | ||
|
|
b917a97e93 | ||
|
|
bf69f28ed1 | ||
|
|
6854fa68dc | ||
|
|
14b6e49692 | ||
|
|
10802f3f73 | ||
|
|
66252eabf0 | ||
|
|
0c4c736552 | ||
|
|
aa4105bdc3 | ||
|
|
101abffec4 | ||
|
|
b8268f55a3 | ||
|
|
2214f00667 | ||
|
|
a2fae5bbef | ||
|
|
47e026006e | ||
|
|
379d827982 | ||
|
|
d9d26814e8 | ||
|
|
611c36fe00 | ||
|
|
e9cd3a96c2 | ||
|
|
8856c484b6 | ||
|
|
b97841fdae | ||
|
|
69143bed9c | ||
|
|
ebd0e3b762 | ||
|
|
ec8301ae62 | ||
|
|
3d4d78387e | ||
|
|
c2582729f2 | ||
|
|
9d66f5ff76 | ||
|
|
06ebed5537 | ||
|
|
02d6fb4628 | ||
|
|
1b9ec89e20 | ||
|
|
7002e7de52 | ||
|
|
1e61a39210 | ||
|
|
5509cbb5f8 | ||
|
|
f650032fef | ||
|
|
fd787f74e9 | ||
|
|
75fe7904b6 | ||
|
|
b4ac82d2c0 | ||
|
|
9670523310 | ||
|
|
7763d8a32b | ||
|
|
3d9170402b | ||
|
|
b0192085bb | ||
|
|
c90261d549 | ||
|
|
5a756edf8b | ||
|
|
46ce16b8d4 | ||
|
|
d2acfba659 | ||
|
|
ac75d0ca8b | ||
|
|
10beb751ac | ||
|
|
e0528e1714 | ||
|
|
0afb3ab687 | ||
|
|
58fd3a78cf | ||
|
|
308a71e4a3 | ||
|
|
ecf1f1ac32 | ||
|
|
b34fb9daa3 | ||
|
|
b68c6bed18 | ||
|
|
ab24e78a5b | ||
|
|
4892d64795 | ||
|
|
c10d6440ce | ||
|
|
c109a9e202 | ||
|
|
5d59540c51 | ||
|
|
e12e219b4e | ||
|
|
3ab2ac18fc | ||
|
|
6e2eca7829 | ||
|
|
8f4fc1da8e | ||
|
|
5de0e5ac60 | ||
|
|
13a718f871 | ||
|
|
15d09552a4 | ||
|
|
0b100feb32 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
|||||||
package-lock.json
|
package-lock.json
|
||||||
node_modules
|
node_modules
|
||||||
|
build_make
|
||||||
|
|||||||
37
.travis.yml
37
.travis.yml
@@ -1,25 +1,36 @@
|
|||||||
language: generic
|
language: c
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/Library/Caches/Homebrew/Cask
|
- $HOME/Library/Caches/Homebrew/Cask
|
||||||
install: eclipse -noSplash
|
|
||||||
-application org.eclipse.equinox.p2.director
|
install: eclipse -noSplash
|
||||||
-repository http://gnuarmeclipse.sourceforge.net/updates
|
-application org.eclipse.equinox.p2.director
|
||||||
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
|
-repository http://gnuarmeclipse.sourceforge.net/updates
|
||||||
|
-installIUs ilg.gnuarmeclipse.managedbuild.cross.feature.group
|
||||||
-profileProperties org.eclipse.update.install.features=true
|
-profileProperties org.eclipse.update.install.features=true
|
||||||
script: eclipse -noSplash
|
|
||||||
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
|
before_script:
|
||||||
-import $TRAVIS_BUILD_DIR/left/build
|
- tar -xf gcc-arm-none-eabi-7-2017-q4-major-*.tar.bz2
|
||||||
-import $TRAVIS_BUILD_DIR/right/build
|
- export PATH=$PATH:$PWD/gcc-arm-none-eabi-7-2017-q4-major/bin
|
||||||
-build all
|
|
||||||
|
script:
|
||||||
|
- eclipse -noSplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import $TRAVIS_BUILD_DIR/left/build -import $TRAVIS_BUILD_DIR/right/build -build all
|
||||||
|
- make -C left clean && make -j2 -C left DEBUG=1
|
||||||
|
- make -C left clean && make -j2 -C left DEBUG=0
|
||||||
|
- make -C right clean && make -j2 -C right DEBUG=1
|
||||||
|
- make -C right clean && make -j2 -C right DEBUG=0
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- os: linux
|
- os: linux
|
||||||
sudo: required
|
sudo: required
|
||||||
before_install:
|
before_install:
|
||||||
- curl https://nixos.org/nix/install | sh && . ~/.nix-profile/etc/profile.d/nix.sh
|
- curl https://nixos.org/nix/install | sh && . ~/.nix-profile/etc/profile.d/nix.sh
|
||||||
- nix-env -i gcc-arm-embedded-4.8-2014q1-20140314
|
|
||||||
- nix-env -i eclipse-cpp
|
- nix-env -i eclipse-cpp
|
||||||
|
- wget "https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2"
|
||||||
- os: osx
|
- os: osx
|
||||||
env: PATH="$PATH:/Applications/Eclipse CPP.app/Contents/MacOS"
|
env: PATH="$PATH:/Applications/Eclipse CPP.app/Contents/MacOS"
|
||||||
before_install: brew update && brew bundle -v
|
before_install:
|
||||||
|
- brew cask install eclipse-cpp
|
||||||
|
- wget "https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-mac.tar.bz2"
|
||||||
|
|||||||
24
CHANGELOG.md
24
CHANGELOG.md
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
The format is loosely based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
||||||
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
and this project adheres to the [UHK Versioning](VERSIONING.md) conventions.
|
||||||
|
|
||||||
|
## [8.2.2] - 2018-05-09
|
||||||
|
|
||||||
|
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.**1** | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Parse long media macro actions. `USERCONFIG:PATCH`
|
||||||
|
- Fix vendor-specific USB usage page entry. This makes the HIDAPI Linux/hidraw driver able to access interface 0.
|
||||||
|
|
||||||
|
## [8.2.1] - 2018-05-02
|
||||||
|
|
||||||
|
Device Protocol: 4.3.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Don't suppress modifier keys upon releasing a layer.
|
||||||
|
- Restore Caps Lock indicator when saving the configuration.
|
||||||
|
|
||||||
|
## [8.2.0] - 2018-04-20
|
||||||
|
|
||||||
|
Device Protocol: 4.**3.0** | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|
||||||
|
- Change the scheduling of USB reports which changes mouse pointer speeds.
|
||||||
|
- Disable LEDs while the host sleeps.
|
||||||
|
- Make any key wake up the host while it sleeps.
|
||||||
|
- Add UsbCommand_SwitchKeymap(). `DEVICEPROTOCOL:MINOR`
|
||||||
|
- Make GCC optimize the release builds for execution speed (-O3).
|
||||||
|
|
||||||
## [8.1.5] - 2018-04-04
|
## [8.1.5] - 2018-04-04
|
||||||
|
|
||||||
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
Device Protocol: 4.2.0 | Module Protocol: 4.0.0 | User Config: 4.0.0 | Hardware Config: 1.0.0
|
||||||
|
|||||||
14
README.md
14
README.md
@@ -4,21 +4,17 @@
|
|||||||
|
|
||||||
This repository hosts the firmware of the [Ultimate Hacking Keyboard](https://ultimatehackingkeyboard.com/).
|
This repository hosts the firmware of the [Ultimate Hacking Keyboard](https://ultimatehackingkeyboard.com/).
|
||||||
|
|
||||||
## Updating to the latest firmware
|
If you want to use the latest firmware version for your UHK, then instead of going through the pain of building the firmware, simply download the [latest release of Agent](https://github.com/UltimateHackingKeyboard/agent/releases/latest) and update to the latest firmware version within Agent with a click of a button.
|
||||||
|
|
||||||
Want to update your UHK to the latest firmware version? Simply download the [latest release of Agent](https://github.com/UltimateHackingKeyboard/agent/releases/latest) which includes the latest firmware version. You'll be easily able to update the firmware within Agent.
|
If you're one of the brave few who wants to hack the firmware then read on.
|
||||||
|
|
||||||
## Cloning the repository
|
1. Make sure to clone this repo with:
|
||||||
|
|
||||||
Please make sure to clone this repo with:
|
|
||||||
|
|
||||||
`git clone --recursive git@github.com:UltimateHackingKeyboard/firmware.git`
|
`git clone --recursive git@github.com:UltimateHackingKeyboard/firmware.git`
|
||||||
|
|
||||||
This will download the dependent submodules, which are required to build the firmware.
|
2. Download and install MCUXpresso IDE for [Linux](https://storage.googleapis.com/ugl-static/mcuxpresso-ide/mcuxpressoide-10.1.1_606.x86_64.deb.bin), [Mac](https://storage.googleapis.com/ugl-static/mcuxpresso-ide/MCUXpressoIDE_10.1.1_606.pkg), or [Windows](https://storage.googleapis.com/ugl-static/mcuxpresso-ide/MCUXpressoIDE_10.1.1_606.exe).
|
||||||
|
|
||||||
## Importing the firmware
|
3. In the IDE, import the project by invoking *File -> Import -> General -> Existing Projects into Workspace*, select the *left* or *right* directory depending on the desired firmware, then click on the *Finish* button.
|
||||||
|
|
||||||
Install [Kinetis Design Studio](http://www.nxp.com/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/kinetis-design-studio-integrated-development-environment-ide:KDS_IDE) (KDS), import the project by invoking *File -> Import -> General -> Existing Projects into Workspace*, select the *left* or *right* directory depending on the desired firmware, then click on the *Finish* button.
|
|
||||||
|
|
||||||
## Building and flashing the firmware
|
## Building and flashing the firmware
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
cask 'gcc-arm-embedded' do
|
|
||||||
version '4_8-2014q3'
|
|
||||||
sha256 '6b30901738b09a8d22fdfff99e991217444b80ac492a6163af5c06a3baaa3487'
|
|
||||||
|
|
||||||
# launchpad.net/gcc-arm-embedded/ was verified as official when first introduced to the cask
|
|
||||||
url "https://launchpad.net/gcc-arm-embedded/4.8/4.8-2014-q3-update/+download/gcc-arm-none-eabi-#{version}-20140805-mac.tar.bz2"
|
|
||||||
name 'GCC ARM Embedded'
|
|
||||||
homepage 'https://developer.arm.com/open-source/gnu-toolchain/gnu-rm'
|
|
||||||
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-addr2line"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ar"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-as"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-c++"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-c++filt"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-cpp"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-elfedit"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-g++"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc-ar"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc-nm"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcc-ranlib"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gcov"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gdb"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-gprof"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ld"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ld.bfd"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-nm"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-objcopy"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-objdump"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-ranlib"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-readelf"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-size"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-strings"
|
|
||||||
binary "gcc-arm-none-eabi-#{version}/bin/arm-none-eabi-strip"
|
|
||||||
end
|
|
||||||
57
left/Makefile
Normal file
57
left/Makefile
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# Copyright (C) 2018 Kristian Lauszus. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Contact information
|
||||||
|
# -------------------
|
||||||
|
# Kristian Lauszus
|
||||||
|
# Web : http://www.lauszus.com
|
||||||
|
# e-mail : lauszus@gmail.com
|
||||||
|
|
||||||
|
# Set project name.
|
||||||
|
PROJECT_NAME = uhk_left
|
||||||
|
|
||||||
|
# Defines the part type that this project uses.
|
||||||
|
PART = MKL03Z32VFK4
|
||||||
|
|
||||||
|
# Defines the linker script to use for the application.
|
||||||
|
LDSCRIPT = ../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/MKL03Z32xxx4_flash.ld
|
||||||
|
|
||||||
|
# Size of the heap and stack.
|
||||||
|
HEAP_SIZE = 0
|
||||||
|
STACK_SIZE = 0x0050
|
||||||
|
|
||||||
|
# Set the compiler CPU and FPU options.
|
||||||
|
CPU = -mcpu=cortex-m0plus
|
||||||
|
FPU = -mfloat-abi=soft
|
||||||
|
|
||||||
|
# Command for flashing the left half of the keyboard.
|
||||||
|
FLASH_CMD = node ../lib/agent/packages/usb/update-module-firmware.js leftHalf $(PROJECT_OBJ:.axf=.bin)
|
||||||
|
|
||||||
|
# Path to the JLink script used for the left half.
|
||||||
|
JLINK_SCRIPT = ../scripts/flash-left.jlink
|
||||||
|
|
||||||
|
# Source files.
|
||||||
|
SOURCE = $(wildcard src/*.c) \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/system_MKL03Z4.c \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/gcc/startup_MKL03Z4.S \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_clock.c \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_gpio.c \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_i2c.c \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_lptmr.c \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_spi.c \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers/fsl_tpm.c \
|
||||||
|
$(wildcard ../shared/*.c)
|
||||||
|
|
||||||
|
# Header files.
|
||||||
|
IPATH = src \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/CMSIS/Include \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4 \
|
||||||
|
../lib/KSDK_2.0_MKL03Z8xxx4/devices/MKL03Z4/drivers \
|
||||||
|
../shared
|
||||||
|
|
||||||
|
# Include main Makefile.
|
||||||
|
include ../scripts/Makedefs.mk
|
||||||
@@ -5,19 +5,19 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_debug">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_debug">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" name="uhk60-left_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861" name="uhk60-left_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.439601044" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.439601044" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.780228407" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.780228407" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.most" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1547417078" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1547417078" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.765602671" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.765602671" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.910567930" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.910567930" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.2943267007" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.2943267007" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.9995899345" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.9995899345" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1777290613" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1777290613" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
<builder buildPath="${workspace_loc:/k64f}/debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1406291427" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
<builder buildPath="${workspace_loc:/uhk-left}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1406291427" incrementalBuildTarget="all DEBUG=1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2007968129" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2007968129" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1246588554" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1246588554" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.2122094274" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.2122094274" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
@@ -165,16 +165,16 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_release">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" moduleId="org.eclipse.cdt.core.settings" name="uhk60-left_release">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" name="uhk60-left_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078" name="uhk60-left_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.1802192936" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.1802192936" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.918206081" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.918206081" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
|
||||||
@@ -220,7 +220,7 @@
|
|||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.6545741443.1540890614" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast.6545741443.1540890614" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.badfunctioncast" value="false" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1382191896" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1382191896" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2107171855" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.2107171855" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1689719605" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
<builder buildPath="${workspace_loc:/uhk-left}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1689719605" incrementalBuildTarget="all DEBUG=0" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1477971290" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1477971290" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.334227408" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.334227408" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1702866230" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1702866230" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
|
|||||||
@@ -31,6 +31,16 @@
|
|||||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
<linkedResources>
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>Makedefs.mk</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/scripts/Makedefs.mk</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>Makefile</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-1-PROJECT_LOC/Makefile</locationURI>
|
||||||
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>drivers</name>
|
<name>drivers</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
|
|||||||
@@ -1,34 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
|
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=1 flash"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-left}/../"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="leftHalf uhk60-left_debug/uhk-left.bin"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-module-firmware.js"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.1792027861"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
|
||||||
<listEntry value="/uhk-left"/>
|
|
||||||
</listAttribute>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|||||||
@@ -1,48 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
|
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=0 flash"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-left}/../"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="leftHalf uhk60-left_release/uhk-left.bin"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-module-firmware.js"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-left"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1792647078"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
|
||||||
<listEntry value="/uhk-left"/>
|
|
||||||
</listAttribute>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.DefaultEvent" value="true"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.HideUnresolvedSymbols" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.Location" value=""/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.SourceLineNumbers" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ModuleSymbols" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.MultipleEvents" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Multiplex" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime" value="false"/>
|
|
||||||
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime.Priority" value="1"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Verbose" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowSourceDisassembly" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowStat" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.SourceLineNumbers" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.StatRunCount" value="1"/>
|
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|||||||
Submodule lib/KSDK_2.0_MK22FN512xxx12 updated: 9fbf2bbf08...e447ecee3a
Submodule lib/agent updated: 9beadb4aac...88c16af4a9
76
right/Makefile
Normal file
76
right/Makefile
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Copyright (C) 2018 Kristian Lauszus. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Contact information
|
||||||
|
# -------------------
|
||||||
|
# Kristian Lauszus
|
||||||
|
# Web : http://www.lauszus.com
|
||||||
|
# e-mail : lauszus@gmail.com
|
||||||
|
|
||||||
|
# Set project name.
|
||||||
|
PROJECT_NAME = uhk_right
|
||||||
|
|
||||||
|
# Defines the part type that this project uses.
|
||||||
|
PART = MK22FN512VLH12
|
||||||
|
|
||||||
|
# Defines the linker script to use for the application.
|
||||||
|
LDSCRIPT = src/link/MK22FN512xxx12_flash.ld
|
||||||
|
|
||||||
|
# Size of the heap and stack.
|
||||||
|
HEAP_SIZE = 0x2000
|
||||||
|
STACK_SIZE = 0x0400
|
||||||
|
|
||||||
|
# Set the compiler CPU and FPU options.
|
||||||
|
CPU = -mcpu=cortex-m4
|
||||||
|
FPU = -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||||
|
|
||||||
|
# Command for flashing the right half of the keyboard.
|
||||||
|
FLASH_CMD = node ../lib/agent/packages/usb/update-device-firmware.js $(PROJECT_OBJ:.axf=.hex)
|
||||||
|
|
||||||
|
# Path to the JLink script used for the right half.
|
||||||
|
JLINK_SCRIPT = ../scripts/flash-right.jlink
|
||||||
|
|
||||||
|
# Preprocessor directives.
|
||||||
|
BUILD_FLAGS = -DCPU_$(PART)_cm4 -DUSB_STACK_BM -DBL_HAS_BOOTLOADER_CONFIG=1
|
||||||
|
|
||||||
|
# Address of the app vector table. The bootloader will take up the flash before this address.
|
||||||
|
BL_APP_VECTOR_TABLE_ADDRESS = 0xc000
|
||||||
|
|
||||||
|
# Source files.
|
||||||
|
SOURCE = $(wildcard src/*.c) \
|
||||||
|
$(wildcard src/*/*.c) \
|
||||||
|
$(wildcard src/*/*/*.c) \
|
||||||
|
../lib/bootloader/src/bootloader/src/wormhole.c \
|
||||||
|
$(wildcard ../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device/*.c) \
|
||||||
|
$(wildcard ../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa/*.c) \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/system_MK22F51212.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/gcc/startup_MK22F51212.S \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_adc16.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_clock.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_ftm.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_gpio.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_i2c.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_pit.c \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers/fsl_smc.c \
|
||||||
|
$(wildcard ../shared/*.c)
|
||||||
|
|
||||||
|
# Header files.
|
||||||
|
IPATH = src \
|
||||||
|
src/ksdk_usb \
|
||||||
|
src/buspal \
|
||||||
|
src/buspal/bm_usb \
|
||||||
|
../lib/bootloader/src \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/device \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/include \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/middleware/usb_1.0.0/osa \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/CMSIS/Include \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212 \
|
||||||
|
../lib/KSDK_2.0_MK22FN512xxx12/devices/MK22F51212/drivers \
|
||||||
|
../shared
|
||||||
|
|
||||||
|
# Include main Makefile.
|
||||||
|
include ../scripts/Makedefs.mk
|
||||||
@@ -5,19 +5,19 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_release">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_release">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" name="uhk60-right_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331" name="uhk60-right_release" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.453692058" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.453692058" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.8609064" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.size" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.8609064" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.most" valueType="enumerated"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.704315278" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.704315278" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.108613118" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.108613118" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.916504304" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.916504304" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" value="true" valueType="boolean"/>
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.1518272175" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.1518272175" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.104956045" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.104956045" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1135747399" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1135747399" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.789002772" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
<builder buildPath="${workspace_loc:/uhk-right}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.789002772" incrementalBuildTarget="all DEBUG=0" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2026990925" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.2026990925" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.494477502" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.494477502" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1465555477" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1465555477" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
@@ -136,9 +136,6 @@
|
|||||||
</tool>
|
</tool>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<fileInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.621318926" name="wormhole.c" rcbsApplicability="disable" resourcePath="bootloader-shared/wormhole.c" toolsToInvoke="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335.948885614">
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335.948885614" name="Cross ARM C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.813655335"/>
|
|
||||||
</fileInfo>
|
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
@@ -148,16 +145,16 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_debug">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_debug">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" name="uhk60-right_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062" name="uhk60-right_debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.622643167" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.622643167" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.274883814" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.274883814" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
||||||
@@ -200,7 +197,7 @@
|
|||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2098763517" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2098763517" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.836473542" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.836473542" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1768350063" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1768350063" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1931309296" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
<builder buildPath="${workspace_loc:/uhk-right}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1931309296" incrementalBuildTarget="all DEBUG=1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.894450" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.894450" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.555709175" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.555709175" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1619685061" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1619685061" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
@@ -291,16 +288,16 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_debug_standalone">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" moduleId="org.eclipse.cdt.core.settings" name="uhk60-right_debug_standalone">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="${cross_rm} -rf" description="Debug version of uhk60-right without the bootloader" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" name="uhk60-right_debug_standalone" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
<configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="${cross_rm} -rf" description="Debug version of uhk60-right without the bootloader" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142" name="uhk60-right_debug_standalone" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release">
|
||||||
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142." name="/" resourcePath="">
|
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062.2081695142." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.788475280" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release.788475280" name="Cross ARM GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.release">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.402546001" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.402546001" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"/>
|
||||||
@@ -343,7 +340,7 @@
|
|||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2124713168" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2124713168" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors" value="false" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1228214828" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1228214828" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" value="false" valueType="boolean"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1911575583" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1911575583" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
||||||
<builder buildPath="${workspace_loc:/k64f}/release" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1942759303" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
<builder buildPath="${workspace_loc:/uhk-right}/../" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1942759303" incrementalBuildTarget="all DEBUG=1 BL_APP_VECTOR_TABLE_ADDRESS=0" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" stopOnErr="false" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1355758441" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1355758441" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.511724221" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.511724221" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1130167410" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.1130167410" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths"/>
|
||||||
@@ -450,13 +447,13 @@
|
|||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
<storageModule moduleId="refreshScope" versionNumber="2">
|
||||||
<configuration configurationName="uhk60-right_debug_standalone">
|
<configuration configurationName="uhk60-right_debug">
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration configurationName="uhk60-right_release">
|
<configuration configurationName="uhk60-right_release">
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration configurationName="uhk60-right_debug">
|
<configuration configurationName="uhk60-right_debug_standalone">
|
||||||
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
<resource resourceType="PROJECT" workspacePath="/uhk-right"/>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
|
|||||||
@@ -30,6 +30,16 @@
|
|||||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||||
</natures>
|
</natures>
|
||||||
<linkedResources>
|
<linkedResources>
|
||||||
|
<link>
|
||||||
|
<name>Makedefs.mk</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-2-PROJECT_LOC/scripts/Makedefs.mk</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>Makefile</name>
|
||||||
|
<type>1</type>
|
||||||
|
<locationURI>PARENT-1-PROJECT_LOC/Makefile</locationURI>
|
||||||
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>bootloader-shared</name>
|
<name>bootloader-shared</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
|
|||||||
@@ -196,21 +196,27 @@ SECTIONS
|
|||||||
text_end = ORIGIN(m_text) + LENGTH(m_text);
|
text_end = ORIGIN(m_text) + LENGTH(m_text);
|
||||||
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
|
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
|
||||||
|
|
||||||
USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
|
|
||||||
/* Uninitialized data section */
|
/* Uninitialized data section */
|
||||||
.bss :
|
.bss : ALIGN(4)
|
||||||
{
|
{
|
||||||
/* This is used by the startup in order to initialize the .bss section */
|
/* This is used by the startup in order to initialize the .bss section */
|
||||||
. = ALIGN(4);
|
|
||||||
__START_BSS = .;
|
__START_BSS = .;
|
||||||
__bss_start__ = .;
|
__bss_start__ = .;
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss*)
|
*(.bss*)
|
||||||
. = ALIGN(512);
|
|
||||||
USB_RAM_START = .;
|
|
||||||
. += USB_RAM_GAP;
|
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_usb_bdt (NOLOAD) :
|
||||||
|
{
|
||||||
|
. = ALIGN(512);
|
||||||
|
*(m_usb_bdt)
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_usb_global (NOLOAD) :
|
||||||
|
{
|
||||||
|
*(m_usb_global)
|
||||||
__bss_end__ = .;
|
__bss_end__ = .;
|
||||||
__END_BSS = .;
|
__END_BSS = .;
|
||||||
} > m_data
|
} > m_data
|
||||||
@@ -239,17 +245,6 @@ SECTIONS
|
|||||||
. += STACK_SIZE;
|
. += STACK_SIZE;
|
||||||
} > m_data_2
|
} > m_data_2
|
||||||
|
|
||||||
m_usb_bdt USB_RAM_START (NOLOAD) :
|
|
||||||
{
|
|
||||||
*(m_usb_bdt)
|
|
||||||
USB_RAM_BDT_END = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_usb_global USB_RAM_BDT_END (NOLOAD) :
|
|
||||||
{
|
|
||||||
*(m_usb_global)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initializes stack on the end of block */
|
/* Initializes stack on the end of block */
|
||||||
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
|
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
|
||||||
__StackLimit = __StackTop - STACK_SIZE;
|
__StackLimit = __StackTop - STACK_SIZE;
|
||||||
|
|||||||
@@ -204,21 +204,27 @@ SECTIONS
|
|||||||
text_end = ORIGIN(m_text) + LENGTH(m_text);
|
text_end = ORIGIN(m_text) + LENGTH(m_text);
|
||||||
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
|
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
|
||||||
|
|
||||||
USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
|
|
||||||
/* Uninitialized data section */
|
/* Uninitialized data section */
|
||||||
.bss :
|
.bss : ALIGN(4)
|
||||||
{
|
{
|
||||||
/* This is used by the startup in order to initialize the .bss section */
|
/* This is used by the startup in order to initialize the .bss section */
|
||||||
. = ALIGN(4);
|
|
||||||
__START_BSS = .;
|
__START_BSS = .;
|
||||||
__bss_start__ = .;
|
__bss_start__ = .;
|
||||||
*(.bss)
|
*(.bss)
|
||||||
*(.bss*)
|
*(.bss*)
|
||||||
. = ALIGN(512);
|
|
||||||
USB_RAM_START = .;
|
|
||||||
. += USB_RAM_GAP;
|
|
||||||
*(COMMON)
|
*(COMMON)
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_usb_bdt (NOLOAD) :
|
||||||
|
{
|
||||||
|
. = ALIGN(512);
|
||||||
|
*(m_usb_bdt)
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_usb_global (NOLOAD) :
|
||||||
|
{
|
||||||
|
*(m_usb_global)
|
||||||
__bss_end__ = .;
|
__bss_end__ = .;
|
||||||
__END_BSS = .;
|
__END_BSS = .;
|
||||||
} > m_data
|
} > m_data
|
||||||
@@ -247,17 +253,6 @@ SECTIONS
|
|||||||
. += STACK_SIZE;
|
. += STACK_SIZE;
|
||||||
} > m_data_2
|
} > m_data_2
|
||||||
|
|
||||||
m_usb_bdt USB_RAM_START (NOLOAD) :
|
|
||||||
{
|
|
||||||
*(m_usb_bdt)
|
|
||||||
USB_RAM_BDT_END = .;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_usb_global USB_RAM_BDT_END (NOLOAD) :
|
|
||||||
{
|
|
||||||
*(m_usb_global)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initializes stack on the end of block */
|
/* Initializes stack on the end of block */
|
||||||
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
|
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
|
||||||
__StackLimit = __StackTop - STACK_SIZE;
|
__StackLimit = __StackTop - STACK_SIZE;
|
||||||
|
|||||||
@@ -1,49 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
|
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
|
<stringAttribute key="bad_container_name" value="/uhk-l"/>
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=1 flash"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-right}/../"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="uhk60-right_debug/uhk-right.hex"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-device-firmware.js"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331.1297236062"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
|
||||||
<listEntry value="/uhk-right"/>
|
|
||||||
</listAttribute>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.DefaultEvent" value="true"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.HideUnresolvedSymbols" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.Location" value=""/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.SourceLineNumbers" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ModuleSymbols" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.MultipleEvents" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Multiplex" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime" value="false"/>
|
|
||||||
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime.Priority" value="1"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Verbose" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowSourceDisassembly" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowStat" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.SourceLineNumbers" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.StatRunCount" value="1"/>
|
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|||||||
@@ -1,49 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType">
|
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB" value="true"/>
|
<stringAttribute key="bad_container_name" value="/uhk-l"/>
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/make"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="-j8 DEBUG=0 flash"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/uhk-right}/../"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
|
||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.SOLIB_PATH"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.TRACEPOINT_MODE" value="TP_NORMAL_ONLY"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.internal.ui.launching.LocalApplicationCDebuggerTab.DEFAULTS_SET" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_ID" value="gdb"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_ARGUMENTS" value="uhk60-right_release/uhk-right.hex"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="../../lib/agent/packages/usb/update-device-firmware.js"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="uhk-right"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnuarmeclipse.managedbuild.cross.config.elf.release.1939339834.1692217331"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.use_terminal" value="true"/>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
|
||||||
<listEntry value="/uhk-right"/>
|
|
||||||
</listAttribute>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="reserved-for-future-use"/> "/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.DefaultEvent" value="true"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.HideUnresolvedSymbols" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.Location" value=""/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Kernel.SourceLineNumbers" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ModuleSymbols" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.MultipleEvents" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Multiplex" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime" value="false"/>
|
|
||||||
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Realtime.Priority" value="1"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.Record.Verbose" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowSourceDisassembly" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.ShowStat" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.linuxtools.internal.perf.attr.SourceLineNumbers" value="true"/>
|
|
||||||
<intAttribute key="org.eclipse.linuxtools.internal.perf.attr.StatRunCount" value="1"/>
|
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|||||||
@@ -593,9 +593,6 @@ static status_t handle_command_internal(uint8_t *packet, uint32_t packetLength)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
#if FIXED_BUSPAL_BOOTLOADER
|
#if FIXED_BUSPAL_BOOTLOADER
|
||||||
size_t offset;
|
|
||||||
int res;
|
|
||||||
|
|
||||||
status = kStatus_Success; /* set default */
|
status = kStatus_Success; /* set default */
|
||||||
res = WaitForStartByte(rxBuf, &offset);
|
res = WaitForStartByte(rxBuf, &offset);
|
||||||
if (res==1 && offset==1)
|
if (res==1 && offset==1)
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ status_t serial_packet_read(const peripheral_descriptor_t *self,
|
|||||||
|
|
||||||
// Receive the framing data packet.
|
// Receive the framing data packet.
|
||||||
isPacketOk = true;
|
isPacketOk = true;
|
||||||
status_t status = read_data_packet(&framingPacket, g_serialContext.data, packetType);
|
status = read_data_packet(&framingPacket, g_serialContext.data, packetType);
|
||||||
if (status != kStatus_Success)
|
if (status != kStatus_Success)
|
||||||
{
|
{
|
||||||
// No packet available.
|
// No packet available.
|
||||||
|
|||||||
@@ -3,8 +3,4 @@
|
|||||||
|
|
||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define I2C_WATCHDOG
|
|
||||||
#define LED_DRIVERS_ENABLED
|
|
||||||
// #define LED_DRIVER_STRESS_TEST
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -144,10 +144,9 @@ parser_error_t ParseConfig(config_buffer_t *buffer)
|
|||||||
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
|
IconsAndLayerTextsBrightness = iconsAndLayerTextsBrightness;
|
||||||
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
|
AlphanumericSegmentsBrightness = alphanumericSegmentsBrightness;
|
||||||
KeyBacklightBrightness = keyBacklightBrightness;
|
KeyBacklightBrightness = keyBacklightBrightness;
|
||||||
#ifdef LED_DRIVERS_ENABLED
|
|
||||||
Slaves[SlaveId_LeftLedDriver].isConnected = false;
|
LedSlaveDriver_UpdateLeds();
|
||||||
Slaves[SlaveId_RightLedDriver].isConnected = false;
|
|
||||||
#endif
|
|
||||||
// Update mouse key speeds
|
// Update mouse key speeds
|
||||||
|
|
||||||
MouseMoveState.initialSpeed = mouseMoveInitialSpeed;
|
MouseMoveState.initialSpeed = mouseMoveInitialSpeed;
|
||||||
|
|||||||
@@ -7,13 +7,15 @@ parser_error_t parseKeyMacroAction(config_buffer_t *buffer, macro_action_t *macr
|
|||||||
uint8_t keyMacroType = macroActionType - SerializedMacroActionType_KeyMacroAction;
|
uint8_t keyMacroType = macroActionType - SerializedMacroActionType_KeyMacroAction;
|
||||||
uint8_t action = keyMacroType & 0b11;
|
uint8_t action = keyMacroType & 0b11;
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
uint8_t scancode;
|
uint16_t scancode = 0;
|
||||||
uint8_t modifierMask;
|
uint8_t modifierMask;
|
||||||
|
|
||||||
keyMacroType >>= 2;
|
keyMacroType >>= 2;
|
||||||
type = keyMacroType & 0b11;
|
type = keyMacroType & 0b11;
|
||||||
keyMacroType >>= 2;
|
keyMacroType >>= 2;
|
||||||
scancode = keyMacroType & 0b10 ? ReadUInt8(buffer) : 0;
|
if (keyMacroType & 0b10) {
|
||||||
|
scancode = type == SerializedKeystrokeType_LongMedia ? ReadUInt16(buffer) : ReadUInt8(buffer);
|
||||||
|
}
|
||||||
modifierMask = keyMacroType & 0b01 ? ReadUInt8(buffer) : 0;
|
modifierMask = keyMacroType & 0b01 ? ReadUInt8(buffer) : 0;
|
||||||
macroAction->type = MacroActionType_Key;
|
macroAction->type = MacroActionType_Key;
|
||||||
macroAction->key.action = action;
|
macroAction->key.action = action;
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
#include "config_parser/config_globals.h"
|
#include "config_parser/config_globals.h"
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
|
|
||||||
bool IsEepromBusy;
|
volatile bool IsEepromBusy;
|
||||||
static eeprom_operation_t CurrentEepromOperation;
|
static eeprom_operation_t CurrentEepromOperation;
|
||||||
static config_buffer_id_t CurrentConfigBufferId;
|
static config_buffer_id_t CurrentConfigBufferId;
|
||||||
status_t LastEepromTransferStatus;
|
static status_t LastEepromTransferStatus;
|
||||||
void (*SuccessCallback)(void);
|
void (*SuccessCallback)(void);
|
||||||
|
|
||||||
static i2c_master_handle_t i2cHandle;
|
static i2c_master_handle_t i2cHandle;
|
||||||
|
|||||||
@@ -24,8 +24,7 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool IsEepromBusy;
|
extern volatile bool IsEepromBusy;
|
||||||
extern status_t EepromTransferStatus;
|
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,10 @@
|
|||||||
#include "bootloader/wormhole.h"
|
#include "bootloader/wormhole.h"
|
||||||
|
|
||||||
bool IsBusPalOn;
|
bool IsBusPalOn;
|
||||||
uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_NORMAL_BAUD_RATE;
|
volatile uint32_t I2cMainBusRequestedBaudRateBps = I2C_MAIN_BUS_NORMAL_BAUD_RATE;
|
||||||
uint32_t I2cMainBusActualBaudRateBps;
|
volatile uint32_t I2cMainBusActualBaudRateBps;
|
||||||
|
|
||||||
void initBusPalState(void) {
|
static void initBusPalState(void) {
|
||||||
IsBusPalOn = Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal;
|
IsBusPalOn = Wormhole.magicNumber == WORMHOLE_MAGIC_NUMBER && Wormhole.enumerationMode == EnumerationMode_BusPal;
|
||||||
if (IsBusPalOn) {
|
if (IsBusPalOn) {
|
||||||
Wormhole.magicNumber = 0;
|
Wormhole.magicNumber = 0;
|
||||||
@@ -29,7 +29,7 @@ void initBusPalState(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void initInterruptPriorities(void)
|
static void initInterruptPriorities(void)
|
||||||
{
|
{
|
||||||
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
|
NVIC_SetPriority(PIT_I2C_WATCHDOG_IRQ_ID, 1);
|
||||||
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
|
NVIC_SetPriority(PIT_TIMER_IRQ_ID, 2);
|
||||||
@@ -40,12 +40,12 @@ void initInterruptPriorities(void)
|
|||||||
NVIC_SetPriority(USB_IRQ_ID, 3);
|
NVIC_SetPriority(USB_IRQ_ID, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
void delay(void)
|
static void delay(void)
|
||||||
{
|
{
|
||||||
for (volatile uint32_t i=0; i<62; i++);
|
for (volatile uint32_t i=0; i<62; i++);
|
||||||
}
|
}
|
||||||
|
|
||||||
void recoverI2c(void)
|
static void recoverI2c(void)
|
||||||
{
|
{
|
||||||
PORT_SetPinMux(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, kPORT_MuxAsGpio);
|
PORT_SetPinMux(I2C_MAIN_BUS_SDA_PORT, I2C_MAIN_BUS_SDA_PIN, kPORT_MuxAsGpio);
|
||||||
PORT_SetPinMux(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, kPORT_MuxAsGpio);
|
PORT_SetPinMux(I2C_MAIN_BUS_SCL_PORT, I2C_MAIN_BUS_SCL_PIN, kPORT_MuxAsGpio);
|
||||||
@@ -74,7 +74,7 @@ void recoverI2c(void)
|
|||||||
delay();
|
delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void initI2cMainBus(void)
|
static void initI2cMainBus(void)
|
||||||
{
|
{
|
||||||
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK);
|
CLOCK_EnableClock(I2C_MAIN_BUS_SDA_CLOCK);
|
||||||
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK);
|
CLOCK_EnableClock(I2C_MAIN_BUS_SCL_CLOCK);
|
||||||
@@ -105,7 +105,7 @@ void ReinitI2cMainBus(void)
|
|||||||
InitSlaveScheduler();
|
InitSlaveScheduler();
|
||||||
}
|
}
|
||||||
|
|
||||||
void initI2cEepromBus(void)
|
static void initI2cEepromBus(void)
|
||||||
{
|
{
|
||||||
port_pin_config_t pinConfig = {
|
port_pin_config_t pinConfig = {
|
||||||
.pullSelect = kPORT_PullUp,
|
.pullSelect = kPORT_PullUp,
|
||||||
@@ -126,7 +126,7 @@ void initI2cEepromBus(void)
|
|||||||
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
|
I2C_MasterInit(I2C_EEPROM_BUS_BASEADDR, &masterConfig, sourceClock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void initI2c(void)
|
static void initI2c(void)
|
||||||
{
|
{
|
||||||
initI2cMainBus();
|
initI2cMainBus();
|
||||||
initI2cEepromBus();
|
initI2cEepromBus();
|
||||||
@@ -144,9 +144,7 @@ void InitPeripherals(void)
|
|||||||
initI2c();
|
initI2c();
|
||||||
InitTestLed();
|
InitTestLed();
|
||||||
LedPwm_Init();
|
LedPwm_Init();
|
||||||
#ifdef I2C_WATCHDOG
|
|
||||||
InitI2cWatchdog();
|
InitI2cWatchdog();
|
||||||
#endif
|
|
||||||
InitKeyDebouncer();
|
InitKeyDebouncer();
|
||||||
EEPROM_Init();
|
EEPROM_Init();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,8 +8,8 @@
|
|||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool IsBusPalOn;
|
extern bool IsBusPalOn;
|
||||||
extern uint32_t I2cMainBusRequestedBaudRateBps;
|
extern volatile uint32_t I2cMainBusRequestedBaudRateBps;
|
||||||
extern uint32_t I2cMainBusActualBaudRateBps;
|
extern volatile uint32_t I2cMainBusActualBaudRateBps;
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
|||||||
@@ -6,17 +6,36 @@
|
|||||||
#include "config_parser/config_globals.h"
|
#include "config_parser/config_globals.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
|
|
||||||
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = { { "FTY", 0, 3 } };
|
keymap_reference_t AllKeymaps[MAX_KEYMAP_NUM] = {
|
||||||
|
{
|
||||||
|
.abbreviation = "FTY",
|
||||||
|
.offset = 0,
|
||||||
|
.abbreviationLen = 3
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
uint8_t AllKeymapsCount;
|
uint8_t AllKeymapsCount;
|
||||||
uint8_t DefaultKeymapIndex;
|
uint8_t DefaultKeymapIndex;
|
||||||
uint8_t CurrentKeymapIndex = 0;
|
uint8_t CurrentKeymapIndex = 0;
|
||||||
|
|
||||||
void SwitchKeymap(uint8_t index)
|
void SwitchKeymapById(uint8_t index)
|
||||||
{
|
{
|
||||||
CurrentKeymapIndex = index;
|
CurrentKeymapIndex = index;
|
||||||
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
|
ValidatedUserConfigBuffer.offset = AllKeymaps[index].offset;
|
||||||
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
|
ParseKeymap(&ValidatedUserConfigBuffer, index, AllKeymapsCount, AllMacrosCount);
|
||||||
LedDisplay_SetCurrentKeymapText();
|
LedDisplay_UpdateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SwitchKeymapByAbbreviation(uint8_t length, char *abbrev)
|
||||||
|
{
|
||||||
|
for (uint8_t i=0; i<AllKeymapsCount; i++) {
|
||||||
|
keymap_reference_t *keymap = AllKeymaps + i;
|
||||||
|
if (keymap->abbreviationLen == length && memcmp(keymap->abbreviation, abbrev, length) == 0) {
|
||||||
|
SwitchKeymapById(i);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The factory keymap is initialized before it gets overwritten by the default keymap of the EEPROM.
|
// The factory keymap is initialized before it gets overwritten by the default keymap of the EEPROM.
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void SwitchKeymap(uint8_t index);
|
void SwitchKeymapById(uint8_t index);
|
||||||
|
bool SwitchKeymapByAbbreviation(uint8_t length, char *abbrev);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -5,8 +5,9 @@
|
|||||||
|
|
||||||
uint8_t IconsAndLayerTextsBrightness = 0xff;
|
uint8_t IconsAndLayerTextsBrightness = 0xff;
|
||||||
uint8_t AlphanumericSegmentsBrightness = 0xff;
|
uint8_t AlphanumericSegmentsBrightness = 0xff;
|
||||||
|
bool ledIconStates[LedDisplayIcon_Last];
|
||||||
|
|
||||||
static const uint16_t capitalLetterToSegmentSet[] = {
|
static const uint16_t capitalLetterToSegmentMap[] = {
|
||||||
0b0000000011110111,
|
0b0000000011110111,
|
||||||
0b0001001010001111,
|
0b0001001010001111,
|
||||||
0b0000000000111001,
|
0b0000000000111001,
|
||||||
@@ -35,7 +36,7 @@ static const uint16_t capitalLetterToSegmentSet[] = {
|
|||||||
0b0000110000001001,
|
0b0000110000001001,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const uint16_t digitToSegmentSet[] = {
|
static const uint16_t digitToSegmentMap[] = {
|
||||||
0b0000110000111111,
|
0b0000110000111111,
|
||||||
0b0000010000000110,
|
0b0000010000000110,
|
||||||
0b0000100010001011,
|
0b0000100010001011,
|
||||||
@@ -48,13 +49,13 @@ static const uint16_t digitToSegmentSet[] = {
|
|||||||
0b0000000011101111,
|
0b0000000011101111,
|
||||||
};
|
};
|
||||||
|
|
||||||
static uint16_t characterToSegmentSet(char character)
|
static uint16_t characterToSegmentMap(char character)
|
||||||
{
|
{
|
||||||
switch (character) {
|
switch (character) {
|
||||||
case 'A' ... 'Z':
|
case 'A' ... 'Z':
|
||||||
return capitalLetterToSegmentSet[character - 'A'];
|
return capitalLetterToSegmentMap[character - 'A'];
|
||||||
case '0' ... '9':
|
case '0' ... '9':
|
||||||
return digitToSegmentSet[character - '0'];
|
return digitToSegmentMap[character - '0'];
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -65,11 +66,11 @@ void LedDisplay_SetText(uint8_t length, const char* text)
|
|||||||
|
|
||||||
switch (length) {
|
switch (length) {
|
||||||
case 3:
|
case 3:
|
||||||
allSegmentSets = (uint64_t)characterToSegmentSet(text[2]) << 28;
|
allSegmentSets = (uint64_t)characterToSegmentMap(text[2]) << 28;
|
||||||
case 2:
|
case 2:
|
||||||
allSegmentSets |= characterToSegmentSet(text[1]) << 14;
|
allSegmentSets |= characterToSegmentMap(text[1]) << 14;
|
||||||
case 1:
|
case 1:
|
||||||
allSegmentSets |= characterToSegmentSet(text[0]);
|
allSegmentSets |= characterToSegmentMap(text[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
LedDriverValues[LedDriverId_Left][11] = allSegmentSets & 0b00000001 ? AlphanumericSegmentsBrightness : 0;
|
LedDriverValues[LedDriverId_Left][11] = allSegmentSets & 0b00000001 ? AlphanumericSegmentsBrightness : 0;
|
||||||
@@ -84,13 +85,7 @@ void LedDisplay_SetText(uint8_t length, const char* text)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedDisplay_SetCurrentKeymapText(void)
|
void LedDisplay_SetLayer(layer_id_t layerId)
|
||||||
{
|
|
||||||
keymap_reference_t *currentKeymap = AllKeymaps + CurrentKeymapIndex;
|
|
||||||
LedDisplay_SetText(currentKeymap->abbreviationLen, currentKeymap->abbreviation);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LedDisplay_SetLayer(uint8_t layerId)
|
|
||||||
{
|
{
|
||||||
for (uint8_t i = 13; i <= 45; i += 16) {
|
for (uint8_t i = 13; i <= 45; i += 16) {
|
||||||
LedDriverValues[LedDriverId_Left][i] = 0;
|
LedDriverValues[LedDriverId_Left][i] = 0;
|
||||||
@@ -101,7 +96,32 @@ void LedDisplay_SetLayer(uint8_t layerId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool LedDisplay_GetIcon(led_display_icon_t icon)
|
||||||
|
{
|
||||||
|
return LedDriverValues[LedDriverId_Left][8 + icon];
|
||||||
|
}
|
||||||
|
|
||||||
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled)
|
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled)
|
||||||
{
|
{
|
||||||
LedDriverValues[LedDriverId_Left][8 + icon] = isEnabled ? IconsAndLayerTextsBrightness : 0;
|
ledIconStates[icon] = isEnabled;
|
||||||
|
LedDriverValues[LedDriverId_Left][icon + 8] = isEnabled ? IconsAndLayerTextsBrightness : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedDisplay_UpdateIcons(void)
|
||||||
|
{
|
||||||
|
for (led_display_icon_t i=0; i<=LedDisplayIcon_Last; i++) {
|
||||||
|
LedDisplay_SetIcon(i, ledIconStates[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedDisplay_UpdateText(void)
|
||||||
|
{
|
||||||
|
keymap_reference_t *currentKeymap = AllKeymaps + CurrentKeymapIndex;
|
||||||
|
LedDisplay_SetText(currentKeymap->abbreviationLen, currentKeymap->abbreviation);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedDisplay_UpdateAll(void)
|
||||||
|
{
|
||||||
|
LedDisplay_UpdateIcons();
|
||||||
|
LedDisplay_UpdateText();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include "layer.h"
|
||||||
|
|
||||||
// Typedefs:
|
// Typedefs:
|
||||||
|
|
||||||
@@ -12,6 +13,7 @@
|
|||||||
LedDisplayIcon_CapsLock,
|
LedDisplayIcon_CapsLock,
|
||||||
LedDisplayIcon_Agent,
|
LedDisplayIcon_Agent,
|
||||||
LedDisplayIcon_Adaptive,
|
LedDisplayIcon_Adaptive,
|
||||||
|
LedDisplayIcon_Last = LedDisplayIcon_Adaptive,
|
||||||
} led_display_icon_t;
|
} led_display_icon_t;
|
||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
@@ -22,8 +24,11 @@
|
|||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void LedDisplay_SetText(uint8_t length, const char* text);
|
void LedDisplay_SetText(uint8_t length, const char* text);
|
||||||
void LedDisplay_SetCurrentKeymapText(void);
|
void LedDisplay_SetLayer(layer_id_t layerId);
|
||||||
void LedDisplay_SetLayer(uint8_t layerId);
|
bool LedDisplay_GetIcon(led_display_icon_t icon);
|
||||||
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled);
|
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled);
|
||||||
|
void LedDisplay_UpdateIcons(void);
|
||||||
|
void LedDisplay_UpdateText(void);
|
||||||
|
void LedDisplay_UpdateAll(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
277
right/src/link/MK22FN512xxx12_flash.ld
Normal file
277
right/src/link/MK22FN512xxx12_flash.ld
Normal file
@@ -0,0 +1,277 @@
|
|||||||
|
/*
|
||||||
|
** ###################################################################
|
||||||
|
** Processors: MK22FN512CAP12
|
||||||
|
** MK22FN512VDC12
|
||||||
|
** MK22FN512VLH12
|
||||||
|
** MK22FN512VLL12
|
||||||
|
** MK22FN512VMP12
|
||||||
|
**
|
||||||
|
** Compiler: GNU C Compiler
|
||||||
|
** Reference manual: K22P121M120SF7RM, Rev. 1, March 24, 2014
|
||||||
|
** Version: rev. 2.8, 2015-02-19
|
||||||
|
** Build: b151217
|
||||||
|
**
|
||||||
|
** Abstract:
|
||||||
|
** Linker file for the GNU C Compiler
|
||||||
|
**
|
||||||
|
** Copyright (c) 2015 Freescale Semiconductor, Inc.
|
||||||
|
** All rights reserved.
|
||||||
|
**
|
||||||
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
** are permitted provided that the following conditions are met:
|
||||||
|
**
|
||||||
|
** o Redistributions of source code must retain the above copyright notice, this list
|
||||||
|
** of conditions and the following disclaimer.
|
||||||
|
**
|
||||||
|
** o Redistributions in binary form must reproduce the above copyright notice, this
|
||||||
|
** list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
** other materials provided with the distribution.
|
||||||
|
**
|
||||||
|
** o Neither the name of Freescale Semiconductor, Inc. nor the names of its
|
||||||
|
** contributors may be used to endorse or promote products derived from this
|
||||||
|
** software without specific prior written permission.
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
**
|
||||||
|
** http: www.freescale.com
|
||||||
|
** mail: support@freescale.com
|
||||||
|
**
|
||||||
|
** ###################################################################
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Entry Point */
|
||||||
|
ENTRY(Reset_Handler)
|
||||||
|
|
||||||
|
HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x2000;
|
||||||
|
STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400;
|
||||||
|
M_VECTOR_RAM_SIZE = DEFINED(__ram_vector_table__) ? 0x0400 : 0x0;
|
||||||
|
|
||||||
|
/* This should match the value in bootloader_config.h if KBOOT is used */
|
||||||
|
BL_APP_VECTOR_TABLE_ADDRESS = DEFINED(__bl_app_vector_table_address__) ? __bl_app_vector_table_address__ : 0;
|
||||||
|
|
||||||
|
/* Specify the memory areas */
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
m_interrupts (RX) : ORIGIN = 0x0 + BL_APP_VECTOR_TABLE_ADDRESS, LENGTH = 0x00000400
|
||||||
|
m_text (RX) : ORIGIN = 0x00000400 + BL_APP_VECTOR_TABLE_ADDRESS, LENGTH = 512K - 0x400 - BL_APP_VECTOR_TABLE_ADDRESS
|
||||||
|
m_data (RW) : ORIGIN = 0x1FFF0000, LENGTH = 0x00010000
|
||||||
|
m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x0000FF00
|
||||||
|
m_noinit (RW) : ORIGIN = 0x2000FF00, LENGTH = 0x000000FF
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Define output sections */
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
/* The startup code goes first into internal flash */
|
||||||
|
.interrupts :
|
||||||
|
{
|
||||||
|
__VECTOR_TABLE = .;
|
||||||
|
. = ALIGN(4);
|
||||||
|
KEEP(*(.isr_vector)) /* Startup code */
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > m_interrupts
|
||||||
|
|
||||||
|
/* The program code and other data goes into internal flash */
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.text) /* .text sections (code) */
|
||||||
|
*(.text*) /* .text* sections (code) */
|
||||||
|
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
||||||
|
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
|
||||||
|
*(.glue_7) /* glue arm to thumb code */
|
||||||
|
*(.glue_7t) /* glue thumb to arm code */
|
||||||
|
*(.eh_frame)
|
||||||
|
KEEP (*(.init))
|
||||||
|
KEEP (*(.fini))
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.ARM.extab :
|
||||||
|
{
|
||||||
|
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.ARM :
|
||||||
|
{
|
||||||
|
__exidx_start = .;
|
||||||
|
*(.ARM.exidx*)
|
||||||
|
__exidx_end = .;
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.ctors :
|
||||||
|
{
|
||||||
|
__CTOR_LIST__ = .;
|
||||||
|
/* gcc uses crtbegin.o to find the start of
|
||||||
|
the constructors, so we make sure it is
|
||||||
|
first. Because this is a wildcard, it
|
||||||
|
doesn't matter if the user does not
|
||||||
|
actually link against crtbegin.o; the
|
||||||
|
linker won't look for a file to match a
|
||||||
|
wildcard. The wildcard also means that it
|
||||||
|
doesn't matter which directory crtbegin.o
|
||||||
|
is in. */
|
||||||
|
KEEP (*crtbegin.o(.ctors))
|
||||||
|
KEEP (*crtbegin?.o(.ctors))
|
||||||
|
/* We don't want to include the .ctor section from
|
||||||
|
from the crtend.o file until after the sorted ctors.
|
||||||
|
The .ctor section from the crtend file contains the
|
||||||
|
end of ctors marker and it must be last */
|
||||||
|
KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors))
|
||||||
|
KEEP (*(SORT(.ctors.*)))
|
||||||
|
KEEP (*(.ctors))
|
||||||
|
__CTOR_END__ = .;
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.dtors :
|
||||||
|
{
|
||||||
|
__DTOR_LIST__ = .;
|
||||||
|
KEEP (*crtbegin.o(.dtors))
|
||||||
|
KEEP (*crtbegin?.o(.dtors))
|
||||||
|
KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors))
|
||||||
|
KEEP (*(SORT(.dtors.*)))
|
||||||
|
KEEP (*(.dtors))
|
||||||
|
__DTOR_END__ = .;
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.preinit_array :
|
||||||
|
{
|
||||||
|
PROVIDE_HIDDEN (__preinit_array_start = .);
|
||||||
|
KEEP (*(.preinit_array*))
|
||||||
|
PROVIDE_HIDDEN (__preinit_array_end = .);
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.init_array :
|
||||||
|
{
|
||||||
|
PROVIDE_HIDDEN (__init_array_start = .);
|
||||||
|
KEEP (*(SORT(.init_array.*)))
|
||||||
|
KEEP (*(.init_array*))
|
||||||
|
PROVIDE_HIDDEN (__init_array_end = .);
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
.fini_array :
|
||||||
|
{
|
||||||
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
||||||
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
|
KEEP (*(.fini_array*))
|
||||||
|
PROVIDE_HIDDEN (__fini_array_end = .);
|
||||||
|
} > m_text
|
||||||
|
|
||||||
|
__etext = .; /* define a global symbol at end of code */
|
||||||
|
__DATA_ROM = .; /* Symbol is used by startup for data initialization */
|
||||||
|
|
||||||
|
.interrupts_ram :
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
__VECTOR_RAM__ = .;
|
||||||
|
__interrupts_ram_start__ = .; /* Create a global symbol at data start */
|
||||||
|
*(.m_interrupts_ram) /* This is a user defined section */
|
||||||
|
. += M_VECTOR_RAM_SIZE;
|
||||||
|
. = ALIGN(4);
|
||||||
|
__interrupts_ram_end__ = .; /* Define a global symbol at data end */
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
__VECTOR_RAM = DEFINED(__ram_vector_table__) ? __VECTOR_RAM__ : ORIGIN(m_interrupts);
|
||||||
|
__RAM_VECTOR_TABLE_SIZE_BYTES = DEFINED(__ram_vector_table__) ? (__interrupts_ram_end__ - __interrupts_ram_start__) : 0x0;
|
||||||
|
|
||||||
|
.data : AT(__DATA_ROM)
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
__DATA_RAM = .;
|
||||||
|
__data_start__ = .; /* create a global symbol at data start */
|
||||||
|
*(.data) /* .data sections */
|
||||||
|
*(.data*) /* .data* sections */
|
||||||
|
KEEP(*(.jcr*))
|
||||||
|
. = ALIGN(4);
|
||||||
|
__data_end__ = .; /* define a global symbol at data end */
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
__DATA_END = __DATA_ROM + (__data_end__ - __data_start__);
|
||||||
|
text_end = ORIGIN(m_text) + LENGTH(m_text);
|
||||||
|
ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
|
||||||
|
|
||||||
|
/* Uninitialized data section */
|
||||||
|
.bss : ALIGN(4)
|
||||||
|
{
|
||||||
|
/* This is used by the startup in order to initialize the .bss section */
|
||||||
|
__START_BSS = .;
|
||||||
|
__bss_start__ = .;
|
||||||
|
*(.bss)
|
||||||
|
*(.bss*)
|
||||||
|
*(COMMON)
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_usb_bdt (NOLOAD) :
|
||||||
|
{
|
||||||
|
. = ALIGN(512);
|
||||||
|
*(m_usb_bdt)
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_usb_global (NOLOAD) :
|
||||||
|
{
|
||||||
|
*(m_usb_global)
|
||||||
|
__bss_end__ = .;
|
||||||
|
__END_BSS = .;
|
||||||
|
} > m_data
|
||||||
|
|
||||||
|
.m_data_2 :
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
*(.m_data_2) /* This is an User defined section */
|
||||||
|
. = ALIGN(4);
|
||||||
|
} > m_data_2
|
||||||
|
|
||||||
|
.heap :
|
||||||
|
{
|
||||||
|
. = ALIGN(8);
|
||||||
|
__end__ = .;
|
||||||
|
PROVIDE(end = .);
|
||||||
|
_pvHeapStart = .; /* Add for _sbrk */
|
||||||
|
__HeapBase = .;
|
||||||
|
. += HEAP_SIZE;
|
||||||
|
__HeapLimit = .;
|
||||||
|
__heap_limit = .; /* Add for _sbrk */
|
||||||
|
} > m_data_2
|
||||||
|
|
||||||
|
.stack :
|
||||||
|
{
|
||||||
|
. = ALIGN(8);
|
||||||
|
. += STACK_SIZE;
|
||||||
|
} > m_data_2
|
||||||
|
|
||||||
|
/* Initializes stack on the end of block */
|
||||||
|
__StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
|
||||||
|
__StackLimit = __StackTop - STACK_SIZE;
|
||||||
|
PROVIDE(__stack = __StackTop);
|
||||||
|
|
||||||
|
.ARM.attributes 0 : { *(.ARM.attributes) }
|
||||||
|
|
||||||
|
ASSERT(__StackLimit >= __HeapLimit, "region m_data_2 overflowed with stack and heap")
|
||||||
|
|
||||||
|
.noinit (NOLOAD):
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
_noinit = .;
|
||||||
|
|
||||||
|
*(.noinit .noinit.*)
|
||||||
|
|
||||||
|
. = ALIGN(4) ;
|
||||||
|
_end_noinit = .;
|
||||||
|
} > m_noinit
|
||||||
|
|
||||||
|
/* Mandatory to be word aligned, _sbrk assumes this */
|
||||||
|
PROVIDE ( end = _end_noinit ); /* was _ebss */
|
||||||
|
PROVIDE ( _end = _end_noinit );
|
||||||
|
PROVIDE ( __end = _end_noinit );
|
||||||
|
PROVIDE ( __end__ = _end_noinit );
|
||||||
|
}
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
struct {
|
struct {
|
||||||
macro_sub_action_t action;
|
macro_sub_action_t action;
|
||||||
keystroke_type_t type;
|
keystroke_type_t type;
|
||||||
uint8_t scancode;
|
uint16_t scancode;
|
||||||
uint8_t modifierMask;
|
uint8_t modifierMask;
|
||||||
} ATTR_PACKED key;
|
} ATTR_PACKED key;
|
||||||
struct {
|
struct {
|
||||||
|
|||||||
@@ -11,20 +11,20 @@
|
|||||||
#include "peripherals/reset_button.h"
|
#include "peripherals/reset_button.h"
|
||||||
#include "usb_report_updater.h"
|
#include "usb_report_updater.h"
|
||||||
|
|
||||||
bool IsEepromInitialized = false;
|
static bool IsEepromInitialized = false;
|
||||||
bool IsConfigInitialized = false;
|
static bool IsConfigInitialized = false;
|
||||||
|
|
||||||
void userConfigurationReadFinished(void)
|
static void userConfigurationReadFinished(void)
|
||||||
{
|
{
|
||||||
IsEepromInitialized = true;
|
IsEepromInitialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hardwareConfigurationReadFinished(void)
|
static void hardwareConfigurationReadFinished(void)
|
||||||
{
|
{
|
||||||
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_StagingUserConfig, userConfigurationReadFinished);
|
EEPROM_LaunchTransfer(EepromOperation_Read, ConfigBufferId_StagingUserConfig, userConfigurationReadFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
InitClock();
|
InitClock();
|
||||||
InitPeripherals();
|
InitPeripherals();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#include "fsl_port.h"
|
#include "fsl_port.h"
|
||||||
#include "peripherals/adc.h"
|
#include "peripherals/adc.h"
|
||||||
|
|
||||||
adc16_channel_config_t adc16ChannelConfigStruct;
|
static adc16_channel_config_t adc16ChannelConfigStruct;
|
||||||
|
|
||||||
void ADC_Init(void)
|
void ADC_Init(void)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -62,6 +62,22 @@ static uint8_t setShutdownModeNormalBuffer[] = {LED_DRIVER_REGISTER_SHUTDOWN, SH
|
|||||||
static uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
|
static uint8_t setFrame1Buffer[] = {LED_DRIVER_REGISTER_FRAME, LED_DRIVER_FRAME_1};
|
||||||
static uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH];
|
static uint8_t updatePwmRegistersBuffer[PWM_REGISTER_BUFFER_LENGTH];
|
||||||
|
|
||||||
|
void LedSlaveDriver_DisableLeds(void)
|
||||||
|
{
|
||||||
|
for (uint8_t ledDriverId=0; ledDriverId<=LedDriverId_Last; ledDriverId++) {
|
||||||
|
memset(LedDriverValues[ledDriverId], 0, LED_DRIVER_LED_COUNT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LedSlaveDriver_UpdateLeds(void)
|
||||||
|
{
|
||||||
|
for (uint8_t ledDriverId=0; ledDriverId<=LedDriverId_Last; ledDriverId++) {
|
||||||
|
memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT);
|
||||||
|
}
|
||||||
|
|
||||||
|
LedDisplay_UpdateAll();
|
||||||
|
}
|
||||||
|
|
||||||
void LedSlaveDriver_Init(uint8_t ledDriverId)
|
void LedSlaveDriver_Init(uint8_t ledDriverId)
|
||||||
{
|
{
|
||||||
if (ledDriverId == ISO_KEY_LED_DRIVER_ID && IS_ISO) {
|
if (ledDriverId == ISO_KEY_LED_DRIVER_ID && IS_ISO) {
|
||||||
@@ -74,10 +90,7 @@ void LedSlaveDriver_Init(uint8_t ledDriverId)
|
|||||||
memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT);
|
memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT);
|
||||||
|
|
||||||
if (ledDriverId == LedDriverId_Left) {
|
if (ledDriverId == LedDriverId_Left) {
|
||||||
LedDisplay_SetIcon(LedDisplayIcon_CapsLock, false);
|
LedDisplay_UpdateAll();
|
||||||
LedDisplay_SetIcon(LedDisplayIcon_Agent, false);
|
|
||||||
LedDisplay_SetIcon(LedDisplayIcon_Adaptive, false);
|
|
||||||
LedDisplay_SetCurrentKeymapText();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,10 +131,8 @@ status_t LedSlaveDriver_Update(uint8_t ledDriverId)
|
|||||||
*ledIndex += chunkSize;
|
*ledIndex += chunkSize;
|
||||||
if (*ledIndex >= LED_DRIVER_LED_COUNT) {
|
if (*ledIndex >= LED_DRIVER_LED_COUNT) {
|
||||||
*ledIndex = 0;
|
*ledIndex = 0;
|
||||||
#ifndef LED_DRIVER_STRESS_TEST
|
|
||||||
memcpy(currentLedDriverState->targetLedValues, ledValues, LED_DRIVER_LED_COUNT);
|
memcpy(currentLedDriverState->targetLedValues, ledValues, LED_DRIVER_LED_COUNT);
|
||||||
*ledDriverPhase = LedDriverPhase_UpdateChangedLedValues;
|
*ledDriverPhase = LedDriverPhase_UpdateChangedLedValues;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LedDriverPhase_UpdateChangedLedValues: {
|
case LedDriverPhase_UpdateChangedLedValues: {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
LedDriverId_Right,
|
LedDriverId_Right,
|
||||||
LedDriverId_Left,
|
LedDriverId_Left,
|
||||||
|
LedDriverId_Last = LedDriverId_Left,
|
||||||
} led_driver_id_t;
|
} led_driver_id_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@@ -49,6 +50,8 @@
|
|||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
|
void LedSlaveDriver_DisableLeds(void);
|
||||||
|
void LedSlaveDriver_UpdateLeds(void);
|
||||||
void LedSlaveDriver_Init(uint8_t ledDriverId);
|
void LedSlaveDriver_Init(uint8_t ledDriverId);
|
||||||
status_t LedSlaveDriver_Update(uint8_t ledDriverId);
|
status_t LedSlaveDriver_Update(uint8_t ledDriverId);
|
||||||
|
|
||||||
|
|||||||
@@ -265,10 +265,8 @@ status_t UhkModuleSlaveDriver_Update(uint8_t uhkModuleDriverId)
|
|||||||
|
|
||||||
void UhkModuleSlaveDriver_Disconnect(uint8_t uhkModuleDriverId)
|
void UhkModuleSlaveDriver_Disconnect(uint8_t uhkModuleDriverId)
|
||||||
{
|
{
|
||||||
#ifdef LED_DRIVERS_ENABLED
|
|
||||||
if (uhkModuleDriverId == SlaveId_LeftKeyboardHalf) {
|
if (uhkModuleDriverId == SlaveId_LeftKeyboardHalf) {
|
||||||
Slaves[SlaveId_LeftLedDriver].isConnected = false;
|
Slaves[SlaveId_LeftLedDriver].isConnected = false;
|
||||||
}
|
}
|
||||||
UhkModuleStates[uhkModuleDriverId].moduleId = 0;
|
UhkModuleStates[uhkModuleDriverId].moduleId = 0;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ uhk_slave_t Slaves[] = {
|
|||||||
.update = UhkModuleSlaveDriver_Update,
|
.update = UhkModuleSlaveDriver_Update,
|
||||||
.perDriverId = UhkModuleDriverId_RightAddon,
|
.perDriverId = UhkModuleDriverId_RightAddon,
|
||||||
},
|
},
|
||||||
#ifdef LED_DRIVERS_ENABLED
|
|
||||||
{
|
{
|
||||||
.init = LedSlaveDriver_Init,
|
.init = LedSlaveDriver_Init,
|
||||||
.update = LedSlaveDriver_Update,
|
.update = LedSlaveDriver_Update,
|
||||||
@@ -42,7 +41,6 @@ uhk_slave_t Slaves[] = {
|
|||||||
.update = LedSlaveDriver_Update,
|
.update = LedSlaveDriver_Update,
|
||||||
.perDriverId = LedDriverId_Left,
|
.perDriverId = LedDriverId_Left,
|
||||||
},
|
},
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
.init = KbootSlaveDriver_Init,
|
.init = KbootSlaveDriver_Init,
|
||||||
.update = KbootSlaveDriver_Update,
|
.update = KbootSlaveDriver_Update,
|
||||||
|
|||||||
@@ -19,10 +19,8 @@
|
|||||||
SlaveId_LeftKeyboardHalf,
|
SlaveId_LeftKeyboardHalf,
|
||||||
SlaveId_LeftAddon,
|
SlaveId_LeftAddon,
|
||||||
SlaveId_RightAddon,
|
SlaveId_RightAddon,
|
||||||
#ifdef LED_DRIVERS_ENABLED
|
|
||||||
SlaveId_RightLedDriver,
|
SlaveId_RightLedDriver,
|
||||||
SlaveId_LeftLedDriver,
|
SlaveId_LeftLedDriver,
|
||||||
#endif
|
|
||||||
SlaveId_KbootDriver,
|
SlaveId_KbootDriver,
|
||||||
} slave_id_t;
|
} slave_id_t;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "fsl_pit.h"
|
#include "fsl_pit.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
uint32_t CurrentTime;
|
static volatile uint32_t CurrentTime;
|
||||||
|
|
||||||
void PIT_TIMER_HANDLER(void)
|
void PIT_TIMER_HANDLER(void)
|
||||||
{
|
{
|
||||||
@@ -24,6 +24,10 @@ void Timer_Init(void)
|
|||||||
PIT_StartTimer(PIT, PIT_TIMER_CHANNEL);
|
PIT_StartTimer(PIT, PIT_TIMER_CHANNEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t Timer_GetCurrentTime() {
|
||||||
|
return CurrentTime;
|
||||||
|
}
|
||||||
|
|
||||||
void Timer_SetCurrentTime(uint32_t *time)
|
void Timer_SetCurrentTime(uint32_t *time)
|
||||||
{
|
{
|
||||||
*time = CurrentTime;
|
*time = CurrentTime;
|
||||||
|
|||||||
@@ -9,13 +9,10 @@
|
|||||||
|
|
||||||
#define TIMER_INTERVAL_MSEC 1
|
#define TIMER_INTERVAL_MSEC 1
|
||||||
|
|
||||||
// Variables:
|
|
||||||
|
|
||||||
extern uint32_t CurrentTime;
|
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
void Timer_Init(void);
|
void Timer_Init(void);
|
||||||
|
uint32_t Timer_GetCurrentTime();
|
||||||
void Timer_SetCurrentTime(uint32_t *time);
|
void Timer_SetCurrentTime(uint32_t *time);
|
||||||
uint32_t Timer_GetElapsedTime(uint32_t *time);
|
uint32_t Timer_GetElapsedTime(uint32_t *time);
|
||||||
uint32_t Timer_GetElapsedTimeAndSetCurrent(uint32_t *time);
|
uint32_t Timer_GetElapsedTimeAndSetCurrent(uint32_t *time);
|
||||||
|
|||||||
@@ -45,15 +45,9 @@ void UsbCommand_ApplyConfig(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Switch to the keymap of the updated configuration of the same name or the default keymap.
|
// Switch to the keymap of the updated configuration of the same name or the default keymap.
|
||||||
|
if (SwitchKeymapByAbbreviation(oldKeymapAbbreviationLen, oldKeymapAbbreviation)) {
|
||||||
for (uint8_t keymapId = 0; keymapId < AllKeymapsCount; keymapId++) {
|
return;
|
||||||
if (AllKeymaps[keymapId].abbreviationLen == oldKeymapAbbreviationLen &&
|
|
||||||
!memcmp(oldKeymapAbbreviation, AllKeymaps[keymapId].abbreviation, oldKeymapAbbreviationLen))
|
|
||||||
{
|
|
||||||
SwitchKeymap(keymapId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SwitchKeymap(DefaultKeymapIndex);
|
SwitchKeymapById(DefaultKeymapIndex);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ void UsbCommand_GetDebugBuffer(void)
|
|||||||
SetDebugBufferUint32(13, I2cWatchdog_RecoveryCounter);
|
SetDebugBufferUint32(13, I2cWatchdog_RecoveryCounter);
|
||||||
SetDebugBufferUint32(17, KeyScannerCounter);
|
SetDebugBufferUint32(17, KeyScannerCounter);
|
||||||
SetDebugBufferUint32(21, UsbReportUpdateCounter);
|
SetDebugBufferUint32(21, UsbReportUpdateCounter);
|
||||||
SetDebugBufferUint32(25, CurrentTime);
|
SetDebugBufferUint32(25, Timer_GetCurrentTime());
|
||||||
SetDebugBufferUint32(29, UsbGenericHidActionCounter);
|
SetDebugBufferUint32(29, UsbGenericHidActionCounter);
|
||||||
SetDebugBufferUint32(33, UsbBasicKeyboardActionCounter);
|
SetDebugBufferUint32(33, UsbBasicKeyboardActionCounter);
|
||||||
SetDebugBufferUint32(37, UsbMediaKeyboardActionCounter);
|
SetDebugBufferUint32(37, UsbMediaKeyboardActionCounter);
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ void UsbCommand_GetDeviceProperty(void)
|
|||||||
SetUsbTxBufferUint32(6, I2cMainBusActualBaudRateBps);
|
SetUsbTxBufferUint32(6, I2cMainBusActualBaudRateBps);
|
||||||
break;
|
break;
|
||||||
case DevicePropertyId_Uptime:
|
case DevicePropertyId_Uptime:
|
||||||
SetUsbTxBufferUint32(1, CurrentTime);
|
SetUsbTxBufferUint32(1, Timer_GetCurrentTime());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SetUsbTxBufferUint8(0, UsbStatusCode_GetDeviceProperty_InvalidProperty);
|
SetUsbTxBufferUint8(0, UsbStatusCode_GetDeviceProperty_InvalidProperty);
|
||||||
|
|||||||
17
right/src/usb_commands/usb_command_switch_keymap.c
Normal file
17
right/src/usb_commands/usb_command_switch_keymap.c
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#include "usb_protocol_handler.h"
|
||||||
|
#include "usb_commands/usb_command_switch_keymap.h"
|
||||||
|
#include "keymap.h"
|
||||||
|
|
||||||
|
void UsbCommand_SwitchKeymap(void)
|
||||||
|
{
|
||||||
|
uint32_t keymapLength = GetUsbRxBufferUint8(1);
|
||||||
|
char *keymapAbbrev = (char*)GenericHidInBuffer + 2;
|
||||||
|
|
||||||
|
if (keymapLength > KEYMAP_ABBREVIATION_LENGTH) {
|
||||||
|
SetUsbTxBufferUint8(0, UsbStatusCode_SwitchKeymap_InvalidAbbreviationLength);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SwitchKeymapByAbbreviation(keymapLength, keymapAbbrev)) {
|
||||||
|
SetUsbTxBufferUint8(0, UsbStatusCode_SwitchKeymap_InvalidAbbreviation);
|
||||||
|
}
|
||||||
|
}
|
||||||
15
right/src/usb_commands/usb_command_switch_keymap.h
Normal file
15
right/src/usb_commands/usb_command_switch_keymap.h
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#ifndef __USB_COMMAND_SWITCH_KEYMAP_H__
|
||||||
|
#define __USB_COMMAND_SWITCH_KEYMAP_H__
|
||||||
|
|
||||||
|
// Functions:
|
||||||
|
|
||||||
|
void UsbCommand_SwitchKeymap(void);
|
||||||
|
|
||||||
|
// Typedefs:
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
UsbStatusCode_SwitchKeymap_InvalidAbbreviationLength = 2,
|
||||||
|
UsbStatusCode_SwitchKeymap_InvalidAbbreviation = 3,
|
||||||
|
} usb_status_code_switch_keymap_t;
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
#include "config.h"
|
||||||
|
#include "led_display.h"
|
||||||
|
#include "slave_drivers/is31fl3731_driver.h"
|
||||||
#include "usb_device_config.h"
|
#include "usb_device_config.h"
|
||||||
#include "usb_composite_device.h"
|
#include "usb_composite_device.h"
|
||||||
#include "usb_descriptors/usb_descriptor_hid.h"
|
#include "usb_descriptors/usb_descriptor_hid.h"
|
||||||
@@ -160,21 +163,53 @@ static usb_device_class_config_list_struct_t UsbDeviceCompositeConfigList = {
|
|||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
bool IsHostSleeping = false;
|
||||||
|
|
||||||
|
static void suspendHost(void) {
|
||||||
|
IsHostSleeping = true;
|
||||||
|
LedSlaveDriver_DisableLeds();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WakeUpHost(bool sendResume) {
|
||||||
|
if (sendResume) { // The device should wake up the host.
|
||||||
|
// Send resume signal - this will call USB_DeviceKhciControl(khciHandle, kUSB_DeviceControlResume, NULL);
|
||||||
|
USB_DeviceSetStatus(UsbCompositeDevice.deviceHandle, kUSB_DeviceStatusBus, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
IsHostSleeping = false;
|
||||||
|
LedSlaveDriver_UpdateLeds();
|
||||||
|
}
|
||||||
|
|
||||||
static usb_status_t usbDeviceCallback(usb_device_handle handle, uint32_t event, void *param)
|
static usb_status_t usbDeviceCallback(usb_device_handle handle, uint32_t event, void *param)
|
||||||
{
|
{
|
||||||
usb_status_t status = kStatus_USB_Error;
|
usb_status_t status = kStatus_USB_Error;
|
||||||
uint16_t *temp16 = (uint16_t*)param;
|
uint16_t *temp16 = (uint16_t*)param;
|
||||||
uint8_t *temp8 = (uint8_t*)param;
|
uint8_t *temp8 = (uint8_t*)param;
|
||||||
|
|
||||||
if (!param && event != kUSB_DeviceEventBusReset && event != kUSB_DeviceEventSetInterface) {
|
if (!param && event != kUSB_DeviceEventBusReset && event != kUSB_DeviceEventSetInterface && event != kUSB_DeviceEventSuspend && event != kUSB_DeviceEventResume) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsHostSleeping) {
|
||||||
|
WakeUpHost(false); // Wake up the keyboard if there is any activity on the bus.
|
||||||
|
}
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case kUSB_DeviceEventBusReset:
|
case kUSB_DeviceEventBusReset:
|
||||||
UsbCompositeDevice.attach = 0;
|
UsbCompositeDevice.attach = 0;
|
||||||
status = kStatus_USB_Success;
|
status = kStatus_USB_Success;
|
||||||
break;
|
break;
|
||||||
|
case kUSB_DeviceEventSuspend:
|
||||||
|
if (UsbCompositeDevice.attach) {
|
||||||
|
suspendHost(); // The host sends this event when it goes to sleep, so turn off all the LEDs.
|
||||||
|
status = kStatus_USB_Success;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case kUSB_DeviceEventResume:
|
||||||
|
// We will just wake up the host if there is any activity on the bus.
|
||||||
|
// The problem is that the host won't send a resume event when it boots, so the lights will never come back on.
|
||||||
|
status = kStatus_USB_Success;
|
||||||
|
break;
|
||||||
case kUSB_DeviceEventSetConfiguration:
|
case kUSB_DeviceEventSetConfiguration:
|
||||||
UsbCompositeDevice.attach = 1;
|
UsbCompositeDevice.attach = 1;
|
||||||
UsbCompositeDevice.currentConfiguration = *temp8;
|
UsbCompositeDevice.currentConfiguration = *temp8;
|
||||||
|
|||||||
@@ -28,10 +28,12 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
|
extern bool IsHostSleeping;
|
||||||
extern usb_composite_device_t UsbCompositeDevice;
|
extern usb_composite_device_t UsbCompositeDevice;
|
||||||
|
|
||||||
//Functions:
|
//Functions:
|
||||||
|
|
||||||
void InitUsb(void);
|
void InitUsb(void);
|
||||||
|
void WakeUpHost(bool sendResume);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ uint8_t UsbBasicKeyboardReportDescriptor[USB_BASIC_KEYBOARD_REPORT_DESCRIPTOR_LE
|
|||||||
HID_RI_REPORT_SIZE(8, 0x08),
|
HID_RI_REPORT_SIZE(8, 0x08),
|
||||||
HID_RI_INPUT(8, HID_IOF_CONSTANT),
|
HID_RI_INPUT(8, HID_IOF_CONSTANT),
|
||||||
|
|
||||||
// LED status
|
// LED status - Num lock, Caps lock, Scroll lock, Compose, Kana
|
||||||
HID_RI_USAGE_PAGE(8, HID_RI_USAGE_PAGE_LEDS),
|
HID_RI_USAGE_PAGE(8, HID_RI_USAGE_PAGE_LEDS),
|
||||||
HID_RI_USAGE_MINIMUM(8, 0x01),
|
HID_RI_USAGE_MINIMUM(8, 0x01),
|
||||||
HID_RI_USAGE_MAXIMUM(8, 0x05),
|
HID_RI_USAGE_MAXIMUM(8, 0x05),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#include "usb_descriptor_generic_hid_report.h"
|
#include "usb_descriptor_generic_hid_report.h"
|
||||||
|
|
||||||
uint8_t UsbGenericHidReportDescriptor[USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH] = {
|
uint8_t UsbGenericHidReportDescriptor[USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH] = {
|
||||||
HID_RI_USAGE_PAGE(8, USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_PAGE_INDEX),
|
HID_RI_USAGE_PAGE(16, (0xFF00 | USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_PAGE_INDEX)),
|
||||||
HID_RI_USAGE(8, USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_COLLECTION),
|
HID_RI_USAGE(8, USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_COLLECTION),
|
||||||
HID_RI_COLLECTION(8, HID_RI_COLLECTION_APPLICATION),
|
HID_RI_COLLECTION(8, HID_RI_COLLECTION_APPLICATION),
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
// Macros:
|
// Macros:
|
||||||
|
|
||||||
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH 33
|
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_LENGTH 34
|
||||||
|
|
||||||
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_PAGE_INDEX 0x80
|
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_PAGE_INDEX 0x00
|
||||||
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_COLLECTION 0x81
|
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_COLLECTION 0x01
|
||||||
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_IN 0x82
|
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_IN 0x02
|
||||||
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_OUT 0x83
|
#define USB_GENERIC_HID_REPORT_DESCRIPTOR_VENDOR_USAGE_DATA_OUT 0x03
|
||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
|
|||||||
@@ -23,10 +23,10 @@
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Whether the device is self-powered: 1 supported, 0 not supported
|
// Whether the device is self-powered: 1 supported, 0 not supported
|
||||||
#define USB_DEVICE_CONFIG_SELF_POWER 1
|
#define USB_DEVICE_CONFIG_SELF_POWER 0
|
||||||
|
|
||||||
// Whether device remote wakeup supported: 1 supported, 0 not supported
|
// Whether device remote wakeup supported: 1 supported, 0 not supported
|
||||||
#define USB_DEVICE_CONFIG_REMOTE_WAKEUP 0
|
#define USB_DEVICE_CONFIG_REMOTE_WAKEUP 1
|
||||||
|
|
||||||
// The number of control endpoints, which is always 1
|
// The number of control endpoints, which is always 1
|
||||||
#define USB_CONTROL_ENDPOINT_COUNT 1
|
#define USB_CONTROL_ENDPOINT_COUNT 1
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
static usb_basic_keyboard_report_t usbBasicKeyboardReports[2];
|
static usb_basic_keyboard_report_t usbBasicKeyboardReports[2];
|
||||||
uint32_t UsbBasicKeyboardActionCounter;
|
uint32_t UsbBasicKeyboardActionCounter;
|
||||||
usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport = usbBasicKeyboardReports;
|
usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport = usbBasicKeyboardReports;
|
||||||
bool IsUsbBasicKeyboardReportSent = false;
|
volatile bool IsUsbBasicKeyboardReportSent = false;
|
||||||
static uint8_t usbBasicKeyboardInBuffer[USB_BASIC_KEYBOARD_REPORT_LENGTH];
|
static uint8_t usbBasicKeyboardInBuffer[USB_BASIC_KEYBOARD_REPORT_LENGTH];
|
||||||
|
|
||||||
usb_basic_keyboard_report_t* getInactiveUsbBasicKeyboardReport(void)
|
static usb_basic_keyboard_report_t* getInactiveUsbBasicKeyboardReport(void)
|
||||||
{
|
{
|
||||||
return ActiveUsbBasicKeyboardReport == usbBasicKeyboardReports ? usbBasicKeyboardReports+1 : usbBasicKeyboardReports;
|
return ActiveUsbBasicKeyboardReport == usbBasicKeyboardReports ? usbBasicKeyboardReports+1 : usbBasicKeyboardReports;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool IsUsbBasicKeyboardReportSent;
|
extern volatile bool IsUsbBasicKeyboardReportSent;
|
||||||
extern uint32_t UsbBasicKeyboardActionCounter;
|
extern uint32_t UsbBasicKeyboardActionCounter;
|
||||||
extern usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport;
|
extern usb_basic_keyboard_report_t* ActiveUsbBasicKeyboardReport;
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
uint32_t UsbMediaKeyboardActionCounter;
|
uint32_t UsbMediaKeyboardActionCounter;
|
||||||
static usb_media_keyboard_report_t usbMediaKeyboardReports[2];
|
static usb_media_keyboard_report_t usbMediaKeyboardReports[2];
|
||||||
usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport = usbMediaKeyboardReports;
|
usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport = usbMediaKeyboardReports;
|
||||||
bool IsUsbMediaKeyboardReportSent = false;
|
volatile bool IsUsbMediaKeyboardReportSent = false;
|
||||||
|
|
||||||
usb_media_keyboard_report_t* getInactiveUsbMediaKeyboardReport(void)
|
static usb_media_keyboard_report_t* getInactiveUsbMediaKeyboardReport(void)
|
||||||
{
|
{
|
||||||
return ActiveUsbMediaKeyboardReport == usbMediaKeyboardReports ? usbMediaKeyboardReports+1 : usbMediaKeyboardReports;
|
return ActiveUsbMediaKeyboardReport == usbMediaKeyboardReports ? usbMediaKeyboardReports+1 : usbMediaKeyboardReports;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool IsUsbMediaKeyboardReportSent;
|
extern volatile bool IsUsbMediaKeyboardReportSent;
|
||||||
extern uint32_t UsbMediaKeyboardActionCounter;
|
extern uint32_t UsbMediaKeyboardActionCounter;
|
||||||
extern usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport;
|
extern usb_media_keyboard_report_t* ActiveUsbMediaKeyboardReport;
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
uint32_t UsbMouseActionCounter;
|
uint32_t UsbMouseActionCounter;
|
||||||
static usb_mouse_report_t usbMouseReports[2];
|
static usb_mouse_report_t usbMouseReports[2];
|
||||||
usb_mouse_report_t* ActiveUsbMouseReport = usbMouseReports;
|
usb_mouse_report_t* ActiveUsbMouseReport = usbMouseReports;
|
||||||
bool IsUsbMouseReportSent = false;
|
volatile bool IsUsbMouseReportSent = false;
|
||||||
|
|
||||||
usb_mouse_report_t* getInactiveUsbMouseReport(void)
|
static usb_mouse_report_t* getInactiveUsbMouseReport(void)
|
||||||
{
|
{
|
||||||
return ActiveUsbMouseReport == usbMouseReports ? usbMouseReports+1 : usbMouseReports;
|
return ActiveUsbMouseReport == usbMouseReports ? usbMouseReports+1 : usbMouseReports;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool IsUsbMouseReportSent;
|
extern volatile bool IsUsbMouseReportSent;
|
||||||
extern uint32_t UsbMouseActionCounter;
|
extern uint32_t UsbMouseActionCounter;
|
||||||
extern usb_mouse_report_t* ActiveUsbMouseReport;
|
extern usb_mouse_report_t* ActiveUsbMouseReport;
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
uint32_t UsbSystemKeyboardActionCounter;
|
uint32_t UsbSystemKeyboardActionCounter;
|
||||||
static usb_system_keyboard_report_t usbSystemKeyboardReports[2];
|
static usb_system_keyboard_report_t usbSystemKeyboardReports[2];
|
||||||
usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport = usbSystemKeyboardReports;
|
usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport = usbSystemKeyboardReports;
|
||||||
bool IsUsbSystemKeyboardReportSent = false;
|
volatile bool IsUsbSystemKeyboardReportSent = false;
|
||||||
|
|
||||||
usb_system_keyboard_report_t* getInactiveUsbSystemKeyboardReport()
|
static usb_system_keyboard_report_t* getInactiveUsbSystemKeyboardReport()
|
||||||
{
|
{
|
||||||
return ActiveUsbSystemKeyboardReport == usbSystemKeyboardReports ? usbSystemKeyboardReports+1 : usbSystemKeyboardReports;
|
return ActiveUsbSystemKeyboardReport == usbSystemKeyboardReports ? usbSystemKeyboardReports+1 : usbSystemKeyboardReports;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
extern bool IsUsbSystemKeyboardReportSent;
|
extern volatile bool IsUsbSystemKeyboardReportSent;
|
||||||
extern uint32_t UsbSystemKeyboardActionCounter;
|
extern uint32_t UsbSystemKeyboardActionCounter;
|
||||||
extern usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport;
|
extern usb_system_keyboard_report_t* ActiveUsbSystemKeyboardReport;
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
#include "usb_commands/usb_command_send_kboot_command_to_module.h"
|
#include "usb_commands/usb_command_send_kboot_command_to_module.h"
|
||||||
#include "usb_commands/usb_command_get_slave_i2c_errors.h"
|
#include "usb_commands/usb_command_get_slave_i2c_errors.h"
|
||||||
#include "usb_commands/usb_command_set_i2c_baud_rate.h"
|
#include "usb_commands/usb_command_set_i2c_baud_rate.h"
|
||||||
|
#include "usb_commands/usb_command_switch_keymap.h"
|
||||||
|
|
||||||
void UsbProtocolHandler(void)
|
void UsbProtocolHandler(void)
|
||||||
{
|
{
|
||||||
@@ -73,6 +74,9 @@ void UsbProtocolHandler(void)
|
|||||||
case UsbCommandId_SetI2cBaudRate:
|
case UsbCommandId_SetI2cBaudRate:
|
||||||
UsbCommand_SetI2cBaudRate();
|
UsbCommand_SetI2cBaudRate();
|
||||||
break;
|
break;
|
||||||
|
case UsbCommandId_SwitchKeymap:
|
||||||
|
UsbCommand_SwitchKeymap();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
SetUsbTxBufferUint8(0, UsbStatusCode_InvalidCommand);
|
SetUsbTxBufferUint8(0, UsbStatusCode_InvalidCommand);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
UsbCommandId_GetModuleProperty = 0x0e,
|
UsbCommandId_GetModuleProperty = 0x0e,
|
||||||
UsbCommandId_GetSlaveI2cErrors = 0x0f,
|
UsbCommandId_GetSlaveI2cErrors = 0x0f,
|
||||||
UsbCommandId_SetI2cBaudRate = 0x10,
|
UsbCommandId_SetI2cBaudRate = 0x10,
|
||||||
|
UsbCommandId_SwitchKeymap = 0x11,
|
||||||
} usb_command_id_t;
|
} usb_command_id_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
#include "config_parser/parse_keymap.h"
|
#include "config_parser/parse_keymap.h"
|
||||||
#include "usb_commands/usb_command_get_debug_buffer.h"
|
#include "usb_commands/usb_command_get_debug_buffer.h"
|
||||||
|
|
||||||
uint32_t UsbReportUpdateTime = 0;
|
static uint32_t mouseUsbReportUpdateTime = 0;
|
||||||
static uint32_t elapsedTime;
|
static uint32_t mouseElapsedTime;
|
||||||
|
|
||||||
uint16_t DoubleTapSwitchLayerTimeout = 150;
|
uint16_t DoubleTapSwitchLayerTimeout = 150;
|
||||||
uint16_t DoubleTapSwitchLayerReleaseTimeout = 100;
|
static uint16_t DoubleTapSwitchLayerReleaseTimeout = 100;
|
||||||
|
|
||||||
static bool activeMouseStates[ACTIVE_MOUSE_STATES_COUNT];
|
static bool activeMouseStates[ACTIVE_MOUSE_STATES_COUNT];
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ mouse_kinetic_state_t MouseScrollState = {
|
|||||||
.acceleratedSpeed = 50,
|
.acceleratedSpeed = 50,
|
||||||
};
|
};
|
||||||
|
|
||||||
void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
static void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
||||||
{
|
{
|
||||||
float initialSpeed = kineticState->intMultiplier * kineticState->initialSpeed;
|
float initialSpeed = kineticState->intMultiplier * kineticState->initialSpeed;
|
||||||
float acceleration = kineticState->intMultiplier * kineticState->acceleration;
|
float acceleration = kineticState->intMultiplier * kineticState->acceleration;
|
||||||
@@ -87,18 +87,18 @@ void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
|||||||
|
|
||||||
if (isMoveAction) {
|
if (isMoveAction) {
|
||||||
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
||||||
kineticState->currentSpeed += acceleration * elapsedTime / 1000;
|
kineticState->currentSpeed += acceleration * (float)mouseElapsedTime / 1000.0f;
|
||||||
if (kineticState->currentSpeed > kineticState->targetSpeed) {
|
if (kineticState->currentSpeed > kineticState->targetSpeed) {
|
||||||
kineticState->currentSpeed = kineticState->targetSpeed;
|
kineticState->currentSpeed = kineticState->targetSpeed;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
kineticState->currentSpeed -= acceleration * elapsedTime / 1000;
|
kineticState->currentSpeed -= acceleration * (float)mouseElapsedTime / 1000.0f;
|
||||||
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
if (kineticState->currentSpeed < kineticState->targetSpeed) {
|
||||||
kineticState->currentSpeed = kineticState->targetSpeed;
|
kineticState->currentSpeed = kineticState->targetSpeed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float distance = kineticState->currentSpeed * elapsedTime / 1000;
|
float distance = kineticState->currentSpeed * (float)mouseElapsedTime / 1000.0f;
|
||||||
|
|
||||||
|
|
||||||
if (kineticState->isScroll && !kineticState->wasMoveAction) {
|
if (kineticState->isScroll && !kineticState->wasMoveAction) {
|
||||||
@@ -155,8 +155,10 @@ void processMouseKineticState(mouse_kinetic_state_t *kineticState)
|
|||||||
kineticState->wasMoveAction = isMoveAction;
|
kineticState->wasMoveAction = isMoveAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
void processMouseActions()
|
static void processMouseActions()
|
||||||
{
|
{
|
||||||
|
mouseElapsedTime = Timer_GetElapsedTimeAndSetCurrent(&mouseUsbReportUpdateTime);
|
||||||
|
|
||||||
processMouseKineticState(&MouseMoveState);
|
processMouseKineticState(&MouseMoveState);
|
||||||
ActiveUsbMouseReport->x = MouseMoveState.xOut;
|
ActiveUsbMouseReport->x = MouseMoveState.xOut;
|
||||||
ActiveUsbMouseReport->y = MouseMoveState.yOut;
|
ActiveUsbMouseReport->y = MouseMoveState.yOut;
|
||||||
@@ -193,7 +195,7 @@ static uint8_t basicScancodeIndex = 0;
|
|||||||
static uint8_t mediaScancodeIndex = 0;
|
static uint8_t mediaScancodeIndex = 0;
|
||||||
static uint8_t systemScancodeIndex = 0;
|
static uint8_t systemScancodeIndex = 0;
|
||||||
|
|
||||||
void applyKeyAction(key_state_t *keyState, key_action_t *action)
|
static void applyKeyAction(key_state_t *keyState, key_action_t *action)
|
||||||
{
|
{
|
||||||
static key_state_t *doubleTapSwitchLayerKey;
|
static key_state_t *doubleTapSwitchLayerKey;
|
||||||
static uint32_t doubleTapSwitchLayerStartTime;
|
static uint32_t doubleTapSwitchLayerStartTime;
|
||||||
@@ -245,16 +247,16 @@ void applyKeyAction(key_state_t *keyState, key_action_t *action)
|
|||||||
if (!keyState->previous && previousLayer == LayerId_Base && action->switchLayer.mode == SwitchLayerMode_HoldAndDoubleTapToggle) {
|
if (!keyState->previous && previousLayer == LayerId_Base && action->switchLayer.mode == SwitchLayerMode_HoldAndDoubleTapToggle) {
|
||||||
if (doubleTapSwitchLayerKey && Timer_GetElapsedTimeAndSetCurrent(&doubleTapSwitchLayerStartTime) < DoubleTapSwitchLayerTimeout) {
|
if (doubleTapSwitchLayerKey && Timer_GetElapsedTimeAndSetCurrent(&doubleTapSwitchLayerStartTime) < DoubleTapSwitchLayerTimeout) {
|
||||||
ToggledLayer = action->switchLayer.layer;
|
ToggledLayer = action->switchLayer.layer;
|
||||||
doubleTapSwitchLayerTriggerTime = CurrentTime;
|
doubleTapSwitchLayerTriggerTime = Timer_GetCurrentTime();
|
||||||
} else {
|
} else {
|
||||||
doubleTapSwitchLayerKey = keyState;
|
doubleTapSwitchLayerKey = keyState;
|
||||||
}
|
}
|
||||||
doubleTapSwitchLayerStartTime = CurrentTime;
|
doubleTapSwitchLayerStartTime = Timer_GetCurrentTime();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case KeyActionType_SwitchKeymap:
|
case KeyActionType_SwitchKeymap:
|
||||||
if (!keyState->previous) {
|
if (!keyState->previous) {
|
||||||
SwitchKeymap(action->switchKeymap.keymapId);
|
SwitchKeymapById(action->switchKeymap.keymapId);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -265,12 +267,11 @@ static uint8_t secondaryRoleSlotId;
|
|||||||
static uint8_t secondaryRoleKeyId;
|
static uint8_t secondaryRoleKeyId;
|
||||||
static secondary_role_t secondaryRole;
|
static secondary_role_t secondaryRole;
|
||||||
|
|
||||||
void updateActiveUsbReports(void)
|
static void updateActiveUsbReports(void)
|
||||||
{
|
{
|
||||||
memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT);
|
memset(activeMouseStates, 0, ACTIVE_MOUSE_STATES_COUNT);
|
||||||
|
|
||||||
static uint8_t previousModifiers = 0;
|
static uint8_t previousModifiers = 0;
|
||||||
elapsedTime = Timer_GetElapsedTimeAndSetCurrent(&UsbReportUpdateTime);
|
|
||||||
|
|
||||||
basicScancodeIndex = 0;
|
basicScancodeIndex = 0;
|
||||||
mediaScancodeIndex = 0;
|
mediaScancodeIndex = 0;
|
||||||
@@ -287,7 +288,7 @@ void updateActiveUsbReports(void)
|
|||||||
if (activeLayer == LayerId_Base) {
|
if (activeLayer == LayerId_Base) {
|
||||||
activeLayer = GetActiveLayer();
|
activeLayer = GetActiveLayer();
|
||||||
}
|
}
|
||||||
bool suppressKeys = previousLayer != LayerId_Base && activeLayer == LayerId_Base;
|
bool layerGotReleased = previousLayer != LayerId_Base && activeLayer == LayerId_Base;
|
||||||
LedDisplay_SetLayer(activeLayer);
|
LedDisplay_SetLayer(activeLayer);
|
||||||
|
|
||||||
if (MacroPlaying) {
|
if (MacroPlaying) {
|
||||||
@@ -304,7 +305,6 @@ void updateActiveUsbReports(void)
|
|||||||
key_state_t *keyState = &KeyStates[slotId][keyId];
|
key_state_t *keyState = &KeyStates[slotId][keyId];
|
||||||
key_action_t *action = &CurrentKeymap[activeLayer][slotId][keyId];
|
key_action_t *action = &CurrentKeymap[activeLayer][slotId][keyId];
|
||||||
|
|
||||||
|
|
||||||
if (keyState->debounceCounter < KEY_DEBOUNCER_TIMEOUT_MSEC) {
|
if (keyState->debounceCounter < KEY_DEBOUNCER_TIMEOUT_MSEC) {
|
||||||
keyState->current = keyState->previous;
|
keyState->current = keyState->previous;
|
||||||
} else if (!keyState->previous && keyState->current) {
|
} else if (!keyState->previous && keyState->current) {
|
||||||
@@ -312,7 +312,8 @@ void updateActiveUsbReports(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (keyState->current) {
|
if (keyState->current) {
|
||||||
if (suppressKeys) {
|
key_action_t *baseAction = &CurrentKeymap[LayerId_Base][slotId][keyId];
|
||||||
|
if (layerGotReleased && !(baseAction->type == KeyActionType_Keystroke && baseAction->keystroke.scancode == 0 && baseAction->keystroke.modifiers)) {
|
||||||
keyState->suppressed = true;
|
keyState->suppressed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,52 +370,26 @@ void updateActiveUsbReports(void)
|
|||||||
previousLayer = activeLayer;
|
previousLayer = activeLayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UsbBasicKeyboardReportEverSent = false;
|
|
||||||
bool UsbMediaKeyboardReportEverSent = false;
|
|
||||||
bool UsbSystemKeyboardReportEverSent = false;
|
|
||||||
bool UsbMouseReportEverSentEverSent = false;
|
|
||||||
|
|
||||||
uint32_t UsbReportUpdateCounter;
|
uint32_t UsbReportUpdateCounter;
|
||||||
static uint32_t lastUsbUpdateTime;
|
static uint32_t lastMouseUpdateTime;
|
||||||
|
|
||||||
void UpdateUsbReports(void)
|
void UpdateUsbReports(void)
|
||||||
{
|
{
|
||||||
UsbReportUpdateCounter++;
|
UsbReportUpdateCounter++;
|
||||||
|
|
||||||
if (Timer_GetElapsedTime(&lastUsbUpdateTime) > 100) {
|
// Process the key inputs at a constant rate when moving the mouse, so the mouse speed is consistent.
|
||||||
UsbBasicKeyboardReportEverSent = false;
|
bool hasActiveMouseState = false;
|
||||||
UsbMediaKeyboardReportEverSent = false;
|
for (uint8_t i=0; i<ACTIVE_MOUSE_STATES_COUNT; i++) {
|
||||||
UsbSystemKeyboardReportEverSent = false;
|
hasActiveMouseState = true;
|
||||||
UsbMouseReportEverSentEverSent = false;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsUsbBasicKeyboardReportSent) {
|
if (hasActiveMouseState) {
|
||||||
UsbBasicKeyboardReportEverSent = true;
|
if (Timer_GetElapsedTime(&lastMouseUpdateTime) < USB_MOUSE_INTERRUPT_IN_INTERVAL) {
|
||||||
}
|
return;
|
||||||
if (IsUsbMediaKeyboardReportSent) {
|
}
|
||||||
UsbMediaKeyboardReportEverSent = true;
|
Timer_SetCurrentTime(&lastMouseUpdateTime);
|
||||||
}
|
} else if (!IsUsbBasicKeyboardReportSent || !IsUsbMediaKeyboardReportSent || !IsUsbSystemKeyboardReportSent || !IsUsbMouseReportSent) {
|
||||||
if (IsUsbSystemKeyboardReportSent) {
|
|
||||||
UsbSystemKeyboardReportEverSent = true;
|
|
||||||
}
|
|
||||||
if (IsUsbMouseReportSent) {
|
|
||||||
UsbMouseReportEverSentEverSent = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool areUsbReportsSent = true;
|
|
||||||
if (UsbBasicKeyboardReportEverSent) {
|
|
||||||
areUsbReportsSent &= IsUsbBasicKeyboardReportSent;
|
|
||||||
}
|
|
||||||
if (UsbMediaKeyboardReportEverSent) {
|
|
||||||
areUsbReportsSent &= IsUsbMediaKeyboardReportSent;
|
|
||||||
}
|
|
||||||
if (UsbSystemKeyboardReportEverSent) {
|
|
||||||
areUsbReportsSent &= IsUsbSystemKeyboardReportSent;
|
|
||||||
}
|
|
||||||
if (UsbMouseReportEverSentEverSent) {
|
|
||||||
areUsbReportsSent &= IsUsbMouseReportSent;
|
|
||||||
}
|
|
||||||
if (!areUsbReportsSent) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,15 +400,35 @@ void UpdateUsbReports(void)
|
|||||||
|
|
||||||
updateActiveUsbReports();
|
updateActiveUsbReports();
|
||||||
|
|
||||||
SwitchActiveUsbBasicKeyboardReport();
|
static usb_basic_keyboard_report_t last_basic_report = { .scancodes[0] = 0xFF };
|
||||||
SwitchActiveUsbMediaKeyboardReport();
|
if (memcmp(ActiveUsbBasicKeyboardReport, &last_basic_report, sizeof(usb_basic_keyboard_report_t)) != 0) {
|
||||||
SwitchActiveUsbSystemKeyboardReport();
|
last_basic_report = *ActiveUsbBasicKeyboardReport;
|
||||||
SwitchActiveUsbMouseReport();
|
SwitchActiveUsbBasicKeyboardReport();
|
||||||
|
IsUsbBasicKeyboardReportSent = false;
|
||||||
|
}
|
||||||
|
|
||||||
IsUsbBasicKeyboardReportSent = false;
|
static usb_media_keyboard_report_t last_media_report = { .scancodes[0] = 0xFF };
|
||||||
IsUsbMediaKeyboardReportSent = false;
|
if (memcmp(ActiveUsbMediaKeyboardReport, &last_media_report, sizeof(usb_media_keyboard_report_t)) != 0) {
|
||||||
IsUsbSystemKeyboardReportSent = false;
|
last_media_report = *ActiveUsbMediaKeyboardReport;
|
||||||
IsUsbMouseReportSent = false;
|
SwitchActiveUsbMediaKeyboardReport();
|
||||||
|
IsUsbMediaKeyboardReportSent = false;
|
||||||
|
}
|
||||||
|
|
||||||
Timer_SetCurrentTime(&lastUsbUpdateTime);
|
static usb_system_keyboard_report_t last_system_report = { .scancodes[0] = 0xFF };
|
||||||
|
if (memcmp(ActiveUsbSystemKeyboardReport, &last_system_report, sizeof(usb_system_keyboard_report_t)) != 0) {
|
||||||
|
last_system_report = *ActiveUsbSystemKeyboardReport;
|
||||||
|
SwitchActiveUsbSystemKeyboardReport();
|
||||||
|
IsUsbSystemKeyboardReportSent = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static usb_mouse_report_t last_mouse_report = { .buttons = 0xFF };
|
||||||
|
if (memcmp(ActiveUsbMouseReport, &last_mouse_report, sizeof(usb_mouse_report_t)) != 0) {
|
||||||
|
last_mouse_report = *ActiveUsbMouseReport;
|
||||||
|
SwitchActiveUsbMouseReport();
|
||||||
|
IsUsbMouseReportSent = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((previousLayer != LayerId_Base || !IsUsbBasicKeyboardReportSent || !IsUsbMediaKeyboardReportSent || !IsUsbSystemKeyboardReportSent || !IsUsbMouseReportSent) && IsHostSleeping) {
|
||||||
|
WakeUpHost(true); // Wake up the host if any key is pressed and the computer is sleeping.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
229
scripts/Makedefs.mk
Normal file
229
scripts/Makedefs.mk
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
# Copyright (C) 2018 Kristian Lauszus. All rights reserved.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Contact information
|
||||||
|
# -------------------
|
||||||
|
# Kristian Lauszus
|
||||||
|
# Web : http://www.lauszus.com
|
||||||
|
# e-mail : lauszus@gmail.com
|
||||||
|
|
||||||
|
# Debug using Semihosting.
|
||||||
|
SEMIHOSTING ?= 0
|
||||||
|
|
||||||
|
# Build directory.
|
||||||
|
BUILD_DIR ?= build_make
|
||||||
|
|
||||||
|
# Set default value (no bootloader) for the bootloader vector table address.
|
||||||
|
BL_APP_VECTOR_TABLE_ADDRESS ?= 0
|
||||||
|
|
||||||
|
# Preprocessor directives.
|
||||||
|
BUILD_FLAGS += -D__NEWLIB__ -D__USE_CMSIS -D__MCUXPRESSO -DCPU_$(PART) -D__STARTUP_CLEAR_BSS -DBL_APP_VECTOR_TABLE_ADDRESS=$(BL_APP_VECTOR_TABLE_ADDRESS)
|
||||||
|
|
||||||
|
# Path to project object file.
|
||||||
|
PROJECT_OBJ = $(BUILD_DIR)/$(PROJECT_NAME).axf
|
||||||
|
|
||||||
|
# Set the prefix for the tools to use.
|
||||||
|
PREFIX ?= arm-none-eabi
|
||||||
|
|
||||||
|
# Set WIN=1 manually for Windows Subsystem for Linux.
|
||||||
|
WIN ?= 0
|
||||||
|
|
||||||
|
# Determine if we are on a Windows machine and set the .exe suffix.
|
||||||
|
UNAME_S := $(shell uname -s)
|
||||||
|
ifeq ($(OS),Windows_NT) # Native Windows.
|
||||||
|
WIN = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Set J-Link executable.
|
||||||
|
ifeq ($(WIN),1)
|
||||||
|
JLINK := JLink.exe
|
||||||
|
else
|
||||||
|
JLINK := JLinkExe
|
||||||
|
endif
|
||||||
|
|
||||||
|
# We can not use the suffix command, as the PREFIX might contain spaces.
|
||||||
|
ifeq ($(WIN),1)
|
||||||
|
SUFFIX := .exe
|
||||||
|
endif
|
||||||
|
|
||||||
|
# The command for calling the compilers.
|
||||||
|
CC = $(PREFIX)-gcc$(SUFFIX)
|
||||||
|
CXX = $(PREFIX)-g++$(SUFFIX)
|
||||||
|
|
||||||
|
# The command for calling the linker.
|
||||||
|
LD = $(PREFIX)-g++$(SUFFIX)
|
||||||
|
|
||||||
|
# The command for extracting images from the linked executables.
|
||||||
|
OBJCOPY = $(PREFIX)-objcopy$(SUFFIX)
|
||||||
|
|
||||||
|
# The command for the size tool.
|
||||||
|
SIZE = $(PREFIX)-size$(SUFFIX)
|
||||||
|
|
||||||
|
# Auto-dependency generation flags.
|
||||||
|
DEPS = -MMD -MP
|
||||||
|
|
||||||
|
# The flags passed to the assembler.
|
||||||
|
AFLAGS = -mthumb \
|
||||||
|
$(CPU) \
|
||||||
|
$(FPU) \
|
||||||
|
$(DEPS) \
|
||||||
|
$(BUILD_FLAGS) \
|
||||||
|
-x assembler-with-cpp
|
||||||
|
|
||||||
|
# The flags passed to the compiler.
|
||||||
|
CFLAGS = -mthumb \
|
||||||
|
$(CPU) \
|
||||||
|
$(FPU) \
|
||||||
|
$(DEPS) \
|
||||||
|
-fno-builtin \
|
||||||
|
-ffunction-sections \
|
||||||
|
-fdata-sections \
|
||||||
|
-fno-common \
|
||||||
|
-Wdouble-promotion \
|
||||||
|
-Woverflow \
|
||||||
|
-Wall \
|
||||||
|
-Wshadow \
|
||||||
|
$(BUILD_FLAGS)
|
||||||
|
|
||||||
|
# Compiler options for C++ only.
|
||||||
|
CXXFLAGS = -felide-constructors -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
# Set the C/C++ standard to use.
|
||||||
|
CSTD = -std=gnu11
|
||||||
|
CXXSTD = -std=gnu++14
|
||||||
|
|
||||||
|
# Make all warnings into errors when building using Travis CI.
|
||||||
|
ifdef TRAVIS
|
||||||
|
CFLAGS += -Werror
|
||||||
|
endif
|
||||||
|
|
||||||
|
# The flags passed to the linker.
|
||||||
|
LDFLAGS = --specs=nano.specs -mthumb $(CPU) $(FPU) -T $(LDSCRIPT) -Wl,-Map=$(PROJECT_OBJ:.axf=.map),--gc-sections,-print-memory-usage,-no-wchar-size-warning,--defsym=__heap_size__=$(HEAP_SIZE),--defsym=__stack_size__=$(STACK_SIZE),--defsym=__bl_app_vector_table_address__=$(BL_APP_VECTOR_TABLE_ADDRESS)
|
||||||
|
|
||||||
|
# Include the following archives.
|
||||||
|
LDARCHIVES = -Wl,--start-group -lg -lgcc -lm -Wl,--end-group
|
||||||
|
|
||||||
|
# Add flags to the build flags and linker depending on the build settings.
|
||||||
|
ifeq ($(SEMIHOSTING),1)
|
||||||
|
# Include Semihost library.
|
||||||
|
LDARCHIVES += -lcr_newlib_semihost
|
||||||
|
|
||||||
|
# Enable printf floating numbers.
|
||||||
|
LDFLAGS += -u _printf_float
|
||||||
|
else
|
||||||
|
# Include libnosys.a if Semihosting is disabled.
|
||||||
|
LDARCHIVES += -lnosys
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Check if the DEBUG environment variable is set.
|
||||||
|
DEBUG ?= 0
|
||||||
|
ifeq ($(DEBUG),1)
|
||||||
|
CFLAGS += -O3 -g3 -DDEBUG
|
||||||
|
else
|
||||||
|
CFLAGS += -O3 -DNDEBUG
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Add the include file paths to AFLAGS and CFLAGS.
|
||||||
|
AFLAGS += $(patsubst %,-I%,$(subst :, ,$(IPATH)))
|
||||||
|
CFLAGS += $(patsubst %,-I%,$(subst :, ,$(IPATH)))
|
||||||
|
|
||||||
|
# Create lists of C, C++ and assembly objects.
|
||||||
|
C_OBJS := $(addsuffix .o,$(addprefix $(BUILD_DIR)/,$(basename $(filter %.c,$(abspath $(SOURCE))))))
|
||||||
|
CPP_OBJS := $(addsuffix .o,$(addprefix $(BUILD_DIR)/,$(basename $(filter %.cpp,$(abspath $(SOURCE))))))
|
||||||
|
S_OBJS := $(addsuffix .o,$(addprefix $(BUILD_DIR)/,$(basename $(filter %.S,$(abspath $(SOURCE))))))
|
||||||
|
|
||||||
|
# Create a list of all objects.
|
||||||
|
OBJS := $(C_OBJS) $(CPP_OBJS) $(S_OBJS)
|
||||||
|
|
||||||
|
# Define the commands used for compiling the project.
|
||||||
|
LD_CMD = $(LD) $(LDFLAGS) -o $(@) $(filter %.o %.a, $(^)) $(LDARCHIVES)
|
||||||
|
CC_CMD = $(CC) $(CFLAGS) $(CSTD) -c $(<) -o $(@)
|
||||||
|
CXX_CMD = $(CXX) $(CFLAGS) $(CXXFLAGS) $(CXXSTD) -c $(<) -o $(@)
|
||||||
|
AS_CMD = $(CC) $(AFLAGS) $(CSTD) -c $(<) -o $(@)
|
||||||
|
|
||||||
|
# Everyone need colors in their life!
|
||||||
|
INTERACTIVE := $(shell [ -t 0 ] && echo 1)
|
||||||
|
ifeq ($(INTERACTIVE),1)
|
||||||
|
color_default = \033[0m
|
||||||
|
color_bold = \033[01m
|
||||||
|
color_red = \033[31m
|
||||||
|
color_green = \033[32m
|
||||||
|
color_yellow = \033[33m
|
||||||
|
color_blue = \033[34m
|
||||||
|
color_magenta = \033[35m
|
||||||
|
color_cyan = \033[36m
|
||||||
|
color_orange = \033[38;5;172m
|
||||||
|
color_light_blue = \033[38;5;039m
|
||||||
|
color_gray = \033[38;5;008m
|
||||||
|
color_purple = \033[38;5;097m
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: all clean flash flash-jlink
|
||||||
|
|
||||||
|
# The default rule, which causes the project to be built.
|
||||||
|
all: $(PROJECT_OBJ)
|
||||||
|
|
||||||
|
# The rule to clean out all the build products.
|
||||||
|
clean:
|
||||||
|
@rm -rf $(BUILD_DIR) $(wildcard *~)
|
||||||
|
@echo "$(color_red)Done cleaning!$(color_default)"
|
||||||
|
|
||||||
|
flash: all
|
||||||
|
@$(FLASH_CMD) || exit 1
|
||||||
|
|
||||||
|
flash-jlink: all
|
||||||
|
$(JLINK) -if SWD -CommandFile $(JLINK_SCRIPT) || exit 1
|
||||||
|
|
||||||
|
# Rebuild all objects when the Makefiles change.
|
||||||
|
$(OBJS): $(MAKEFILE_LIST)
|
||||||
|
|
||||||
|
# The rule for linking the application.
|
||||||
|
$(PROJECT_OBJ): $(OBJS) $(LDSCRIPT)
|
||||||
|
@if [ '$(VERBOSE)' = 1 ]; then \
|
||||||
|
echo $(LD_CMD); \
|
||||||
|
else \
|
||||||
|
echo " $(color_purple)LD$(color_default) $(@F)"; \
|
||||||
|
fi
|
||||||
|
@echo
|
||||||
|
@$(LD_CMD)
|
||||||
|
@echo
|
||||||
|
@if [ '$(VERBOSE)' = 1 ]; then \
|
||||||
|
$(SIZE) -Ax $(@); \
|
||||||
|
fi
|
||||||
|
@$(OBJCOPY) -O binary $(@) $(@:.axf=.bin)
|
||||||
|
@$(OBJCOPY) -O ihex $(@) $(@:.axf=.hex)
|
||||||
|
|
||||||
|
# The rule for building the object files from each source file.
|
||||||
|
$(C_OBJS): $(BUILD_DIR)/%.o : %.c
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
@if [ '$(VERBOSE)' = 1 ]; then \
|
||||||
|
echo $(CC_CMD); \
|
||||||
|
else \
|
||||||
|
echo " $(color_green)CC$(color_default) $(<F)"; \
|
||||||
|
fi
|
||||||
|
@$(CC_CMD)
|
||||||
|
|
||||||
|
$(CPP_OBJS): $(BUILD_DIR)/%.o : %.cpp
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
@if [ '$(VERBOSE)' = 1 ]; then \
|
||||||
|
echo $(CXX_CMD); \
|
||||||
|
else \
|
||||||
|
echo " $(color_cyan)CXX$(color_default) $(<F)"; \
|
||||||
|
fi
|
||||||
|
@$(CXX_CMD)
|
||||||
|
|
||||||
|
$(S_OBJS): $(BUILD_DIR)/%.o: %.S
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
@if [ '$(VERBOSE)' = 1 ]; then \
|
||||||
|
echo $(AS_CMD); \
|
||||||
|
else \
|
||||||
|
echo " $(color_magenta)AS$(color_default) $(<F)"; \
|
||||||
|
fi
|
||||||
|
@$(AS_CMD)
|
||||||
|
|
||||||
|
# Include the automatically generated dependency files.
|
||||||
|
-include $(OBJS:.o=.d)
|
||||||
7
scripts/flash-left.jlink
Normal file
7
scripts/flash-left.jlink
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
speed 4000
|
||||||
|
device MKL03Z32xxx4
|
||||||
|
connect
|
||||||
|
loadfile build_make/uhk_left.hex
|
||||||
|
RSetType 2
|
||||||
|
r
|
||||||
|
qc
|
||||||
7
scripts/flash-right.jlink
Normal file
7
scripts/flash-right.jlink
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
speed 4000
|
||||||
|
device MK22FN512xxx12
|
||||||
|
connect
|
||||||
|
loadfile build_make/uhk_right.hex
|
||||||
|
RSetType 2
|
||||||
|
r
|
||||||
|
qc
|
||||||
@@ -13,22 +13,15 @@ const releaseName = `uhk-firmware-${version}`;
|
|||||||
const releaseDir = `${__dirname}/${releaseName}`;
|
const releaseDir = `${__dirname}/${releaseName}`;
|
||||||
const modulesDir = `${releaseDir}/modules`;
|
const modulesDir = `${releaseDir}/modules`;
|
||||||
const releaseFile = `${__dirname}/${releaseName}.tar.bz2`;
|
const releaseFile = `${__dirname}/${releaseName}.tar.bz2`;
|
||||||
const leftFirmwareFile = `${__dirname}/../left/build/uhk60-left_release/uhk-left.bin`;
|
const leftFirmwareFile = `${__dirname}/../left/build_make/uhk_left.bin`;
|
||||||
const usbDir = `${__dirname}/../lib/agent/packages/usb`;
|
const usbDir = `${__dirname}/../lib/agent/packages/usb`;
|
||||||
|
|
||||||
const deviceSourceFirmwares = package.devices.map(device => `${__dirname}/../${device.source}`);
|
const deviceSourceFirmwares = package.devices.map(device => `${__dirname}/../${device.source}`);
|
||||||
const moduleSourceFirmwares = package.modules.map(module => `${__dirname}/../${module.source}`);
|
const moduleSourceFirmwares = package.modules.map(module => `${__dirname}/../${module.source}`);
|
||||||
rm('-rf', releaseDir, releaseFile, deviceSourceFirmwares, moduleSourceFirmwares);
|
rm('-rf', releaseDir, releaseFile, deviceSourceFirmwares, moduleSourceFirmwares);
|
||||||
|
|
||||||
exec(`/opt/Freescale/KDS_v3/eclipse/kinetis-design-studio \
|
exec(`cd ${__dirname}/../left; make clean; make -j8`);
|
||||||
--launcher.suppressErrors \
|
exec(`cd ${__dirname}/../right; make clean; make -j8`);
|
||||||
-noSplash \
|
|
||||||
-application org.eclipse.cdt.managedbuilder.core.headlessbuild \
|
|
||||||
-import ${__dirname}/../left/build \
|
|
||||||
-import ${__dirname}/../right/build \
|
|
||||||
-cleanBuild uhk-left \
|
|
||||||
-cleanBuild uhk-right`
|
|
||||||
);
|
|
||||||
|
|
||||||
for (const device of package.devices) {
|
for (const device of package.devices) {
|
||||||
const deviceDir = `${releaseDir}/devices/${device.name}`;
|
const deviceDir = `${releaseDir}/devices/${device.name}`;
|
||||||
@@ -36,6 +29,7 @@ for (const device of package.devices) {
|
|||||||
mkdir('-p', deviceDir);
|
mkdir('-p', deviceDir);
|
||||||
chmod(644, deviceSource);
|
chmod(644, deviceSource);
|
||||||
cp(deviceSource, `${deviceDir}/firmware.hex`);
|
cp(deviceSource, `${deviceDir}/firmware.hex`);
|
||||||
|
exec(`cd ${usbDir}; git pull origin master; git checkout master`);
|
||||||
exec(`${usbDir}/user-config-json-to-bin.ts ${deviceDir}/config.bin`);
|
exec(`${usbDir}/user-config-json-to-bin.ts ${deviceDir}/config.bin`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
"commander": "^2.11.0",
|
"commander": "^2.11.0",
|
||||||
"shelljs": "^0.7.8"
|
"shelljs": "^0.7.8"
|
||||||
},
|
},
|
||||||
"firmwareVersion": "8.1.5",
|
"firmwareVersion": "8.2.2",
|
||||||
"deviceProtocolVersion": "4.2.0",
|
"deviceProtocolVersion": "4.3.0",
|
||||||
"moduleProtocolVersion": "4.0.0",
|
"moduleProtocolVersion": "4.0.0",
|
||||||
"userConfigVersion": "4.0.0",
|
"userConfigVersion": "4.0.0",
|
||||||
"hardwareConfigVersion": "1.0.0",
|
"hardwareConfigVersion": "1.0.0",
|
||||||
@@ -24,14 +24,14 @@
|
|||||||
{
|
{
|
||||||
"deviceId": 1,
|
"deviceId": 1,
|
||||||
"name": "uhk60-right",
|
"name": "uhk60-right",
|
||||||
"source": "right/build/uhk60-right_release/uhk-right.hex"
|
"source": "right/build_make/uhk_right.hex"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"modules": [
|
"modules": [
|
||||||
{
|
{
|
||||||
"moduleId": 1,
|
"moduleId": 1,
|
||||||
"name": "uhk60-left",
|
"name": "uhk60-left",
|
||||||
"source": "left/build/uhk60-left_release/uhk-left.bin"
|
"source": "left/build_make/uhk_left.bin"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,11 @@
|
|||||||
// Variables:
|
// Variables:
|
||||||
|
|
||||||
#define FIRMWARE_MAJOR_VERSION 8
|
#define FIRMWARE_MAJOR_VERSION 8
|
||||||
#define FIRMWARE_MINOR_VERSION 1
|
#define FIRMWARE_MINOR_VERSION 2
|
||||||
#define FIRMWARE_PATCH_VERSION 5
|
#define FIRMWARE_PATCH_VERSION 2
|
||||||
|
|
||||||
#define DEVICE_PROTOCOL_MAJOR_VERSION 4
|
#define DEVICE_PROTOCOL_MAJOR_VERSION 4
|
||||||
#define DEVICE_PROTOCOL_MINOR_VERSION 2
|
#define DEVICE_PROTOCOL_MINOR_VERSION 3
|
||||||
#define DEVICE_PROTOCOL_PATCH_VERSION 0
|
#define DEVICE_PROTOCOL_PATCH_VERSION 0
|
||||||
|
|
||||||
#define MODULE_PROTOCOL_MAJOR_VERSION 4
|
#define MODULE_PROTOCOL_MAJOR_VERSION 4
|
||||||
|
|||||||
Reference in New Issue
Block a user