按照官方手册进行mini2440 linux移植及遇到的问题

发布者:快乐阳光最新更新时间:2024-07-15 来源: elecfans关键字:官方手册  mini2440  linux移植 手机看文章 扫描二维码
随时随地手机看文章

arch/arm/mach-s3c2440/mach-mini2440.c:210: warning: type defaults to 'int' in declaration of 'type name'

arch/arm/mach-s3c2440/mach-mini2440.c:210: warning: type defaults to 'int' in declaration of 'type name'

arch/arm/mach-s3c2440/mach-mini2440.c:210: error: negative width in bit-field ''

arch/arm/mach-s3c2440/mach-mini2440.c:211: error: field name not in record or union initializer

arch/arm/mach-s3c2440/mach-mini2440.c:211: error: (near initialization for 'mini2440_nand_sets')

arch/arm/mach-s3c2440/mach-mini2440.c:215: error: variable 'mini2440_nand_info' has initializer but incomplete type

arch/arm/mach-s3c2440/mach-mini2440.c:216: error: unknown field 'tacls' specified in initializer

arch/arm/mach-s3c2440/mach-mini2440.c:216: warning: excess elements in struct initializer

arch/arm/mach-s3c2440/mach-mini2440.c:216: warning: (near initialization for 'mini2440_nand_info')

arch/arm/mach-s3c2440/mach-mini2440.c:217: error: unknown field 'twrph0' specified in initializer

arch/arm/mach-s3c2440/mach-mini2440.c:217: warning: excess elements in struct initializer

arch/arm/mach-s3c2440/mach-mini2440.c:217: warning: (near initialization for 'mini2440_nand_info')

arch/arm/mach-s3c2440/mach-mini2440.c:218: error: unknown field 'twrph1' specified in initializer

arch/arm/mach-s3c2440/mach-mini2440.c:218: warning: excess elements in struct initializer

arch/arm/mach-s3c2440/mach-mini2440.c:218: warning: (near initialization for 'mini2440_nand_info')

arch/arm/mach-s3c2440/mach-mini2440.c:219: error: unknown field 'nr_sets' specified in initializer

arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: type defaults to 'int' in declaration of 'type name'

arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: type defaults to 'int' in declaration of 'type name'

arch/arm/mach-s3c2440/mach-mini2440.c:219: error: negative width in bit-field ''

arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: excess elements in struct initializer

arch/arm/mach-s3c2440/mach-mini2440.c:219: warning: (near initialization for 'mini2440_nand_info')

arch/arm/mach-s3c2440/mach-mini2440.c:220: error: unknown field 'sets' specified in initializer

arch/arm/mach-s3c2440/mach-mini2440.c:220: warning: excess elements in struct initializer

arch/arm/mach-s3c2440/mach-mini2440.c:220: warning: (near initialization for 'mini2440_nand_info')

arch/arm/mach-s3c2440/mach-mini2440.c:221: error: unknown field 'ignore_unset_ecc' specified in initializer

arch/arm/mach-s3c2440/mach-mini2440.c:221: warning: excess elements in struct initializer

arch/arm/mach-s3c2440/mach-mini2440.c:221: warning: (near initialization for 'mini2440_nand_info')

make[1]: *** [arch/arm/mach-s3c2440/mach-mini2440.o] 错误 1

make: *** [arch/arm/mach-s3c2440] 错误 2


baidu一下,发现有人(原文)遇到同样的错误,OK,按照原文的做,在mach-mini2440.c加入头文件,在 static void __init mini2440_map_io(void)加入红色内容


#include <linux/mtd/mtd.h>

#include

#include

#include

#include


static void __init mini2440_map_io(void)

{

    s3c24xx_init_io(mini2440_iodesc, ARRAY_SIZE(mini2440_iodesc));

    s3c24xx_init_clocks(120000000);

    s3c24xx_init_uarts(mini2440_uartcfgs, ARRAY_SIZE(mini2440_uartcfgs));

    s3c_device_nand.dev.platform_data = &mini2440_nand_info;

}


再次make试试看....


还是出现错误,提示找不到mini2440_nand_info'



arch/arm/mach-s3c2440/mach-mini2440.c: In function 'mini2440_map_io':

arch/arm/mach-s3c2440/mach-mini2440.c:172: error: 'mini2440_nand_info' undeclared (first use in this function)

arch/arm/mach-s3c2440/mach-mini2440.c:172: error: (Each undeclared identifier is reported only once

arch/arm/mach-s3c2440/mach-mini2440.c:172: error: for each function it appears in.)

make[1]: *** [arch/arm/mach-s3c2440/mach-mini2440.o] 错误 1

make: *** [arch/arm/mach-s3c2440] 错误 2


可能是分区信息在文件的后面导致找不到的原因,把第二步加入的分区信息移到最前面试试看…经过十多分钟,make成功了,把zImage下载到板上试试看


郁闷,跟第一步信息一下,到booting the kernel.就不到了. 下班了,先吃饭去,下午再回来试试.


-------------------------------------------------------------------------------------------


下午,实在不知道问题在哪里,修改一下mach-mini2440.c,源代码如下(网上copy的):



#include

#include

#include

#include

#include

#include

#include

#include

#include

#include gpio.h>

#include

#include

#include

#include

#include

#include

#include



#include

#include

#include

#include

#include



#include

#include

#include

#include

#include

#include



#include

#include

#include

#include

#include

#include

#include

