aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
39 hoursChange to version 1.29.6HEAD1.29.6masterNicolas Schodet
40 hoursBuild tests with automatic buildsNicolas Schodet
40 hoursAdd a test suiteNicolas Schodet
The test suite runs program(s) on the NXT brick and compare the output with the expected output. This can be run against NXT Improved Firmware, or other firmwares for comparison. It depends on NXC and NXT-Python.
40 hoursFix float to integer conversionNicolas Schodet
When converting a float to an integer, if the integer is not able to represent the value, the behavior is implementation defined. The original firmware source code depends on this implementation defined behavior from the C compiler. The LEGO MINDSTORMS NXT Executable File Specification does not define what is the expected behavior for the firmware because it was released for version 1.03, before float was supported. However it says: "At the scalar level, data type conversions behave identically to type casts in ANSI C.". For NXT Improved Firmware, I decided to follow the behavior of the original firmware binary, which is: - Negative values to unsigned numbers: large positive integer (two's complement). - Round to nearest for SETOUT instruction, truncate for other operations.
40 hoursRemove a note about a file which was removed in 1.29.4Nicolas Schodet
2024-03-08Change to version 1.29.51.29.5Nicolas Schodet
2024-03-08Fix signed float to int conversionNicolas Schodet
This can be visible using this test: task main() { float a = -12.34; NumOut(0, 32, a); char b = a; NumOut(0, 24, b); Wait(3000); } Thanks to Andreas Weber for reporting the problem and for the test program. This was actually fixed in NXT Enhanced Firmware, not sure if it was by accident or not as the original firmware source code comment suggests that special casing this conversion could improve speed. Imported from NXT Enhanced Firmware.
2024-03-06Add automatic buildsNicolas Schodet
2024-03-05Change to version 1.29.41.29.4Nicolas Schodet
2024-03-05Add small script to update versionNicolas Schodet
2024-03-05Use picolibc instead of newlibNicolas Schodet
Remove now useless functions in lib (abort, errno, sbrk), and strtod which is smaller in picolibc.
2024-01-05Add LICENSE file, copied from READMENicolas Schodet
2023-03-06Change to version 1.29.31.29.3Nicolas Schodet
2023-03-06Clarify licensing termsNicolas Schodet
2023-03-06Simplify source treeNicolas Schodet
Now just use make in the root directory to build.
2023-03-06Remove resources filesNicolas Schodet
While delivered by LEGO with the firmware package, those files are not explicitly covered by the LEGO MINDSTORMS NXT Firmware Open Source licence. Remove them to suppress the ambiguity.
2023-03-06Remove ATMEGA48 filesNicolas Schodet
This was never supported.
2023-03-06Remove unused IAR only filesNicolas Schodet
Building with IAR is no longer supported.
2021-10-31AT91SAM7S256/scripts: remove obsolete fileNicolas Schodet
2021-10-09Change to version 1.29.21.29.2Nicolas Schodet
2021-10-09armdebug: remove commented code from eCosNicolas Schodet
This code was included as a reference but not used.
2021-10-05Add attribution for the nxt-update-firmware helper scriptNicolas Schodet
2021-09-28Change to version 1.29.11.29.1Nicolas Schodet
2021-09-28Update README file with some quick start instructionsNicolas Schodet
2021-09-28Add the nxt-update-firmware helper scriptNicolas Schodet
This allows easy flashing from a binary installed with a distribution package.
2021-09-28Change the versioning scheme to use a third numberNicolas Schodet
NXT Improved firmware will now use a x.y.z version numbering scheme. The current version is 1.29.0 and the next one will be 1.29.1. Previously, the commit hash was included in the custom version. This is replaced with a build date corresponding to the newest git commit, unless the SOURCE_DATE_EPOCH environment variable is defined, in which case it will be used as build date. When out of git, if no SOURCE_DATE_EPOCH is defined, it will fall back to the current date. The weird date parsing code in BtTest is gone.
2021-08-18link with libnosysNicolas Schodet
Some version of newlib will link with unused stubs, use libnosys to make the linker happy.
2012-09-08merge armdebug d881039Nicolas Schodet
2012-02-11do not reserve space for stacks if armdebug is disabledNicolas Schodet
2012-02-11make armdebug compilation conditionalNicolas Schodet
Set ARMDEBUG to y in the Makefile to enable armdebug compilation.
2012-02-11merge armdebug rc1Tat-Chee Wan
This enables the use of GDB or GDB based debuggers to debug the code running on the NXT brick using the USB connection.
2011-08-09gcc: add debug informationNicolas Schodet
2011-08-06gcc: add support for unwinderNicolas Schodet
The unwinder is not really wanted, but it can be included on some version of gcc. In this case, it needs some special sections and the abort function.
2011-02-09provide access to the maximum speed and acceleration from user code and iomapNicolas Schodet
2011-02-09add speed and acceleration limit to absolute position regulationNicolas Schodet
When the set position is changed, absolute position regulation will run the motor as fast as possible to reach the requested position. This is not always the needed behaviour. This commit add speed and acceleration filtering to the position change.
2011-02-09slightly change the fractional change algorithm to minimize mean errorNicolas Schodet
2011-02-09move fractional position error code in its own functionNicolas Schodet
2011-02-09factorize code used for PID regulationNicolas Schodet
2011-02-09add option to disable saturation in regulation intermediary valuesNicolas Schodet
When computing PID, the output code limit the value of P and I participation. This is a problem as this introduces non-linearities and limits the efficiency of P and I terms.
2011-01-29add fractional speed support for faster regulationsNicolas Schodet
Original speed ranges from 0 to 100 per 100 ms. To keep the same range while lowering the regulation delay, a scaling must be done. This change scales the speed value and add support for fractional speed in order to keep the same granularity.
2011-01-29replace unused PwnFreq IOMap with RegulationTimeNicolas Schodet
2011-01-29add absolute position controlNicolas Schodet
2011-01-29Merge branch 'jch'Nicolas Schodet
2011-01-29use SLONG instead of SWORD in output codeNicolas Schodet
The ARM is working in 32 bit; there is no gain in working with 16 bit integers which are actually half words on 32 bit systems.
2011-01-27add output optionsJohn Hansen
Imported from NXT Enhanced Firmware.
2011-01-27use a function for bounds checking in output codeNicolas Schodet
2011-01-24replace RCX temperature conversion table with a polynomialNicolas Schodet
2011-01-21Merge branch 'jch'Nicolas Schodet
2011-01-21remove unused values in temperature conversion tableJohn Hansen
Imported from NXT Enhanced Firmware.
2011-01-21replace many array indexes with pointer access, remove duplicated codeJohn Hansen
Imported from NXT Enhanced Firmware.