uboot1.1.6之NOR FLASH 出现的问题解决方法

U-BOOT移植,structure has no member named `CAMDIVN

speed.c: In function `get_HCLK‘:
speed.c:114: error: structure has no member named `CAMDIVN‘
speed.c: In function `get_PCLK‘:
speed.c:154: error: structure has no member named `CAMDIVN‘
make[1]: *** [speed.o] Error 1
make[1]: Leaving directory `/usr/wuxuezhi/u-boot-1.1.6/cpu/arm920t/s3c24x0‘
make: *** [cpu/arm920t/s3c24x0/libs3c24x0.a] Error 2

在include下的s3c24x0.h上的clock&power结构中添加相应名为CAMDIVN的结构变量

参考《嵌入式linux完全开发流程》P273,

(1)在include/configs/sbc2410x.h中添加#define CFG_FLASH_CFI_DRIVER  1

(2)在board/sbc2410x/Makefile中去掉flash.o

COBJS  :=sbc2410x.o flash.o改为COBJS  :=sbc2410x.o

(3)make测试,出错如下:编译出现很多警告,好像是编译器的问题,这里先不管它了啦,O(∩_∩)O哈哈~

[[email protected] u-boot-1.1.6]$ make sbc2410x_config
Configuring for sbc2410x board...
[[email protected] u-boot-1.1.6]$ make

.......
./bmp_logo logos/denx.bmp >/home/alu/mywork/systems/u-boot-1.1.6/include/bmp_logo.h
make[1]: Leaving directory `/home/alu/mywork/systems/u-boot-1.1.6/tools‘
make -C examples all
make[1]: Entering directory `/home/alu/mywork/systems/u-boot-1.1.6/examples‘
/usr/local/arm/usr/bin/arm-ep9312-linux-gnueabi-gcc -g  -Os  -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float  -D__KERNEL__ -DTEXT_BASE=0x33F80000  -I/home/alu/mywork/systems/u-boot-1.1.6/include -fno-builtin -ffreestanding -nostdinc -isystem /usr/local/arm/usr/bin/../lib/gcc/arm-ep9312-linux-gnueabi/4.1.1/include -pipe  -DCONFIG_ARM -D__ARM__ -march=armv4 -mabi=apcs-gnu -Wall -Wstrict-prototypes -c -o hello_world.o hello_world.c
hello_world.c:1: warning: target CPU does not support interworking
In file included from /home/alu/mywork/systems/u-boot-1.1.6/include/common.h:105,
                from hello_world.c:24:
/home/alu/mywork/systems/u-boot-1.1.6/include/flash.h:36: error: ‘CFG_MAX_FLASH_SECT‘ undeclared here (not in a function)
make[1]: *** [hello_world.o] Error 1
make[1]: Leaving directory `/home/alu/mywork/systems/u-boot-1.1.6/examples‘
make: *** [examples] Error 2
[[email protected] u-boot-1.1.6]$

上边有很多编译警告,先不管,看下边的错误可知,此错误是由未定义‘CFG_MAX_FLASH_SECT‘ 而引起。呵呵是问了好多大侠才知道的。在include/configs/sbc2410x.h中添加‘CFG_MAX_FLASH_SECT‘的定义,暂时定义为#define  CFG_MAX_FLASH_SECT  1  好像说这里应该根据flash 的data sheet来定义,但是我还不知道怎么定义,先不管了。定义后编译:

添加了‘CFG_MAX_FLASH_SECT‘的定义后编译,出现了好一堆的错误:
cfi_flash.c:1224: error: ‘flash_info_t‘ has no member named ‘cmd_reset‘
cfi_flash.c: In function ‘flash_write_cfiword‘:
cfi_flash.c:1257: error: ‘flash_info_t‘ has no member named ‘portwidth‘
cfi_flash.c:1279: error: ‘flash_info_t‘ has no member named ‘vendor‘
cfi_flash.c:1288: error: ‘flash_info_t‘ has no member named ‘portwidth‘
cfi_flash.c:1292: error: ‘flash_info_t‘ has no member named ‘portwidth‘
cfi_flash.c:1312: error: ‘flash_info_t‘ has no member named ‘write_tout‘
cfi_flash.c: In function ‘flash_make_addr‘:
cfi_flash.c:221: warning: control reaches end of non-void function
make[1]: *** [cfi_flash.o] Error 1
make[1]: Leaving directory `/home/alu/mywork/systems/u-boot-1.1.6/drivers‘
make: *** [drivers/libdrivers.a] Error 2
[[email protected]ost u-boot-1.1.6]$

