关键词:
在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 don‘t 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内存,同时它一次性可... 查看详情