Any possibility to implement keep out area on Duet 2?
-
@GeneRisi said in Any possibility to implement keep out area on Duet 2?:
With my e3d toolchanger, i would love to have keep out area implemented. I can’t justify upgrading the Duet boards when they work so well!
Going back to your original question, the way I achieve this is that I change the machine limits in each of the toolchange macros, wipe macros etc. Takes a bit of setting up to make sure you set the limits up for all cases and switch between them properly, but seems to work okay. I have macros that I use to set the limits which I call from the toolchange macros etc so I can easily find and update the limits as necessary.
Its generally only suitable for defining a rectangular go-area, rather than specific no-go areas
-
@GeneRisi you could build the firmware yourself. In file src/Config/Pins_DuetNG.h you would enable SUPPORT_KEEPOUT_ZONES and disable one of the remaining kinematics classes to make space.
-
@dc42 OK, that sounds interesting!
-
@dc42 I am trying to build the libraries but when I click on the hammer, it immediately jumps to
Configuring in: /Users/gene/Dev/RepRapFirmware/v3.5.1/FreeRTOS/src/build/default cmake -G Unix Makefiles -DCMAKE_EXPORT_COMPILE_COMMANDS=ON /Users/gene/Dev/RepRapFirmware/v3.5.1/FreeRTOS/src CMake Warning (dev) in CMakeLists.txt: No project() command is present. The top-level CMakeLists.txt file must contain a literal, direct call to the project() command. Add a line of code such as project(ProjectName)
I am not familiar with Eclipse. How do I build the libraries? Building CANlib woud be a great example for me. Thanks!
Gene -
@GeneRisi I don't know why it it using cmake unless you have configured it that way. Eclipse uses a normal make program, not cmake.
-
@dc42 I found the right invocation to build the individual projects. I needed to add the include path for MessageFormats.h to the RepRapFirmware project and when I did it built without errors. (on a MBP, M3) until it got to the last step
I found that instructions on building should also include instructions to install .NET SDK 6.x (x64 version only)
With my newfound success, I have a couple of questions:
-
How can I tell whether or not the binary will fit the constraints of the Duet 2 system?
-
Could MQTT also possibly fit in a custom DUET 2 build with only the basic kinematics included?
Thanks for making this possible!
Gene
-
-
@o_lampe I think that's an interesting idea and would be useful, in my opinion, if the freed up space could be used for other features. For example, I am interested in the KEEP_OUT area function and MQTT on my Duet 2. Since my printer only uses one kinematic type, the others provide no additional benefit and the code space is wasted.
Does FreeRTOS support dynamic loading without alot of overhead?
Another approach would be to host firmware builds on a remote machine along with a mechanism to pick and choose from a set of features and have an automated build create the binary.
Gene
-
@dc42 A configuration with most of the kinematic types not included and support for the 12864 LCD not included give a .bin file size of 491,676 bytes. How do I know if there is enough SRAM available for the MQTT stack?
-
@GeneRisi said in Any possibility to implement keep out area on Duet 2?:
@dc42 A configuration with most of the kinematic types not included and support for the 12864 LCD not included give a .bin file size of 491,676 bytes. How do I know if there is enough SRAM available for the MQTT stack?
By enabling MQTT support and seeing how large the binary is. Also you will get an error from the linker if the flash memory size is exceeded.
You could free up more flash space by disabling the code for whichever of Ethernet and WiFi your board doesn't have.
However, both MQTT and keepout zone support require additional RAM as well as flash memory.
-
@dc42 Will the linker tell me if I have exceeded the RAM memory available or is the allocation dynamic and I need to run the firmware to find out?
-
@GeneRisi some of the RAM is allocated dynamically depending on your configuration; so the linker can't tell you that.
When the machine has run for a while, M122 will tell you how much RAM is unused.