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.pswp.cn/news/537821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537821.shtml
英文地址,請注明出處:http://en.pswp.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;給張…