最新Uboot移植步骤 5:NorFlash

最新Uboot移植步骤5:NorFlash
显示Flash:***failed***,说明norflash未识别,我们搜索“Flash:”
进入第一个查看
找到这个判断条件,如果flash_size>0则输出flash大小,否则输出
*** failed ***
### ERROR ### Please RESET the board ###
其中hang函数导致程序无法继续向下执行,我们只实现了nand启动肯定在这会卡住,所以我们不用这个hang 函数,直接输出flash未识别的信息就好了,改动如下:
现在来找norflash未识别的原因,进入flash_init函数
看见这样一段代码
可知,有2个函数可以检测flash的大小如果flash_detect_legacy函数不行再使用flash_get_size函数,先进入flash_detect_legacy函数看下,其结构如下:
该函数有2个,使用哪一个由宏CONFIG_FLASH_CFI_LEGACY决定,搜索该宏:
很明显,前面我们都是使用该函数进行大小检测的,而该函数无法识别flash,那我们使用新方法进行检测,进入新方法查看:
发现有很多可用调试信息,我们看看如何起用这些调试信息:
发现只要定义了_DEBUG即可启用调试信息,我们定义该宏:
在文件开始发现注释:
我们直接定义DEBUG即可,
配置,编译,下载到板子norflash:
重新上电从norflash启动,输出如下:
我们查看JEDEC PROBE:从哪来
查看norflash手册,看读取的设备ID是否正确
可以看到输出的厂家设备ID是正确的,
说明下面这个函数读取正确
那就是
函数出现错误,我们进入该函数查看:
通过注释就可看到该函数是把我们读取的ID与这里的jedec_table[]数组里的ID进行比较,看这个数组:
该数组里存有各种型号的设备参数,而我们的不在其中,我们自己添加:
发现这里有个和我们类似的,拷贝代码用下:
添加后修改成我们自己的:
***************************************************************************************** 现在先说一下,这些参数都如何得到的并修改:
.mfr_id = 0x001c001c,
厂家ID,
.dev_id = 0x2249,
设备ID
.name = "EON EN29LV160A",
名字自己取
.uaddr = {
[1] = MTD_UADDR_0x0555_0x02AA /* x16 */
},
解锁地址,如图:
NorFlash读ID时,前3周期是写数据,第4周期是读数据,先在555地址写AA,再在2AA地址写55,再在555地址写90,这时解锁成功,就可以从地址100读取厂家ID是1C,设备ID也是如此。

这里我们看到uaddr[1]是为16位进行解锁的,所以我们把[1]设为MTD_UADDR_0x0555_0x02AA;
.DevSize = SIZE_2MiB,
norflash大小,查看手册:
1024K*16bit=1024*1024*16 bit=1024*1024*2 Byte=2MByte;
.CmdSet = P_ID_AMD_STD,
这个不用管;
.NumEraseRegions= 4,
.regions = {
ERASEINFO(16*1024, 1),
ERASEINFO(8*1024, 2),
ERASEINFO(32*1024, 1),
ERASEINFO(64*1024, 31),
}
块结构,见手册:
共有4种块,每种个数都不同。

***************************************************************************************
配置编译下载观察:
可以识别norflash大小为2M了,但有个error:too many flash sectors,我们搜索下这个错误:
这里只要扇区数量大于19就会出错,我们把值改大些:
现在已经识别了,把DEBUG调试去掉:
编译,下载:
查看norflash信息:
RO 是软件上定义这一块是只读的,想烧写就要
我们的uboot大概400K,肯定在0到80000里,我们烧写80000到90000这块试试:
先擦出80000到8FFFF里的内容,再从30000000处拷贝10000大小到80000处:
我们查看30000000处和80000处的数据:
相同。