#include

#include

#include



#include



static struct map_desc mini2440_iodesc[] __initdata = {

};



static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = {

[0] = {

.hwport     = 0,

.flags     = 0,

.ucon       = 0x3c5,

.ulcon     = 0x03,

.ufcon     = 0x51,

},

[1] = {

.hwport     = 1,

.flags     = 0,

.ucon       = 0x3c5,

.ulcon     = 0x03,

.ufcon     = 0x51,

},

[2] = {

.hwport     = 2,

.flags     = 0,

.ucon       = 0x3c5,

.ulcon     = 0x03,

.ufcon     = 0x51,

}

};



#define LCD_WIDTH 240

#define LCD_HEIGHT 320

#define LCD_PIXCLOCK 170000



#define LCD_RIGHT_MARGIN 25

#define LCD_LEFT_MARGIN 0

#define LCD_HSYNC_LEN 4



#define LCD_UPPER_MARGIN 1

#define LCD_LOWER_MARGIN 4

#define LCD_VSYNC_LEN 1



static struct s3c2410fb_display mini2440_lcd_cfg __initdata = {

.lcdcon5 = S3C2410_LCDCON5_FRM565 |

 S3C2410_LCDCON5_INVVLINE |

 S3C2410_LCDCON5_INVVFRAME |

 S3C2410_LCDCON5_PWREN |

 S3C2410_LCDCON5_HWSWP,



.type = S3C2410_LCDCON1_TFT,



.width = LCD_WIDTH,

.height = LCD_HEIGHT,



.pixclock = LCD_PIXCLOCK,

.xres = LCD_WIDTH,

.yres = LCD_HEIGHT,

.bpp = 16,

.left_margin = LCD_LEFT_MARGIN + 1,

.right_margin = LCD_RIGHT_MARGIN + 1,

.hsync_len  = LCD_HSYNC_LEN + 1,

.upper_margin = LCD_UPPER_MARGIN + 1,

.lower_margin = LCD_LOWER_MARGIN + 1,

.vsync_len  = LCD_VSYNC_LEN + 1,

};



static struct s3c2410fb_mach_info mini2440_fb_info __initdata = {

.displays = &mini2440_lcd_cfg,

.num_displays = 1,

.default_display = 0,



.gpccon =       0xaa955699,

.gpccon_mask =  0xffc003cc,

.gpcup =        0x0000ffff,

.gpcup_mask =   0xffffffff,



.gpdcon =       0xaa95aaa1,

.gpdcon_mask =  0xffc0fff0,

.gpdup =        0x0000faff,

.gpdup_mask =   0xffffffff,



.lpcsel = 0xf82,

};



static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = {

.l3_clk = S3C2410_GPB(4),     // IO表示方法,定义在mach/regs-gpio.h->mach/gpio-nrs.h中

.l3_data = S3C2410_GPB(3),

.l3_mode = S3C2410_GPB(2),

.model = UDA134X_UDA1341,

};



static struct platform_device s3c24xx_uda134x = {

.name = 's3c24xx_uda134x',

.dev = {

.platform_data    = &s3c24xx_uda134x_data,

}

};



static struct mtd_partition friendly_arm_default_nand_part[] = {

[0] = {

.name = 'supervivi',

.size = 0x00040000,

.offset = 0,

},

[1] = {

.name = 'param',

.offset = 0x00040000,

.size = 0x00020000,

},

[2] = {

.name = 'Kernel',

.offset = 0x00060000,

.size = 0x00500000,

},

[3] = {

.name = 'root',

.offset = 0x00560000,

.size = 1024 * 1024 * 1024, //为以后拓展用

},

[4] = {

.name = 'nand',

.offset = 0x00000000,

.size = 1024 * 1024 * 1024, //

}

};



static struct s3c2410_nand_set friendly_arm_nand_sets[] = {

[0] = {

.name = 'NAND',

.nr_chips = 1,

.nr_partitions = ARRAY_SIZE(friendly_arm_default_nand_part),

.partitions = friendly_arm_default_nand_part,

},

};





static struct s3c2410_platform_nand friendly_arm_nand_info = {

.tacls = 20, // 建立时间 

.twrph0 = 60, // 等待时间

.twrph1 = 20, // 保持时间

.nr_sets = ARRAY_SIZE(friendly_arm_nand_sets),

.sets = friendly_arm_nand_sets,

.ignore_unset_ecc = 1,

};



#define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)



static struct resource mini2440_dm9k_resource[] = {

        [0] = {

                .start = MACH_MINI2440_DM9K_BASE,

                .end   = MACH_MINI2440_DM9K_BASE + 3,

                .flags = IORESOURCE_MEM

        },

        [1] = {

                .start = MACH_MINI2440_DM9K_BASE + 4,

                .end   = MACH_MINI2440_DM9K_BASE + 7,

                .flags = IORESOURCE_MEM

        },

        [2] = {

                .start = IRQ_EINT7,

                .end   = IRQ_EINT7,

                .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,

        }

};



static struct dm9000_plat_data mini2440_dm9k_pdata = {

        .flags          = (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),

};



static struct platform_device mini2440_device_eth = {

[1] [2] [3]
关键字:官方手册  mini2440  linux移植 引用地址:按照官方手册进行mini2440 linux移植及遇到的问题

上一篇:boot移植(十一)---代码修改---支持nandflash
下一篇:ARM-Linux移植之(四)——根文件系统构建

小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved