u-boot-2014.10移植支持nand(代码片段)

hulig7 hulig7     2023-01-14     731

关键词:

在smdk2440.h里面加上NAND的配置选项 

#define CONFIG_CMD_NAND

编译出错

drivers/mtd/nand/s3c2410_nand.c: In function s3c2410_hwcontrol:
drivers/mtd/nand/s3c2410_nand.c:44: warning: implicit declaration of function s3c2410_get_base_nand
drivers/mtd/nand/s3c2410_nand.c:44: warning: initialization makes pointer from integer without a cast
drivers/mtd/nand/s3c2410_nand.c:59: error: dereferencing pointer to incomplete type
drivers/mtd/nand/s3c2410_nand.c:59: error: dereferencing pointer to incomplete type
drivers/mtd/nand/s3c2410_nand.c:62: error: dereferencing pointer to incomplete type

cp drivers/mtd/nand/s3c2410_nand.c drivers/mtd/nand/s3c2440_nand.c
在drivers/mtd/nand/Makefile添加

COBJS-$(CONFIG_NAND_S3C2410) += s3c2410_nand.o      
COBJS-$(CONFIG_NAND_S3C2440) += s3c2440_nand.o

同时需要修改配置文件smdk2440.h

         /*
         * NAND configuration
         */
        #ifdef CONFIG_CMD_NAND
        #define CONFIG_NAND_S3C2410        == >#define CONFIG_NAND_S3C2440 
        #define CONFIG_SYS_S3C2410_NAND_HWECC   ==>#define CONFIG_SYS_S3C2440_NAND_HWECC            

在drivers/mtd/nand/s3c2440_nand.c

nt board_nand_init(struct nand_chip *nand)
  #if 0
        cfg = S3C2440_NFCONF_EN;
        cfg |= S3C2440_NFCONF_TACLS(tacls - 1);
        cfg |= S3C2440_NFCONF_TWRPH0(twrph0 - 1);
        cfg |= S3C2440_NFCONF_TWRPH1(twrph1 - 1);
  #endif
        cfg = ((tacls-1)<<12)|((twrph0-1)<<8)|((twrph1-1)<<4);
        writel(cfg, &nand_reg->nfconf);
        
        writel((1<<4)|(1<<1)|(1<<0),&nand_reg->nfcont);
        。。。

                nand->select_chip = s3c2440_nand_select;

添加

static void s3c2440_nand_select(struct mtd_info *mtd, int chipnr)

        struct s3c2440_nand *nand = s3c2440_get_base_nand();

        switch (chipnr) 
        case -1:
                nand->nfcont |= (1<<1);
                break;
        case 0:
                nand->nfcont &= ~(1<<1);
                break;

        default:
                BUG();
        

重写

static void s3c2440_hwcontrol(struct mtd_info *mtd, int dat, unsigned int ctrl)

        struct s3c2440_nand *nand = s3c2440_get_base_nand();

        if (ctrl & NAND_CLE)
        
                writeb(dat, &nand->nfcmd);
        
        else if(ctrl & NAND_ALE)
        
                writeb(dat, &nand->nfaddr);
        

重写编译烧录

U-Boot 2014.10 (Nov 01 2018 - 14:26:34)
        
        CPUID: 32440001
        FCLK:      400 MHz
        HCLK:      100 MHz
        PCLK:       50 MHz
        DRAM:  64 MiB
        WARNING: Caches not enabled
        Flash: 2 MiB
        NAND:  256 MiB
        *** Warning - bad CRC, using default environment
        
        In:    serial
        Out:   serial
        Err:   serial
        Net:   dm9000
        Warning: dm9000 MAC addresses dont match:
        Address in SROM is         ff:ff:ff:ff:ff:ff
        Address in environment is  00:0c:29:45:c4:c3

增加启动参数

在smdk2440.h里面添加宏

#define CONFIG_BOOTCOMMAND    "nand read.jffs2 0x30007FC0 0x60000 0x200000; bootm 0x30007FC0"

如果以前烧写过内核到0x60000的位置,那么现在可以顺利从nor flash启动内核


u-boot-2014.10移植修改环境变量的存储位置(代码片段)

原来环境变量存储在norflash里,前面mtdparts分区第二个分区就是params现在修改环境变量到nand里, 搜索defaultenvironment在Env_common.c函数里面:default_environment结构体default_environment结构体定义在env_common.c里面其中有:#ifdefCONFIG_BOOTARG... 查看详情

u-boot-2014.10移植(代码片段)

1/***************************************************23*u-boot版本:u-boot-2014.1045*gcc版本:/home/flinn/tools/4.4.3/bin/arm-none-linux-gnueabi-67*89*服务器:ubuntu14.051011*1213*编译命令:makesmdk2440_config;make1 查看详情

u-boot-2014.10移植识别dm9000(代码片段)

在smdk2440.h里面注释掉CS8900相关的#if0#defineCONFIG_DRIVER_CS89001/*wehaveaCS8900on-board*/#defineCS8900_BASE0x19000300#defineCS8900_BUS161/*theLinuxdriverdoesaccessesasshorts*/#endif#if!defined(CONFIG_DRIVER_ 查看详情

u-boot-2014.10移植设置时钟/sdram(代码片段)

