ok6410 u-boot-2012.04.01移植五支持DM9000
继ok6410 u-boot-2012.04.01移植四后,开发板基本已支持MLC NAND,但还有一些细节地方修改,这节增加DM9000支持,通过网卡tftp程序到内存,接着通过NAND命令写到NAND,这一过程肯定会遇到很多问题,遇到后再一个个解决。
开发环境:
系统:ubuntu 10.04.4
单板:ok6410
NAND FLASH:K9GAG08U0D 2048MB
NOR Flash:EN29LV160AB 2MB
DDR:K4X1G163PCX2 256MB
NET:DM9000AEP
编译器:arm-linux-gcc-4.3.2
搭建开发环境详见ubuntu 10.04.4开发环境配置。
目标:
1.板级初始化,支持单板ok6410
2.修改u-boot,支持NAND启动
3.增加菜单update功能
4.增加MLC NAND支持
5.支持DM9000,网卡下载程序
6.修改环境变量以及mtdpart分区
7.u-boot裁剪及制作补丁
一、修改源码支持DM9000
增加dm9000aep_init设置内存控制器
void dm9000aep_init(void)
{
SROM_BW |= (0XFF<<4);
}
在start.S增加bldm9000aep_init,其实在以前支持单板是已添加。
分析eth_initialize(gd->bd);->board_eth_init在board/samsung/smdk6410/smdk6410.c修改board_eth_init(bd_t *bis),改成如下:
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
#ifdef CONFIG_CS8900
rc = cs8900_initialize(0, CONFIG_CS8900_BASE);
#endif
#ifdef CONFIG_DRIVER_DM9000
rc = dm9000_initialize(bis);
#endif
return rc;
}
#endif
接着头文件include/configs/smdk6410.h增加DM9000网卡支持
/*
* Hardware drivers
*/
#if 0
#define CONFIG_CS8900
/* we have a CS8900 on-board
*/
#define CONFIG_CS8900_BASE
0x18800300
#define CONFIG_CS8900_BUS16
/* follow the Linux driver
*/
#else
#define CONFIG_DRIVER_DM9000
1
#define CONFIG_DM9000_BASE
0x18000000 //0x20000300
#define DM9000_IO
CONFIG_DM9000_BASE
#define DM9000_DATA
(CONFIG_DM9000_BASE+4)
#define CONFIG_DM9000_USE_16BIT
1
//#define CONFIG_DM9000_DEBUG 1
#endif
#define CONFIG_NETMASK255.255.255.0
#define CONFIG_IPADDR172.16.1.111
#define CONFIG_SERVERIP 172.16.1.114
#define CONFIG_ETHADDR 00:0c:29:4d:e4:f4
编译试试看网卡是否OK
change@change:/si/OK6410/u-boot-2012.04.01$ make
二、编译测试网卡
刚刚编译的程序,烧写OK,重启下面测试网卡
U-Boot 2012.04.01 (Jul 01 2013 - 21:27:53) for SMDK6400
CPU: S3C6400@532MHz
Fclk = 532MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)
Board: SMDK6400
DRAM: 128 MiB
WARNING: Caches not enabled
Flash: 0 KB
NAND: select s3c_nand_oob_mlc_64
NAND_ECC_NONE selected by board driver. This is not recommended !!
2048 MiB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot: 0
##### Update menu for ok6410 #####
[g] get file, and write to nand flash 0 block
[b] Boot the system
[r] Reset the u-boot
[q] Quit from menu
Enter your selection: q
SMDK6410 # ping 172.16.1.134
dm9000 i/o: 0x18000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:0c:29:4d:e4:f4
operating at 100M full duplex mode
Using dm9000 device
host 172.16.1.134 is alive
SMDK6410 #
可以ping通,可以根据自己情况设置网关,ping自己的主机。下面测试看能否用NAND烧写程序,当然是不行的,测试就是为了找问题
SMDK6410 # set serverip 172.16.1.134
SMDK6410 # tftp 0x50000000 u-boot.bin
dm9000 i/o: 0x18000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 00:0c:29:4d:e4:f4
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 172.16.1.134; our IP address is 172.16.1.111
Filename 'u-boot.bin'.
Load address: 0x50000000
Loading: ################
done
Bytes transferred = 228796 (37dbc hex)
SMDK6410 # nand erase 0 0x80000
NAND erase: device 0 offset 0x0, size 0x80000
Erasing at 0x0 -- 100% complete.
OK
SMDK6410 # nand write 0x50000000 0x80000
NAND write: device 0 offset 0x80000, size 0x7ff80000
Attempt to write outside the flash area
0 bytes written: ERROR
SMDK6410 # nand write 0x50000000 0 0x80000
NAND write: device 0 offset 0x0, size 0x80000
524288 bytes written: OK
SMDK6410 # reset
resetting ...
data abort
pc : [<e5951008>] lr : [<000000d0>]
sp : 0c001f90 ip : 12345678 fp : 00000000
r10: 57e380ec r9 : 57cfae38 r8 : 57cf7f64
r7 : 00000001 r6 : 1a000005 r5 : e3500000 r4 : eb006faa
r3 : 00500000 r2 : e5eff014 r1 : 00000000 r0 : 00000000
Flags: nZCv IRQs off FIQs off Mode SVC_32
Resetting CPU ...
看看reset果然就挂了,程序就是用的刚刚烧写OK的程序,看来程序没有烧进对的地方,下面针对nand write 0x50000000 0 0x80000烧写命令进一步跟踪,待续
ok6410 u-boot-2012.04.01移植五支持DM9000的更多相关文章
- u-boot-2012.04.01移植笔记——支持NAND启动
1.加入nand读写函数文件: 对于nand的读写我们需要特定的函数,之前写最小bootloader的时候曾写过nand.c文件,我们需要用到它.为了避免混淆,我们先将其改名为init.c,然后拷贝到 ...
- ok6410 u-boot-2012.04.01移植六完善MLC NAND支持
继ok6410 u-boot-2012.04.01移植四.五后,开发板基本已支持MLC NAND,支持DM9000.但是通过NAND命令更新u-boot到NAND,还存在问题,需要根据u-boot的n ...
- ok6410 u-boot-2012.04.01移植七完善u-boot移植(u-boot移植结束)
继ok6410 u-boot-2012.04.01移植六后,开发板已支持MLC NAND.DM9000等.但还需要完善比如环境变量.mtdpart分区.裁剪.制作补丁等.下面的工作就是完善移植的u-b ...
- ok6410 u-boot-2012.04.01移植二修改源码支持单板
继ok6410 u-boot-2012.04.01移植一后修改代码,对ok6410单板初始化,主要包括时钟.串口.NAND.DDR等初始化.这些工作在以前的裸板程序都写了,直接拿来用.我觉得先写裸板程 ...
- 移植u-boot.2012.04.01
/*************************************************** *u-boot版本:u-boot2012.04.01 *gcc版本:arm-linux-gcc ...
- uboot-2012.04.01移植编译前准备
一:准备移植1.从下面的官网下载uboot-2012.04.012.建立sourceinsight工程 a.解压并在E:\colin weidongshan\transplant_u-boot-201 ...
- z-index总结【转载http://www.cnblogs.com/mind/archive/2012/04/01/2198995.html】
元素位置重叠的背景常识 (x)html文档中的元素默认处于普通流(normal flow)中,也就是说其顺序由元素在文档中的先后位置决定,此时一般不会产生重叠(但指定负边距可能产生重叠).当我们用cs ...
- 4.移植uboot-使uboot支持DM9000网卡
在上一章,使uboot能够支持nor.nand 本节继续修改让uboot支持DM9000C网卡,便可以通过网络来传输文件 首先uboot已带有dm9000网卡的驱动,位于drivers/net/下的d ...
- 移植u-boot-2012.04.01到JZ2440
开发环境:Ubuntu 12.04 开发板:JZ2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc-4.3.2 u-boot:u-boot-2012 ...
随机推荐
- 第4章2节《MonkeyRunner源码剖析》ADB协议及服务: ADB服务SERVICES.TXT翻译参考(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- Wowza流媒体Live直播和VOD点播配置实战
Wowza是当今可以说最流行的流媒体服务器之一,近来因为需要搭建相应的服务器,但又不想用camera等作真实的直播,所以想办法用媒体文件转换成直播流再提供给Wowza进行直播.这里把该设置步骤以及设计 ...
- CORS(跨域资源共享)跨域问题及解决
当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯 ...
- C#正则学习
正则的力量无法小觑,短短的几个字符,往往胜过几十行的代码,大大可以简化我们冗余的代码. 以前在js里用正则比较多,今天来熟悉下C#中正则的使用方法,权当笔记了! 如果把正则当做一门语言的话,那么正则的 ...
- 使用Clean() 去掉由函数自动生成的字符串中的双引号
有时候由Excel单元格函数軿凑出来的字符串会自带双引号 效果如下: 想这种这个情况,刚好我们軿凑出来的是SQL语句, 执行的时候是去掉双引号, 这时候可以使用Excel自带的函数来去掉双引号 Cle ...
- SSMS2008插件开发(4)--自定义菜单
原文:SSMS2008插件开发(4)--自定义菜单 打开上次的项目MySSMSAddin中的Connect类,发现该类继于了两个接口:IDTExtensibility2和IDTCommandTarge ...
- Eclipse在SVN安装步骤(两种)和使用方法
一.至Eclipse安装SVN,最常见的两种方式:手动模式,使用安装向导.具体操作步骤如下: 单程:手动安装 1.官方网站下载,从site-1.6.9.zip文件,网址是:subclipse.tigr ...
- Entity Framework 5 自定义代码生成模板 转
Entity Framework 5 发布有一定时间了,但学习资源确实不多,更何况英语差的我,看英语确实费力,不管怎么样,问题还是解决了,查看很多人写的文章(让我看的想放弃,更想找到答案),都没有到到 ...
- setTimeout与setInterval的区别
setTimeout与setInterval的区别:1.setTimeout设置后隔指定时间后只会执行一次2.setInterval设置后会每隔指定时间执行一次3.setTimeout一般在方法内部使 ...
- 表达式树解析"框架"
干货!表达式树解析"框架"(2) 为了过个好年,我还是赶快把这篇完成了吧 声明 本文内容需要有一定基础的开发人员才可轻松阅读,如果有难以理解的地方可以跟帖询问,但我也不一定能回 ...