LitexCNC: een open-source controller voor LinuxCNC
Moderator: Moderators
Re: LitexCNC: een open-source controller voor LinuxCNC
Bij de versie 1.1.0 gaat het niet helemaal goed. Ik moet handmatig de directory toolchain/litex maken, anders krijg je een foutmelding.
dus:
pip3 install litexcnc[cli] --user
mkdir -p toolchain/litex
litexcnc install_toolchain --user
en dan stopt hij op de fout:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://github.com/YosysHQ/oss-cad-suit ... 221207.tgz Not Found
dus:
pip3 install litexcnc[cli] --user
mkdir -p toolchain/litex
litexcnc install_toolchain --user
en dan stopt hij op de fout:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://github.com/YosysHQ/oss-cad-suit ... 221207.tgz Not Found
Re: LitexCNC: een open-source controller voor LinuxCNC
Die directory heb ik over het hoofd gezien. Op de test machine bestond hij dus al .jand schreef: ↑09 nov 2023 20:07 Bij de versie 1.1.0 gaat het niet helemaal goed. Ik moet handmatig de directory toolchain/litex maken, anders krijg je een foutmelding.
dus:
pip3 install litexcnc[cli] --user
mkdir -p toolchain/litex
litexcnc install_toolchain --user
en dan stopt hij op de fout:
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://github.com/YosysHQ/oss-cad-suit ... 221207.tgz Not Found
De link die je aangeeft bestaat dus inderdaad niet. De combinatie van linux en i386 wordt niet door oss-cad-suite. Op welk soort systeem probeer je het te installeren?
EDIT: Op basis van je opmerkingen heb ik zojuist versie 1.1.1 gereleased. Deze kun je installeren met
Code: Selecteer alles
pip install -U litexcnc[cli]
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
Re: LitexCNC: een open-source controller voor LinuxCNC
Daar zit toch echt een arm in, geen i386. Blijkbaar detecteert hij deze dus verkeerd onder Bookworm. Om toch door te gaan met de installatie kun je het volgende commando gebruiken:
Zou je om de software te verbeteren in een Python console de volgende commando's kunnen uitvoeren en het resultaat hier delen:
- In geval van een 32-bit versie van Bookworm:
Code: Selecteer alles
litexcnc install_toolchain --os linux --architecture arm
- In geval van een 64-bit versie van Bookworm:
Code: Selecteer alles
litexcnc install_toolchain --os linux --architecture arm64
Zou je om de software te verbeteren in een Python console de volgende commando's kunnen uitvoeren en het resultaat hier delen:
Code: Selecteer alles
import platform
print(platform.machine())
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
Re: LitexCNC: een open-source controller voor LinuxCNC
Dit is het resultaat:
cnc@linuxcnc:~$ python3
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print(platform.machine())
aarch64
>>> exit()
cnc@linuxcnc:~$
Ik ga verder met de installatie, maar omdat mijn installatie op debian 12 (bookworm) gedaan wordt is het misschien beter om dat niet hier tussendoor te behandelen. Dit geeft wat verwarring.
cnc@linuxcnc:~$ python3
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> print(platform.machine())
aarch64
>>> exit()
cnc@linuxcnc:~$
Ik ga verder met de installatie, maar omdat mijn installatie op debian 12 (bookworm) gedaan wordt is het misschien beter om dat niet hier tussendoor te behandelen. Dit geeft wat verwarring.
Re: LitexCNC: een open-source controller voor LinuxCNC
Kijk, met die output help je toch weer enorm.
Ik denk dat ik de twee onderwerpen ga splitseen, dus dat de tutorial in een eigen thread komen. Wellicht als stuk in de knowledge base.
Ik denk dat ik de twee onderwerpen ga splitseen, dus dat de tutorial in een eigen thread komen. Wellicht als stuk in de knowledge base.
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
Re: LitexCNC: een open-source controller voor LinuxCNC
Begin als Clean version topic. (verzoek mensen om daar niet in te reageren)
Maak meteen een nieuw topic aan voor mensen om te reageren.
Als een en ander goed is uitgekristalliseerd wil ik het best in de knowledge base opnemen.
Maak meteen een nieuw topic aan voor mensen om te reageren.
Als een en ander goed is uitgekristalliseerd wil ik het best in de knowledge base opnemen.
Re: LitexCNC: een open-source controller voor LinuxCNC
Ik heb 0,0 % kijk op Raspberry Pi's, daarom hier de vraag welke Pi hier het beste toegepast kan worden, en waar je die dan het beste kunt kopen?
Re: LitexCNC: een open-source controller voor LinuxCNC
Ik gebruik een raspberry pi 4 met 4G geheugen. Dit gaat goed tot nu toe. Als ik het goed heb begrepen in het praatje van Peter kan een pi5 ook.
Ik ben nu zover dat de toolchain draait. Het bouwen van het blink voorbeeld gaat nog niet goed. Ik weet nog niet waaraan het ligt. Er zit in iedere geval een foutje in het voorbeeld. (Een comma teveel)
Ik ben nu zover dat de toolchain draait. Het bouwen van het blink voorbeeld gaat nog niet goed. Ik weet nog niet waaraan het ligt. Er zit in iedere geval een foutje in het voorbeeld. (Een comma teveel)
Re: LitexCNC: een open-source controller voor LinuxCNC
Zoals ik net melde gaat het bouwen gaat niet goed. De versie is 1.1.0 Ik gebruik deze json file:
DIt is de poging om te bouwen:
cnc@linuxcnc:~$ cnc@linuxcnc:~$ litexcnc build_firmware blink.json --build
INFO:SoC: __ _ __ _ __
INFO:SoC: / / (_) /____ | |/_/
INFO:SoC: / /__/ / __/ -_)> <
INFO:SoC: /____/_/\__/\__/_/|_|
INFO:SoC: Build your hardware, easily!
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:Creating SoC... (2023-11-12 09:39:16)
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:FPGA device : LFE5U-25F-6BG256C.
INFO:SoC:System clock: 35.000MHz.
INFO:SoCBusHandler:Creating Bus Handler...
INFO:SoCBusHandler:32-bit wishbone Bus, 4.0GiB Address Space.
INFO:SoCBusHandler:Adding reserved Bus Regions...
INFO:SoCBusHandler:Bus Handler created.
INFO:SoCCSRHandler:Creating CSR Handler...
INFO:SoCCSRHandler:32-bit CSR Bus, 32-bit Aligned, 16.0KiB Address Space, 2048B Paging, big Ordering (Up to 32 Locations).
INFO:SoCCSRHandler:Adding reserved CSRs...
INFO:SoCCSRHandler:CSR Handler created.
INFO:SoCIRQHandler:Creating IRQ Handler...
INFO:SoCIRQHandler:IRQ Handler (up to 32 Locations).
INFO:SoCIRQHandler:Adding reserved IRQs...
INFO:SoCIRQHandler:IRQ Handler created.
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:Initial SoC:
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:32-bit wishbone Bus, 4.0GiB Address Space.
INFO:SoC:32-bit CSR Bus, 32-bit Aligned, 16.0KiB Address Space, 2048B Paging, big Ordering (Up to 32 Locations).
INFO:SoC:IRQ Handler (up to 32 Locations).
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:Controller ctrl added.
INFO:SoC:CPU None added.
INFO:SoC:CPU None adding IO Region 0 at 0x00000000 (Size: 0x100000000).
INFO:SoCBusHandler:io0 Region added at Origin: 0x00000000, Size: 0x100000000, Mode: RW, Cached: False Linker: False.
INFO:ECP5PLL:Creating ECP5PLL.
INFO:ECP5PLL:Registering Single Ended ClkIn of 25.00MHz.
INFO:ECP5PLL:Creating ClkOut0 sys of 35.00MHz (+-10000.00ppm).
INFO:ECP5PLL:Creating ClkOut1 sys_ps of 35.00MHz (+-10000.00ppm).
INFO:SoCBusHandler:master0 added as Bus Master.
Traceback (most recent call last):
File "/home/cnc/.local/bin/litexcnc", line 8, in <module>
sys.exit(cli())
^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/cli/build_firmware.py", line 50, in cli
soc = firmware_config.generate()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/firmware/soc.py", line 101, in generate
soc.submodules.MMIO_inst = MMIO(config=self)
^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/firmware/mmio.py", line 162, in __init__
module.add_mmio_read_registers(self)
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/config/modules/gpio.py", line 105, in add_mmio_read_registers
GPIO_Module.add_mmio_read_registers(mmio, self)
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/firmware/modules/gpio.py", line 128, in add_mmio_read_registers
mmio.gpio_in = CSRStatus(
^^^^^^^^^^
File "/home/cnc/toolchain/litex/litex/litex/soc/interconnect/csr.py", line 299, in __init__
self.status = Signal(self.size, reset=reset)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/toolchain/litex/migen/migen/fhdl/structure.py", line 385, in __init__
reset = Constant(reset, (self.nbits, self.signed))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/toolchain/litex/migen/migen/fhdl/structure.py", line 296, in __init__
raise TypeError("Width must be a strictly positive integer")
TypeError: Width must be a strictly positive integer
Wat precies de oorzaak is weet ik nog niet. Als ik de module gpio weg haal, dan gaat het compileren goed, maar dan blijft er ook niet veel over om te testen.
Code: Selecteer alles
{
"board_name": "blink",
"board_type": "5A-75B v8.0",
"clock_frequency": 35000000,
"connection": {
"connection_type": "etherbone",
"tx_delay": 0,
"ip_address": "10.0.0.10",
"mac_address": "0x10e2d5000000"
},
"modules": [
{
"module_type": "gpio",
"instances": [
{"direction": "out", "pin":"j1:2"}
]
}
]
}
cnc@linuxcnc:~$ cnc@linuxcnc:~$ litexcnc build_firmware blink.json --build
INFO:SoC: __ _ __ _ __
INFO:SoC: / / (_) /____ | |/_/
INFO:SoC: / /__/ / __/ -_)> <
INFO:SoC: /____/_/\__/\__/_/|_|
INFO:SoC: Build your hardware, easily!
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:Creating SoC... (2023-11-12 09:39:16)
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:FPGA device : LFE5U-25F-6BG256C.
INFO:SoC:System clock: 35.000MHz.
INFO:SoCBusHandler:Creating Bus Handler...
INFO:SoCBusHandler:32-bit wishbone Bus, 4.0GiB Address Space.
INFO:SoCBusHandler:Adding reserved Bus Regions...
INFO:SoCBusHandler:Bus Handler created.
INFO:SoCCSRHandler:Creating CSR Handler...
INFO:SoCCSRHandler:32-bit CSR Bus, 32-bit Aligned, 16.0KiB Address Space, 2048B Paging, big Ordering (Up to 32 Locations).
INFO:SoCCSRHandler:Adding reserved CSRs...
INFO:SoCCSRHandler:CSR Handler created.
INFO:SoCIRQHandler:Creating IRQ Handler...
INFO:SoCIRQHandler:IRQ Handler (up to 32 Locations).
INFO:SoCIRQHandler:Adding reserved IRQs...
INFO:SoCIRQHandler:IRQ Handler created.
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:Initial SoC:
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:32-bit wishbone Bus, 4.0GiB Address Space.
INFO:SoC:32-bit CSR Bus, 32-bit Aligned, 16.0KiB Address Space, 2048B Paging, big Ordering (Up to 32 Locations).
INFO:SoC:IRQ Handler (up to 32 Locations).
INFO:SoC:--------------------------------------------------------------------------------
INFO:SoC:Controller ctrl added.
INFO:SoC:CPU None added.
INFO:SoC:CPU None adding IO Region 0 at 0x00000000 (Size: 0x100000000).
INFO:SoCBusHandler:io0 Region added at Origin: 0x00000000, Size: 0x100000000, Mode: RW, Cached: False Linker: False.
INFO:ECP5PLL:Creating ECP5PLL.
INFO:ECP5PLL:Registering Single Ended ClkIn of 25.00MHz.
INFO:ECP5PLL:Creating ClkOut0 sys of 35.00MHz (+-10000.00ppm).
INFO:ECP5PLL:Creating ClkOut1 sys_ps of 35.00MHz (+-10000.00ppm).
INFO:SoCBusHandler:master0 added as Bus Master.
Traceback (most recent call last):
File "/home/cnc/.local/bin/litexcnc", line 8, in <module>
sys.exit(cli())
^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/cli/build_firmware.py", line 50, in cli
soc = firmware_config.generate()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/firmware/soc.py", line 101, in generate
soc.submodules.MMIO_inst = MMIO(config=self)
^^^^^^^^^^^^^^^^^
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/firmware/mmio.py", line 162, in __init__
module.add_mmio_read_registers(self)
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/config/modules/gpio.py", line 105, in add_mmio_read_registers
GPIO_Module.add_mmio_read_registers(mmio, self)
File "/home/cnc/.local/lib/python3.11/site-packages/litexcnc/firmware/modules/gpio.py", line 128, in add_mmio_read_registers
mmio.gpio_in = CSRStatus(
^^^^^^^^^^
File "/home/cnc/toolchain/litex/litex/litex/soc/interconnect/csr.py", line 299, in __init__
self.status = Signal(self.size, reset=reset)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/toolchain/litex/migen/migen/fhdl/structure.py", line 385, in __init__
reset = Constant(reset, (self.nbits, self.signed))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/cnc/toolchain/litex/migen/migen/fhdl/structure.py", line 296, in __init__
raise TypeError("Width must be a strictly positive integer")
TypeError: Width must be a strictly positive integer
Wat precies de oorzaak is weet ik nog niet. Als ik de module gpio weg haal, dan gaat het compileren goed, maar dan blijft er ook niet veel over om te testen.
Laatst gewijzigd door jand op 12 nov 2023 09:47, 1 keer totaal gewijzigd.
Re: LitexCNC: een open-source controller voor LinuxCNC
De RaspberryPi 4 met 4 GB werkt zeker. De RaspberryPi 5 zou ook moeten werken, want die is nog krachtiger. Ook hier zou ik de 4 GB versie aanbevelen.
RaspberryPi 3 zou getest kunnen worden. Deze hardware is iets minder krachtig, dus zou mogelijk een lagere frequentie aan kunnen.
Een Pi 0 werkt niet, want te weinig geheugen.
Oudere Pi 1 en Pi 2 werken ook niet, want die hebben een 26 pins header in plaats van 40 pins. Deze zijn dus niet compatible met de gebruikte pin configuratie.
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
Re: LitexCNC: een open-source controller voor LinuxCNC
Ik wel, en ik schaam er een beetje voor. In het voorbeeld is geen input gedefinieerd, waardoor het mis gaat met een register. Eigenlijk is het voorbeeld te simpel. Ik ga dit aanpassen in de code en een nieuwe release maken, zodat output only ook ondersteund wordt.jand schreef: ↑12 nov 2023 09:44 Zoals ik net melde gaat het bouwen gaat niet goed. De versie is 1.1.0 Ik gebruik deze json file:
[...]Code: Selecteer alles
{ "board_name": "blink", "board_type": "5A-75B v8.0", "clock_frequency": 35000000, "connection": { "connection_type": "etherbone", "tx_delay": 0, "ip_address": "10.0.0.10", "mac_address": "0x10e2d5000000" }, "modules": [ { "module_type": "gpio", "instances": [ {"direction": "out", "pin":"j1:2"} ] } ] }
TypeError: Width must be a strictly positive integer
Wat precies de oorzaak is weet ik nog niet. Als ik de module gpio weg haal, dan gaat het compileren goed, maar dan blijft er ook niet veel over om te testen.
Om het voorbeeld te bouwen zou je voor nu een input kunnen definiëren door:
Code: Selecteer alles
{"direction": "in", "pin":"j8:2"}
Morgenavond staat de nieuwe versie online.
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
Twee keer meten is zeker weten, als je weet wat je meet...
Re: LitexCNC: een open-source controller voor LinuxCNC
Het compileren is gelukt. Op naar de volgende stap
Re: LitexCNC: een open-source controller voor LinuxCNC
Gelukt, ik heb een knipperende LED, maar dan zonder LED
Pin 2 van j1 staat vrolijk heen en weer te gaan van een '1' naar een '0'
Ik had de hoop dat het image dat je kunt downloaden op linuxcnc.org/downloads/ helemaal geoptimaliseerd zou zijn.
Moet ik dus nog even naar kijken of er wat te verbeteren valt.
De volgende stap is dan toch echt het modificeren van de print en het bestukken van de HUB75HAT.
Pin 2 van j1 staat vrolijk heen en weer te gaan van een '1' naar een '0'
hopelijk valt er nog iets te doen aan de "Unexpected realtime delay on task 0 with period 1000000"cnc@linuxcnc:~$ litexcnc flash_firmware blink/gateware/colorlight_5a_75b.svf
cnc@linuxcnc:~$ halrun
halcmd: loadrt litexcnc connections="eth:10.0.0.10"
Note: Using POSIX realtime
litexcnc: Loading Litex CNC driver version 1.1.0
litexcnc: Loading and registering default modules:
litexcnc: Registered module gpio
litexcnc: Registered module pwm
litexcnc: Registered module encoder
litexcnc: Registered module step
litexcnc: Setting up board drivers:
litexcnc: Registered driver eth
LitexCNC-eth: connected to board on '10.0.0.10:1234'
litexcnc: Setting up modules...
litexcnc: Reading 8 bytes
litexcnc: - Watchdog
litexcnc: - Wallclock
litexcnc: - gpio ... done!
litexcnc: Creating read and write buffers...
litexcnc: Base addresses: init: 00000000, reset: 00000028, config: 0000002C, write: 0000002C, read: 00000034
litexcnc: - Write buffer: 8 bytes
litexcnc: - Read buffer: 16 bytes
litexcnc: Exporting functions...
halcmd: loadrt siggen
halcmd: loadrt threads name1=test-thread period1=1000000
halcmd: addf blink.read test-thread
halcmd: addf siggen.0.update test-thread
halcmd: addf blink.write test-thread
halcmd: net blink siggen.0.clock => blink.gpio.00.out
halcmd: start
halcmd: Unexpected realtime delay on task 0 with period 1000000
This Message will only display once per session.
Run the Latency Test and resolve before continuing.
halcmd:
halcmd: gets blink
TRUE
halcmd: gets blink
FALSE
halcmd: gets blink
TRUE
halcmd: gets blink
FALSE
halcmd:
Ik had de hoop dat het image dat je kunt downloaden op linuxcnc.org/downloads/ helemaal geoptimaliseerd zou zijn.
Moet ik dus nog even naar kijken of er wat te verbeteren valt.
De volgende stap is dan toch echt het modificeren van de print en het bestukken van de HUB75HAT.