如何在内核模块中使用SPI

问题描述

我正在为Linux内核空间编写一个发送SPI数据的模块。 当我尝试使用它时,我在内核日志中得到了错误,并且此后Linux没有响应。

我在Debian中使用Beaglebone黑色。

我做错了什么?

devSpiProtocol.c的代码

#include <linux/init.h>
#include <linux/err.h>
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/interrupt.h>
#include <linux/mutex.h>
#include <linux/kernel.h>
#include <linux/fcntl.h>
#include <linux/ioctl.h>
#include <asm/uaccess.h>
#include <linux/fs.h>
#include <linux/list.h>
#include <linux/slab.h>
#include <linux/compat.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/acpi.h>
#include <linux/spi/spi.h>
#include <linux/spi/spidev.h>
#include "../devSpiProtocolHeaders.h"

struct spidev_data {
    dev_t           devt;
    spinlock_t      spi_lock;
    struct spi_device   *spi;
    struct list_head    device_entry;

    /* TX/RX buffers are NULL unless this device is open (users > 0) */
    struct mutex        buf_lock;
    unsigned        users;
    u8          *tx_buffer;
    u8          *rx_buffer;
    u32         speed_hz;
};

static struct spi_device *spi;

int devSpiProtocol_cmd_read(char *text)
{
  printk(KERN_WARNING "devSpiProtocol_cmd_read: %s\n",text);
  return 0;
}
EXPORT_SYMBOL_GPL(devSpiProtocol_cmd_read);

int devSpiProtocol_cmd_write(char *text)
{
    char ch = 0x61;
    struct spi_transfer t = {
        .tx_buf     = &ch,.len        = sizeof(ch),.bits_per_word = 8,.speed_hz = 4000000,};
    struct spi_message  m;
    printk(KERN_WARNING "devSpiProtocol_cmd_write: %s\n",text);
    spi_message_init(&m);
    spi_message_add_tail(&t,&m);
    spi_sync(spi,&m);
    //spi_write(spi,&ch,sizeof(ch));
    return 0;
}
EXPORT_SYMBOL_GPL(devSpiProtocol_cmd_write);

