uboot移植(九)——移植三星官方uboot(三)

简介:

网卡移植

网卡初始化函数的位置在board.c文件的baord_init函数中调用了dm9000_pre_init();这个函数,而我们使用的开发板就是dm9000的开发板,所以主要是移植这个函数

三星版本的开发板smdvv210 的网卡是接在SRAM的bank 5中的,而我们的的是接在bank 1 中,所以根据数据手册对SRAM中各个寄存器的定义进行对应的修改,修改结果如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static  void  dm9000_pre_init( void )
{
unsigned  int  tmp;
#if defined(DM9000_16BIT_DATA)
SROM_BW_REG &= ~(0xf << 4);
SROM_BW_REG |= (0<<7) | (1<<6) | (1<<5) | (1<<4);
#else
SROM_BW_REG &= ~(0xf << 20);
SROM_BW_REG |= (0<<19) | (0<<18) | (0<<16);
#endif
SROM_BC1_REG = ((0<<28)|(1<<24)|(5<<16)|(1<<12)|(4<<8)|(6<<4)|(0<<0));
tmp = MP01CON_REG;
tmp &=~(0xf<<4);
tmp |=(2<<4);
MP01CON_REG = tmp;
}


对应的修改对应的宏定义

(1)#define CONFIG_DM9000_BASE (0xA8000000),这个是网卡的基地址,我们使用的bank 1 对应的是0x8800000,但是实际上这个地址是不行的,应该改为88000300,原因可能是网卡芯片内部的寄存器本身就存在一个300的偏移量,所以要改为

#define CONFIG_DM9000_BASE (0x88000300)

(2)#define DM9000_DATA (CONFIG_DM9000_BASE+2)

改为

#define DM9000_DATA (CONFIG_DM9000_BASE+4)

+4的原因是 DM9000_DATA对应CMD引脚,因为端口复用的原因,这个引脚为高低电平时分别是表示发送地址和命令,CMD这个引脚接的是ADDR2(地址总线的第二根( 0 1 2 )),所以+4是因为4=100刚好对应第二跟地址总线也就是ADDR2

wKiom1ezKI6i31WHAACpGwrfNj4799.png-wh_50

将更改的代码同步后,编译运行测试可知,开发板可以和虚拟机ping通,使用tftp进行下载时也正常,至此三星官方uboot的移植已经完成



本文转自 菜鸟养成记 51CTO博客,原文链接:http://blog.51cto.com/11674570/1839384

相关文章
|
移动开发 Ubuntu 网络协议
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
225 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(中)
|
Ubuntu Linux Shell
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置
852 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(七)Ubuntu开发环境配置
|
Ubuntu Linux 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十一)第一次写驱动程序
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十一)第一次写驱动程序
301 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十一)第一次写驱动程序
|
网络协议 Ubuntu Linux
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二)linux常用命令(中)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二)linux常用命令
160 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二)linux常用命令(中)
|
Ubuntu Linux 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十)驱动怎么学
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十)驱动怎么学
189 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(二十)驱动怎么学
|
存储 编解码 Ubuntu
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
271 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(上)
|
存储 Ubuntu 前端开发
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
392 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令(下)
|
存储 Ubuntu Linux
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石(下)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石
274 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石(下)
|
Linux 调度 开发工具
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石(上)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石
290 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石(上)
|
Linux 程序员 调度
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石(中)
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石
271 0
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十五)驱动程序基石(中)