Skip to content

Booting Linux #120

Description

@riscv-dev1

I am working with the ariane-sdk on the Xilinx KC705 FPGA platform.

I am trying to integrate custom hardware peripherals into the existing OpenPiton+Ariane setup. To enable the Linux kernel to recognize these new devices, I need to use a custom Device Tree Blob (DTB).

Current Behavior

When I boot the system, the Linux kernel appears to be receiving hardware configuration information dynamically, possibly derived from registers or a simple/default DTS embedded (RTL generated DTS) in the boot ROM/BBL (Boot Loader), rather than using a fixed, customized Device Tree.

**BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ariane-v0.7"
BR2_LINUX_KERNEL_PATCH="../configs/0099-Piton-SD-Driver.patch"
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME=""
BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="/home/calligo/ariane-sdk/rv64_platform.dts"

cd build && ../riscv-pk/configure --host=riscv64-unknown-elf CC=riscv64-unknown-linux-gnu-gcc OBJDUMP=riscv64-unknown-linux-gnu-objdump --with-payload=vmlinux --with-dts=--with-dts=$(DTS_FILE) --enable-logo --with-logo=../configs/logo.txt**

I made above configuration changes in sdk , DTS is compiling also added the dts flag in Makefile.

It should bring and detect 2 CPU cores as it enabled from FPGA but its taking only one core log is below also added in custom DTS also.

BOOT log:
copying block 65500 of 65536 blocks (99 %)
done!
bbl loader
[ 0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[ 0.000000] Linux version 5.1.0-rc7 (calligo@8f3e8cf4937c) (gcc version 8.2.0 (GCC)) #16 SMP Mon Dec 15 12:06:37 IST 2025
[ 0.000000] initrd not found or empty - disabling initrd
[ 0.000000] Zone ranges:
[ 0.000000] DMA32 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x00000000bfffffff]
[ 0.000000] software IO TLB: mapped [mem 0xbb1fe000-0xbf1fe000] (64MB)
[ 0.000000] elf_hwcap is 0x112d
[ 0.000000] percpu: Embedded 15 pages/cpu s24280 r8192 d28968 u61440
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 258055
[ 0.000000] Kernel command line: earlyprintk
[ 0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Sorting __ex_table...
[ 0.000000] Memory: 952128K/1046528K available (3710K kernel code, 229K rwdata, 1046K rodata, 6731K init, 797K bss, 94400K reserved, 0K cma-reserved)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0
[ 0.000000] plic: mapped 1 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: 0x171024e6b, max_idle_ns: 7052723236830 ns
[ 0.000186] sched_clock: 64 bits at 390kHz, resolution 2560ns, wraps every 8796093021440ns
[ 0.189278] printk: console [hvc0] enabled
[ 0.194160] Calibrating delay loop (skipped), value calculated using timer frequency.. 0.78 BogoMIPS (lpj=3906)
[ 0.204787] pid_max: default: 32768 minimum: 301
[ 0.215621] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.223344] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.247441] *** VALIDATE proc ***
[ 0.280555] rcu: Hierarchical SRCU implementation.
[ 0.300615] smp: Bringing up secondary CPUs ...
[ 0.305346] smp: Brought up 1 node, 1 CPU

[ 0.323430] devtmpfs: initialized
[ 0.350233] random: get_random_bytes called from setup_net+0x32/0x15c with crng_init=0
[ 0.363120] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.373890] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.393597] NET: Registered protocol family 16
[ 0.581496] usbcore: registered new interface driver usbfs
[ 0.589084] usbcore: registered new interface driver hub
[ 0.595898] usbcore: registered new device driver usb
[ 0.623155] clocksource: Switched to clocksource riscv_clocksource
[ 0.665743] NET: Registered protocol family 2
[ 0.690677] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes)
[ 0.700344] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.711165] TCP bind hash table entries: 8192 (order: 5, 131072 bytes)

Any pointers to the relevant Makefile, source file, or configuration variable would be greatly appreciated. Thank you!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions