主题 : Mini2440之Linux移植开发实战指南请关注它是否正确 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 13675
精华: 0
发帖: 39
金钱: 195 两
威望: 39 点
贡献值: 0 点
综合积分: 78 分
注册时间: 2010-01-27
最后登录: 2013-11-11
楼主  发表于: 2010-04-29 16:46

 Mini2440之Linux移植开发实战指南请关注它是否正确


Mini2440之Linux移植开发实战指南内容虽说很全面,但是有很多遗漏的部分。你们是否需要完善以下你们的手册。
首先必须加入以下
于是在自己的mach-mini2440.c中加入

#include <linux/mtd/mtd.h>
#include <linux/mtd/nand.h>
#include <linux/mtd/nand_ecc.h>
#include <linux/mtd/partitions.h>

#include <plat/nand.h>

然后接续启动信息结果如下

信息如下:
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=4, 39ns Twrph0=8 79ns, Twrph1=8 79ns
Unable to handle kernel NULL pointer dereference at virtual address 00000004
pgd = c0004000
[00000004] *pgd=00000000
Internal error: Oops: 5 [#1]
last sysfs file:
Modules linked in:
CPU: 0    Not tainted  (2.6.33.3 #2)
PC is at s3c24xx_nand_probe+0x1d8/0x510
LR is at s3c24xx_nand_probe+0x1a4/0x510
pc : [<c01ea4ec>]    lr : [<c01ea4b8>]    psr: 80000013
sp : c3823f08  ip : 00000000  fp : 00000002
r10: 000002b8  r9 : 00000001  r8 : 00000000
r7 : 00000000  r6 : c39c2c00  r5 : 00000000  r4 : c39b1a40
r3 : c4c00000  r2 : 00000032  r1 : fffffff8  r0 : c39c2eb8
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: c000717f  Table: 30004000  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc3822270)
Stack: (0xc3823f08 to 0xc3824000)
3f00:                   00000000 c3852300 00000001 c00d4974 c3852300 c03e5468
3f20: c03e5468 c03fb65c c03fb65c 00000000 00000000 00000000 00000000 c01c5048
3f40: c01c5030 c01c4240 00000000 c03e5468 c03e549c c03fb65c 00000000 c01c4348
3f60: c03fb65c c01c42ec 00000000 c01c3b28 c3804938 c38474b0 c03fb65c c3998ea0
3f80: c03fa110 c01c348c c03922c2 c03922c2 00000034 c03fb65c 00000000 00000000
3fa0: 00000000 00000000 00000000 c01c4614 c001ac3c 00000000 00000000 00000000
3fc0: 00000000 c0029384 c001ac3c c03ff3dc c0406a00 c002250c c00223ac 00000000
3fe0: 00000000 00000000 00000000 c00083f0 00000000 c002a868 13cc33cc 63c133cc
[<c01ea4ec>] (s3c24xx_nand_probe+0x1d8/0x510) from [<c01c5048>] (platform_drv_probe+0x18/0x1c)
[<c01c5048>] (platform_drv_probe+0x18/0x1c) from [<c01c4240>] (driver_probe_device+0xa8/0x154)
[<c01c4240>] (driver_probe_device+0xa8/0x154) from [<c01c4348>] (__driver_attach+0x5c/0x7c)
[<c01c4348>] (__driver_attach+0x5c/0x7c) from [<c01c3b28>] (bus_for_each_dev+0x4c/0x78)
[<c01c3b28>] (bus_for_each_dev+0x4c/0x78) from [<c01c348c>] (bus_add_driver+0x98/0x214)
[<c01c348c>] (bus_add_driver+0x98/0x214) from [<c01c4614>] (driver_register+0xa4/0x134)
[<c01c4614>] (driver_register+0xa4/0x134) from [<c0029384>] (do_one_initcall+0x5c/0x1b8)
[<c0029384>] (do_one_initcall+0x5c/0x1b8) from [<c00083f0>] (kernel_init+0x94/0x10c)
[<c00083f0>] (kernel_init+0x94/0x10c) from [<c002a868>] (kernel_thread_exit+0x0/0x8)
Code: e59f2304 e58621a4 e3a02032 e58621d0 (e5952004)
---[ end trace 9dbe0b5036f4e6e8 ]---
Kernel panic - not syncing: Attempted to kill init!
[<c002e7bc>] (unwind_backtrace+0x0/0xd4) from [<c02e1980>] (panic+0x40/0x124)
[<c02e1980>] (panic+0x40/0x124) from [<c003e7a8>] (do_exit+0x64/0x598)
[<c003e7a8>] (do_exit+0x64/0x598) from [<c002d4c4>] (die+0x15c/0x180)
[<c002d4c4>] (die+0x15c/0x180) from [<c002f384>] (__do_kernel_fault+0x64/0x74)
[<c002f384>] (__do_kernel_fault+0x64/0x74) from [<c002f544>] (do_page_fault+0x1b0/0x1c4)
[<c002f544>] (do_page_fault+0x1b0/0x1c4) from [<c00292c4>] (do_DataAbort+0x34/0x94)
[<c00292c4>] (do_DataAbort+0x34/0x94) from [<c0029a40>] (__dabt_svc+0x40/0x60)
Exception stack(0xc3823ec0 to 0xc3823f08)
3ec0: c39c2eb8 fffffff8 00000032 c4c00000 c39b1a40 00000000 c39c2c00 00000000
3ee0: 00000000 00000001 000002b8 00000002 00000000 c3823f08 c01ea4b8 c01ea4ec
3f00: 80000013 ffffffff
[<c0029a40>] (__dabt_svc+0x40/0x60) from [<c01ea4ec>] (s3c24xx_nand_probe+0x1d8/0x510)
[<c01ea4ec>] (s3c24xx_nand_probe+0x1d8/0x510) from [<c01c5048>] (platform_drv_probe+0x18/0x1c)
[<c01c5048>] (platform_drv_probe+0x18/0x1c) from [<c01c4240>] (driver_probe_device+0xa8/0x154)
[<c01c4240>] (driver_probe_device+0xa8/0x154) from [<c01c4348>] (__driver_attach+0x5c/0x7c)
[<c01c4348>] (__driver_attach+0x5c/0x7c) from [<c01c3b28>] (bus_for_each_dev+0x4c/0x78)
[<c01c3b28>] (bus_for_each_dev+0x4c/0x78) from [<c01c348c>] (bus_add_driver+0x98/0x214)
[<c01c348c>] (bus_add_driver+0x98/0x214) from [<c01c4614>] (driver_register+0xa4/0x134)
[<c01c4614>] (driver_register+0xa4/0x134) from [<c0029384>] (do_one_initcall+0x5c/0x1b8)
[<c0029384>] (do_one_initcall+0x5c/0x1b8) from [<c00083f0>] (kernel_init+0x94/0x10c)
[<c00083f0>] (kernel_init+0x94/0x10c) from [<c002a868>] (kernel_thread_exit+0x0/0x8)
级别: 新手上路
UID: 116030
精华: 0
发帖: 47
金钱: 240 两
威望: 48 点
贡献值: 0 点
综合积分: 94 分
注册时间: 2015-06-04
最后登录: 2020-05-08
1楼  发表于: 2017-03-27 16:29
static struct s3c2410_platform_nand micro2440_nand_info = {
    .tacls      = 20,
    .twrph0        = 60,
    .twrph1        = 20,
    .nr_sets    = ARRAY_SIZE(micro2440_nand_sets),
    .sets        = micro2440_nand_sets,
    .ignore_unset_ecc = 1,
};
出现
  CC      kernel/exit.o
arch/arm/mach-s3c2440/mach-micro2440.c:214: error: unknown field 'ignore_unset_ecc' specified in initializer
arch/arm/mach-s3c2440/mach-micro2440.c:214: warning: initialization makes pointer from integer without a cast

static struct s3c2410_platform_nand micro2440_nand_info = {
    .tacls      = 20,
    .twrph0        = 60,
    .twrph1        = 20,
    .nr_sets    = ARRAY_SIZE(micro2440_nand_sets),
    .sets        = micro2440_nand_sets,
//    .ignore_unset_ecc = 1,
};
编译通过