我们比较下整个10000大小里的数据
发现有一处不同,我们烧32000000处数据试试:
这里发现所有都相同,那为何烧30000000处数据不对呢?
看看start.s文件,发现我们的栈在进入第2阶段后没有重新设置,所以那我们重定位后,栈还在30000000附近,没有到新的地方,所以拷贝代码后,该处的栈还会变化,就导致数据不同,那现在我们把栈也重定位到新运行地址附近:
定义:
声明:
使用:
设置好后,读出来:
再编译下载:
我们可不可以直接下载呢?看看已经烧写的UBOOT支持哪些命令:
这里发现不支持USB下载,tftp网络还没整好,看上面由串口下载命令loady,我们试试:
因为我们现在UBOOT在30000000位置,我们正使用它的loady命令,所以不能烧到那里,我们先烧到32000000,再拷贝到30000000,拷贝命令不是UBOOT的,所以不会影响。

再重启:
再比较:
现在没有任何问题了!成功!。

合集下载

U-Boot的移植入门(1)——增加对NorFlash的支持

U-Boot的移植入门(1)——增加对NorFlash的支持

U-Boot的移植入门(1)——增加对NorFlash的支持U-Boot 的移植入门(1)——增加对NorFlash的支持2010-02-09 02:12:13分类:嵌入式第二步、增加对NorFlash的支持接下来,我们来提供对于Nor Flash的支持。

U-Boot的SMDK2410相关部分是完整的支持AMD的两块NorFlash的,可惜我们的板子上带的是SST39VF1601。

不过,对于NorFlash的支持还是比较简单的。

我们依然来追踪U-Boot的执行流,在lib_arm/board.c文件中我们可以看到:#ifndef CONFIG_SYS_NO_FLASH/* configure available FLASH banks */display_flash_config (flash_init ());#endif /* CONFIG_SYS_NO_FLASH */默认情况下,U-Boot实际上支持了Nor Flash的。

追踪flash_init 函数,在board/Samsung/mini2440/mini2440.c文件中可以找到它。

我们的flash移植修改的主要代码也就在这儿了。

首先,修改配置文件中的相关部分。

在include/configs/mini2440.h文件中,将#define CONFIG_AMD_LV400 1 /* uncomment this if you have a LV400 flash */#if 0#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */#endif修改为:#if 0#define CONFIG_AMD_LV400 1 /* uncomment this if youhave a LV400 flash */#define CONFIG_AMD_LV800 1 /* uncomment this if you have a LV800 flash */#endif然后添加:#define CONFIG_SST_xF1601 1#ifdef CONFIG_SST_xF1601#define PHYS_FLASH_SIZE 0x00200000 /* 2MB */#define CONFIG_SYS_MAX_FLASH_SECT (32) /* max number of sectors on one chip */#defne CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 1F0000)这几个宏的意思基本上都还是比较明确的。

U-boot烧内核到NandFlash步骤

U-boot烧内核到NandFlash步骤

U-boot烧内核到NandFlash步骤
1.把uImage内核镜象放到TFT服务器文件夹内。

2.配置Window下的IP地址:192.168.0.30 这个其实也是TFTP服务器的地址。

3.修改u-boot配置文件u-boot-1.3.4/include/configs/xyd2440.h
修改为:
4.保存文件,重新编译u-boot.把生成的u-boot文件烧录到Norflash中。

5.重新启动开发板,
6.内核的启动过程:(在2 的条件下)
#tftp 30000000 uImage ; 通过tftp 命令将uImage 文件下载到内存30000000 位置。

(#bootm 32000000 ; 跳到内存32000000 处运行)。

#nand erase
#nand write.jffs2 32000000 100000322b90 ; 将内存32000000 处的数据写到NAND 的0 地址处大小为322b90 322b90这个值是内核大小,是执行tftp 32000000 uImage ;命令后下载内核产生的值,根据实际情况修改。

100000这个值是内核在NandFlash起始地址,要和。

中#defind CONFIG_BOOTCOMMAND “nboot 0x32000000 0 100000; bootm 0x32000000”中的100000相同。

7.重启开发板,如果有以下信息表示已经成功烧录。

(启动linux的信息)。

移植笔记从Norflash启动的uboot

移植笔记从Norflash启动的uboot

移植笔记从Norflash启动的uboot uboot移植记录之一uboot整个移植过程我们可以分为三个阶段:一,移植可以从Nor flash启动的uboot这个阶段是移植一个最简单的uboot,可以烧在Nor flash内运行.二,移植支持Nand flash驱动的uboot加入Nand flash驱动的支持,可以在uboot命令行下操作Nand flash.但还未能从Nand flash启动,只能在Nor flash内运行.三,移植可以从Nor flash启动的uboot可以烧录在Nand flash,并设置从Nand flash启动运行uboot.分三个阶段进行移植,可以对整个uboot的移植过程及原理更加清晰明了,同时降低了发现问题时解决问题的困难度和解决范围.首先介绍移植可以从Nor flash启动的uboot. 这个阶段相对简单一点,是移植一个最简单的uboot,可以烧在Nor flash内运行.不需要修改太多的东西。

步骤如下: 测试一下默认的smdk2410_config配置能否在你的板子上正常运行 1.编译uboot1.1.4#make smdk2410_config#make ARCH=arm注:编译针对arm的平台时,uboot默认使用arm-linux-gcc编译,若交叉编译器名字不一样,需要自行在Makefile里修改。

会出现两个错误.错误信息一:cc1: Invalid option `abi=apcs-gnu'make[1]: *** [hello_world.o] Error 1make[1]: Leaving directory `/root/u-boot-1.1.4/examples'make: *** [examples] Error 2解决办法:出错的文件是/cpu/arm920t/下的config.mk:将PLATform_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) 改成: PLATform_CPPFLAGS +=$(call cc-option,-mapcs-32,$(callcc-option,-mabi=apcs-gnu,))错误信息二:make[1]: *** No rule to make target `hello_world.srec', needed by`all'. Stop. make[1]: Leaving directory `/work/src/u-boot-1.1.4/examples' 解决方法:打开 examples/Makefile把example文件夹下的Makefile中的第126行%.srec: % 改成 %.srec: %.o第129行的%.bin: % 改成 %.bin: %.o2.若编译成功,则会在uboot源码下产生u-boot.bin文件。

u_boot移植(五)之分析uboot源码中nand flash操作

u_boot移植(五)之分析uboot源码中nand flash操作

u_boot移植(五)之分析uboot源码中nand flash操作一、OneNand 和Nand Flash我们已经能从Nand Flash启动了,启动之后,大家会看到如下效果:可以看出,我们的uboot默认使用的是OneNand。

需要注意的是我们的FSC100上面是没有OneNand的,有的是K9F2G08U0B型号的NAND FLASH。

前面我们了解过Nor Flash 和Nand Flash,那OneNand Flash又是什么呢?二、uboot 源码中Nand Flash部分代码分析我们从Nand Flash初始化看起,打开lib_arm/board.c文件,为了紧抓主线,以下代码只列举出了主线代码。

可以看出,我们可以通过CONFIG_CMD_NAND和CONFIG_CMD_ONENAND两个宏来选择NAND FLASH初始化还是 ONENAND FLASH初始化。

uboot 中默认定义了宏CONFIG_CMD_ONENAND,所以选择的是ONENAND FLASH初始化。

我们的FSC100上面使用的是NAND FLASH,所以我们要定义CONFIG_CMD_NAND宏,取消CONFIG_CMD_ONENAND宏的定义。

嗯!先做个记录:修改include/configs/fsc100.h,定义宏CONFIG_CMD_NAND,取消宏CONFIG_CMD_ONENAND。

好了,接下我们看看nand_init()函数时如何实现的。

看以看出,这段代码调用根据CONFIG_SYS_MAX_NAND_DEVICE宏[默认没有定义]的值来决定系统中Nand Flash设备的个数。

接着调用nand_init_chip()函数完成Nand Flash初始化,然后计算出每块Nand Flash的大小。

最终会输出Nand Flash总的容量。

嗯!做个记录:修改include/configs/fsc100.h,定义宏CONFIG_SYS_MAX_NAND_DEVICE,值为1没有看明白的地方是给nand_init_chip()函数传递的参数,接下来我们来看看他们是如何定义的。

uboot中NANDflash的MTD驱动移植

uboot中NANDflash的MTD驱动移植

u-boot中NAND flash的MTD驱动移植u-boot中移植了linux中的MTD驱动源码来支持NAND flash擦除、烧写及读的驱动。

MTD(memory technology device内存技术设备)是用于访问flash设备的Linux的子系统。

MTD的主要目的是为了使新的存储设备的驱动更加简单并有通用接口函数可用。

MTD驱动可支持CFI接口的norflash驱动、NAND flash驱动。

我们知道NAND flash 的访问接口并没有像norflash一样提供了一个标准的CFI访问接口,但是NAND flash生产厂家之间在各品牌、各型号NAND falsh芯片的访问接口方面做了一些约定俗成规定,如命令字、地址序列、命令序列、坏块标记位置、oob区格式等。

值得注意的是:在工艺制程方面分NAND flash有两种类型:MLC和SLC。

MLC和SLC属于两种不同类型的NAND FLASH存储器。

SLC全称是Single-Level Cell,即单层单元闪存,而MLC全称则是Multi-Level Cell,即为多层单元闪存。

它们之间的区别,在于SLC每一个单元,只能存储一位数据,MLC每一个单元可以存储两位数据,MLC的数据密度要比SLC 大一倍。

在页面容量方面分NAND也有两种类型:大页面NAND flash(如:HY27UF082G2B)和小页面NAND flash(如:K9F1G08U0A)。

这两种类型在页面容量,命令序列、地址序列、页内访问、坏块标识方面都有很大的不同,并遵循不同的约定所以在移植驱动时要特别注意。

下面以大页面的NAND flash:现代HY27UF082G2B为例介绍一下NAND flash一些基本情况,再来介绍MTD驱动的基本结构及流程分析,最后介绍u-boot中MTD驱动移植的详细步骤:3.4.1)NAND flash一些基本情况fl2400开发板上的nandflash芯片型号为:现代HY27UF082G2B,下面先介绍一下nandflash,及norflash与nandflash之间的区别:NOR和NAND是现在市场上两种主要的非易失闪存技术。

