LitexCNC: een open-source controller voor LinuxCNC

LinuxCNC kan hier besproken worden

Moderator: Moderators

jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

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
Tolp2
Donateur
Berichten: 476
Lid geworden op: 28 nov 2015 10:06
Locatie: Rotterdam
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door Tolp2 »

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
Die directory heb ik over het hoofd gezien. Op de test machine bestond hij dus al :mrgreen: .

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...
jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

Tolp2 schreef: 09 nov 2023 23:05 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?
Raspberry pi bookworm
Tolp2
Donateur
Berichten: 476
Lid geworden op: 28 nov 2015 10:06
Locatie: Rotterdam
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door Tolp2 »

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:
  • 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
Bovenstaand forceert om de juiste versie te gebruiken.

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...
jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

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.
Tolp2
Donateur
Berichten: 476
Lid geworden op: 28 nov 2015 10:06
Locatie: Rotterdam
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door Tolp2 »

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.
Assumptions are the mother of all $%^& ups.
Twee keer meten is zeker weten, als je weet wat je meet...
benkr
Donateur
Berichten: 7994
Lid geworden op: 16 jun 2012 16:32
Locatie: Valkenswaard

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door benkr »

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.
benkr
Donateur
Berichten: 7994
Lid geworden op: 16 jun 2012 16:32
Locatie: Valkenswaard

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door benkr »

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?
jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

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)
jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

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"}
            ]
        }
    ]
}
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. :lol:
Laatst gewijzigd door jand op 12 nov 2023 09:47, 1 keer totaal gewijzigd.
Tolp2
Donateur
Berichten: 476
Lid geworden op: 28 nov 2015 10:06
Locatie: Rotterdam
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door Tolp2 »

benkr schreef: 11 nov 2023 22:00 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?
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...
Tolp2
Donateur
Berichten: 476
Lid geworden op: 28 nov 2015 10:06
Locatie: Rotterdam
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door Tolp2 »

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. :lol:
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.

Om het voorbeeld te bouwen zou je voor nu een input kunnen definiëren door:

Code: Selecteer alles

{"direction": "in", "pin":"j8:2"}
Toe te voegen aan de instances.

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...
jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

Het compileren is gelukt. Op naar de volgende stap
jand
Donateur
Berichten: 79
Lid geworden op: 22 sep 2012 16:11
Locatie: Den Helder
Contacteer:

Re: LitexCNC: een open-source controller voor LinuxCNC

Bericht door jand »

Gelukt, ik heb een knipperende LED, maar dan zonder LED :lol:
Pin 2 van j1 staat vrolijk heen en weer te gaan van een '1' naar een '0'
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:
hopelijk valt er nog iets te doen aan de "Unexpected realtime delay on task 0 with period 1000000"
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.
Plaats reactie