一、環境
1、開發板
Tiny6410 NAND: 2G RAM: 256M MLC
2、操作系統
Ubuntu10
3、交叉工具編譯鏈
arm-linux-gcc-4.5.1
二、下載內核源碼包
linux-2.6.38
三、解壓內核
tar –jxvf linux-2.6.38.tar.bz2
我解壓的的路徑是:
四、NAND FLASH移植
1、修改Makefile
vim Makefile
將約191行改為:
ARCH ? = arm
CROSS_COMPILE ? = arm-linux-
2、cp arch/arm/configs/s3c6400_defconfig .config
忽略這一步的話,后面會找不到System Type
3、make menuconfig
4、添加交叉工具編譯鏈的目錄
General setup --->
(/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-) Cross-compiler too
System Type --->
[*] MINI6410 (其余的可以去掉)
這樣編譯出來的內核是可以被uboot引導的,然后是增加nand flash支持
vi arch/arm/mach-s3c64xx/mach-mini6410.c
第117行
struct mtd_partition mini6410_nand_part[] = {
{
.name = 'Bootloader',
.offset = 0,
.size = (4 * 128 *SZ_1K),
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = 'Kernel',
.offset = (4 * 128 *SZ_1K),
.size = (5*SZ_1M) ,
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = 'File System',
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
}; //update at 2011-8-26 經過測試發現,這里改完后根本不起作用,甚至將整個注釋也無妨,估計分區已經固死在后面的s3c_nand_mlc.fo中
拷貝友善光盤的NDND FLASH 驅動
drivers/mtd/nand/s3c_nand.c
arch/arm/plat-samsung/include/plat/regs-nand.h
drivers/mtd/nand/s3c_nand_mlc.fo
然后修改drivers/mtd/nand/Kconfig和drivers/mtd/nand/Makefile文件
在drivers/mtd/nand/Kconfig 238行增加(注意:進格要用Tab鍵)
config MTD_NAND_S3C
tristate 'NAND Flash support for S3C SoC'
depends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX) && MTD_NAND
help
This enables the NAND flash controller on the S3C.
No board specfic 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
configMTD_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
drivers/mtd/nand/Makefile中20行增加
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand.o
末尾再增加
S3C_NAND_MLC_SRC = $(shell ls drivers/mtd/nand/s3c_nand_mlc.c 2>/dev/null)
ifeq ($(S3C_NAND_MLC_SRC),)
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.fo
else
obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand_mlc.o
endif
然后再make menuconfig
Device Drivers--->
<*> Memory Technology Device (MTD) support --->
[*] MTD partitioning support
[*] Command line partition table parsing
<*> Direct char device access to MTD devices
<*> Caching block device access to MTD devices
<*> NAND Device Support --->
< > NAND Flash support for Samsung S3C SoCs 去掉不要選
<*> NAND Flash support for S3C SoC
[*] S3C NAND Hardware ECC
make zImage
五、內核添加UBIFS
1、配置內核支持UBIFS
Device Drivers --->
<*> Memory Technology Device (MTD) support --->
<*> Enable UBI - Unsorted block images --->
2、配置MTD支持UBI接口
File systems --->
[*] Miscellaneous filesystems --->
<*> UBIFS file system support
3、make
4、下載測試
只要出現正常內核分區就說明nand 驅動可以用了。
上一篇:mini6410 2.6.38移植 USB
下一篇:6410 spi 設備驅動
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- 2017_調幅信號處理實驗電路(F 題)
- MIC2920A-4.8WT 400mA低壓降穩壓器典型應用
- LTC6990CS6#TRMPBF 直接壓電報警驅動器的典型應用。調整頻率以獲得最大警報聲壓(最大干擾以獲得??最佳效果)
- 具有 10V 柵極驅動器的 LTC3892IFE-1 高效率、雙路 5V/12V 輸出同步降壓轉換器的典型應用電路
- 使用 Infineon Technologies AG 的 ILD4035 的參考設計
- #第五屆立創電子設計大賽#個人顯示終端
- RGB燈帶控制板
- ADP7156ACPZ-1.8-R7 1.8V 輸出電壓、1.2A、超低噪聲、高 PSRR、RF 線性穩壓器的典型應用
- TRK-MPC5634M、MPC563xM StarterTRAK 開發套件,適用于汽車動力總成和精密定時工業應用
- 【立創開發板】陳E2的游戲機
- 迅為IMX6開發板OTA遠程升級-SWUpdata概述和使用
- 迅為IMX6ULL開發板NFS服務器的搭建
- 迅為IMX6開發板Buildroot文件系統4G撥號上網工具測試
- 實驗分享丨迅為IMX6ULL開發板點亮第一個led燈
- 迅為-IMX6Q開發板Buildroot文件系統nfs測試
- 進步一點點丨迅為4412開發板Linux內核開發基礎
- 每天學習一點丨借助U盤或TF卡拷貝程序到迅為IMX6ULL開發板上(二)
- iTOP4412開發板-Qt初探及Qtopia2.2.0系統開發
- 每天學習一點丨借助U盤或TF卡拷貝程序到迅為IMX6ULL開發板上(一)每天學習一點丨借助U盤
- 迅為i.MX8MM開發板ARM嵌入式Linux安卓9.0工業核心板iMX8M Mini板