numworks / epsilon

Modern graphing calculator operating system.
https://www.numworks.com/resources/engineering/software/
1.73k stars 460 forks source link

Build and run your own version of Epsilon, Make command Failing... #1873

Open sivom opened 3 years ago

sivom commented 3 years ago

Describe the bug

Hi

I am following the link numworks provided in "Build and run your own version of Epsilon" at the link https://www.numworks.com/resources/engineering/software/build/

I followed all the steps under the below sections 1.3 Debian or Ubuntu 2 Retrieve the source code Run Epsilon on your calculator

Screenshots

image

To Reproduce

Steps to reproduce the behavior: ango@Play:~/numworks$ git clone https://github.com/numworks/epsilon.git Cloning into 'epsilon'... remote: Enumerating objects: 161279, done. remote: Counting objects: 100% (7513/7513), done. remote: Compressing objects: 100% (2713/2713), done. remote: Total 161279 (delta 4856), reused 7048 (delta 4756), pack-reused 153766 Receiving objects: 100% (161279/161279), 52.23 MiB | 12.78 MiB/s, done. Resolving deltas: 100% (114141/114141), done. jango@Play:~/numworks$ cd epsilon/ jango@Play:~/numworks/epsilon$ make clean CLEAN jango@Play:~/numworks/epsilon$ make make FIRMWARE_COMPONENT=bootloader DEBUG=0 bootloader.elf make[1]: Entering directory '/home/jango/numworks/epsilon' ion/src/device/Makefile:2: ion/src/device/n0110/epsilon-bootloader/bootloader/Makefile: No such file or directory make[1]: No rule to make target 'ion/src/device/n0110/epsilon-bootloader/bootloader/Makefile'. Stop. make[1]: Leaving directory '/home/jango/numworks/epsilon' make: [build/targets.device.n0110.mak:22: output/release/device/n0110//epsilon.dfu] Error 2 jango@Play:~/numworks/epsilon$

Expected behavior

make is failing......

Environment

N/A

RedGl0w commented 3 years ago

You can't build the whole firmware, because the bootloader is private. However, you can still compile the kernel (but you won't be able to run it), or the userland (and you'll be able to run it, if, currently, you change the version in build config, because it is more recent that epsilon 16 on numworks website). For this :

zoeleu commented 2 years ago

because the bootloader is private

who had the EXCELLENT idea of saying "build your own firmware" and then not making the required component for the firmware public

RedGl0w commented 2 years ago

who had the EXCELLENT idea of saying "build your own firmware" and then not making the required component for the firmware public

It's somehow what is wanted with this version : not being able to build the whole firmware, in order not to have people who would compile their own firmware, while being able to down grade in the future. It's a shame I think, but the only issue which will maybe be solved in the future is the documentation which is out of date.

zoeleu commented 2 years ago

Just a question, did you sign/agree to any CLA?

They may not have the right to change the license.

adriweb commented 2 years ago

Every external contributor to this repo has to sign the CLA to get a PR merged, so yes. And I'm pretty sure the CLA allows them to do whatever they want, basically. Regardless, Epsilon 15 (and earlier) don't have their licence changed, even if the CLA allowed them to. The new all-rights-reserved-no-license is for v16+.

But yes I agree that some documentation here and there should be updated to better reflect the current state of things.

RedGl0w commented 2 years ago

Just a question, did you sign/agree to any CLA?

https://cla-assistant.io/numworks/epsilon

Mohagames205 commented 2 years ago

You can't build the whole firmware, because the bootloader is private. However, you can still compile the kernel (but you won't be able to run it), or the userland (and you'll be able to run it, if, currently, you change the version in build config, because it is more recent that epsilon 16 on numworks website). For this :

  • make FIRMWARE_COMPONENT=userland userland.A.bin
  • make FIRMWARE_COMPONENT=userland userland.B.bin
  • make FIRMWARE_COMPONENT=kernel kernel.A.bin
  • make FIRMWARE_COMPONENT=kernel kernel.B.bin

How would you run the userland firmware after building it on the calculator? I tried flashing the bins using dfu-utils, but that didn't work. So, how do I flash the userland bin on the Numworks calculator (n0110). The Makefile documentation doesn't help either.

RedGl0w commented 2 years ago

How would you run the userland firmware after building it on the calculator? I tried flashing the bins using dfu-utils, but that didn't work. So, how do I flash the userland bin on the Numworks calculator (n0110). The Makefile documentation doesn't help either.

For slot B :

dfu-util -a 0 -s 0x90410000:leave -D output/release/device/n0110/userland/userland.B.bin

For slot A :

dfu-util -a 0 -s 0x90010000:leave -D output/release/device/n0110/userland/userland.A.bin
loretoparisi commented 2 years ago

@RedGl0w If I try make FIRMWARE_COMPONENT=userland userland.B.bin etc. I get

$ make FIRMWARE_COMPONENT=userland userland.B.bin
I18N    apps/i18n.cpp
Traceback (most recent call last):
  File "/Users/loretoparisi/Documents/Projects/epsilon/apps/i18n.py", line 18, in <module>
    import lz4.frame
ModuleNotFoundError: No module named 'lz4'

and even installing lz4 I still get errors:

ModuleNotFoundError: No module named 'lz4._version'

while running make FIRMWARE_COMPONENT=kernel kernel.A.bin

I get

CC      ion/src/device/kernel/boot/isr.o
make: arm-none-eabi-gcc: No such file or directory
make: *** [output/release/device/n0110/kernel/ion/src/device/kernel/boot/isr.o] Error 1

this because the bootloader is not there?

RedGl0w commented 2 years ago

You haven't installed well lz4 I guess with the first error (I can't help on it, sorry) For the second one, you have to install arm-none-eabi toolchain (like on previous version)

loretoparisi commented 2 years ago

@RedGl0w thank you, at the end of the day, I decided to give up, unless the bootloader becomes free, building this does not make any sense to me https://github.com/UpsilonNumworks/Upsilon/issues/158