在T113S3平台上移植开机动画播放,参考大佬的移植教程,但在移植的过程中遇到了内核崩溃的问题,如下:
[ 0.585516] 000: sunxi cedar version 1.1
[ 0.590057] 000: animation:dec_test_init:493 dec test version 1.0
[ 0.597720] 000: GG ANIMATION_SIZE 5242880 ,animation_reserve_size 5242880
[ 0.625133] 000: thermal_sys: Registered thermal governor 'step_wise'
[ 0.637311] 000: cedar_devp is NULL
[ 0.639927] 001: thermal_sys: Registered thermal governor 'user_space'
[ 0.640985] 000: 8<--- cut here ---
[ 0.647797] 001: thermal_sys: Registered thermal governor 'power_allocator'
[ 0.651461] 000: Unable to handle kernel NULL pointer dereference at virtual address 00000064
[ 0.659340] 001: NET: Registered protocol family 2
[ 0.668051] 000: pgd = (ptrval)
[ 0.676003] 000: [00000064] *pgd=00000000
[ 0.676119] 001: tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[ 0.680267] 000:
[ 0.689418] 001: TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.691450] 000: Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[ 0.699923] 001: TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear)
[ 0.705910] 000: Modules linked in:
[ 0.713778] 001: TCP: Hash tables configured (established 1024 bind 1024)
[ 0.717390] 000:
[ 0.724614] 001: UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.726512] 000: CPU: 0 PID: 22 Comm: kworker/0:1 Not tainted 5.4.61-rt37 #28
[ 0.733870] 001: UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 0.741308] 000: Hardware name: Generic DT based system
[ 0.749251] 001: NET: Registered protocol family 1
[ 0.754528] 000: Workqueue: events test_decoder
[ 0.760739] 001: sun8iw20-pinctrl pio: pio supply vcc-pc not found, using dummy regulator
[ 0.764312] 000:
[ 0.773443] 001: spi spi0: spi0 supply spi not found, using dummy regulator
[ 0.774895] 000: PC is at cedar_get_device+0x2c/0x50
[ 0.782479] 001: sunxi_spi_resource_get()2480 - sample_mode:1 sample_delay:1
[ 0.787390] 000: LR is at cedar_get_device+0x24/0x50
[ 0.794803] 001: sunxi_spi_request_dma()966 - [spi0] Request DMA channel dma0chan0 (tx) and dma0chan1 (rx) for DMA transfers
[ 0.799942] 000: pc : [<c0583344>] lr : [<c058333c>] psr: 60000013
[ 0.811744] 001: sunxi_spi_clk_init()2530 - [spi0] mclk 50000000
[ 0.818715] 000: sp : c7141d88 ip : 00000000 fp : 00000000
[ 0.826273] 001: sunxi_spi_probe()3001 - [spi0]: driver probe succeed, base c8836000, irq 44
[ 0.830934] 000: r10: c729f0d4 r9 : 00000000 r8 : c729f0c0
[ 0.842593] 001: Initialise system trusted keyrings
[ 0.845701] 000: r7 : 00000001 r6 : 00000000 r5 : 00000000 r4 : c0c99a58
[ 0.851360] 001: workingset: timestamp_bits=30 max_order=15 bucket_order=0
[ 0.858107] 000: r3 : 5296ee2b r2 : 5296ee2b r1 : 00000000 r0 : c0a0bc12
[ 0.872680] 000: Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 0.880762] 000: Control: 10c5387d Table: 4000406a DAC: 00000051
[ 0.884607] 001: squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.887279] 000: Process kworker/0:1 (pid: 22, stack limit = 0x(ptrval))
[ 0.894846] 001: ntfs: driver 2.1.32 [Flags: R/W].
[ 0.900867] 000: Stack: (0xc7141d88 to 0xc7142000)
[ 0.906375] 001: fuse: init (API version 7.31)
[ 0.910904] 000: 1d80: c729f240 c057ab20 00000000 00000000 c68fa800 c057ee98
[ 0.924617] 000: 1da0: c0a0cbf3 c7141dc4 fffffffc c0158300 c7141dc4 5296ee2b c0c99b30 c0c99b30
[ 0.933617] 000: 1dc0: c9401000 00000000 c0c03e08 c05861a4 00000001 00000001 00000000 00000400
[ 0.942652] 000: 1de0: 00000146 00000000 00000000 00000000 00000000 00000000 00000000 5296ee2b
[ 0.946907] 001: NET: Registered protocol family 38
[ 0.951669] 000: 1e00: c7016c40 c7011900 c7011900 c76bc450 00000000 c76b93b4 00000000 c0142974
[ 0.956778] 001: Key type asymmetric registered
[ 0.965803] 000: 1e20: 06b7b000 00000000 00000000 c76c73a0 00000002 00000000 00000000 00000000
[ 0.970569] 001: Asymmetric key parser 'x509' registered
[ 0.979580] 000: 1e40: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 0.985305] 001: Block layer SCSI generic (bsg) driver version 0.4 loaded (major 248)
[ 0.994161] 000: 1e60: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.002475] 001: io scheduler mq-deadline registered
[ 1.011381] 000: 1e80: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.016570] 001: io scheduler kyber registered
[ 1.025600] 000: 1ea0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.039299] 000: 1ec0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.048315] 000: 1ee0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.057332] 000: 1f00: 00000000 00000000 00000000 00000000 00000000 5296ee2b c7038000 c7011800
[ 1.066349] 000: 1f20: c76bb9c0 c729f0d0 c76beb00 00000000 00000000 c729f0d4 00000000 c012fc10
[ 1.075367] 000: 1f40: c7011800 c729f0d0 c7011800 c7011814 c76bb9c0 c7140000 c76bb9d8 c0c02d00
[ 1.084393] 000: 1f60: c0c6ecd0 c01301d0 00000000 c7016bc0 c7140000 c7016cc0 c7011800 c704fec4
[ 1.093418] 000: 1f80: c012ffdc c7016bdc 00000000 c01349c0 c7016cc0 c01348ac 00000000 00000000
[ 1.102435] 000: 1fa0: 00000000 00000000 00000000 c01010f0 00000000 00000000 00000000 00000000
[ 1.111451] 000: 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.120467] 000: 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
[ 1.129479] 000: [<c0583344>] (cedar_get_device) from [<c057ab20>] (mem_ion_create+0xa0/0xf4)
[ 1.138425] 000: [<c057ab20>] (mem_ion_create) from [<c057ee98>] (CreateVideoDecoder+0x80/0x140)
[ 1.147619] 000: [<c057ee98>] (CreateVideoDecoder) from [<c05861a4>] (test_decoder+0x5c/0x424)
[ 1.156647] 000: [<c05861a4>] (test_decoder) from [<c012fc10>] (process_one_work+0x16c/0x20c)
[ 1.165574] 000: [<c012fc10>] (process_one_work) from [<c01301d0>] (worker_thread+0x1f4/0x2d4)
[ 1.174586] 000: [<c01301d0>] (worker_thread) from [<c01349c0>] (kthread+0x114/0x128)
[ 1.182800] 000: [<c01349c0>] (kthread) from [<c01010f0>] (ret_from_fork+0x14/0x24)
[ 1.190831] 000: Exception stack(0xc7141fb0 to 0xc7141ff8)
[ 1.196560] 000: 1fa0: 00000000 00000000 00000000 00000000
[ 1.205594] 000: 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
[ 1.214599] 000: 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[ 1.221979] 000: Code: e59f0024 ebef53e7 e5941000 e59f001c (e5912064)
[ 1.228961] 000: ---[ end trace fd5d15f631204be8 ]---
加打印跟踪代码到内核的/kernel/linux-5.4/drivers/media/cedar-ve/cedar_ve.c 文件下的cedar_get_device(void)函数里面
struct device *cedar_get_device(void)
{
if (!cedar_devp) {
pr_err("cedar_devp is NULL\n");
// return NULL;
}
printk("cedar_devp: %p, plat_dev: %p\n", cedar_devp, cedar_devp->plat_dev);
return cedar_devp->plat_dev;
}
EXPORT_SYMBOL(cedar_get_device);
加打印发现,只要读取结构体的地址,内核就会因为内存的问题崩溃,有无大佬遇到同样情况,请求指点一二,感激不尽。
离线
参考移植教程地址:https://bbs.aw-ol.com/topic/3599/t113%E5%9C%A8%E5%86%85%E6%A0%B8%E4%B8%AD%E9%87%87%E7%94%A8%E7%A1%AC%E8%A7%A3jpeg%E6%96%B9%E5%BC%8F%E5%AE%9E%E7%8E%B0%E5%BC%80%E6%9C%BA%E5%8A%A8%E7%94%BB?_=1732624497393
离线