这里我主要移植的是增加yaffs2文件系统支持,修改和移植nand驱动。

1.不知道为什么我这yaffs2的补丁打上了就没发现过编译错误,相当顺利啊 呵呵。

附上补丁地址-----------------------------------点击打开链接

修改补丁里patch‐ker.sh 文件。

屏蔽下面这段代码。

# Can we handle this version?

#if [ $VERSION ‐ne 2 ‐o $PATCHLEVEL ‐lt 6 ]

#then

# echo "Cannot patch kernel version $VERSION.$PATCHLEVEL.$SUBLEVEL, must be 2.6.x

or higher"

# exit 1;

#fi

然后直接./patch-ker.sh c m -----(内核源码路径)

2.修改顶层makefile 的arch 和交叉编译器cross_compile

3.复制配置文件smdk6400_defconfig,为smdk6410_defconfig

由于配置文件太长,详见这个下载这个配置文档————————点击打开链接,关于配置的问题就不再提了

4.nand支持部分

修改/file/linuxj/arch/arm/mach-s3c64xx/mach-smdk6410.c 若没有这个文件就复制mach-smdk6400.c

1)添加头文件

#include

#include

#include

2)添加分区配置

/*

* Configuring Nandflash on SMDK6410

*/

struct mtd_partition ok6410_nand_part[] = {

{

.name  = "Bootloader",

.offset  = 0,

.size  = (1 * SZ_1M),

.mask_flags = MTD_CAP_NANDFLASH,

},

{

.name  = "Kernel",

.offset  = (1 * SZ_1M),

.size  = (5*SZ_1M) ,

.mask_flags = MTD_CAP_NANDFLASH,

},

/*

{

.name  = "User",

.offset  = (6 * SZ_1M),

.size  = (120*SZ_1M) ,

},

*/

{

.name  = "File System",

.offset  = MTDPART_OFS_APPEND,

.size  = MTDPART_SIZ_FULL,

}

};

static struct s3c2410_nand_set ok6410_nand_sets[] = {

[0] = {

.name       = "nand",

.nr_chips   = 1,

.nr_partitions  = ARRAY_SIZE(ok6410_nand_part),

.partitions = ok6410_nand_part,

},

};

static struct s3c2410_platform_nand ok6410_nand_info = {

.tacls      = 25,

.twrph0     = 55,

.twrph1     = 40,

.nr_sets    = ARRAY_SIZE(ok6410_nand_sets),

.sets       = ok6410_nand_sets,

};

在platform_device *smdk6410_devices[] __initdata里面添加&s3c_device_nand

#ifdef CONFIG_REGULATOR

&smdk6410_b_pwr_5v,

#endif

&smdk6410_lcd_powerdev,

&smdk6410_smsc911x,

&s3c_device_adc,

&s3c_device_nand,

在smdk6410_machine_init(void)里面添加

s3c_nand_set_platdata(&ok6410_nand_info);

3)nand驱动支持

1.去网上下个开源的S3C_nand.c源码或者到这里下载----------------------点击打开链接

2.当然只这样拷贝了对内核来说不起任何作用,内核根本不会去编译它,所以现在需要

修改drivers/mtd/nand/目录下的配置文件Kconfig和Makfile告知内核来编译s3c_nand.c驱

动程序文件。

在Kconfig中添加如下信息,这样在内核配置的menuconfig中就能看到选项了:

config MTD_NAND_S3C

tristate "NAND support for Samsung S3C"

depends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) && MTD_NAND

help

This enables the NAND flash controller on the S3C

No board specific support is done by this driver, each board

must advertise a platform_device for the driver to attach.

config MTD_NAND_S3C_DEBUG

bool "S3C NAND driver debug"

depends on MTD_NAND_S3C

help

Enable debugging of the S3C NAND driver

config MTD_NAND_S3C_HWECC

bool "S3C NAND Hardware ECC"

depends on MTD_NAND_S3C

help

Enable the use of the S3C's internal ECC generator when

using NAND. Early versions of the chip have had problems with

incorrect ECC generation, and if using these, the default of

software ECC is preferable.

If you lay down a device with the hardware ECC, then you will

currently not be able to switch to software, as there is no

implementation for ECC method used by the S3C

.3.然后在Makefile中添加如下信息:

obj-$(CONFIG_MTD_NAND_S3C)        += s3c_nand.o