u-boot-2011.03在TQ2440上的移植--最新uboot移植文档

u-boot-2011.03在TQ2440上的移植--最新uboot移植文档

u-boot-2011.03在TQ2440上的移植(1)--建立自己的demo板收藏参考文章黄刚博客/u3/101649/showart_2276917.htmltekkman博客/u1/34474/showart_2212066.html1、到ftp://ftp.denx.de/pub/u-boot/下载u-boot-2010.06.tar.bz22、解压tar jxvf u-boot-2010.06.tar.bz23、进入uboot cd u-boot-2010.064、删减uboot进入/board,留下samsung,其它全部删除进入/arch,留下arm,其它全部删除进入/arch/arm/cpu,留下arm920t,其它全部删除5、建立自己的DEMO板cd /board/samsungmkdir smdk2440cp -rf smdk2410/* smdk2440///将2410下所有的代码复制到2440下cd smdk2440//进入smdk2440目录mv smdk2410.c smdk2440.c//将smdk2440下的smdk2410.c改名为smdk2440.c然后在文件夹samsung里留下smdk2440,其它全部删除cp include/configs/smdk2410.h include/configs/smdk2440.h//建立2440头文件在include/configs下留下smdk2440.h, 其它全部删除vi board/samsung/smdk2440/Makefile//修改smdk2440下Makefile的编译项,如下:COBJS := smdk2440.o flash.o//修改第28行因在smdk2440下我们将smdk2410.c改名为smdk2440.c6、修改u-boot跟目录下的Makefile文件。

