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

这里我主要移植的是增加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驱动

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

authentication plugin caching_sha2

新电脑安装最新版本的Mysql&#xff0c;用Navicat Premium连接&#xff0c;提示&#xff1a;authentication plugin caching_sha2 因为mysql8.0开始更新了验证方式&#xff0c;Navicat Premium版本连接新MySQL的时候&#xff0c;还是上一个版本的认证方式。 不仅Navicat Prem…

openlayers入门开发系列之图层控制

本篇的重点内容是利用openlayers实现地图图层控制功能&#xff0c;效果图如下&#xff1a; 部分核心代码如下&#xff1a;页面引用ztree插件图层管理器界面布局图层管理器初始化jsLayerSwitcher类定义详细的实现过程见&#xff1a;这里

linux df命令无反馈,Linux-df命令

df命令&#xff1a;说明&#xff1a;df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间&#xff0c;目前还剩下多少空间等信息参数&#xff1a;-a或--all&#xff1a;包含全部的文件系统&#xff1b;--block-size&…

windows版本的redis

redis官网是不提供windows版本的。 微软的github上有windows版本下载&#xff0c;不会是redis的最新版本&#xff0c;是基于redis稳定版本制作的。 redis官网关于文档版本的说明&#xff1a; Redis uses a standard practice for its versioning: major.minor.patchlevel. A…

一点一点看JDK源码(五)java.util.ArrayList 后篇之removeIf与Predicate

一点一点看JDK源码&#xff08;五&#xff09;java.util.ArrayList 后篇之removeIf与Predicate liuyuhang原创&#xff0c;未经允许禁止转载 本文举例使用的是JDK8的API 目录&#xff1a;一点一点看JDK源码&#xff08;〇&#xff09; Predicate为jdk1.8新增接口&#xff0c;由…

linux选择运行的核数量,linux – 如何根据可用内核的数量选择最大负载阈值?

负载在Linux上经常被误解.在Linux上,它是运行或不间断睡眠状态中所有任务的度量.请注意,这是任务,而不是进程.线程包含在此值中.内核每五秒计算一次加载,并且是一个加权平均值.这是微小负载是平均5/60,五分钟5/300和十五分之五.一般来说,作为一个纯数字的负载在没有参考点的情况…

使用nginx代理,怎么获取真实的IP

1.在nginx.conf配置中加入配置信息 proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-NginX-Proxy true; 2.然后…

英语发音规则---S字母

英语发音规则---S字母 一、总结 一句话总结&#xff1a; 1、S 在音节开头或清辅音前 /s/&#xff1f; sit /sɪt/ vt.& vi.坐seat /si:t/ n.席位sell /sel/ vt.& vi.卖&#xff0c;售sold /səʊld/ v.卖&#xff0c;售sleep /sli:p/ vi.睡slow /sləʊ/ adj.慢的skate…

Mysql windows 安装提示MSVCR120.dll文件丢失

电脑上已经按照了vc运行库&#xff0c;但是报错。 原因&#xff1a;文件被恶意程序破坏了 解决方法&#xff1a;到微软官网下载 VC redist packages for x64。点击跳转 vcredist_x64.exe 如果是32位&#xff0c;则选vcredist_x32.exe 安装完后会提示重启电脑&#xff0c;不…

catcti监控linux主机,CentOS7搭建Prometheus 监控Linux主机

简介prometheus可以拆分成多个节点进行指标收集。安装prometheuswget -c https://github.com/prometheus/prometheus/releases/download/v2.23.0/prometheus-2.23.0.linux-amd64.tar.gztar zxvf prometheus-2.23.0.linux-amd64.tar.gz -C /opt/cd /opt/ln -s prometheus-2.23.…

自己动手实现一个html2canvas

前言 昨天写了新手引导动画的4种实现方式, 里面用到了 html2canvas 于是就顺便了解了一下实现思路. 大概就是 利用 svg 的 foreignObject 标签, 嵌入 dom, 最后再利用 canvas 绘制 svg. 从而实现最终目的. 先让大家看看效果 MDN示例 var canvas document.getElementById(canva…

Git fetch pull 详解

1、简单概括 先用一张图来理一下git fetch和git pull的概念&#xff1a; 可以简单的概括为&#xff1a; git fetch是将远程主机的最新内容拉到本地&#xff0c;用户在检查了以后决定是否合并到工作本机分支中。 而git pull 则是将远程主机的最新内容拉下来后直接合并&#x…

linux 安装redis2.8.3,Linux及Windows安装Redis(详细)

标签&#xff1a;Linux及Windows安装Redis1.Windows安装教程1.1下载https://github.com/MSOpenTech/redis/releases进入github里下载redis Windows版压缩包将我们下载好的文件放进新建的一个Redis文件夹(我在C盘创建了一个redis的文件夹)1.2启动服务打开我们Windows版的dos命令…

Git 少用 Pull 多用 Fetch 和 Merge

转自&#xff1a;http://www.oschina.net/translate/git-fetch-and-merge --------------------------------------------------------------------------------- 本文有点长而且有点乱&#xff0c;但就像Mark Twain Blaise Pascal的笑话里说的那样&#xff1a;我没有时间让…

IDEA生成可运行jar包

方式1: maven打包 maven 包中添加如下配置 <build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><appendAssemblyId>false</appendAssemblyId><descriptorRefs><descriptorRef&…

linux packet socket,linux Packet socket (1)简单介绍

本文主要来自于linux自带的man packet手冊&#xff1a;http://man7.org/linux/man-pages/man7/packet.7.html平时常常使用的INET套接字提供的是7层的抓包能力&#xff0c;抓上来的data直接就是tcp或者udp的payload&#xff0c;无需关心L3和L4的头部信息。Packet套接字提供的是L…

TortoiseGit 修改密码

当TortoiseGi默认设置了凭证助手为“管理器-所有windows用户”&#xff0c;每次向远程git推送时&#xff0c;都会去windows的凭证管理器里读取值&#xff0c;然后推送。 如果密码修改了&#xff0c;或者密码不小心输入错了&#xff0c;每次提交都会报错&#xff1a;HTTP Basic:…

linux系统常见操作,Linux系统基本操作

我们可以认为Linux是一套自由使用的类Unix操作系统&#xff0c;与Windows相比较而言&#xff0c;Linux具有安全、开源、稳定等特点。下面我来介绍Linux中一些的登录登出基本操作。1. 启动系统通常LILO是安装在MBR上的&#xff0c;计算机启动后&#xff0c;MBR上的程序被执行&am…

字符串常见处理

mystr hello world itcast and itcastcpps mystr.find(hello)print(s)ind mystr.index(world)print(ind)cou mystr.count(c)print(cou)rep mystr.replace(c,)print(rep)spl mystr.split( )print(spl)转载于:https://www.cnblogs.com/zxt-cn/p/9714841.html

git 无法访问

git分2种访问方式&#xff1a;ssh&#xff0c;https ssh模式&#xff0c;需要在github或gitlab上配置公钥&#xff0c;本地要生成秘钥。 举例&#xff1a; 公司使用gitlab 张工需要访问公司李工的代码库。 步骤&#xff1a; 1、李工要在gitlab他的项目里&#xff0c;给张…