4.因为还没有给6410的nand flash寄存器定义,但是在s3c_nand中使用了,所以编译会有很多未定义错误

主要是在arch/arm/plat-samsung/include/plat/regs-nand.h添加

/* for s3c_nand.c */

#define S3C_NFCONF  S3C2410_NFREG(0x00)

#define S3C_NFCONT  S3C2410_NFREG(0x04)

#define S3C_NFCMMD  S3C2410_NFREG(0x08)

#define S3C_NFADDR  S3C2410_NFREG(0x0c)

#define S3C_NFDATA8  S3C2410_NFREG(0x10)

#define S3C_NFDATA  S3C2410_NFREG(0x10)

#define S3C_NFMECCDATA0  S3C2410_NFREG(0x14)

#define S3C_NFMECCDATA1  S3C2410_NFREG(0x18)

#define S3C_NFSECCDATA  S3C2410_NFREG(0x1c)

#define S3C_NFSBLK  S3C2410_NFREG(0x20)

#define S3C_NFEBLK  S3C2410_NFREG(0x24)

#define S3C_NFSTAT  S3C2410_NFREG(0x28)

#define S3C_NFMECCERR0  S3C2410_NFREG(0x2c)

#define S3C_NFMECCERR1  S3C2410_NFREG(0x30)

#define S3C_NFMECC0  S3C2410_NFREG(0x34)

#define S3C_NFMECC1  S3C2410_NFREG(0x38)

#define S3C_NFSECC  S3C2410_NFREG(0x3c)

#define S3C_NFMLCBITPT  S3C2410_NFREG(0x40)

#define S3C_NF8ECCERR0  S3C2410_NFREG(0x44)

#define S3C_NF8ECCERR1  S3C2410_NFREG(0x48)

#define S3C_NF8ECCERR2  S3C2410_NFREG(0x4c)

#define S3C_NFM8ECC0  S3C2410_NFREG(0x50)

#define S3C_NFM8ECC1  S3C2410_NFREG(0x54)

#define S3C_NFM8ECC2  S3C2410_NFREG(0x58)

#define S3C_NFM8ECC3  S3C2410_NFREG(0x5c)

#define S3C_NFMLC8BITPT0 S3C2410_NFREG(0x60)

#define S3C_NFMLC8BITPT1 S3C2410_NFREG(0x64)

#define S3C_NFCONF_NANDBOOT (1<<31)

#define S3C_NFCONF_ECCCLKCON (1<<30)

#define S3C_NFCONF_ECC_MLC (1<<24)

#define S3C_NFCONF_ECC_1BIT (0<<23)

#define S3C_NFCONF_ECC_4BIT (2<<23)

#define S3C_NFCONF_ECC_8BIT (1<<23)

#define S3C_NFCONF_TACLS(x) ((x)<<12)

#define S3C_NFCONF_TWRPH0(x) ((x)<<8)

#define S3C_NFCONF_TWRPH1(x) ((x)<<4)

#define S3C_NFCONF_ADVFLASH (1<<3)

#define S3C_NFCONF_PAGESIZE (1<<2)

#define S3C_NFCONF_ADDRCYCLE (1<<1)

#define S3C_NFCONF_BUSWIDTH (1<<0)

#define S3C_NFCONT_ECC_ENC (1<<18)

#define S3C_NFCONT_LOCKTGHT (1<<17)

#define S3C_NFCONT_LOCKSOFT (1<<16)

#define S3C_NFCONT_MECCLOCK (1<<7)

#define S3C_NFCONT_SECCLOCK (1<<6)

#define S3C_NFCONT_INITMECC (1<<5)

#define S3C_NFCONT_INITSECC (1<<4)

#define S3C_NFCONT_nFCE1 (1<<2)

#define S3C_NFCONT_nFCE0 (1<<1)

#define S3C_NFCONT_INITECC (S3C_NFCONT_INITSECC | S3C_NFCONT_INITMECC)

#define S3C_NFSTAT_ECCENCDONE (1<<7)

#define S3C_NFSTAT_ECCDECDONE (1<<6)

#define S3C_NFSTAT_BUSY  (1<<0)

#define S3C_NFECCERR0_ECCBUSY (1<<31)

OK移植先告一段落,移植预告 后期主要添加串口驱动 usb驱动