时钟修改vimarch/arm/cpu/arm920t/start.S#ifdefined(CONFIG_S3C2410)||defined(CONFIG_S3C2440)ldrr1,=0x3ffldrr0,=INTSUBMSKstrr1,[r0]/*FCLK:HCLK:PCLK=1:2:4*//*defaultFCLKis120MHz!*/ldrr0,=CLKDIVNmovr1,#5strr1, 查看详情

u-boot-2014.10移植添加mtdparts命令和分区(代码片段)

添加mtdparts命令,改命令可以查看当前分区,在启动参数里面可以以分区名代表地址和长度grep"cmd_mtdpart"*-nR  搜索可知,mtdpart在cmd_mtdparts.c里面定义  common/Makefile:147:obj-$(CONFIG_CMD_MTDPARTS)+=cmd_mtdparts.o因此需要定义CONFI... 查看详情

移植kernel-3.10.79(代码片段)

u-boot使用u-boot-2014.10find*-name"*2410*_defconfig"find*-name"*2440*_defconfig"可以看到arch/arm/configs/mini2440_defconfigarch/arm/configs/s3c2410_defconfig下载命令:setserverip192.168.1.104kernel:   tftp300000 查看详情

三,移植uboot-支持nand启动

文档时间:2018-08-10交叉编译器:arm-linux-gcc-4.3.2Ubuntu版本:16.04uboot版本:2013.10  查看详情

u-boot2016.05有关4096pagesize,oob==224nand的移植支持

大致介绍一下这个nand的基础属性pagesize==4096byteoob==224byteblocksize==256Kbyteu-bootconfigs/xxx.h里面配置如下参数:272#defineCONFIG_SYS_NAND_PAGE_SIZE4096273#defineCONFIG_SYS_NAND_OOBSIZE224274#defineCONFIG_SYS_NAND_BLOCK 查看详情

u-boot移植---代码修改---nand

一、NAND原理    NAND无地址空间,地址和数据的发送都依赖于LDATA[0:7]这一串数据总线。     不看随机页编程,看到从高位到低位的页,总共分为64个页面,每个页的组成是2K+64 个byte,一个块的大小是(128K+4K)b... 查看详情

u-boot移植---代码修改---支持norflash

一、问题定位    开发板重启后打印了2个提醒和一个错误,caches的提醒先不看,看看flash和nand下面的提醒,badCRC,Usingdefaultenviroment,我们可以定位Usingdefaultenviroment定位到代码位置,如下:    Env_common.c(common)   ... 查看详情

ok6410上移植uboot出现nand:nonanddevicefound!!!打印信息如下:

U-Boot2010.03(8月262013-09:43:51)forSMDK6410CPU:S3C6400@533MHzFclk=533MHz,Hclk=133MHz,Pclk=66MHz(ASYNCMode)Board:SMDK6410By青天DRAM:256MBFlash:0kBNAND:NoNANDdevicefound!!!0MiB***Warning-badCRC,usingdefaultenvironmentIn:serialOut:serialErr:serialNet:CS8900-0Hitanykeytostopautoboot:0参考技术A... 查看详情

s5pv210开发系列八_yaffs的移植

S5PV210开发系列八Yaffs的移植象棋小子   1048272975Nand作为市面上最基本的非易失性闪存技术之中的一个,应用在各种固态大容量存储解决方式中。因为Nandflash自身的特点,Nand存储器往往须要一款专用的Nand文件系统进行... 查看详情

uboot中打印信息nonanddevicefound!!!0mib啥错误?怎么修改uboot代码

...uboot会再次初始化NAND,从现象看,显然是uboot的nand驱动不支持你所用nand,nand驱动在uboot很容易找,相信只要稍微修改就能够改好。 参考技术Bnandflash初始化了吗? 查看详情

移植kernel-3.10.79支持yaffs(代码片段)

网站:http://www.yaffs.net/ 获取方法:执行gitclonegit://www.aleph1.co.uk/yaffs2 解压:tarzxfyaffs_source.tar.gz 打补丁:#cd/work/tmp/yaffs2//cdyaffs-dir#./patch-ker.shcm~/mini2440/linux-3.10.79//./patch-ker.shcmlinux- 查看详情

裸机——nand(代码片段)

1.首先需要知道Nand的基础知识  从Nand的芯片手册可以获得  我使用的芯片手册是K9F2G08  首先从芯片手册的名称可以获得信息:  K9F:三星  2G  :2Gb(256MB)  08  :8位数据线   下面列出芯片手册... 查看详情

u-boot移植---代码修改---支持dm9000网卡

一、准备工作1.1原理图    CONFIG_DM9000_BASE  片选信号是接在nGCS4引脚,若要确定网卡的基地址,则要根据片选信号的接口去确定。  在三星2440的DATASHEET中memorycontrol这一章的Figure5-1.S3C2440AMemoryMapafterReset已经说明了片选4的... 查看详情

支持qnx中的cmake??从 Linux 移植到 QNX

】支持qnx中的cmake??从Linux移植到QNX【英文标题】:cmakeinqnxsupported??PortingfromLinuxtoQNX【发布时间】:2018-10-2311:40:52【问题描述】:QNX6.5是否支持Cmake?我有一个使用cmake的Linux平台代码。我需要把它移植到QNX。【问题讨论】:阅... 查看详情

32位平台代码向64位平台移植

1背景描述  从苹果A7处理器开始,就支持着两种不同的指令集:第一种为原有处理器所支持的32-bitARM指令集,第二种为崭新的64-bitARM体系结构。这种64-bit体系结构拥有更大的地址空间,最大支持16GB内存,同时它一次性可... 查看详情