Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Lawrie Griffiths
    @lawrie
    Nanoseconds overflow after about 2 seconds on 32-bit systems.
    emard
    @emard
    hwclock is not likely to execute more than 2 seconds :). It's not related, but if possible I'd also like to try 12F 2-core version if you compile next time upload some 12F smp too
    full wraparound is 4.3s but for signed intverval comparison useable delay is 2.15s
    emard
    @emard
    clock_settime works
    Lawrie Griffiths
    @lawrie
    I am not sure if a 2-cpu system will fit on a 12f. I am trying it.
    emard
    @emard
    Ahaaa, it's not necessary dont worry, if it compiles great, if not, don't optimiize
    emard
    @emard
    I got segfault with atoi(argv[1]) wanted to convert string to integer, any other way? Still I can do it low-level though
    Lawrie Griffiths
    @lawrie
    This works (provided you give in an integer arg):
    #include <stdlib.h>
    
    int main(int argc, char *argv[]) {
      return atoi(argv[1]);
    }
    emard
    @emard
    I got segfault with this
      printf("argc %d\n", argc);
      if(argc > 0)
      {
        val=atoi(argv[1]);   
        printf("argv[1] %d\n", val);
      }
    oh but now I cant reproduce it! :)
    anyway consider it just a glitch...
    Lawrie Griffiths
    @lawrie
    It works for me. But there are obviously still some bug around.
    emard
    @emard
    If something more stubborn bug appears, I'll report, so far so good :)
    Paul Ruiz
    @pnru_gitlab
    I'm surprised get/set_time work in the above. If I understood correctly Risc-V32 Linux uses a 64-bit time type, but LCC does not have 64 bit types and its library defines time_t as 32-bit. Hence the above code passes a buffer with space for two 32-bit words, and the kernel then writes/reads three 32 bit words to/from that space. Maybe time_t is 32 bit on Risc-V32 Linux after all.
    Paul Ruiz
    @pnru_gitlab
    hwclock is not likely to execute more than 2 seconds :). full wraparound is 4.3s but for signed intverval comparison useable delay is 2.15s
    Not sure that is right. I think tv_nsec cycles from 0 to 999999999 and back to 0, increasing tv_sec atomically.
    Paul Ruiz
    @pnru_gitlab
    I got segfault with this if(argc > 0) That should maybe be if(argc > 1) and maybe that crashing test by accident did not have a valid pointer in argv[1].
    Dolu1990
    @Dolu1990
    I have a strange case with a 12F board, depending the seed i use in next-pnr, the design work, or bug in different manners. The FPGA is used as if it was a 25F. Could that be that the device sold as a 12F has broken logic in the 25F side, which depending the seed is hit ?
    emard
    @emard
    @pnru_gitlab I was setting only seconds to 1973 :) who knows for later dates
    @Dolu1990 no, 12F==25F
    David Shah
    @daveshah1
    Diamond just limits the total number of LUTs, afaik, so there isn't a '25F' side
    Sounds like some other bug tbh
    Your nextpnr is from the last few months right?
    Dolu1990
    @Dolu1990
    Ahhh, got it, diamond is allow to use lut of the FPGA without restrictions, until 12K
    thanks ^^
    I'm on next-pnr version 5fa10e1
    David Shah
    @daveshah1
    I would recommend updating nextpnr and trellis
    Dolu1990
    @Dolu1990
    which is quite old, hmm weird, i would have say from memory that it was a few months old XD
    will do ^^
    David Shah
    @daveshah1
    Some time around March/April I fixed a bug that would cause random failures, particularly for designs using certain IO pins
    Those IO pins happened to include some ULX3S SDRAM pins - since that fix I think reliability has improved
    Lawrie Griffiths
    @lawrie
    @emard The 2-core 12F did build. It look a very long time as it uses 95% of the slices. It is in Smp/bitstreams/ulx3s_12f_2core_saxonsoc.bit. It works for me with dtb.green85f as that has 2 cores and 32MB of memory defined.
    Dolu1990
    @Dolu1990
    @daveshah1 Ok thanks :)
    Lawrie Griffiths
    @lawrie
    The 2-core 12F passed the timing by the biggest margin I have seen: Info: Max frequency for clock '$glbnet$clocking_pll_clkout2': 56.98 MHz (PASS at 52.08 MHz).
    @pnru_gitlab I tried defining tv_nsec as two longs, but the second one was always 0.
    Dolu1990
    @Dolu1990
    @daveshah1 I think that was the issue, so far it seem fine ^^
    thanks
    David Shah
    @daveshah1
    Great!
    Paul Ruiz
    @pnru_gitlab
    @lawrie I don't think tv_nsec is the problem: it is 32 bits and always in the range 0 to 1000 million. It is tv_sec that is a 64 bit amount - but it will only overflow into the 33rd bit in 2038. So, if time_t is 64 bit on RV32 linux I would expect the kernel to write a word with the low half of tv_sec, a word with the high half (always zero this decade) and a word with the nano second fraction, always between 0 and 999,999,999 - words listed in increasing memory address order.
    Unix time today is around 1,300 million: https://time.is/Unix_time_now
    Paul Ruiz
    @pnru_gitlab
    1600 million
    Lawrie Griffiths
    @lawrie
    I think Linux is writing time_t as 32-bits, because when I had the structure defined as 3 longs, the first long got the seconds, the second the nanoseconds and the third zero. It is now two longs and the seconds and nanoseconds are correct.
    emard
    @emard
    @lawrie 2-core 12F boots up to printing this and stops. Do I need differrent dtb.12F ?
    [    4.343508] VFS: Mounted root (ext2 filesystem) readonly on device 179:2.
    [    4.379776] devtmpfs: mounted
    [    4.386410] Freeing unused kernel memory: 160K
    [    4.389858] This architecture does not have kernel memory protection.
    [    4.394635] Run /sbin/init as init process
    Lawrie Griffiths
    @lawrie
    Yes, you need to use dtb.green85f
    emard
    @emard
    :) will try
    Lawrie Griffiths
    @lawrie
    dtb.12f has one cpu defined. dtb.green85f has 32MB of memory and two CPUs.
    Building your own dtbs is easy. You only need dtc installed.
    emard
    @emard
    wow it booted and works!!!