RISC-V FPGA Board - increase memory in DTS file

Jagan Sivakumar jagansua92 at gmail.com
Tue Jan 25 00:51:11 PST 2022


HI Team

I'm working on updating the FPGA board memory available within the
RISC-V Linux operating system from 120 MB to a higher value.
The board currently has a DDR4 2GB memory chip inside it.

The DTS file's current settings for memory are shown below and it is
working fine.

memory at 80000000 {
device_type = "memory";
reg = <0x00000000 0x80000000 0x00000000 0x10000000>;
}

When I update the memory settings to double it as shown below, the
Linux isn't booting. The DTS file configuration is printed on screen
and it hangs after that step. Attached log for reference

memory at 80000000 {
device_type = "memory";
reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
}

Note: When i decreases the memory the values are reflecting in RAM
size and its working

-- 
Regards
Jagan Sivakumar
-------------- next part --------------
BBL not working log:
===========================================================================================================

Supports F or D or both...
                          The value of mstatus id 00006000(Hex)

                                       ./((*
                                   ,(((((,
                               *((((((,
                          ./(((((((,
                      ./((((((((*
                   *(((((((((/
               .(((((((((((,
            ,((((((((((((/
          ((((((((((((((/
         .((((((((((((((/
             *(((((((((((.
                  /(((((((.
                ,.     *(((/
                    *((,     ,/.
                      ((((((/.
                       ((((((((((/
                        (((((((((((((/
                        ((((((((((((((.
                       ((((((((((((/
                     *((((((((((*
                   ((((((((((.
                /((((((((*
             *(((((((,
          *((((((.
      .(((((.
  ./(((*
  .
                    SHAKTI PROCESSORS
 {
  #address-cells = <0x00000002>;
  #size-cells = <0x00000002>;
  compatible = "shakti,spike-bare-dev";
  model = "shakti,spike-bare";
  cpus {
    #address-cells = <0x00000001>;
    #size-cells = <0x00000000>;
    timebase-frequency = <0x00008000>;
    cpu at 0 {
      device_type = "cpu";
      reg = <0x00000000>;
      status = "okay";
      compatible = "riscv";
      riscv,isa = "rv64imafdc";
      mmu-type = "riscv,sv39";
      clock-frequency = <0x02faf080>;
      interrupt-controller {
        #interrupt-cells = <0x00000001>;
        interrupt-controller;
        compatible = "riscv,cpu-intc";
        phandle = <0x00000001>;
      }
    }
  }
  memory at 80000000 {
    device_type = "memory";
    reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
  }
  soc {
    #address-cells = <0x00000002>;
    #size-cells = <0x00000002>;
    compatible = "shakti,spike-bare-soc", "simple-bus";
    ranges;
    interrupt-controller at c000000 {
      #interrupt-cells = <0x00000002>;
      compatible = "riscv,plic0";
      interrupt-controller;
      reg = <0x00000000 0x0c000000 0x00000000 0x04000000>;
      interrupts-extended = <0x00000001 0xffffffff 0x00000001 0x00000009>;
      reg-names = "control";
      riscv,max-priority = <0x00000007>;
      riscv,ndev = <0x0000001d>;
      phandle = <0x00000002>;
    }
    ethernet at 44000 {
      #address-cells = <0x00000002>;
      #size-cells = <0x00000002>;
      device_type = "network";
      compatible = <0x786c6e78 0x2c787073 0x2d657468 0x65726e65 0x746c6974 0x652d332e 0x30302e61 0x00786c6e 0x782c7870 0x732d6574 0x6865726e 0x65746c69 0x74652d31 0x2e30302e>;
      interrupt-parent = <0x00000002>;
      interrupts = <0x0000001d 0x00000001>;
      local-mac-address = <0x000a3500>;
      phy-handle = <0x00000003>;
      reg = <0x00000000 0x00044000 0x00000000 0x00004000>;
      xlnx,duplex = <0x00000001>;
      xlnx,include-global-buffers = <0x00000001>;
      xlnx,include-internal-loopback = <0x00000001>;
      xlnx,include-mdio = <0x00000001>;
      xlnx,instance = <0x6178695f 0x65746865 0x726e6574 0x6c697465 0x5f696e73>;
      xlnx,rx-ping-pong = <0x00000001>;
      xlnx,s-axi-id-width = <0x00000001>;
      xlnx,tx-ping-pong = <0x00000001>;
      threshold = <0x00000040>;
      sensitivity = <0x00000006>;
      mdio {
        #address-cells = <0x00000001>;
        #size-cells = <0x00000000>;
        phy at 1 {
          device_type = "ethernet-phy";
          compatible = <0x65746865 0x726e6574 0x2d706879 0x2d696565 0x65383032 0x2e332d63>;
          ti,rx-internal-delay = <0x3b9aca00>;
          ti,tx-internal-delay = <0x3b9aca00>;
          ti,fifo-depth = <0x00001000>;
          reg = <0x00000001>;
          status = "okay";
          phandle = <0x00000003>;
        }
      }
    }
    oscillator {
      #clock-cells = <0x00000000>;
      compatible = "fixed-clock";
      clock-frequency = <0x02faf080>;
      phandle = <0x00000004>;
    }
    spi at 20100 {
      compatible = "shakti,spi1";
      reg = <0x00000000 0x00020100 0x00000000 0x00000100>;
      clocks = <0x00000004>;
      shakti,controller = <0x00000001>;
      shakti,spi-frequency = <0x001e8480>;
      shakti,lsb-first = <0x00000000>;
      shakti,communication-mode = <0x00000003>;
      shakti,cpha = <0x00000000>;
      shakti,cpol = <0x00000000>;
      shakti,cs-high = <0x00000001>;
      shakti,fifo-depth = <0x0000001f>;
      mmc-slot at 0 {
        compatible = "mmc-spi-slot";
        reg = <0x00000000>;
        voltage-ranges = <0x00000ce4 0x00000ce4>;
        spi-max-frequency = <0x002625a0>;
      }
    }
    uart at 11300 {
      compatible = "shakti,uart0";
      reg = <0x00000000 0x00011300 0x00000000 0x00000100>;
    }
    uart at 11400 {
      compatible = "shakti,uart1";
      reg = <0x00000000 0x00011400 0x00000000 0x00000100>;
    }
  }
}
The value of mstatus at the enter of enter_supervisor_mode is 0000000b(Hex)
                                                                           The value of mstatus id 0000280b(Hex)


BBL working log:
===========================================================================================================

Supports F or D or both...
                          The value of mstatus id 00006000(Hex)

                                       ./((*
                                   ,(((((,
                               *((((((,
                          ./(((((((,
                      ./((((((((*
                   *(((((((((/
               .(((((((((((,
            ,((((((((((((/
          ((((((((((((((/
         .((((((((((((((/
             *(((((((((((.
                  /(((((((.
                ,.     *(((/
                    *((,     ,/.
                      ((((((/.
                       ((((((((((/
                        (((((((((((((/
                        ((((((((((((((.
                       ((((((((((((/
                     *((((((((((*
                   ((((((((((.
                /((((((((*
             *(((((((,
          *((((((.
      .(((((.
  ./(((*
  .
                    SHAKTI PROCESSORS
 {
  #address-cells = <0x00000002>;
  #size-cells = <0x00000002>;
  compatible = "shakti,spike-bare-dev";
  model = "shakti,spike-bare";
  cpus {
    #address-cells = <0x00000001>;
    #size-cells = <0x00000000>;
    timebase-frequency = <0x00008000>;
    cpu at 0 {
      device_type = "cpu";
      reg = <0x00000000>;
      status = "okay";
      compatible = "riscv";
      riscv,isa = "rv64imafdc";
      mmu-type = "riscv,sv39";
      clock-frequency = <0x02faf080>;
      interrupt-controller {
        #interrupt-cells = <0x00000001>;
        interrupt-controller;
        compatible = "riscv,cpu-intc";
        phandle = <0x00000001>;
      }
    }
  }
  memory at 80000000 {
    device_type = "memory";
    reg = <0x00000000 0x80000000 0x00000000 0x10000000>;
  }
  soc {
    #address-cells = <0x00000002>;
    #size-cells = <0x00000002>;
    compatible = "shakti,spike-bare-soc", "simple-bus";
    ranges;
    interrupt-controller at c000000 {
      #interrupt-cells = <0x00000002>;
      compatible = "riscv,plic0";
      interrupt-controller;
      reg = <0x00000000 0x0c000000 0x00000000 0x04000000>;
      interrupts-extended = <0x00000001 0xffffffff 0x00000001 0x00000009>;
      reg-names = "control";
      riscv,max-priority = <0x00000007>;
      riscv,ndev = <0x0000001d>;
      phandle = <0x00000002>;
    }
    ethernet at 44000 {
      #address-cells = <0x00000002>;
      #size-cells = <0x00000002>;
      device_type = "network";
      compatible = <0x786c6e78 0x2c787073 0x2d657468 0x65726e65 0x746c6974 0x652d332e 0x30302e61 0x00786c6e 0x782c7870 0x732d6574 0x6865726e 0x65746c69 0x74652d31 0x2e30302e>;
      interrupt-parent = <0x00000002>;
      interrupts = <0x0000001d 0x00000001>;
      local-mac-address = <0x000a3500>;
      phy-handle = <0x00000003>;
      reg = <0x00000000 0x00044000 0x00000000 0x00004000>;
      xlnx,duplex = <0x00000001>;
      xlnx,include-global-buffers = <0x00000001>;
      xlnx,include-internal-loopback = <0x00000001>;
      xlnx,include-mdio = <0x00000001>;
      xlnx,instance = <0x6178695f 0x65746865 0x726e6574 0x6c697465 0x5f696e73>;
      xlnx,rx-ping-pong = <0x00000001>;
      xlnx,s-axi-id-width = <0x00000001>;
      xlnx,tx-ping-pong = <0x00000001>;
      threshold = <0x00000040>;
      sensitivity = <0x00000006>;
      mdio {
        #address-cells = <0x00000001>;
        #size-cells = <0x00000000>;
        phy at 1 {
          device_type = "ethernet-phy";
          compatible = <0x65746865 0x726e6574 0x2d706879 0x2d696565 0x65383032 0x2e332d63>;
          ti,rx-internal-delay = <0x3b9aca00>;
          ti,tx-internal-delay = <0x3b9aca00>;
          ti,fifo-depth = <0x00001000>;
          reg = <0x00000001>;
          status = "okay";
          phandle = <0x00000003>;
        }
      }
    }
    oscillator {
      #clock-cells = <0x00000000>;
      compatible = "fixed-clock";
      clock-frequency = <0x02faf080>;
      phandle = <0x00000004>;
    }
    spi at 20100 {
      compatible = "shakti,spi1";
      reg = <0x00000000 0x00020100 0x00000000 0x00000100>;
      clocks = <0x00000004>;
      shakti,controller = <0x00000001>;
      shakti,spi-frequency = <0x001e8480>;
      shakti,lsb-first = <0x00000000>;
      shakti,communication-mode = <0x00000003>;
      shakti,cpha = <0x00000000>;
      shakti,cpol = <0x00000000>;
      shakti,cs-high = <0x00000001>;
      shakti,fifo-depth = <0x0000001f>;
      mmc-slot at 0 {
        compatible = "mmc-spi-slot";
        reg = <0x00000000>;
        voltage-ranges = <0x00000ce4 0x00000ce4>;
        spi-max-frequency = <0x002625a0>;
      }
    }
    uart at 11300 {
      compatible = "shakti,uart0";
      reg = <0x00000000 0x00011300 0x00000000 0x00000100>;
    }
    uart at 11400 {
      compatible = "shakti,uart1";
      reg = <0x00000000 0x00011400 0x00000000 0x00000100>;
    }
  }
}
The value of mstatus at the enter of enter_supervisor_mode is 0000000b(Hex)
                                                                           The value of mstatus id 0000280b(Hex)
                                                                                                                [    0.000000] OF: fdt: No chosen node found, continuing without
[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 5.5.0-rc1-00033-gbe72b08baf43 (socv1 at socv1-OptiPlex-7450-AIO) (gcc version 11.1.0 (GCC)) #1 Sun Jan 16 22:16:01 IST 2022
[    0.000000] initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000080200000-0x000000008fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x000000008fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000008fffffff]
[    0.000000] software IO TLB: mapped [mem 0x8bc7c000-0x8fc7c000] (64MB)
[    0.000000] elf_hwcap is 0x112d
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 64135
[    0.000000] Kernel command line: 
[    0.000000] Dentry cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.000000] Sorting __ex_table...
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 174816K/260096K available (3796K kernel code, 196K rwdata, 684K rodata, 10412K init, 233K bss, 85280K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[    0.000000] plic: mapped 29 interrupts with 1 handlers for 2 contexts.
[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1ef4687b1, max_idle_ns: 112843571739654 ns
[    0.001098] sched_clock: 64 bits at 32kHz, resolution 30517ns, wraps every 70368744171142ns
[    5.886962] printk: console [hvc0] enabled
[    6.034759] Calibrating delay loop (skipped), value calculated using timer frequency.. 0.06 BogoMIPS (lpj=131)
[    6.390838] pid_max: default: 32768 minimum: 301
[    6.591644] Mount-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[    6.814727] Mountpoint-cache hash table entries: 512 (order: 0, 4096 bytes, linear)
[    7.330780] devtmpfs: initialized
[    7.723510] random: get_random_bytes called from setup_net+0x54/0x1e4 with crng_init=0
[    7.984283] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    8.305999] futex hash table entries: 256 (order: 0, 6144 bytes, linear)
[    8.595031] NET: Registered protocol family 16
[    9.673400] clocksource: Switched to clocksource riscv_clocksource
[   10.141082] NET: Registered protocol family 2
[   10.359191] tcp_listen_portaddr_hash hash table entries: 256 (order: 0, 4096 bytes, linear)
[   10.652008] TCP established hash table entries: 2048 (order: 2, 16384 bytes, linear)
[   10.929992] TCP bind hash table entries: 2048 (order: 2, 16384 bytes, linear)
[   11.179870] TCP: Hash tables configured (established 2048 bind 2048)
[   11.415313] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[   11.634307] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[   11.917968] NET: Registered protocol family 1
[   29.714111] workingset: timestamp_bits=62 max_order=16 bucket_order=0
[   36.863281] ntfs: driver 2.1.32 [Flags: R/W DEBUG].
[   37.198394] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[   37.448181] io scheduler mq-deadline registered
[   37.595520] io scheduler kyber registered
[   37.829956] io scheduler bfq registered
[   50.317749] shakti_spi 20100.spi: Shakti SPI Driver initialized
[   50.749816] libphy: Fixed MDIO Bus: probed
[   50.889617] xilinx_emaclite 44000.ethernet: Device Tree Probing
[   51.119598] libphy: Xilinx Emaclite MDIO: probed
[   51.293762] xilinx_emaclite 44000.ethernet: MAC address is now 00:0a:35:00:00:00
[   51.678558] xilinx_emaclite 44000.ethernet: Xilinx EmacLite at 0x00044000 mapped to 0x04008000, irq=29
[   52.164031] mmc_spi spi0.0: SD/MMC host mmc0, no DMA, no WP, no poweroff, cd polling
[   52.521148] NET: Registered protocol family 17
[   54.543609] Freeing unused kernel memory: 10412K
[   54.675720] This architecture does not have kernel memory protection.
[   54.921173] Run /init as init process
[   55.446960] mmc0: host does not support reading read-only switch, assuming write-enable
[   55.725402] mmc0: new SDXC card on SPI
[   56.422027] mmcblk0: mmc0:0000 SD64G 59.5 GiB 
[   57.577026]  mmcblk0: p1 p2
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Starting mdev... OK
modprobe: can't change directory to '/lib/modules': No such file or directory
Saving random seed: [  361.256164] random: dd: uninitialized urandom read (512 bytes read)
OK
Starting network plug daemon: /etc/netplug.d/netplug eth0 probe -> pid 68
[  367.193572] xilinx_emaclite 44000.ethernet eth0: Link is Down
/etc/netplug.d/netplug eth1 probe -> pid 69
/etc/netplug.d/netplug eth2 probe -> pid 70
/etc/netplug.d/netplug eth3 probe -> pid 71
/etc/netplug.d/netplug eth4 probe -> pid 72
/etc/netplug.d/netplug eth5 probe -> pid 73
/etc/netplug.d/netplug eth6 probe -> pid 74
/etc/netplug.d/netplug eth7 probe -> pid 75
/etc/netplug.d/netplug eth8 probe -> pid 76
/etc/netplug.d/netplug eth9 probe -> pid 77
/etc/netplug.d/netplug eth10 probe -> pid 78
/etc/netplug.d/netplug eth11 probe -> pid 79
/etc/netplug.d/netplug eth12 probe -> pid 80
[  387.032012] xilinx_emaclite 44000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
/etc/netplug.d/netplug eth13 probe -> pid 81
/etc/netplug.d/netplug eth14 probe -> pid 82
/etc/netplug.d/netplug eth15 probe -> pid 83

Starting network: OK
Starting dropbear sshd: OK

Welcome to Buildroot



More information about the linux-riscv mailing list