查找到smdk2410_config的地方,在他下面按照smdk2410_config的格式建立my2440_config的编译选项,另外还要指定交叉编译器,修改159行CROSS_COMPILE ?= arm-linux-//指定交叉编译器为arm-linux-gccsmdk2410_config:unconfig//2410编译选项格式@$(MKCONFIG) $(@:_config=)arm arm920t smdk2410 samsung s3c24x0smdk2440_config:unconfig//修改蒂3054行,2440编译选项格式@$(MKCONFIG) $(@:_config=)arm arm920t smdk2440 samsung s3c24x0*说明:arm:CPU的架构(ARCH)arm920t:CPU的类型smdk2440 :对应在board目录下建立新的开发板项目的目录samsung:新开发板项目目录的上级目录,如直接在board下建立新的开发板项目的目录,则这里就为NULLs3c24x0:CPU型号*注意:编译选项格式的第二行要用Tab键开始,否则编译会出错7、测试编译新建的smdk2440开发板项目在uboot根目录测试make smdk2440_configmake即可在uboot根目录下生成bin文件在uboot里,清除中间文件用命令make distcleanu-boot-2011.03在TQ2440上的移植(2)--初始化时钟收藏smdk2440的初始化设置1、u-boot主要的目录结构如下2、启动流程图下图由上图可知u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成;u-boot的stage2代码通常放在lib_xxxx/board.c文件中,他用C语言写成。

U-boot-1.1.4 在FS2410开发板上的移植详解(For Nor Flash)

环境:u-boot-1.1.4FC3NorFlash SST39VF1601toolchains Arm-linux-uclibc-u-boot-1.1.4版本中带有移植好的SMDK2410源代码,使用SMDK2410的配置生成的u-boot.bin烧写到FS2410开发板中,已经可以运行和驱动CS8900网卡芯片,但是Flash驱动不同,故环境变量的保存无法实现。

本文档主要论述Flash 驱动的修改和环境变量保存的实现。

