英文:
Yocto ad7768-1 device driver not creating device file
问题
I am trying to create a custom Linux image with Yocto, for use with de10-nano and cn0540. However, after loading the correct device tree and enabling the device driver, no device file is created.
dmesg
shows nothing related to ad7768-1
or iio
.
The correct HDL is loaded on the FPGA.
The kernel I'm using comes from meta-altera.
I've made a kernel configuration fragment ad7768-1.cfg
,
CONFIG_IIO_BUFFER=y
# CONFIG_IIO_BUFFER_CB is not set
# CONFIG_IIO_BUFFER_DMA is not set
# CONFIG_IIO_BUFFER_DMAENGINE is not set
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=y
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
CONFIG_AD7768_1=y
#
# Triggers - standalone
#
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
# end of Triggers - standalone
and apply it with a kernel .bbappend file.
Checking bitbake -c menuconfig virtual/kernel
after building shows ad7768-1 to be enabled.
I've confirmed the correct device tree is loaded by looking in /sys/firmware/devicetree/base/
.
Yet, there is no iio
device in /dev/
or /sys/bus/iio/devices/
, shouldn't the driver create the device files because compatible = "adi,ad7768-1";
is in the device tree?
EDIT:
After changing ad7768-1.cfg
to:
CONFIG_IIO_BUFFER=y
# CONFIG_IIO_BUFFER_CB is not set
# CONFIG_IIO_BUFFER_DMA is not set
# CONFIG_IIO_BUFFER_DMAENGINE is not set
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=y
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
CONFIG_AD7768_1=y
CONFIG_SPI_AXI_SPI_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_AXI_DMAC=y
#
# Triggers - standalone
#
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
# end of Triggers - standalone
the device is no longer able to boot, with dmesg being:
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.13.0-altera (oe-user@oe-host) (arm-poky-linux-gnueabi-gcc (GCC) 11.3.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP Mon Aug 30 08:24:45 UTC 2021
[ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
[ 0.000000] ...
[ 1.642505] CPU0: stopping
[ 1.645285] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G D 5.13.0-altera #1
[ 1.653217] Hardware name: Altera SOCFPGA
[ 1.657244] ...
[ 1.624264] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 1.634740] CPU0: stopping
[ 1.645285] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G D 5.13.0-altera #1
[ 1.653217] Hardware name: Altera SOCFPGA
[ 1.657244] ...
英文:
I am trying to create a custom Linux image with Yocto, for use with de10-nano and cn0540. However, after loading the correct device tree and enabling the device driver, no device file is created.
dmesg
shows nothing related to ad7768-1
or iio
.
The correct HDL is loaded on the FPGA.
The kernel I'm using comes from meta-altera.
I've made a kernel configuration fragment ad7768-1.cfg
,
CONFIG_IIO_BUFFER=y
# CONFIG_IIO_BUFFER_CB is not set
# CONFIG_IIO_BUFFER_DMA is not set
# CONFIG_IIO_BUFFER_DMAENGINE is not set
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=y
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
CONFIG_AD7768_1=y
#
# Triggers - standalone
#
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
# end of Triggers - standalone
and apply it with a kernel .bbappend file.
Checking bitbake -c menuconfig virtual/kernel
after building shows ad7768-1 to be enabled.
I've confirmed the correct device tree is loaded by looking in /sys/firmware/devicetree/base/
.
Yet, there is no iio
device in /dev/
or /sys/bus/iio/devices/
, shouldn't the driver create the device files because compatible = "adi,ad7768-1";
is in the device tree?
EDIT:
After changing ad7768-1.cfg
to:
CONFIG_IIO_BUFFER=y
# CONFIG_IIO_BUFFER_CB is not set
# CONFIG_IIO_BUFFER_DMA is not set
# CONFIG_IIO_BUFFER_DMAENGINE is not set
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=y
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
CONFIG_AD7768_1=y
CONFIG_SPI_AXI_SPI_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_AXI_DMAC=y
#
# Triggers - standalone
#
# CONFIG_IIO_INTERRUPT_TRIGGER is not set
# CONFIG_IIO_SYSFS_TRIGGER is not set
# end of Triggers - standalone
the device is no longer able to boot, with dmesg being:
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 5.13.0-altera (oe-user@oe-host) (arm-poky-linux-gnueabi-gcc (GCC) 11.3.0, GNU ld (GNU Binutils) 2.38.20220708) #1 SMP Mon Aug 30 08:24:45 UTC 2021
[ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: Terasic DE10-Nano
[ 0.000000] earlycon: uart0 at MMIO32 0xffc02000 (options '115200n8')
[ 0.000000] printk: bootconsole [uart0] enabled
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000000000000-0x000000002fffffff]
[ 0.000000] HighMem [mem 0x0000000030000000-0x000000003fffffff]
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000000000-0x000000003fffffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000003fffffff]
[ 0.000000] percpu: Embedded 19 pages/cpu s45388 r8192 d24244 u77824
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 260608
[ 0.000000] Kernel command line: root=/dev/mmcblk0p3 rootwait rw earlycon console=,115200
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[ 0.000000] Memory: 1026112K/1048576K available (9216K kernel code, 754K rwdata, 1852K rodata, 1024K init, 141K bss, 22464K reserved, 0K cma-reserved, 262144K highmem)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[ 0.000000] ftrace: allocating 29229 entries in 58 pages
[ 0.000000] ftrace: allocated 58 pages with 4 groups
[ 0.000000] trace event string verifier disabled
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] Rude variant of Tasks RCU enabled.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] L2C-310 erratum 769419 enabled
[ 0.000000] L2C-310 enabling early BRESP for Cortex-A9
[ 0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[ 0.000000] L2C-310 ID prefetch enabled, offset 8 lines
[ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled
[ 0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB
[ 0.000000] L2C-310: CACHE_ID 0x410030c9, AUX_CTRL 0x76460001
[ 0.000000] random: get_random_bytes called from start_kernel+0x3c4/0x568 with crng_init=0
[ 0.000000] clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604467 ns
[ 0.000001] sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 21474836475ns
[ 0.008039] Switching to timer-based delay loop, resolution 10ns
[ 0.014526] Console: colour dummy device 80x30
[ 0.019065] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=1000000)
[ 0.029740] pid_max: default: 32768 minimum: 301
[ 0.034469] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.041757] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes, linear)
[ 0.050308] CPU: Testing write buffer coherency: ok
[ 0.055318] CPU0: Spectre v2: using BPIALL workaround
[ 0.060606] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[ 0.066961] Setting up static identity map for 0x100000 - 0x100060
[ 0.073392] rcu: Hierarchical SRCU implementation.
[ 0.078571] smp: Bringing up secondary CPUs ...
[ 0.083771] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[ 0.083788] CPU1: Spectre v2: using BPIALL workaround
[ 0.094748] smp: Brought up 1 node, 2 CPUs
[ 0.098906] SMP: Total of 2 processors activated (400.00 BogoMIPS).
[ 0.105291] CPU: All CPU(s) started in SVC mode.
[ 0.110513] devtmpfs: initialized
[ 0.119534] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[ 0.127540] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.137559] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
[ 0.145276] NET: Registered protocol family 16
[ 0.150599] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.158595] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[ 0.166740] hw-breakpoint: maximum watchpoint size is 4 bytes.
[ 0.192619] wait_for_initramfs() called before rootfs_initcalls
[ 0.201589] debugfs: Directory 'fixed-supply' with parent 'regulator' already present!
[ 0.209888] vgaarb: loaded
[ 0.212888] SCSI subsystem initialized
[ 0.216883] usbcore: registered new interface driver usbfs
[ 0.222531] usbcore: registered new interface driver hub
[ 0.227970] usbcore: registered new device driver usb
[ 0.233290] usb_phy_generic soc:usbphy: supply vcc not found, using dummy regulator
[ 0.241996] i2c 0-0039: Fixing up cyclic dependency with ff290000.axi_hdmi
[ 0.249733] pps_core: LinuxPPS API ver. 1 registered
[ 0.254790] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[ 0.264095] PTP clock support registered
[ 0.268229] FPGA manager framework
[ 0.272779] clocksource: Switched to clocksource timer1
[ 0.316500] NET: Registered protocol family 2
[ 0.321050] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
[ 0.329536] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[ 0.337971] TCP established hash table entries: 8192 (order: 3, 32768 bytes, linear)
[ 0.345871] TCP bind hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 0.353201] TCP: Hash tables configured (established 8192 bind 8192)
[ 0.359666] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 0.366361] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
[ 0.373708] NET: Registered protocol family 1
[ 0.402941] RPC: Registered named UNIX socket transport module.
[ 0.408958] RPC: Registered udp transport module.
[ 0.413723] RPC: Registered tcp transport module.
[ 0.418495] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 0.424985] PCI: CLS 0 bytes, default 64
[ 0.951052] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
[ 0.960693] workingset: timestamp_bits=30 max_order=18 bucket_order=0
[ 0.973391] NFS: Registering the id_resolver key type
[ 0.978543] Key type id_resolver registered
[ 0.982805] Key type id_legacy registered
[ 0.986880] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 0.994163] ntfs: driver 2.1.32 [Flags: R/W].
[ 0.998770] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[ 1.005565] bounce: pool size: 64 pages
[ 1.009488] io scheduler mq-deadline registered
[ 1.014105] io scheduler kyber registered
[ 1.021050] 8<--- cut here ---
[ 1.024135] Unhandled fault: imprecise external abort (0x406) at 0x9c8a457f
[ 1.031190] pgd = (ptrval)
[ 1.033930] [9c8a457f] *pgd=00000000
[ 1.037552] Internal error: : 406 [#1] SMP ARM
[ 1.042059] Modules linked in:
[ 1.045139] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.13.0-altera #1
[ 1.051764] Hardware name: Altera SOCFPGA
[ 1.055817] PC is at axi_dmac_probe+0xe0/0x72c
[ 1.060335] LR is at clk_enable_unlock+0x68/0xe8
[ 1.065001] pc : [<c05c31ac>] lr : [<c05b34d0>] psr: 60000013
[ 1.071362] sp : c1113d28 ip : c1113cf8 fp : c1113d84
[ 1.076641] r10: 00000000 r9 : c124a810 r8 : c1112000
[ 1.081939] r7 : c1824fc0 r6 : c124a800 r5 : 00000000 r4 : c1856a40
[ 1.088550] r3 : 00000000 r2 : 00000000 r1 : a0000013 r0 : 00000000
[ 1.095162] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 1.102407] Control: 10c5387d Table: 0000404a DAC: 00000051
[ 1.108222] Register r0 information: NULL pointer
[ 1.112979] Register r1 information: non-paged memory
[ 1.118107] Register r2 information: NULL pointer
[ 1.122871] Register r3 information: NULL pointer
[ 1.127635] Register r4 information: slab kmalloc-512 start c1856a00 pointer offset 64 size 512
[ 1.136489] Register r5 information: NULL pointer
[ 1.141254] Register r6 information: slab kmalloc-1k start c124a800 pointer offset 0 size 1024
[ 1.150002] Register r7 information: slab kmalloc-64 start c1824fc0 pointer offset 0 size 64
[ 1.158575] Register r8 information: non-slab/vmalloc memory
[ 1.164316] Register r9 information: slab kmalloc-1k start c124a800 pointer offset 16 size 1024
[ 1.173149] Register r10 information: NULL pointer
[ 1.178017] Register r11 information: non-slab/vmalloc memory
[ 1.183845] Register r12 information: non-slab/vmalloc memory
[ 1.189681] Process swapper/0 (pid: 1, stack limit = 0x(ptrval))
[ 1.195776] Stack: (0xc1113d28 to 0xc1114000)
[ 1.200198] 3d20: c034dd50 c034bddc 00000000 00000004 00000000 c1829800
[ 1.208501] 3d40: c182a420 00000000 c1113d7c c1113d58 c034f1f0 3e3e226c c124a810 00000000
[ 1.216803] 3d60: c124a810 c0d78e94 c0dd9fec 00000000 c0d78e94 00000000 c1113da4 c1113d88
[ 1.225088] 3d80: c061d1a4 c05c30d8 c124a810 c0dd9fe8 00000000 c0dd9fec c1113ddc c1113da8
[ 1.233381] 3da0: c061a674 c061d144 00000000 c0d78e94 c1113ddc c124a810 c0d78e94 c124a854
[ 1.241683] 3dc0: c0d78e94 00000000 c0c47854 c0dbd000 c1113df4 c1113de0 c061aae8 c061a58c
[ 1.249976] 3de0: c124a810 00000000 c1113e14 c1113df8 c061b168 c061aa7c 00000000 c0d78e94
[ 1.258261] 3e00: c124a810 00000000 c1113e34 c1113e18 c061b20c c061b0bc c0d78e94 c061b170
[ 1.266545] 3e20: c1112000 00000000 c1113e64 c1113e38 c0618334 c061b17c c1113e70 c107e858
[ 1.274820] 3e40: c11e1b34 3e3e226c c0d78e94 c1829800 00000000 c0d7fe18 c1113e74 c1113e68
[ 1.283113] 3e60: c0619efc c06182b8 c1113e9c c1113e78 c061989c c0619edc c0b49d4c c055ef5c
[ 1.291414] 3e80: c0d78e94 00000000 c0c23a54 ffffe000 c1113eb4 c1113ea0 c061bd44 c06197a0
[ 1.299716] 3ea0: c1112000 c0daef80 c1113ec4 c1113eb8 c061cea8 c061bcb8 c1113ed4 c1113ec8
[ 1.308017] 3ec0: c0c23a78 c061ce88 c1113f4c c1113ed8 c01021d4 c0c23a60 c0b08254 c0b08234
[ 1.316310] 3ee0: c0b08280 c0b1aa00 c0b08210 00000006 00000006 c1112000 c0c0043c 00000000
[ 1.324594] 3f00: 000000c6 c0b66ec4 00000000 00000000 c0c01268 c11c3829 c11c3831 3e3e226c
[ 1.332887] 3f20: c0dbd000 3e3e226c c11c3800 c0c726f0 c11c3800 00000007 c0c47834 000000c6
[ 1.341180] 3f40: c1113f94 c1113f50 c0c01330 c0102180 00000006 00000006 00000000 c0c0043c
[ 1.349472] 3f60: c0bccfbc c0c0043c c1113f8c 00000000 c0972fcc 00000000 00000000 00000000
[ 1.357765] 3f80: 00000000 00000000 c1113fac c1113f98 c0972fe4 c0c010d0 00000000 c0972fcc
[ 1.366075] 3fa0: 00000000 c1113fb0 c0100150 c0972fd8 00000000 00000000 00000000 00000000
[ 1.374375] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.382668] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[ 1.390963] Backtrace:
[ 1.393428] [<c05c30cc>] (axi_dmac_probe) from [<c061d1a4>] (platform_probe+0x6c/0xcc)
[ 1.401342] r10:00000000 r9:c0d78e94 r8:00000000 r7:c0dd9fec r6:c0d78e94 r5:c124a810
[ 1.409163] r4:00000000
[ 1.411685] [<c061d138>] (platform_probe) from [<c061a674>] (really_probe+0xf4/0x4f0)
[ 1.419603] r7:c0dd9fec r6:00000000 r5:c0dd9fe8 r4:c124a810
[ 1.425288] [<c061a580>] (really_probe) from [<c061aae8>] (driver_probe_device+0x78/0xd0)
[ 1.433465] r10:c0dbd000 r9:c0c47854 r8:00000000 r7:c0d78e94 r6:c124a854 r5:c0d78e94
[ 1.441259] r4:c124a810
[ 1.443789] [<c061aa70>] (driver_probe_device) from [<c061b168>] (device_driver_attach+0xb8/0xc0)
[ 1.452637] r5:00000000 r4:c124a810
[ 1.456248] [<c061b0b0>] (device_driver_attach) from [<c061b20c>] (__driver_attach+0x9c/0x12c)
[ 1.464837] r7:00000000 r6:c124a810 r5:c0d78e94 r4:00000000
[ 1.470470] [<c061b170>] (__driver_attach) from [<c0618334>] (bus_for_each_dev+0x88/0xc8)
[ 1.478731] r7:00000000 r6:c1112000 r5:c061b170 r4:c0d78e94
[ 1.484389] [<c06182ac>] (bus_for_each_dev) from [<c0619efc>] (driver_attach+0x2c/0x30)
[ 1.492373] r7:c0d7fe18 r6:00000000 r5:c1829800 r4:c0d78e94
[ 1.498092] [<c0619ed0>] (driver_attach) from [<c061989c>] (bus_add_driver+0x108/0x1f0)
[ 1.506071] [<c0619794>] (bus_add_driver) from [<c061bd44>] (driver_register+0x98/0x128)
[ 1.514167] r7:ffffe000 r6:c0c23a54 r5:00000000 r4:c0d78e94
[ 1.519809] [<c061bcac>] (driver_register) from [<c061cea8>] (__platform_driver_register+0x2c/0x34)
[ 1.528873] r5:c0daef80 r4:c1112000
[ 1.532483] [<c061ce7c>] (__platform_driver_register) from [<c0c23a78>] (axi_dmac_driver_init+0x24/0x28)
[ 1.541938] [<c0c23a54>] (axi_dmac_driver_init) from [<c01021d4>] (do_one_initcall+0x60/0x250)
[ 1.550535] [<c0102174>] (do_one_initcall) from [<c0c01330>] (kernel_init_freeable+0x26c/0x2cc)
[ 1.559319] r8:000000c6 r7:c0c47834 r6:00000007 r5:c11c3800 r4:c0c726f0
[ 1.565989] [<c0c010c4>] (kernel_init_freeable) from [<c0972fe4>] (kernel_init+0x18/0x12c)
[ 1.574239] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:c0972fcc
[ 1.582042] r4:00000000
[ 1.584572] [<c0972fcc>] (kernel_init) from [<c0100150>] (ret_from_fork+0x14/0x24)
[ 1.592120] Exception stack(0xc1113fb0 to 0xc1113ff8)
[ 1.597231] 3fa0: 00000000 00000000 00000000 00000000
[ 1.605412] 3fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.613677] 3fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 1.620264] r5:c0972fcc r4:00000000
[ 1.623870] Code: e5933000 e1a02003 e50b3040 f57ff04f (e3a03e36)
[ 1.630057] ---[ end trace 6420cf9c4e87884e ]---
[ 1.634740] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[ 1.642505] CPU0: stopping
[ 1.645285] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G D 5.13.0-altera #1
[ 1.653217] Hardware name: Altera SOCFPGA
[ 1.657244] Backtrace:
[ 1.659700] [<c096a3ec>] (dump_backtrace) from [<c096a694>] (show_stack+0x20/0x24)
[ 1.667575] r7:c1003ac0 r6:60000193 r5:00000000 r4:c0d76f10
[ 1.673459] [<c096a674>] (show_stack) from [<c096dc8c>] (dump_stack+0x9c/0xb0)
[ 1.680980] [<c096dbf0>] (dump_stack) from [<c010f340>] (do_handle_IPI+0x2e4/0x318)
[ 1.688932] r7:c1003ac0 r6:00000000 r5:c0daf020 r4:c0dbd2c8
[ 1.694573] [<c010f05c>] (do_handle_IPI) from [<c010f39c>] (ipi_handler+0x28/0x30)
[ 1.702428] r9:c0d01ed0 r8:c1048800 r7:c1003ac0 r6:00000014 r5:c0d043fc r4:c1073c00
[ 1.710135] [<c010f374>] (ipi_handler) from [<c0182980>] (handle_percpu_devid_irq+0x9c/0x224)
[ 1.719003] [<c01828e4>] (handle_percpu_devid_irq) from [<c017bf64>] (__handle_domain_irq+0x8c/0xe0)
[ 1.728510] r7:00000001 r6:00000000 r5:00000000 r4:c0c7c958
[ 1.734402] [<c017bed8>] (__handle_domain_irq) from [<c0101398>] (gic_handle_irq+0x8c/0xa0)
[ 1.743122] r9:c0d01ed0 r8:f080210c r7:c0c7c964 r6:f0802100 r5:c0d76fd0 r4:c0d043fc
[ 1.751174] [<c010130c>] (gic_handle_irq) from [<c0100b4c>] (__irq_svc+0x6c/0x90)
[ 1.758935] Exception stack(0xc0d01ed0 to 0xc0d01f18)
[ 1.764176] 1ec0: 00000000 00000000 00000350 c011ae20
[ 1.772694] 1ee0: c0dafe00 00000000 c0d03d0c c0d03d4c c0daea05 c0b08e1c c0c47a60 c0d01f2c
[ 1.781210] 1f00: c0d01f30 c0d01f20 c0108364 c0108368 60000013 ffffffff
[ 1.788103] r9:c0d00000 r8:c0daea05 r7:c0d01f04 r6:ffffffff r5:60000013 r4:c0108368
[ 1.796121] [<c0108320>] (arch_cpu_idle) from [<c097abe8>] (default_idle_call+0x4c/0xf4)
[ 1.804537] [<c097ab9c>] (default_idle_call) from [<c015bda0>] (do_idle+0xd0/0x134)
[ 1.812512] r5:00000000 r4:c0d00000
[ 1.816226] [<c015bcd0>] (do_idle) from [<c015c124>] (cpu_startup_entry+0x28/0x2c)
[ 1.824115] r9:efffedc0 r8:00000000 r7:c0c47a60 r6:c0d00000 r5:c0d03cc0 r4:000000e1
[ 1.832176] [<c015c0fc>] (cpu_startup_entry) from [<c0972fc4>] (rest_init+0xbc/0xc4)
[ 1.840228] [<c0972f08>] (rest_init) from [<c0c00a7c>] (arch_call_rest_init+0x18/0x1c)
[ 1.848470] r5:c0d03cc0 r4:c0dbd068
[ 1.852193] [<c0c00a64>] (arch_call_rest_init) from [<c0c01028>] (start_kernel+0x530/0x568)
[ 1.860881] [<c0c00af8>] (start_kernel) from [<00000000>] (0x0)
[ 1.866790] r10:10c5387d r9:413fc090 r8:09ff5000 r7:00000000 r6:10c0387d r5:00000051
[ 1.874593] r4:c0c00330
[ 1.877233] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
答案1
得分: 0
以下是已翻译好的部分:
There ended up being a few steps to solve the problem.
解决问题最终需要经过几个步骤。
First was enabling CONFIG_AXI_DMAC
, CONFIG_DMA_VIRTUAL_CHANNELS
, CONFIG_SPI_AXI_SPI_ENGINE
and CONFIG_IIO_BUFFER_DMAENGINE
in the kernel config.
首先需要在内核配置中启用 CONFIG_AXI_DMAC
、CONFIG_DMA_VIRTUAL_CHANNELS
、CONFIG_SPI_AXI_SPI_ENGINE
和 CONFIG_IIO_BUFFER_DMAENGINE
。
Second was re-enabling the FPGA bridges after programming it. This was done by adding bridge enable
in U-boot's bootcmd
command.
其次,在对FPGA进行编程后,需要重新启用FPGA桥接器。这可以通过在U-boot的bootcmd
命令中添加bridge enable
来完成。
And lastly patching files with their Linux ADI counterpart.
最后,需要将文件与其Linux ADI对应文件进行修补。
File list:
文件列表:
buffer-dma.h
buffer-dmaengine.h
buffer_impl.h
consumer.h
iio.h
iio_core.h
iio-opaque.h
industrialio-buffer.c
industrialio-buffer-dma.c
industrialio-buffer-dmaengine.c
industrialio-core.c
industrialio-trigger.c
industrialio-trggered-buffer.c
inkern.c
/iio/types.h
/uaip/linux/iio/types.h
spi-axi-spi-engine.c
驱动程序现在可以正确加载并创建设备文件。
英文:
There ended up being a few steps to solve the problem.
First was enabling CONFIG_AXI_DMAC
, CONFIG_DMA_VIRTUAL_CHANNELS
, CONFIG_SPI_AXI_SPI_ENGINE
and CONFIG_IIO_BUFFER_DMAENGINE
in the kernel config.
Second was re-enabling the FPGA bridges after programming it. This was done by adding bridge enable
in U-boot's bootcmd
command.
And lastly patching files with their Linux ADI counterpart.
File list:
buffer-dma.h
buffer-dmaengine.h
buffer_impl.h
consumer.h
iio.h
iio_core.h
iio-opaque.h
industrialio-buffer.c
industrialio-buffer-dma.c
industrialio-buffer-dmaengine.c
industrialio-core.c
industrialio-trigger.c
industrialio-trggered-buffer.c
inkern.c
/iio/types.h
/uaip/linux/iio/types.h
spi-axi-spi-engine.c
The driver now loads correctly and creates the device file
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论