This repository contains firmware for programmers for Parallel/LPC/FWH/SPI flash chips.
Any toolchain that understands the M4F core can be used. However, the toolchain must also have the following features and libraries
- Hard-float "-mfloat-abi=hard -mfpu=fpv4-sp-d16" compiled libraries
- A minimal C library (newlib works great)
- libnosys
The summon-arm-toolchain is a great tool which supports all of the above.
OpenOCD is used for "$ make flash" support. You may use alternatives such as lm4flash if you desire.
If you use OpenOCD, you will need version 0.7.0 or later. Previous versions do not have support for ti-icdi. If OpenOCD complains about an unsupported interface or nonexistent script on "$ make flash", then most likely, it is compiled without ti-icdi support. In that case you will have to rebuild it from sources (sorry), and pass "--enable-ti-icdi" to the configure script.
Before building firmware images, the dependencies should be pulled in. Please run:
$ git submodule init
$ git submodule update
Although some toolchains ship libopencm3 as a library, We include it here for several reasons. The major one is that LM4F support was only recently added, and it is very likely that your toolchain's libopencm3 will not include it. Second, the main developer is also a libopencm3 contributor, and including the library makes it very easy to send changes and bugfixes upstream and include them here.
QiProg upstream repository is also included since Vultureprog uses the QiProg API, and links to the USB device logic in QiProg.
See HACKING.md for instructions on setting up a toolchain, debugger, and programmer. Hardware specific code is placed under
boards/[processor family]/[board name]/
It's also where the firmware files will be created.
There is no need to configure a buildsystem. Everything is makefile-based. To build everything, just
$ make
Once the build completes (no need to take a coffee break. It should finish fast), you can load the firmware to the board.
$ make flash -C boards/[processor family]/[board name]
Yes, it's that easy!
Certain options may be fine-tuned by editing src/include/config.h. All
configuration options are prefixed with CONFIG_
to distinguish
them from other defines. These options are designed more as "developer options"
and less as "user options". They include:
- CONFIG_ENABLE_CONSOLE: enable console logging
- CONFIG_LOGLEVEL: the severity of debug messages
Your toolchain does not provide libnosys. Please update your toolchain.
Your toolchain does not link against supporting libraries compiled with "-mfloat-abi=hard -mfpu=fpv4-sp-d16". You have a number of options:
- Update your toolchain to link against hard-float libraries.
- Build everything with a soft-float ABI:
$ make clean
$ FP_FLAGS="" make
Vultureprog is licensed under the terms of the GNU General Public License (GPL), version 3 or later.
While some individual source code files are licensed under different licenses, this does not change the fact that the program as a whole is licensed under the terms of the GPLv3+.
Please see the individual source files for the full list of copyright holders.
A copyright notice indicating a range of years, must be interpreted as having had copyrightable material added in each of those years.
For example:
Copyright (C) 2010-2013 Contributor Name
is to be interpreted as
Copyright (C) 2010,2011,2012,2013 Contributor Name