解压u-boot-1.1.4源码包make smdk2410_config修改主Makefile在export CROSS_COMPILE上一行加上CROSS_COMPILE = arm-linux-uclibc-make此时会出现一个错误:cc1: error: invalid option `abi=apcs-gnu'修改/cpu/arm920t/下的config.mk:将PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)改成:PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,$(call cc-option,-mabi=apcs-gnu),)再次make这次可以完全编译成功,主目录下生成u-boot.bin,使用Flash Programmer 主目录下带的BinToS19.exe将u-boot.bin转化为u-boot.s19格式使用Flash Programmer烧写到FS2410可以看到下列启动画面从启动画面可以看到,Flash的大小显示的是错误的,并且反复开机都有bad crc出现。

测试savenev命令显示可以保存环境变量,但是开机后环境变量还是默认值。

上述问题是由于SMDK2410开发板所使用的Flash与FS2410的不同而造成,故下面我们来改写它的flash.c文件。

uuboot 移植流程

uuboot 移植流程U-Boot 移植流程介绍U-Boot是一个开源的引导加载程序,常用于嵌入式系统中。

移植U-Boot可以将其适配到不同的硬件平台上,以满足特定需求。

本文将详细说明U-Boot移植的流程。

准备工作1.硬件选型:根据项目需求,选择适合的硬件平台。

2.获取源代码:从U-Boot官方网站或仓库下载最新版本的源代码。

3.安装交叉编译工具链:根据目标硬件平台的指令集架构,选择合适的交叉编译工具链,并进行安装。

4.了解目标硬件平台:熟悉目标硬件平台的架构、引导方式、存储器布局等相关信息。

移植流程1.配置编译环境:设置交叉编译工具链的环境变量,以确保正确编译U-Boot源代码。

2.配置U-Boot:修改U-Boot源代码中的配置文件,根据目标硬件平台的特性和需求进行相应配置。

–配置目标硬件平台的处理器类型、存储器布局等基本信息。

–配置启动方式,如通过网络(TFTP)或存储介质(SD卡、NAND Flash)等进行启动。

–配置启动流程,如引导加载程序的加载顺序、启动脚本等。

3.添加适配代码:根据目标硬件平台的需求,编写适配代码,包括引导加载程序和设备驱动等。

–引导加载程序:为目标硬件平台选择合适的程序入口点,配置启动参数,加载适配的设备驱动等。

–设备驱动:根据目标硬件平台的外设,编写相应的设备驱动代码,以支持外设的初始化和操作。

4.编译U-Boot:使用交叉编译工具链,编译修改后的U-Boot源代码。

–执行make clean清除之前的编译结果。

–执行make命令编译U-Boot源代码。

5.烧录和运行:将编译生成的U-Boot镜像烧录到目标硬件平台,并进行测试。

–根据目标硬件平台的烧录方式(串口、JTAG等),将U-Boot镜像烧录到目标设备。

–启动目标设备,观察U-Boot的启动信息是否正常输出,检查设备驱动是否正常加载。

6.调试和优化:根据实际情况,进行U-Boot的调试和性能优化。

–使用调试工具进行调试,如调试器、串口打印信息等。

u-boot-flash移植

Mini2440 NOR FLASH 驱动移植一:硬件连接2440的开发板采用了SST39VF1601,SST39VF160是由SST公司推出的容量为1MB×16bit 的CMOS多用途flash。

原理图如下pin 的定义如下:问题一:cpu mini2440对NOR FLASH的寻址范围是多大?二:NOR FLASH工作原理FLASH的编程原理都是只能将1写为0,而不能将0写为1.所以在FLASH编程之前,必须将对应的块擦除,而擦除的过程就是把所有位都写为1的过程,块内的所有字节变为0Xff。

对FALSH进行的最基本操作由读操作,写操作,和擦除操作。

以下将详细介绍,所有的都是参考sst39vf1601 datasheet读操作:datasheet p2 read用/CE和/OE信号线控制的。

当两者都为低时,处理器就可以从SST39VF160的输出口读取数据。

/CE是SST39VF160的片选线,当/CE为高,芯片未被选中,/OE是输出使能信号线,当/CE和/OE中的某一个为高时,SST39VF160的数据线为高阻态。

时序如下:写操作: datasheet p2在写入之前,扇区中如果有数据(0),则必须首先进行充分地擦除。

写操作分三步进行。

第1步,送出“软件数据保护”的3字节;第2步,送出地址和数据;第3步,内部写入处理阶段,这个阶段在第4个/WE或/CE的上升沿时被初始化。

被初始化后,内部写入处理将在10us时间内完成。

在内部写入阶段,任何指令将被忽略。

除了Data# plling(轮询) 和Toggle Bit(翻转位)写操作flowcharts如图所示:擦除操作:SST39VF1601 支持两种擦除方式:sectro-Erase(扇区擦除)、block-Erase(块擦除)sector 2Kword,即一个sector的大小是4KB;block 32Kword,即一个block的大小是64KB;问题二:若按照sector 擦除,共有多少sector? 若按照block 擦除,共有多少block?扇区擦除操作通过执行6字节的指令序列来进行,这个指令序列中包括扇区擦除指令(30h)和扇区地址(SA)。

u-boot1.1.6移植到S3C2410的详细步骤--nand_flash(新代码)


/* everything is fine now */ mov pc, lr
.ltorg /* the literal pools origin */ SMRDATA: .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5 _BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28)) .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+ (B0_PMC)) .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+ (B1_PMC)) .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+ (B2_PMC)) .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+ (B3_PMC)) .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+ (B4_PMC)) .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+ (B5_PMC)) .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN)) .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN)) .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT) .word 0x32 .word 0x30 .word 0x30 6.测试编译能否成功 [root@localhost u-boot-1.1.6]#make tbwoody2410_config [root@localhost u-boot-1.1.6]#make CROSS_COMPILE=arm-linux如果没有问题,在 u-boot-1.1.6 目录下就生成 u-boot.bin,因为到这一步只是做了点小改动, 并未涉及敏感问题,测试一下可增加点信心.O(∩_∩)O~ 7.在 board/tbwoody2410 下加入 NAND FLASH 读函数, 建立 nand_read.c, 加入如下内容(copy from vivi): #include <config.h> #include "linux/mtd/mtd.h"
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档