linux3.0 nand分区,OK6410(256MRAM2Gnandflash) Linux3.0.1内核移植相关推荐

  1. Y410P用虚拟机装Linux系统,OK6410、Linux2.6.36内核移植,DM9000 驱动移植

    对照这个结构体  将那些进行修改,注意  by  acanoe   的语句为修改重点. // add by acanoe 2 &s3c_device_nand,//这一语句为添加nand  设 ...

  2. 编译ok6410linux内核,Linux3.6.7在OK6410平台的移植(二)编译配置linux3.6.7

    1.修改主目录下Makefile: ARCH?= $(SUBARCH) CROSS_COMPILE?= $(CONFIG_CROSS_COMPILE:"%"=%)改为: ARCH? ...

  3. Linux3.6.7在OK6410下的移植

    2019独角兽企业重金招聘Python工程师标准>>> 这是在本学期期末整项目时习得的,不知道以后会不会有用. 一个天天整js+css+html的,突然弄Linux C,学到的确实不 ...

  4. android 5.0合并分区,中兴天极2 S291合并分区刷Android 5.1刷机教程

    中兴天极2 S291合并分区刷Android 5.1刷机教程. 今天的帖子是给大家的,谈论我们的ZTE Tianji 2 S291如何更新Android 5.1. 可以说Android 5.1是最新的 ...

  5. 分区助手专业版5.0下载与使用方法

    下载地址: [分区助手]分区助手专业版 5.6.2-ZOL软件下载 http://xiazai.zol.com.cn/detail/42/411542.shtml 转载自:分区助手专业版5.0使用方法 ...

  6. CCS6.0 FLASH分区扩容

    Location Type FLASHE memory range overlaps existing CCS6.0 FLASH分区扩容 查看当前Flash占用情况 View---->Memor ...

  7. s3c2440移植Linux内核,移植Linux-3.4.2内核到S3C2440

    一.BootLoader引导内核过程 1.Bootloader的工作 1.1.将内核读入内存 1.2.保存内核启动参数到指定位置,内核启动时去这个位置解析参数 1.3.启动内核.传入机器ID 二.内核 ...

  8. Nand分区及nand erase简解

    我的nand flash 32M,kernel 2.6.18, rootfs is emb  linux , cramfs. nand flash分区如下: static struct mtd_par ...

  9. 【正点原子Linux连载】第三十七章 Linux内核移植 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. WCF RIA 服务 (三十二)-- 身份验证、角色、个性化 3
  2. 在Mac OS X上安装 Ruby运行环境
  3. 在MyEclipse中导入做好的java项目出现错误The project cannot be built until build path errors are resolved
  4. linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
  5. 有关域索引错误产生的原因及解决办法
  6. windows 7 提示缺少D3DCOMPILER_47.dll的正确解决方法
  7. brave+kafka+zipkin+cassandra搭建分布式链路跟踪系统
  8. Mybatis学习笔记-一级缓存与二级缓存
  9. Introduction to Computer Networking学习笔记(十三):传输层知识点学习总结
  10. mongodb 分组聚合_MongoDB 临时表横空出现 1 万+,这条语句执行前请准备好翻车的姿势...
  11. cocos creator人物动画切换控制
  12. URL 编码和解码工具
  13. 线性表文档之静态链表
  14. python将pascal VOC数据集转成coco数据集
  15. nginx日志json化后问题(\x22)解决
  16. 查看windows服务器内存详细信息,Windows服务器查看内存型号
  17. 一文带你了解ARM的发展历程
  18. python代码画樱花主要特色,手机python代码画樱花
  19. Java面向对象题库
  20. 离散数学(二):命题公式的等值演算

热门文章

  1. 使用神经网络做二分类,输出层需要几个神经元?应该选择哪一种激活函数?如果要处理minst数据、输出层需要几个神经元?使用那种激活函数?如果使用神经网络预测房价,输出层需要几个神经元、使用什么激活函数?
  2. python合并两个字典的内容,使用update方法
  3. 影像组学视频学习笔记(29)-ICC的计算、Li‘s have a solution and plan.
  4. 纳米孔测序高错误区域恢复率高达99%,肖传乐/刘奕志/王建新等在Nature子刊发表新校正组装算法
  5. 【转载】自然语言推理介绍
  6. evolution ubuntu邮箱_Ubuntu下使用Evolution电子邮箱客户端
  7. tf.GradientTape() 示例
  8. Chart.js-雷达图分析(参数分析+例图)
  9. Linux下使用终端调试Python程序:pudb
  10. 给VMware虚拟机增加硬盘容量:Linux/Windows系统