基于Tiny 6410的内核移植 (NAND FLASH 、UBIFS篇)

发布者:DazzlingGaze最新更新时间:2024-08-12 来源: cnblogs关键字:Tiny  内核移植  NAND  FLASH  UBIFS 手机看文章 扫描二维码
随时随地手机看文章

一、环境

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 驱动可以用了。


关键字:Tiny  内核移植  NAND  FLASH  UBIFS 引用地址:基于Tiny 6410的内核移植 (NAND FLASH 、UBIFS篇)

上一篇:mini6410 2.6.38移植 USB
下一篇:6410 spi 设备驱动

推荐阅读最新更新时间:2026-03-25 14:08

linux-2.6.38到tiny6410移植手册(1):nand flash
环境 VirtualBox+ubuntu 10.04 编译器,友善自带arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz 硬件,tiny6410,核心板号1107 1、下载linux-2.6.38的源码, ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2 2、解压 tar xvfj /mnt/ubuntu/linux-2.6.38.tar.bz2 -C . 3、vi Makefile 191行改为 ARCH ?= arm 4、cp arch/arm/configs/s3c6400_defconfig .con
[单片机]
linux-2.6.38到<font color='red'>tiny</font><font color='red'>6410</font>的<font color='red'>移植</font>手册(1):<font color='red'>nand</font> <font color='red'>flash</font>
第五章、Tiny4412 U-BOOT移植Nand Flash原理
此篇是半写半抄来的。参考文章查看第一章说明。 Tiny4412中是没有焊接NandFlash的,取而代知的是eMMC芯片,所以这一节我也没有细细的去看,为了自己以后可能会修改这部分代码,我将网友“南山一梦”关于NandFlash基本原样的复制过来了。里面内容基本没有作太多修改。后面我会试着来分析eMMC如何操作。 一、芯片简介 虽然Tiny4412中没有焊接NandFlash,但PCB板上是有这部分电路的,原理图上所用的Flash芯片型号是:K9GAG08U0E 图5-1、Tiny4412 核心板图 查找三星芯片的命名手册,这个网上有PDF名称叫“三星_Nand_Flash_芯片型号命名规则.pdf”,查找K9GA
[单片机]
第五章、<font color='red'>Tiny</font>4412 U-BOOT<font color='red'>移植</font>五 <font color='red'>Nand</font> <font color='red'>Flash</font>原理
Tiny210驱动之NAND_FLASH驱动程序
tiny_nand.c驱动源码: #include "linux/module.h" #include "linux/types.h" #include "linux/init.h" #include "linux/kernel.h" #include "linux/string.h" #include "linux/ioport.h" #include "linux/platform_device.h" #include "linux/delay.h" #include "linux/err.h" #include "linux/slab.h" #include "linux/clk.h" #include "linux/cpu
[单片机]
基于tiny4412的Linux内核移植 ---- 調試方法
平臺 Linux-4.4.4 uboot使用的是友善自帶的(爲了支持uImage和設備樹做了稍許修改) 概述 這篇博客主要用於匯總一下調試方法。 正文 1. dnw下載 目前我將uboot燒寫到SD卡中,然後使用dnw將kernel、根文件系統以及設備樹鏡像下載到內存中,爲了提高效率,可以使用下面的方法: 在uboot中添加環境變量: setenv dnw_up 'dnw 0x40600000; dnw 0x41000000; dnw 0x42000000; bootm 0x40600000 0x41000000 0x42000000' 進入uboot終端後,執行如下命令: run d
[单片机]
基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 摘要 上一篇 博文在tiny4412上移植了MMA7660驱动程序,使用的是exynos4
[单片机]
基于<font color='red'>tiny</font>4412的Linux<font color='red'>内核</font><font color='red'>移植</font> -- MMA7660驱动<font color='red'>移植</font>(九-2)
基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 摘要 MMA7660是一个三轴加速度传感器,跟exynos4412之间使用I2C接口进行通信
[单片机]
基于<font color='red'>tiny</font>4412的Linux<font color='red'>内核</font><font color='red'>移植</font> -- MMA7660驱动<font color='red'>移植</font>(九)
基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)
平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本:Linux-4.4.0 (支持device tree) u-boot版本:友善之臂自带的 U-Boot 2010.12 (为支持uImage启动,做了少许改动) busybox版本:busybox 1.25 eMMC:KLMxGxFE3x-x00x 交叉编译工具链: arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)) 概述 eMMC驱动在内核中也已经支持好了,代码在:
[单片机]
基于<font color='red'>tiny</font>4412的Linux<font color='red'>内核</font><font color='red'>移植</font> -- eMMC驱动<font color='red'>移植</font>(六)
Tiny 6410的Linux学习总结!
1、Tiny6410的Linux系统修改IP地址: vi /etc/eth0-setting 2、Ubuntu14.04自动以root身份登录系统: /etc/lightdm/lightdm.conf 更改为以下内容:重启后自动以Root身份登录 autologin-guest=false autologin-user=root autologin-user-timeout=0 autologin-session=lightdm-autologin
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved