Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    emard
    @emard
    Ahaaaa so unix was not all the time available on cortex hardware. Still I'd wanted to know how did you initially start with populated filesystem. Normally e.g. if we have linux on riscv, we can mount the same partition on x86 PC, copy files and and it will work on riscv, but how was this done on cortex?
    emard
    @emard
    So If I understood, you have a tool that from a directory creates disk image, but there's currently no support to actually mount cortex fs on linux for example. linux has some possibility to write a user-space fs driver like "fuse" but I ghess thats difficult and fragile
    Paul Ruiz
    @pnru_gitlab

    You can follow my journey here, in 315 commits:
    https://www.jslite.net/cgi-bin/9995/timeline?n=400&y=all&v=0

    I use a program ("ufs") which creates a disk image from scratch and then adds files to it. The source code is here:
    https://www.jslite.net/cgi-bin/9995/dir?ci=84b2a75947eb76db&name=fsutil

    Even on the mini Cortex hardware, the CF Card uses FAT formatting and has an image file on it. I make sure the image is contiguous and the boot loader lets the Unix disk driver know in which sector the image starts. This way I can simply copy disk images to the CF card without needing to use special tools.

    Actually, the card also has disk images for other OS's as well - MDEX and NOS, which are somewhat similar to CP/M and MS-DOS 3 respectively.

    emard
    @emard
    There has been a lot of concentrated effort! The idea to use contiguous file in FAT is very good, so the CF itself can be easily written from laptop.
    Paul Ruiz
    @pnru_gitlab
    Thank you. The ulx3s Cortex has it even easier: because of the ESP32, now I don't even have to worry about things being contiguous and I can ftp disk images without having to handle the SD card.
    emard
    @emard
    yeees it was a piece of luck that for esp32 appeared good micropython support with almost all important things working and that spi-jtag adventure turned out successful. I have ulx3s with SD in a box and once inserted SD I never move out, just ftp files. Things will be even better when WROVER-E prototype starts working, 4MB RAM, 16MB FLASH no more out of memory. Bitstreams could be unzipped on-the-fly, even larger FLASH chips supported with 64K and 256K erase blocks (esp32 must buffer data size of erase block and now we are struggling with 4K buffers)
    Kristin Davidson
    @aphistic
    Hey! I saw the news on crowdsupply that the preorders are on their way to mouser, congrats! I was curious if there's any idea when those might start arriving to people? I know that's an annoying question, so feel free to ignore it. The reason I ask is because I'll have 3 weeks of free time in the beginning of October and I'm hoping to be able to start experimenting. Only problem is I won't be able to receive any shipments after the last week of September, so I'm curious if it might arrive before then.
    emard
    @emard
    Currently all I know that shipment with about 800pcs of ulx3s is in Köln germany, first it needs to reach mouser, USA then they will ship. Normally if everything else is fast you should get one in USA if you live in popular cities. If you are on some island near canada, it will travel thru usa additional month
    Goran Mahovlic
    @goran-mahovlic
    @aphistic Today packet was released from Germany and it is on the way to Mouser - They should have it next week. Then they need to add those boards to system and they will ship campaign orders first. Mouser is using fast shipping service like DHL and FedEX so it usually takes few days to get in US/EU and probably few days more to reach other countries ...
    e2kgh
    @e2kgh
    ULX3S is a "Power Management IC Development Tools ULX3S with ECP5 12F" at mouser.com ;-)
    emard
    @emard
    Yes that seems to be first iteration while guessing where it should belong :). I wanted the board to work as big SMPS and motor control board. They seem to be able to read thoughts remotely :)
    Kristin Davidson
    @aphistic
    @goran-mahovlic @emard great! sounds like there's a good chance I'll get it just before I leave then. thanks! :)
    Goran Mahovlic
    @goran-mahovlic
    @pietrushnic Boxes are in US waiting for clearence.
    Lawrie Griffiths
    @lawrie
    @pnru_gitlab @emard I finished the QL sound with an attempt at everything (increments, wrap, random, fuzz), but I don't know how close to the original it is.
    emard
    @emard
    Ohoohooo I must test :)
    Kid CUDA
    @KidCUDA_gitlab
    anyone used a PS2 keyboard with ULX3S?
    like a proper PS2 keyboard with the pins adapted to USB?
    is a level shifter needed or is the USB port 5V-data-tolerant?
    from the schematic it doesn't look 5V tolerant but I'm not sure how else it would work with just a pure PS2 adapter as suggested in the docs
    emard
    @emard
    @KidCUDA_gitlab US2 pins are 5V tolerant, limited by R and Zener diodes. Still some PS/2 keyboards don't accept 3.3V levels. Best is to obtain combo PS/2+USB they usually work in both modes for ULX3S
    PS/2 is normally used over OTG connector for most of our retro-computing cores, apple1-2, ti99, zx, vic20, QL just to name a few
    Lawrie Griffiths
    @lawrie
    SaxonSoc 2-CPU version on Ulx3s 85F:
    root@buildroot:~# cat /proc/cpuinfo
    processor       : 0
    hart            : 1
    isa             : rv32im
    mmu             : sv32
    
    processor       : 1
    hart            : 0
    isa             : rv32im
    mmu             : sv32
    Lawrie Griffiths
    @lawrie
    A 3-CPU version also runs, but a 4-CPU version did not, probably due to failing the timing by too much.
    e2kgh
    @e2kgh
    @lawrie " how much of the 85F does the 2-Core version use?
    Lawrie Griffiths
    @lawrie
    From memory it was 36%
    But apparently it takes a lot less if built with Lattice Diamond rather than the open source tools.
    Lawrie Griffiths
    @lawrie
    Info: Device utilisation:
    Info:            TRELLIS_SLICE: 15356/41820    36%
    Info:               TRELLIS_IO:    83/  365    22%
    Info:                     DCCA:     3/   56     5%
    Info:                   DP16KD:    48/  208    23%
    Info:               MULT18X18D:     8/  156     5%
    Info:                   ALU54B:     0/   78     0%
    Info:                  EHXPLLL:     1/    4    25%
    Info:                  EXTREFB:     0/    2     0%
    Info:                     DCUA:     0/    2     0%
    Info:                PCSCLKDIV:     0/    2     0%
    Info:                  IOLOGIC:    39/  224    17%
    Info:                 SIOLOGIC:     0/  141     0%
    Info:                      GSR:     0/    1     0%
    Info:                    JTAGG:     0/    1     0%
    Info:                     OSCG:     0/    1     0%
    Info:                    SEDGA:     0/    1     0%
    Info:                      DTR:     0/    1     0%
    Info:                  USRMCLK:     1/    1   100%
    Info:                  CLKDIVF:     0/    4     0%
    Info:                ECLKSYNCB:     0/   10     0%
    Info:                  DLLDELD:     0/    8     0%
    Info:                   DDRDLL:     0/    4     0%
    Info:                  DQSBUFM:     0/   14     0%
    Info:          TRELLIS_ECLKBUF:     0/    8     0%
    Info:             ECLKBRIDGECS:     0/    2     0%
    e2kgh
    @e2kgh
    Does the 4-Core fail on Diamond too?
    Lawrie Griffiths
    @lawrie
    I don't have Diamond installed to test it at the moment.
    Lawrie Griffiths
    @lawrie
    @pnru_gitlab @emard I have started looking at riscv_lcc. It is not straightforward to cross-compile. Some parts (such as lburg) seem to be compile-time utilities so need to be natively compiled. Then I had some problems with the run time library. There were problems with getcwd not being found. I commented out the code that used that, as it did not look critical, Then there was a problem with getopt being duplicated, so I omitted the getopt.c source. I could then compile some of the directories.
    The way the build happens seems to be that a binary called rcc is compiled using gcc, and then that is used to recompile the source, producing the lcc binary. I could compile rcc, but not lcc as the latter had some missing library routines, such as access.
    emard
    @emard
    Hmmmmm but very interesting, good part can be compiled
    I will download current multicore binaries, it would be my first multi-core linux booting at ulx3s board :)).
    Lawrie Griffiths
    @lawrie
    When I first built rcc and ran it on SaxonSoc Linux, it produced a lot of garbage files and corrupted the SD card. When I used the correct architecure and abi options, it worked better. However, it does not seem to be able to read or write named files (cannot read hello.c), but it worked with stdin and stdout. So all I can currently do is compile a single C file to an assembler output file.
    I haven't tried to build the binutils yet, and I haven't looked into the a.out issue next. So I cannot convert the assember output to an executable file yet.
    So I have made some progress, but a long way to go.
    emard
    @emard
    I remember on big datacenters there are administrators doing crazy jobs of compiling gnu stuff for aix vms vm/esa and of course errors occured. They told me they are just block-deleting with editor big parts of code they don't understand until compile succeeded :). Often such software was still useable, most of the code almost never gets executed
    Lawrie Griffiths
    @lawrie
    @emard I currently only have the 12F 1-CPU version in saxonsoc-ulx3s-bin. I will put the 3-CPU 85F version in that repository tomorrow.
    Lawrie Griffiths
    @lawrie
    I have updated this with the 85F 3-CPU version now - https://github.com/lawrie/saxonsoc-ulx3s-bin/tree/master/Smp
    There is currently no SD card image. You need a sdcard with partition 1 fat32 and partition 2 ext2.
    You need dts, uImage and rootfs.cpio.uboot in the fat32 partition and you need to extract rootfs.tar to the ext partition.
    Lawrie Griffiths
    @lawrie
    There are two images that need to be written to flash. I have updated the u-boot one to include 3 CPUs. That works for both the 12F and the 85F version.
    For the 12F version you need to rename dtb.12f to dtb in the (root of the) fat32 partition.
    Only uart works. @Dolu1990 is currently getting a proper Linux VGA console working, so my hdmi text console which was driven from the bios is not supported. When the VGA console works, we should be able to add an VGA to HDMI verilog module as a SpinalHDL BlackBox.
    Lawrie Griffiths
    @lawrie
    My PS/2 and USB consoles or also not supported. The best solution there would be full USB support.
    The 85F version assumes 64MB of memory and the 12F version, 32MB.
    Paul Ruiz
    @pnru_gitlab

    @pnru_gitlab @emard I finished the QL sound with an attempt at everything (increments, wrap, random, fuzz), but I don't know how close to the original it is.

    @lawrie That is cool! I think @Speccery has a working QL, maybe he can tell if the sound is anything like that of the original hardware. If we add write capability to the microdrive emulation it will be the best QL implementation on FPGA that I know of. Later in October I will have time to help with that.

    Lawrie Griffiths
    @lawrie
    I suspect that I will need help with that from you and @emard.
    Paul Ruiz
    @pnru_gitlab

    @pnru_gitlab @emard I have started looking at riscv_lcc. It is not straightforward to cross-compile. Some parts (such as lburg) seem to be ...

    @lawrie Here, too, I hope to have time in October to help on getting a tool chain in place that works for Risc-V systems. I would find it cool to see an ancient Unix running on a Risc-V CPU/system.

    I can see that you would first build a cross-compiler with gcc and then a native one using the cross-compiler. The native build requires a matching C library. This may require some hand work to get right. I would expect that this C library does not need to be very big. If you get stuck with this, let me know and I'll see if I can figure it out.