设为首页 加入收藏

TOP

Linux-3.4.4内核在XC2440上移植成功
2014-11-24 12:05:09 来源: 作者: 【 】 浏览:0
Tags:Linux-3.4.4 内核 XC2440 移植 成功

很久没有关心linux内核版本的,现在已经出到了3.4.4,3.5的稳定版本也快出了


决定将XC2440的2.6.37版本升级到linux-3.4.4。原来移植linux3是如此容易,驱动架构基本上没有变,可以直接从linux2.6.37上过渡,1个小时就搞定


总结一下和2.6.37内核的区别和移植过程中遇到的问题及解决办法


1. bsp


board file都放到了arch/arm/mach-s3c24xx目录下,把mach-xc2440.c也放到这里


同目录的Kconfig: 按CPU排序,所有的Board选项都集成在一个菜单下


board file中MACHINE_START将.boot_params 替换成 .atag_offset,


加了.restart = s3c244x_restart(在common.h中定义)


2. yaffs:


在struct mtd_info中的接口函数变成的以下划线开头的,需要把调用mtd操作函数的地方修改函数名。 如mtd->read --> mtd->_read


只有3个文件会报错,yaffs_vfs.c yaffs_mtdif1.c yaffs_mtdif2.c


yaffs_vfs.c: 会提示“向只读成员‘i_nlink’赋值”


查看inode结构体里面有一个联合体,i_nlink是const类型的


struct inode union {


const unsigned int i_nlink;


unsigned int __i_nlink;


};


所以要用__i_nlink,把代码中的i_nlink都替换了


root = d_alloc_root(inode); 提示这行的d_alloc_root函数没有声明


查看dache.c中这个函数已经改为了d_make_root


yaffs_mtdif1.c: ‘MTD_OOB_AUTO’未声明


看老版内核的mtd.h中的enum mtd_oob_mode_t没有了


有个struct mtd_oob_ops,看上面的注释里有MTD_OPS_RAW


搜这个是在mtd-eabi.h定义的


enum {


MTD_OPS_PLACE_OOB = 0,


MTD_OPS_AUTO_OOB = 1,


MTD_OPS_RAW = 2,


};


所以把MTD_OOB_AUTO改成MTD_OPS_AUTO_OOB


yaffs_mtdif2.c和yaffs_mtdif1.c修改的地方一样


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇使用命名参数调用 PHP 函数 下一篇Linux2.6.37.4在XC2440上移植成功

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·PostgreSQL 索引 - (2025-12-25 22:20:43)
·MySQL Node.js 连接 (2025-12-25 22:20:41)
·SQL 撤销索引、表以 (2025-12-25 22:20:38)
·Linux系统简介 (2025-12-25 21:55:25)
·Linux安装MySQL过程 (2025-12-25 21:55:22)