分析:在include/flash.h中:
typedef struct {
    ulong    size;           
    ushort    sector_count;       
    ulong    flash_id;       
    ulong    start[CFG_MAX_FLASH_SECT]; 
    uchar    protect[CFG_MAX_FLASH_SECT];
#ifdef CFG_FLASH_CFI           
    uchar    portwidth;       
    uchar    chipwidth;    
……
“cfi_flash.c:220: error: structure has no member named `portwidth‘”这个错误的意思是:
结构中没有portwidth,从flash_info_t结构的定义就可以知道,是CFG_FLASH_CFI没有定义。

所以,在include/configs/100ask24x0.h 中加一个#define CFG_FLASH_CFI 1

(4)添加#define CFG_FLASH_CFI 1再编译,又出现错误:
cfi_flash.c: In function `flash_init‘:
cfi_flash.c:411: error: `CFG_MONITOR_BASE‘ undeclared (first use in this function)
cfi_flash.c:411: error: (Each undeclared identifier is reported only once
cfi_flash.c:411: error: for each function it appears in.)
make[1]: *** [cfi_flash.o] 错误 1
make[1]:正在离开目录 `/home/boy/document/system/ub/u-boot-1.1.6/drivers‘
make: *** [drivers/libdrivers.a] 错误 2
查找问题 在flash.h  和 100ask24x0.h中都没有定义CFG_MONITOR_BASE,又看了cfi_flash.c中的207:ulong flash_get_size (ulong base, int banknum);
    208:#if defined(CFG_ENV_IS_IN_FLASH) || defined(CFG_ENV_ADDR_REDUND) || (CFG_MONITOR_BASE >= CFG_FLASH_BASE)
在100ask24x0.h定义:#define CFG_MONITOR_BASE  0x00000000 在编译:

(5)编译时,应该还会出现一个错误,我的是这样的,但是别人的没有出现。会要求定义#define CFG_ENV_ADDR  (CFG_FLASH_BASE + 0X0F0000)这个地址我也不知道怎么定义,是对着LV800的定义的,还不知道是对是错呢!

(6)终于编译通过了!一共在sbc2410x.h中添加了

#define CFG_FLASH_CFI_DRIVER    1
#define CFG_MAX_FLASH_SECT      1
#define CFG_FLASH_CFI           1
#define CFG_MONITOR_BASE     0x00000000
#define CFG_ENV_ADDR         (CFG_FLASH_BASE + 0X0F0000) 这几个定义。

(7)终于可以下到板子上边去跑了,虽然显示还是有问题

U-Boot 1.1.6 (Oct 29 2008 - 14:15:28)
DRAM:  64 MB
Flash:  0 kB       ???????flash显示有问题
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial

小知识:

1)用fl可以显示内存

SMDK2410 # fl
 Bank # 1: AMD: 1x Amd29LV400BB (4Mbit) (此为未修改nor flash之前的设置)
 Size: 0 MB in 11 Sectors
 Sector Start Addresses:
 00000000 (RO) 00004000 (RO) 00006000 (RO) 00008000 (RO) 00010000 (RO)
  00020000      00030000      00040000      00050000      00060000     
   00070000 (RO)
 SMDK2410 #

2) pro off all 解除所有内存的保护状态
    erase all   擦除所有内存
    md 0        显示内存信息

SMDK2410 # md 0
00000000: ffffffff ffffffff ffffffff ffffffff    ................ 
00000010: ffffffff ffffffff ffffffff ffffffff    ................
00000020: ffffffff ffffffff ffffffff ffffffff    ................ 
00000030: ffffffff ffffffff ffffffff ffffffff    ................
00000040: ffffffff ffffffff ffffffff ffffffff    ................ 
00000050: ffffffff ffffffff ffffffff ffffffff    ................
00000060: ffffffff ffffffff ffffffff ffffffff    ................
00000070: ffffffff ffffffff ffffffff ffffffff    ................
00000080: ffffffff ffffffff ffffffff ffffffff    ................
00000090: ffffffff ffffffff ffffffff ffffffff    ................ 
000000a0: ffffffff ffffffff ffffffff ffffffff    ................
000000b0: ffffffff ffffffff ffffffff ffffffff    ................
000000c0: ffffffff ffffffff ffffffff ffffffff    ................
000000d0: ffffffff ffffffff ffffffff ffffffff    ................
000000e0: ffffffff ffffffff ffffffff ffffffff    ................ 
000000f0: ffffffff ffffffff ffffffff ffffffff    ................
SMDK2410 #

3)内存拷贝  cp.b 目标地址  要存放的地址  $(filesize) 后边的$(filesize)是下载的文件大小,直接用$(filesize),不改变。

4)定义DEBUG ,可以使用CFI的调试.至于是什么,不知道!没试过,只是听说了……

时间: 2024-10-03 14:14:38

uboot1.1.6之NOR FLASH 出现的问题解决方法的相关文章

解决chrome和firefox flash不透明的方法

透明flash在IE内核的浏览器下正常.在chrome和火狐下不透明了. 解决方法: <object height="377" width="712" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553

IE和Firefox下flash挡住div层的问题解决方法

1 <object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="100%" height="80"> 3 <param name="movie" value="flash地址" /> 4 <param name=&qu

Winform(C#)Flash控件 属性 方法 事件

我的用户控件->右键 添加/移除项 ->COM组件->ShockwaveFlash Object 打勾 属性: 1.AlignMode (读写) 语法:AlignModeAs Long 说明:对齐方式(与SAlign 属性联动).当控件的长宽比例与影片不一致且 WMode 不为 ExactFit 时,影片(没有被放大的)在控件中显示的位置可用该属性调整.该属性值由标志位组成.如图,将该属性值(二进制)中相 应的位标记为 1 就设置了相应的对齐方向. 属性值与相应的对齐方式(后面括号里是二

总结调用Flash的几种方法

一.Adobe 提供的方法 <object width="200" height="200" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#4,0,0,0"> <param name="

Flash生成HTML5动画方法

  方法一:利用“swiffy”将Flash转换成HTML5动画. 首先,我们需要下载一款基于“Flash”程序的插件,名称为“swiffy”,这是一款由谷歌推出的一个Flash扩展,可以通过“Flash Professinal”软件直接将Flash源文件转换成HTML5动画. “swiffy”下载地址:http://pan.baidu.com/s/1hqHC4te   下载的“swiffy”程序其扩展名为“mxp”格式,双击此文件即可自动打开“Adobe扩展管理器”并安装“Swiffy”扩展应

下拉列表被flash覆盖的解决方法

做鼎闻有一段时间了,有的banner轮播图的地方用flash替换的时候,就会导致上面的导航条下拉列表被flash覆盖,找了一段时间没有得到有效的解决方法,后来知道关键是flash的这一属性{ "wmode": "transparent" });,加上之后就解决了,一下是别人帖子的内容. http://renky.iteye.com/blog/670091 这是原帖,只要在FLASH里添加一个透明的属性就可以让FLASH在最底层,而不挡住下拉菜单了. 我用的swfob

javascript调用Flash里对象的方法(函数)搞了五个小时。

搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8的时候没有遇到过这样的问题. 我的程序大概是这样,我用Flash制作了一个菜单,默认情况下,打开网页时,这个菜单隐藏,当鼠标放在一个小图标上后,这个菜单显示出来,并且会根据当前的网页数据情况,显示菜单中的几项,同时隐藏几项不需要显示的菜单项. 我在Flash中使用ExternalInterface.

Chrome(谷歌浏览器)和Firefox浏览器flash的swf文件发黑不透明问题解决方法

一直以来看到各大网站的FLASH都是黑框框的,很好奇,难道他们不知道flash是可以设成透明的?于是用IE Tab插件浏览了下,发现人家的网页又正常,这样一来我就开始怀疑是我的Chrome有问题,于是在换了多台电脑,多种操作系统之后找到了治标治本的方法:在遇到这里网站时,尽量用IE,如果你的网站也在这类网站之中,那么你可能需要修改自己的网站代码这是一则flash设置为透明的html代码 <param name="wmode" value="transparent&quo

(转载)关于FLASH寿命的读写方法

http://blog.chinaunix.net/uid-20737871-id-1881191.html NOR(或非)和NAND(与非)是市场上两种主要的Flash闪存,sNORFLASH 和CPU之间不需要其他电路控制,NOR flash可以芯片内执行程序,而NAND FLASH 和CPU 的接口必须由相应的控制电路进行转换, NAND FLASH 以块的方式进行访问,不支持芯片内执行. NAND FLASH 比NOR FLASH 容量大,价格低, NAND flash中每个块的最大擦写