static int __init devSpiProtocol_init(void)
{
    int ret;
    const char *device = "/dev/spidev0.0";
    struct file* fDevice = filp_open(device,O_RDWR,0);
    struct spidev_data* spi_device = fDevice->private_data;
    spi =  spi_device->spi;
    spi->bits_per_word = 8;
    spi->max_speed_hz = 4000000;
    //spi->chip_select = 0;
    spi->mode = 3;

    ret = spi_setup( spi );
    if( ret ){
        printk("FAILED to setup Spi.\n");
        return -ENODEV;
    }

    return 0;
}
static void __exit devSpiProtocol_exit(void)
{

}
module_init(devSpiProtocol_init);
module_exit(devSpiProtocol_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("MB");
MODULE_DESCRIPTION("devSpiProtocol");

代码test_gpio_irq65.c

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <asm/uaccess.h>
#include <linux/device.h>
#include <asm/gpio.h>
#include <linux/interrupt.h>
#include <asm/irq.h>
#include <linux/sched.h>
#include <linux/irq.h>
#include <linux/delay.h>

#include "../devSpiProtocolHeaders.h"

MODULE_LICENSE("GPL");
MODULE_AUTHOR("MB");
MODULE_DESCRIPTION("GPIO interrupt sample driver");

#define GPIO_INT 65

#define gpio_int "gpio_int65"

/* local functions */
static int gpio_irq_open (struct inode *inode,struct file *filp);
static int gpio_irq_release (struct inode *inode,struct file *filp);
static int gpio_irq_fasync(int fd,struct file *filp,int on);

static int major;
static struct class *class_gpio_int;
static struct device *dev_gpio_int;

static struct fasync_struct *gpio_irq_async_queue;

/* declare file operation structure */
static struct file_operations gpio_irq_fops = {
    .owner = THIS_MODULE,.open  = gpio_irq_open,.release = gpio_irq_release,.fasync = gpio_irq_fasync,};

/*Interrupt Handler */
static irqreturn_t gpio_interrupt(int irq,void *dev_id)
{
    printk("\n gpio_interrupt; IRQ No : %d\n",irq);
    char ta[] ="gpioWrite";
    char ts[] ="gpioRead";
    devSpiProtocol_cmd_write(ta);
    devSpiProtocol_cmd_read(ts);
    
    //kill_fasync(&gpio_irq_async_queue,SIGIO,POLL_IN);
    return IRQ_HANDLED;
}
[.....]

devSpiProtocolHeaders.h的代码

int devSpiProtocol_cmd_read(char *text);
int devSpiProtocol_cmd_write(char *text);

我执行以下命令:

cd ~/
cd protocole/
make
ls -l *.ko
sudo insmod  devSpiProtocol.ko
cd ~/
cd interupt/
make
ls -l *.ko
sudo insmod  test_gpio_irq65.ko
sudo config-pin P9_17 spi_cs
sudo config-pin P9_18 spi
sudo config-pin P9_21 spi
sudo config-pin P9_22 spi_sclk
tail -f /var/log/kern.log

现在我在GPIO_65上发送“ 1”,并在日志中输入以下内容:

Aug 21 08:29:39 beaglebone kernel: [  137.754312] 
Aug 21 08:29:39 beaglebone kernel: [  137.754312]  gpio_irq_init;
Aug 21 08:29:39 beaglebone kernel: [  137.754813] 
Aug 21 08:29:39 beaglebone kernel: [  137.754813]  gpio_init;
Aug 21 08:29:39 beaglebone kernel: [  137.754838] gpio_ctrl : GPIO NO: 65 Status 0
Aug 21 08:29:39 beaglebone kernel: [  137.766260] IRQ is 84
Aug 21 08:29:39 beaglebone kernel: [  137.768569] 
Aug 21 08:29:39 beaglebone kernel: [  137.768569]  gpio_request_irq; IRQ No : 84
Aug 21 08:29:39 beaglebone kernel: [  137.768689] gpio_request_irq 84 status 0
Aug 21 08:29:39 beaglebone kernel: [  137.768695] GPIO IRQ device is inserted sucessfully
Aug 21 08:30:12 beaglebone kernel: [  171.217021] 
Aug 21 08:30:12 beaglebone kernel: [  171.217021]  gpio_interrupt; IRQ No : 84
Aug 21 08:30:12 beaglebone kernel: [  171.217042] devSpiProtocol_cmd_write: gpioWrite
Aug 21 08:30:12 beaglebone kernel: [  171.217144] BUG: scheduling while atomic: swapper/0/0/0x00010003
Aug 21 08:30:12 beaglebone kernel: [  171.223193] Modules linked in: test_gpio_irq65(O) devSpiProtocol(O) pru_rproc irq_pruss_intc pruss pm33xx wkup_m3_ipc wkup_m3_rproc remoteproc virtio virtio_ring pruss_soc_bus usb_f_acm u_serial usb_f_ecm usb_f_mass_storage uio_pdrv_genirq usb_f_rndis u_ether uio libcomposite spidev
Aug 21 08:30:12 beaglebone kernel: [  171.223248] Preemption disabled at:
Aug 21 08:30:12 beaglebone kernel: [  171.223275] [<c0d38438>] schedule_preempt_disabled+0x28/0x2c
Aug 21 08:30:12 beaglebone kernel: [  171.226788] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G           O      4.19.94-ti-r42 #1buster
Aug 21 08:30:12 beaglebone kernel: [  171.226793] Hardware name: Generic AM33XX (Flattened Device Tree)
Aug 21 08:30:12 beaglebone kernel: [  171.226834] [<c0113e18>] (unwind_backtrace) from [<c010e388>] (show_stack+0x20/0x24)
Aug 21 08:30:12 beaglebone kernel: [  171.226857] [<c010e388>] (show_stack) from [<c0d20f5c>] (dump_stack+0x8c/0xa0)
Aug 21 08:30:12 beaglebone kernel: [  171.226878] [<c0d20f5c>] (dump_stack) from [<c0169d34>] (__schedule_bug+0xbc/0xd8)
Aug 21 08:30:12 beaglebone kernel: [  171.226891] [<c0169d34>] (__schedule_bug) from [<c0d37bc4>] (__schedule+0x7cc/0xa28)
Aug 21 08:30:12 beaglebone kernel: [  171.226903] [<c0d37bc4>] (__schedule) from [<c0d37e74>] (schedule+0x54/0xbc)
Aug 21 08:30:12 beaglebone kernel: [  171.226919] [<c0d37e74>] (schedule) from [<c0d3c634>] (schedule_hrtimeout_range_clock+0xe4/0x168)
Aug 21 08:30:12 beaglebone kernel: [  171.226933] [<c0d3c634>] (schedule_hrtimeout_range_clock) from [<c0d3c6e0>] (schedule_hrtimeout_range+0x28/0x30)
Aug 21 08:30:12 beaglebone kernel: [  171.226945] [<c0d3c6e0>] (schedule_hrtimeout_range) from [<c0d3bd60>] (usleep_range+0x78/0x9c)
Aug 21 08:30:12 beaglebone kernel: [  171.226970] [<c0d3bd60>] (usleep_range) from [<c098a300>] (mcspi_wait_for_reg_bit+0x60/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.226986] [<c098a300>] (mcspi_wait_for_reg_bit) from [<c098bc00>] (omap2_mcspi_transfer_one+0xf40/0x13b4)
Aug 21 08:30:12 beaglebone kernel: [  171.227000] [<c098bc00>] (omap2_mcspi_transfer_one) from [<c0988078>] (spi_transfer_one_message+0xfc/0x574)
Aug 21 08:30:12 beaglebone kernel: [  171.227014] [<c0988078>] (spi_transfer_one_message) from [<c0988880>] (__spi_pump_messages+0x390/0x780)
Aug 21 08:30:12 beaglebone kernel: [  171.227026] [<c0988880>] (__spi_pump_messages) from [<c0988f00>] (__spi_sync+0x26c/0x274)
Aug 21 08:30:12 beaglebone kernel: [  171.227037] [<c0988f00>] (__spi_sync) from [<c0988f3c>] (spi_sync+0x34/0x4c)
Aug 21 08:30:12 beaglebone kernel: [  171.227063] [<c0988f3c>] (spi_sync) from [<bf156108>] (devSpiProtocol_cmd_write+0xdc/0xfc [devSpiProtocol])
Aug 21 08:30:12 beaglebone kernel: [  171.227105] [<bf156108>] (devSpiProtocol_cmd_write [devSpiProtocol]) from [<bf15e168>] (gpio_interrupt+0x78/0xa0 [test_gpio_irq65])
Aug 21 08:30:12 beaglebone kernel: [  171.227133] [<bf15e168>] (gpio_interrupt [test_gpio_irq65]) from [<c01ae738>] (__handle_irq_event_percpu+0x84/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.227149] [<c01ae738>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.227163] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.227178] [<c01aea5c>] (handle_irq_event) from [<c01b26ac>] (handle_simple_irq+0xb4/0xcc)
Aug 21 08:30:12 beaglebone kernel: [  171.227191] [<c01b26ac>] (handle_simple_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.227211] [<c01ad7c8>] (generic_handle_irq) from [<c079a4f8>] (omap_gpio_irq_handler+0x108/0x160)
Aug 21 08:30:12 beaglebone kernel: [  171.227226] [<c079a4f8>] (omap_gpio_irq_handler) from [<c01ae738>] (__handle_irq_event_percpu+0x84/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.227239] [<c01ae738>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.227252] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.227263] [<c01aea5c>] (handle_irq_event) from [<c01b299c>] (handle_level_irq+0xdc/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.227275] [<c01b299c>] (handle_level_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.227287] [<c01ad7c8>] (generic_handle_irq) from [<c01adec8>] (__handle_domain_irq+0x8c/0xfc)
Aug 21 08:30:12 beaglebone kernel: [  171.227303] [<c01adec8>] (__handle_domain_irq) from [<c01022c0>] (omap_intc_handle_irq+0x44/0x9c)
Aug 21 08:30:12 beaglebone kernel: [  171.227315] [<c01022c0>] (omap_intc_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8)
Aug 21 08:30:12 beaglebone kernel: [  171.227322] Exception stack(0xc1501ed8 to 0xc1501f20)
Aug 21 08:30:12 beaglebone kernel: [  171.227331] 1ec0:                                                       00000000 0000916c
Aug 21 08:30:12 beaglebone kernel: [  171.227343] 1ee0: df8f950c c011e380 ffffe000 c1506e34 c1506e7c 00000001 00000001 c15dd67a
Aug 21 08:30:12 beaglebone kernel: [  171.227355] 1f00: c10e3054 c1501f34 c1501f38 c1501f28 c010a708 c010a70c 60070013 ffffffff
Aug 21 08:30:12 beaglebone kernel: [  171.227373] [<c0101a0c>] (__irq_svc) from [<c010a70c>] (arch_cpu_idle+0x48/0x4c)
Aug 21 08:30:12 beaglebone kernel: [  171.227387] [<c010a70c>] (arch_cpu_idle) from [<c0d3d04c>] (default_idle_call+0x38/0x3c)
Aug 21 08:30:12 beaglebone kernel: [  171.227400] [<c0d3d04c>] (default_idle_call) from [<c0172b30>] (do_idle+0x11c/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.227412] [<c0172b30>] (do_idle) from [<c0172e68>] (cpu_startup_entry+0x28/0x30)
Aug 21 08:30:12 beaglebone kernel: [  171.227422] [<c0172e68>] (cpu_startup_entry) from [<c0d36468>] (rest_init+0xd4/0xd8)
Aug 21 08:30:12 beaglebone kernel: [  171.227438] [<c0d36468>] (rest_init) from [<c1400ff8>] (start_kernel+0x484/0x4b4)
Aug 21 08:30:12 beaglebone kernel: [  171.227498] bad: scheduling from the idle thread!
Aug 21 08:30:12 beaglebone kernel: [  171.232235] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W  O      4.19.94-ti-r42 #1buster
Aug 21 08:30:12 beaglebone kernel: [  171.232241] Hardware name: Generic AM33XX (Flattened Device Tree)
Aug 21 08:30:12 beaglebone kernel: [  171.232258] [<c0113e18>] (unwind_backtrace) from [<c010e388>] (show_stack+0x20/0x24)
Aug 21 08:30:12 beaglebone kernel: [  171.232272] [<c010e388>] (show_stack) from [<c0d20f5c>] (dump_stack+0x8c/0xa0)
Aug 21 08:30:12 beaglebone kernel: [  171.232284] [<c0d20f5c>] (dump_stack) from [<c01728d4>] (dequeue_task_idle+0x2c/0x38)
Aug 21 08:30:12 beaglebone kernel: [  171.232298] [<c01728d4>] (dequeue_task_idle) from [<c016ba8c>] (deactivate_task+0xd0/0x134)
Aug 21 08:30:12 beaglebone kernel: [  171.232311] [<c016ba8c>] (deactivate_task) from [<c0d37764>] (__schedule+0x36c/0xa28)
Aug 21 08:30:12 beaglebone kernel: [  171.232322] [<c0d37764>] (__schedule) from [<c0d37e74>] (schedule+0x54/0xbc)
Aug 21 08:30:12 beaglebone kernel: [  171.232333] [<c0d37e74>] (schedule) from [<c0d3c634>] (schedule_hrtimeout_range_clock+0xe4/0x168)
Aug 21 08:30:12 beaglebone kernel: [  171.232346] [<c0d3c634>] (schedule_hrtimeout_range_clock) from [<c0d3c6e0>] (schedule_hrtimeout_range+0x28/0x30)
Aug 21 08:30:12 beaglebone kernel: [  171.232357] [<c0d3c6e0>] (schedule_hrtimeout_range) from [<c0d3bd60>] (usleep_range+0x78/0x9c)
Aug 21 08:30:12 beaglebone kernel: [  171.232371] [<c0d3bd60>] (usleep_range) from [<c098a300>] (mcspi_wait_for_reg_bit+0x60/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.232386] [<c098a300>] (mcspi_wait_for_reg_bit) from [<c098bc00>] (omap2_mcspi_transfer_one+0xf40/0x13b4)
Aug 21 08:30:12 beaglebone kernel: [  171.232399] [<c098bc00>] (omap2_mcspi_transfer_one) from [<c0988078>] (spi_transfer_one_message+0xfc/0x574)
Aug 21 08:30:12 beaglebone kernel: [  171.232412] [<c0988078>] (spi_transfer_one_message) from [<c0988880>] (__spi_pump_messages+0x390/0x780)
Aug 21 08:30:12 beaglebone kernel: [  171.232424] [<c0988880>] (__spi_pump_messages) from [<c0988f00>] (__spi_sync+0x26c/0x274)
Aug 21 08:30:12 beaglebone kernel: [  171.232435] [<c0988f00>] (__spi_sync) from [<c0988f3c>] (spi_sync+0x34/0x4c)
Aug 21 08:30:12 beaglebone kernel: [  171.232453] [<c0988f3c>] (spi_sync) from [<bf156108>] (devSpiProtocol_cmd_write+0xdc/0xfc [devSpiProtocol])
Aug 21 08:30:12 beaglebone kernel: [  171.232473] [<bf156108>] (devSpiProtocol_cmd_write [devSpiProtocol]) from [<bf15e168>] (gpio_interrupt+0x78/0xa0 [test_gpio_irq65])
Aug 21 08:30:12 beaglebone kernel: [  171.232492] [<bf15e168>] (gpio_interrupt [test_gpio_irq65]) from [<c01ae738>] (__handle_irq_event_percpu+0x84/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.232505] [<c01ae738>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.232517] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.232530] [<c01aea5c>] (handle_irq_event) from [<c01b26ac>] (handle_simple_irq+0xb4/0xcc)
Aug 21 08:30:12 beaglebone kernel: [  171.232541] [<c01b26ac>] (handle_simple_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.232555] [<c01ad7c8>] (generic_handle_irq) from [<c079a4f8>] (omap_gpio_irq_handler+0x108/0x160)
Aug 21 08:30:12 beaglebone kernel: [  171.232568] [<c079a4f8>] (omap_gpio_irq_handler) from [<c01ae738>] (__handle_irq_event_percpu+0x84/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.232580] [<c01ae738>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.232593] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.232604] [<c01aea5c>] (handle_irq_event) from [<c01b299c>] (handle_level_irq+0xdc/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.232616] [<c01b299c>] (handle_level_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.232628] [<c01ad7c8>] (generic_handle_irq) from [<c01adec8>] (__handle_domain_irq+0x8c/0xfc)
Aug 21 08:30:12 beaglebone kernel: [  171.232640] [<c01adec8>] (__handle_domain_irq) from [<c01022c0>] (omap_intc_handle_irq+0x44/0x9c)
Aug 21 08:30:12 beaglebone kernel: [  171.232651] [<c01022c0>] (omap_intc_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8)
Aug 21 08:30:12 beaglebone kernel: [  171.232657] Exception stack(0xc1501ed8 to 0xc1501f20)
Aug 21 08:30:12 beaglebone kernel: [  171.232664] 1ec0:                                                       00000000 0000916c
Aug 21 08:30:12 beaglebone kernel: [  171.232676] 1ee0: df8f950c c011e380 ffffe000 c1506e34 c1506e7c 00000001 00000001 c15dd67a
Aug 21 08:30:12 beaglebone kernel: [  171.232688] 1f00: c10e3054 c1501f34 c1501f38 c1501f28 c010a708 c010a70c 60070013 ffffffff
Aug 21 08:30:12 beaglebone kernel: [  171.232700] [<c0101a0c>] (__irq_svc) from [<c010a70c>] (arch_cpu_idle+0x48/0x4c)
Aug 21 08:30:12 beaglebone kernel: [  171.232713] [<c010a70c>] (arch_cpu_idle) from [<c0d3d04c>] (default_idle_call+0x38/0x3c)
Aug 21 08:30:12 beaglebone kernel: [  171.232724] [<c0d3d04c>] (default_idle_call) from [<c0172b30>] (do_idle+0x11c/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.232735] [<c0172b30>] (do_idle) from [<c0172e68>] (cpu_startup_entry+0x28/0x30)
Aug 21 08:30:12 beaglebone kernel: [  171.232745] [<c0172e68>] (cpu_startup_entry) from [<c0d36468>] (rest_init+0xd4/0xd8)
Aug 21 08:30:12 beaglebone kernel: [  171.232756] [<c0d36468>] (rest_init) from [<c1400ff8>] (start_kernel+0x484/0x4b4)
Aug 21 08:30:12 beaglebone kernel: [  171.232897] devSpiProtocol_cmd_read: gpioRead
Aug 21 08:30:12 beaglebone kernel: [  171.232906] ------------[ cut here ]------------
Aug 21 08:30:12 beaglebone kernel: [  171.232920] WARNING: CPU: 0 PID: 0 at kernel/irq/handle.c:153 __handle_irq_event_percpu+0x2cc/0x2d0
Aug 21 08:30:12 beaglebone kernel: [  171.232934] irq 84 handler gpio_interrupt+0x0/0xa0 [test_gpio_irq65] enabled interrupts
Aug 21 08:30:12 beaglebone kernel: [  171.232939] Modules linked in: test_gpio_irq65(O) devSpiProtocol(O) pru_rproc irq_pruss_intc pruss pm33xx wkup_m3_ipc wkup_m3_rproc remoteproc virtio virtio_ring pruss_soc_bus usb_f_acm u_serial usb_f_ecm usb_f_mass_storage uio_pdrv_genirq usb_f_rndis u_ether uio libcomposite spidev
Aug 21 08:30:12 beaglebone kernel: [  171.232990] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W  O      4.19.94-ti-r42 #1buster
Aug 21 08:30:12 beaglebone kernel: [  171.232995] Hardware name: Generic AM33XX (Flattened Device Tree)
Aug 21 08:30:12 beaglebone kernel: [  171.233010] [<c0113e18>] (unwind_backtrace) from [<c010e388>] (show_stack+0x20/0x24)
Aug 21 08:30:12 beaglebone kernel: [  171.233023] [<c010e388>] (show_stack) from [<c0d20f5c>] (dump_stack+0x8c/0xa0)
Aug 21 08:30:12 beaglebone kernel: [  171.233039] [<c0d20f5c>] (dump_stack) from [<c013c928>] (__warn.part.3+0xcc/0xe8)
Aug 21 08:30:12 beaglebone kernel: [  171.233051] [<c013c928>] (__warn.part.3) from [<c013c9bc>] (warn_slowpath_fmt+0x78/0x94)
Aug 21 08:30:12 beaglebone kernel: [  171.233065] [<c013c9bc>] (warn_slowpath_fmt) from [<c01ae980>] (__handle_irq_event_percpu+0x2cc/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.233078] [<c01ae980>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.233090] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.233102] [<c01aea5c>] (handle_irq_event) from [<c01b26ac>] (handle_simple_irq+0xb4/0xcc)
Aug 21 08:30:12 beaglebone kernel: [  171.233113] [<c01b26ac>] (handle_simple_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.233126] [<c01ad7c8>] (generic_handle_irq) from [<c079a4f8>] (omap_gpio_irq_handler+0x108/0x160)
Aug 21 08:30:12 beaglebone kernel: [  171.233139] [<c079a4f8>] (omap_gpio_irq_handler) from [<c01ae738>] (__handle_irq_event_percpu+0x84/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.233151] [<c01ae738>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.233163] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.233175] [<c01aea5c>] (handle_irq_event) from [<c01b299c>] (handle_level_irq+0xdc/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.233186] [<c01b299c>] (handle_level_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.233197] [<c01ad7c8>] (generic_handle_irq) from [<c01adec8>] (__handle_domain_irq+0x8c/0xfc)
Aug 21 08:30:12 beaglebone kernel: [  171.233210] [<c01adec8>] (__handle_domain_irq) from [<c01022c0>] (omap_intc_handle_irq+0x44/0x9c)
Aug 21 08:30:12 beaglebone kernel: [  171.233221] [<c01022c0>] (omap_intc_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8)
Aug 21 08:30:12 beaglebone kernel: [  171.233227] Exception stack(0xc1501ed8 to 0xc1501f20)
Aug 21 08:30:12 beaglebone kernel: [  171.233234] 1ec0:                                                       00000000 0000916c
Aug 21 08:30:12 beaglebone kernel: [  171.233245] 1ee0: df8f950c c011e380 ffffe000 c1506e34 c1506e7c 00000001 00000001 c15dd67a
Aug 21 08:30:12 beaglebone kernel: [  171.233257] 1f00: c10e3054 c1501f34 c1501f38 c1501f28 c010a708 c010a70c 60070013 ffffffff
Aug 21 08:30:12 beaglebone kernel: [  171.233269] [<c0101a0c>] (__irq_svc) from [<c010a70c>] (arch_cpu_idle+0x48/0x4c)
Aug 21 08:30:12 beaglebone kernel: [  171.233283] [<c010a70c>] (arch_cpu_idle) from [<c0d3d04c>] (default_idle_call+0x38/0x3c)
Aug 21 08:30:12 beaglebone kernel: [  171.233295] [<c0d3d04c>] (default_idle_call) from [<c0172b30>] (do_idle+0x11c/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.233305] [<c0172b30>] (do_idle) from [<c0172e68>] (cpu_startup_entry+0x28/0x30)
Aug 21 08:30:12 beaglebone kernel: [  171.233315] [<c0172e68>] (cpu_startup_entry) from [<c0d36468>] (rest_init+0xd4/0xd8)
Aug 21 08:30:12 beaglebone kernel: [  171.233326] [<c0d36468>] (rest_init) from [<c1400ff8>] (start_kernel+0x484/0x4b4)
Aug 21 08:30:12 beaglebone kernel: [  171.233335] ---[ end trace b289cf4f3590e1a3 ]---
Aug 21 08:30:12 beaglebone kernel: [  171.233345] ------------[ cut here ]------------
Aug 21 08:30:12 beaglebone kernel: [  171.237994] WARNING: CPU: 0 PID: 0 at kernel/sched/core.c:3260 preempt_count_sub+0x9c/0xf0
Aug 21 08:30:12 beaglebone kernel: [  171.246292] DEBUG_LOCKS_WARN_ON(val > preempt_count())
Aug 21 08:30:12 beaglebone kernel: [  171.246294] Modules linked in: test_gpio_irq65(O) devSpiProtocol(O) pru_rproc irq_pruss_intc pruss pm33xx wkup_m3_ipc wkup_m3_rproc remoteproc virtio virtio_ring pruss_soc_bus usb_f_acm u_serial usb_f_ecm usb_f_mass_storage uio_pdrv_genirq usb_f_rndis u_ether uio libcomposite spidev
Aug 21 08:30:12 beaglebone kernel: [  171.276619] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W  O      4.19.94-ti-r42 #1buster
Aug 21 08:30:12 beaglebone kernel: [  171.285179] Hardware name: Generic AM33XX (Flattened Device Tree)
Aug 21 08:30:12 beaglebone kernel: [  171.291306] [<c0113e18>] (unwind_backtrace) from [<c010e388>] (show_stack+0x20/0x24)
Aug 21 08:30:12 beaglebone kernel: [  171.299088] [<c010e388>] (show_stack) from [<c0d20f5c>] (dump_stack+0x8c/0xa0)
Aug 21 08:30:12 beaglebone kernel: [  171.306346] [<c0d20f5c>] (dump_stack) from [<c013c928>] (__warn.part.3+0xcc/0xe8)
Aug 21 08:30:12 beaglebone kernel: [  171.313865] [<c013c928>] (__warn.part.3) from [<c013c9bc>] (warn_slowpath_fmt+0x78/0x94)
Aug 21 08:30:12 beaglebone kernel: [  171.321995] [<c013c9bc>] (warn_slowpath_fmt) from [<c0169ad0>] (preempt_count_sub+0x9c/0xf0)
Aug 21 08:30:12 beaglebone kernel: [  171.330475] [<c0169ad0>] (preempt_count_sub) from [<c0d3d4c8>] (_raw_spin_unlock_irqrestore+0x38/0x64)
Aug 21 08:30:12 beaglebone kernel: [  171.339829] [<c0d3d4c8>] (_raw_spin_unlock_irqrestore) from [<c079a504>] (omap_gpio_irq_handler+0x114/0x160)
Aug 21 08:30:12 beaglebone kernel: [  171.349705] [<c079a504>] (omap_gpio_irq_handler) from [<c01ae738>] (__handle_irq_event_percpu+0x84/0x2d0)
Aug 21 08:30:12 beaglebone kernel: [  171.359319] [<c01ae738>] (__handle_irq_event_percpu) from [<c01ae9c0>] (handle_irq_event_percpu+0x3c/0x90)
Aug 21 08:30:12 beaglebone kernel: [  171.369021] [<c01ae9c0>] (handle_irq_event_percpu) from [<c01aea5c>] (handle_irq_event+0x48/0x6c)
Aug 21 08:30:12 beaglebone kernel: [  171.377937] [<c01aea5c>] (handle_irq_event) from [<c01b299c>] (handle_level_irq+0xdc/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.386328] [<c01b299c>] (handle_level_irq) from [<c01ad7c8>] (generic_handle_irq+0x34/0x44)
Aug 21 08:30:12 beaglebone kernel: [  171.394808] [<c01ad7c8>] (generic_handle_irq) from [<c01adec8>] (__handle_domain_irq+0x8c/0xfc)
Aug 21 08:30:12 beaglebone kernel: [  171.403549] [<c01adec8>] (__handle_domain_irq) from [<c01022c0>] (omap_intc_handle_irq+0x44/0x9c)
Aug 21 08:30:12 beaglebone kernel: [  171.412464] [<c01022c0>] (omap_intc_handle_irq) from [<c0101a0c>] (__irq_svc+0x6c/0xa8)
Aug 21 08:30:12 beaglebone kernel: [  171.420501] Exception stack(0xc1501ed8 to 0xc1501f20)
Aug 21 08:30:12 beaglebone kernel: [  171.425575] 1ec0:                                                       00000000 0000916c
Aug 21 08:30:12 beaglebone kernel: [  171.433792] 1ee0: df8f950c c011e380 ffffe000 c1506e34 c1506e7c 00000001 00000001 c15dd67a
Aug 21 08:30:12 beaglebone kernel: [  171.442010] 1f00: c10e3054 c1501f34 c1501f38 c1501f28 c010a708 c010a70c 60070013 ffffffff
Aug 21 08:30:12 beaglebone kernel: [  171.450228] [<c0101a0c>] (__irq_svc) from [<c010a70c>] (arch_cpu_idle+0x48/0x4c)
Aug 21 08:30:12 beaglebone kernel: [  171.457662] [<c010a70c>] (arch_cpu_idle) from [<c0d3d04c>] (default_idle_call+0x38/0x3c)
Aug 21 08:30:12 beaglebone kernel: [  171.465792] [<c0d3d04c>] (default_idle_call) from [<c0172b30>] (do_idle+0x11c/0x158)
Aug 21 08:30:12 beaglebone kernel: [  171.473571] [<c0172b30>] (do_idle) from [<c0172e68>] (cpu_startup_entry+0x28/0x30)
Aug 21 08:30:12 beaglebone kernel: [  171.481176] [<c0172e68>] (cpu_startup_entry) from [<c0d36468>] (rest_init+0xd4/0xd8)
Aug 21 08:30:12 beaglebone kernel: [  171.488957] [<c0d36468>] (rest_init) from [<c1400ff8>] (start_kernel+0x484/0x4b4)
Aug 21 08:30:12 beaglebone kernel: [  171.496472] ---[ end trace b289cf4f3590e1a4 ]---

SPI设备列表:

ls -1 /dev/spi*
/dev/spidev0.0
/dev/spidev0.1
/dev/spidev1.0
/dev/spidev1.1

/dev/spi:
0.0
0.1
1.0
1.1

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...