Generating PanelDue - no .bin file issue



  • Yesterday I setup a dev environment as per the BuildInstructions at https://github.com/dc42/PanelDueFirmware/blob/master/BuildInstructions.md

    I select the Release-5.0i-7.0i version to build. Build goes without errors and I end up with a Release-5.0i-7.0i directory that contains a src/ and PanelDue-5.0i-7.0i.elf and .map files but no .bin file.

    I've searched here but the posts I've found don't solve my issue. I did install eclipse and the source tree exactly as described in the build instructions so my paths should all be correct. I'm using the internal builder. I verified that the paths to the splash screens are correct. No problems were reported when the build completed. How can I generate the .bin file?

    cheers,
    Michael



  • It seems like the post-build step is not being executed. I've looked in the log files and see no traces of it and nothing shows up on the build console. I'm not an Eclipse user so I'm not sure how to debug this.



  • So I copied the command for the post-build step and replaced the symbols with wired paths and ran it from a shell. This worked fine and I got a .bin file. I haven't flashed it to test yet but at least that part worked. Now the question is, why isn't it working from Eclipse?



  • Are you building on Windows, Linux or MacOS?



  • Building on Windows 10 as per the build instructions.



  • So, I am able to flash the firmware to the PanelDue. If I build with -nologo the PanelkDue boots without showing the splash. If I build with a splash screen it shows that splash. I mention this because it verifies that I am building and successfully running my .bin file. However, none of the changes I've made to the sources show up.

    first I tried changing the nozzle 1 icon (both the 22 and 30 pix high versions) simply by filling in the number. Clean, build, deploy, and the new icon does not show up.

    So I edited the STOP string to STOP in Strings.hpp. clean, build, deploy and again, nothing changes on the paneldue.

    Any suggestions? I see that the .o files are all correctly time stamped for a clean build as are the .elf and .bin files.



  • Now I've replaced the splash screen so I know I am building and deploying but none of the UI tweaks I mentioned above are showing up on the panel, Very odd.

    For now, I'm just running the .elf to .bin utility from a batch file. I still don't know why Eclipse is not running the post -build step.



  • Not sure if you find the same thing I am finding.

    But I would compile the paneldue and I received no error's.
    but when I would look in the release folder form inside eclipse
    it would not show any .bin files I thought it didn't compile but when I used the file explorer
    and searched the directory they were there...



  • I've seen the same issue with no .bin file produced. It wasn't just that it didn't show up in explorer.

    For me, its the post-build step. The && after the objcopy command isn't acting as a delimeter and creating a second command - rather it (and everything after it) gets passed to arm-none-eabi-objcopy. arm-none-eabi-objcopy doesn't know what to do with the extra stuff and simply displays its invocation help and doesn't build the .bin.

    I'm building on Windows with Eclipse (exact version stated in build instructions) and internal tools.

    Not a huge deal for me - if I remove the && and everything after, I still get the -nologo variant.

    I know this is an older thread but thought I'd chime in as its an active issue and I did figure out a bit about why its happening. I wonder if the same thing would happen with external tools???

    Jack



  • @jrwaters2 said in Generating PanelDue - no .bin file issue:

    For me, its the post-build step. The && after the objcopy command isn't acting as a delimeter and creating a second command

    without having tested it, it would seem the objcopy is returning a non-zero return code causing the && to skip the next command.

    i.e .command1 && command2 will only run command2 if command1 return 0

    (edit: seems to work the same on windows

    C:\>false && echo "true" || echo "false"
    "false"
    C:\>true && echo "true" || echo "false"
    "true"
    

    true and false are just commands that return 0 and 1 respectively)



  • IIRC shell scripts provide the status of last command which allow to provide a visible error message. With bash, I think it's the $? variable (?).



  • I just downloaded minGW and installed basic tools. I set Eclipse to use external tools and it all builds fine.

    I get that && only proceeds if there is errorlevel 0. But, if you remove the &&, it does succeed which suggests the full line is being sent to arm-non-eabi-objcopy.

    If I replaced the && . . .rest of steps with something simple like "&& echo", I can see that arm-non-eabi-objcopy still fails.

    Net is that with external tools I get both the normal .bin file and the no-logo.



  • I also wanted to mention that the thing that got me down this path was seeing that arm-non-eabi-objcopy was failing and showing its invocation options.



  • @zapta said in Generating PanelDue - no .bin file issue:

    With bash, I think it's the $? variable (?).

    true story

    in win(dos) it's %ERRORLEVEL%

    @jrwaters2 said in Generating PanelDue - no .bin file issue:

    I get that && only proceeds if there is errorlevel 0. But, if you remove the &&, it does succeed which suggests the full line is being sent to arm-non-eabi-objcopy.

    to remove the conditional simply replace && with & on windows (or ; on linux)
    ((however the presence of && would suggest the second command is reliant on the result of the first?))

    that it works by removing && would suggest objcopy is still return a non-zero status and taking the second command as parameters it ignores (and ultimately that the second command isn't needed?)

    confirm which versions you're using?



  • The && was there because it was meant to be dependent (its the default paneldue build process, not something I came up with). I believe & here would fail as well. Theory is that something is passing all of the parameters (including everything past the &&) to arm-non-eabi-objcopy when it should be interpreting && as a delimeter.

    It all works fine from the command line . . . and it all works fine with external tools.



  • hmm, that would only be if the command isn't run through cmd.exe afaik

    does adding C:\Windows\System32\cmd.exe /c "commands&&commands" (substituting the commands inside the qoutes) work?

    (optionally C:\Windows\SysWOW64\cmd.exe for 64 bits)

    its been a while, but i believe i used external tools when i built the paneldue fw and didn't experience such an issue.



  • @bearer I didn't try that. I did try some other delimeters with no positive impact. I've been working with this stuff for a loooonnnnngg time and I also have another 100 ideas. Just time limited 🙂



  • And yes, external tools works fine. Its only internal tools that don't.


Log in to reply