1, 通过查看 /drivers/net/Makefile 发现想要编译上,需要添加宏
/include/configs/smdk2440.h
中添加
#define CONFIG_DRIVER_DM9000
#define CONFIG_DM9000_BASE 0x20000000
#define DM9000_IO CONFIG_DM9000_BASE
#define DM9000_DATA (CONFIG_DM9000_BASE+4)
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_IPADDR 192.168.1.123
#define CONFIG_SERVERIP 192.168.1.124

2, 添加上 使用 dm9000 初始化
/board/samsung/smdk2440/smdk2440.c
int board_eth_init(bd_t *bis)
{
...
#ifdef CONFIG_DRIVER_DM9000
rc = dm9000_initialize(bis);
#endif

3, 配置 存储控制器,添加 支持,因为写 兼容 NAND FLASH 启动的 init.c 所以它里面修改
void init_sdram(void)
{
BWSCON = 1<<25 | 1<<16;
BANKCON4 = 0x00000740;
BANKCON6 = 1<<16 | 1<<15 | 1;
REFRESH = (1<<23) + 1268;
BANKSIZE = 1<<7 | 1<<4 | 1;
MRSRB6 = 0x30;
}

4, 烧写试机出现一个错误
Error: dm9000 address not set.
经过搜索找到是在 eth_legacy.c 和 eth-uclass.c 里面 通过 Makefile 确认 是 eth_legacy.c
157line:
#ifdef CONFIG_NET_RANDOM_ETHADDR
net_random_ethaddr(dev->enetaddr);
printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
dev->name, eth_number, dev->enetaddr);
#else
printf("\nError: %s address not set.\n",
dev->name);
return -EINVAL;
#endif
看着像是 用软件生成一个 MAC 地址。

上面有个从 ENV 中获取的
eth_getenv_enetaddr_by_index(base_name, eth_number, env_enetaddr);
加打印看下,3个参数

调用
int eth_getenv_enetaddr_by_index(const char *base_name, int index, uchar *enetaddr)
{
char enetvar[32];
sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index);
return eth_getenv_enetaddr(enetvar, enetaddr);
}
调用
int eth_getenv_enetaddr(const char *name, uchar *enetaddr)
{
eth_parse_enetaddr(getenv(name), enetaddr);
return is_valid_ethaddr(enetaddr);
}
调用
void eth_parse_enetaddr(const char *addr, uchar *enetaddr)
{
char *end;
int i;

for (i = 0; i < 6; ++i) {
enetaddr[i] = addr ? simple_strtoul(addr, &end, 16) : 0;
if (addr)
addr = (*end) ? end + 1 : end;
}
}
从 env 中获取到 ADDR 后字符串转 6 个 十六进制的 MAC,在进行格式验证

在 include/env_default.h 中添加默认配置

#ifdef CONFIG_ETHADDR
"ethaddr=" CONFIG_ETHADDR "\0"
#endif

在 smdk2440.h 中添加一个宏
#define CONFIG_ETHADDR 00:06:3B:FF:FF:FF

在次烧写,ping tftp 功能正常使用

s3c2440 移值u-boot-2016.03 第5篇 支持dm9000 识别的更多相关文章

  1. s3c2440 移值u-boot-2016.03 第6篇 支持mtd yaffs 烧写

    1, 解决启动时的错误 Warning - bad CRC, using default environment 搜索发现 在 /tools/env/fw_env.c 中 /* 放在NAND FLAS ...

  2. s3c2440 移值u-boot-2016.03 第2篇 支持Nand flash启动

    1, 要求:在4K 的代码以内,完成 NOR NAND 类型判断,初始化 NAND 复制自身到 SDRAM ,重定向. 2, 在 /arch/arm/cpu/arm920t/ 文件夹里 添加一个 in ...

  3. s3c2440 移值u-boot-2016.03 第4篇 支持NAND flash 识别

    1, /include/configs/smdk2440.h 中添加 #define CONFIG_CMD_NAND 编译 drivers/mtd/nand/built-in.o: In functi ...

  4. s3c2440 移值u-boot-2016.03 第3篇 支持Nor flash 识别

    当选择,NOR flash 启用时,才可以访问 NOR FLASH ./common/board_r.c 364 line:initr_flash()flash_size = flash_init() ...

  5. s3c2440 移值u-boot-2016.03 第1篇 新建单板

    目前除RC版外,最新的就是 u-boot-2016.03.tar.bz2 ,大概看了几个年份的u-boot 发现,现在 更像是 linux kernel .有 menuconfig . 对比2012年 ...

  6. s3c2440 移值新内核 linux-4.1.36

    arm-linuxgcc version 4.3.2 经过试验,最高可以编译到 linux-4.1.36 ,在高的版本会有错误 ,可能是 GCC 编译器版本较低造成. 解压比较麻烦还要装一个 xz x ...

  7. “耐撕”团队 2016.03.24 站立会议

    时间: 2016.03.22  17:00-17:30     18:30-19:00 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), ...

  8. 移值UCOS2到M4核与M3核的区别

    之前移值过ucos2到stm32f2系列的单片机,这个单片机是属于arm的m3内核的.最近在学习永磁同步电机的控制,对于这个电机的控制,有比较多的数学计算,甚至于还有浮点的运算.所以用到了stm32f ...

  9. dotnet core 在 MIPS 下的移值进度

    本文仍处于修订中 写在开始前 我们的主要业务基于 dotnet core 2.x 与 3.1 完成,目前 dotnet core 3.1 支持的 CPU 架构列表中还不包含龙芯,且在 gitlab i ...

随机推荐

  1. mysql破解root用户密码总结

    方法一: 1. /etc/my.cnf 在[mysqld]段中加入 skip-grant-table2. 重启mysql3. 直接mysql登录4. 通过修改权限表方式修改mysql密码(update ...

  2. uva705--slash maze

    /*这道题我原本是将斜线迷宫扩大为原来的两倍,但是在这种情况下对于在斜的方向上的搜索会变的较容易出错,所以参考了别人的思路后将迷宫扩展为原来的3倍,这样就变成一般的迷宫问题了*/ #include&q ...

  3. 配置非默认端口的监听Listener

  4. Learn ZYNQ Programming(1)

    GPIO LED AND KEY: part1:gpio leds and gpio btns combination. (include 1~4) part2:use gpio btns inter ...

  5. JSTL 核心标签库 使用(C标签)

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  6. iOS frame从导航栏下面开始

    iOS7.0 之后,页面布局默认延伸到了手机界面的边缘;导航栏背景成透明颜色. 解决fram从导航栏下面开始方法: 第一种: 将导航栏改成不透明即可 if( ([[[UIDevice currentD ...

  7. IOS第二天多线程-03对列组合并图片

    ********* // 2D绘图 Quartz2D // 合并图片 -- 水印 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) ...

  8. poj1061-青蛙的约会(扩展欧几里德算法)

    一,题意: 两个青蛙在赤道上跳跃,走环路.起始位置分别为x,y. 每次跳跃距离分别为m,n.赤道长度为L.两青蛙跳跃方向与次数相同的情况下, 问两青蛙是否有方法跳跃到同一点.输出最少跳跃次数.二,思路 ...

  9. php的乱码问题

    $content=file_get_contents("http://www.ctsdc.com/");$pattern="/<a\s+href=.*<\/a ...

  10. centos安装后iptables基本设置

    一.首先关闭防火墙#service iptables stop 二.查看状态,确认关闭#service iptables status 三.清除掉防火墙规则#iptables -F#iptables ...