u-boot-2011.03在mini2440/micro2440上的移植 支持DM9000

发布者:Harmonious88最新更新时间:2024-07-01 来源: elecfans关键字:u-boot  mini2440  micro2440  移植  DM9000 手机看文章 扫描二维码
随时随地手机看文章

3.1 include/configs/micro2440.h

删除

#define CONFIG_CS8900  /* we have a CS8900 on-board */
#define CONFIG_CS8900_BASE 0x19000300
#define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */

 

#define CONFIG_NETMASK          255.255.255.0
#define CONFIG_IPADDR  10.0.0.110
#define CONFIG_SERVERIP  10.0.0.1

添加

#define CONFIG_CMD_NET
#define CONFIG_DRIVER_DM9000    1 
#define CONFIG_DM9000_NO_SROM   1
#define CONFIG_DM9000_BASE      0x20000300
#define DM9000_IO   CONFIG_DM9000_BASE
#define DM9000_DATA  (CONFIG_DM9000_BASE + 4)

#define CONFIG_CMD_PIN
#define CONFIG_ETHADDR   08:00:3e:26:0a:5b  //开发板MAC地址
#define CONFIG_NETMASK   255.255.255.0
#define CONFIG_IPADDR    192.168.10.126      //开发板IP地址
#define CONFIG_SERVERIP  192.168.10.124      //主机IP地址

 

【说明】

IP地址要根据实际情况自己设置, CONFIG_SERVERIP用于制定tftp等下载时的主机IP

 

3.2 board/samsung/micro2440/micro2440.c

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

 

【说明】

到此,DM9000已经能初始化了,但是使用ping命令时,串口一直打印 'raise: Signal # 8 caught',下一步直接将该打印语句注释掉,经测试没有影响。

 

3.3 arch/arm/lib/eabi_compat.c

int raise (int signum)
{
#ifndef CONFIG_MICRO2440
        printf('raise: Signal # %d caught/n', signum);
#endif
        return 0;
}

 

【说明】

到这一步后可以ping通,但是总是出现了一个'could not establish link'的提示。按照下一步修改,这样修改的结果是第一次不能ping通,需使用Ctrl+C结束,以后即可ping通并使用tftp下载。

 

3.4 drivers/net/dm9000x.c

static int dm9000_init(struct eth_device *dev, bd_t *bd)
{
    ……
#ifndef CONFIG_MICRO2440
    i = 0;
    while (!(phy_read(1) & 0x20)) { /* autonegation complete bit */
        udelay(1000);
        i++;
       if (i == 10000) {
          printf('could not establish link/n');
          return 0;
       }
    }
#endif
    ……
}


static void dm9000_halt(struct eth_device *netdev)
{
 DM9000_DBG('%s/n', __func__);
#ifndef CONFIG_MICRO2440
    /* RESET devie */
    phy_write(0, 0x8000); /* PHY RESET */
    DM9000_iow(DM9000_GPR, 0x01); /* Power-Down PHY */
    DM9000_iow(DM9000_IMR, 0x80); /* Disable all interrupt */
    DM9000_iow(DM9000_RCR, 0x00); /* Disable RX */
#endif


关键字:u-boot  mini2440  micro2440  移植  DM9000 引用地址:u-boot-2011.03在mini2440/micro2440上的移植 支持DM9000

上一篇:成功移植DHCP客户端到mini2440
下一篇:u-boot-2011.03在mini2440/micro2440上的移植 支持内核启动

推荐阅读最新更新时间:2026-03-20 19:45

u-boot-2011.03在mini2440/micro2440上的移植 支持Nand Flash启动
7.1 创建nand_read.c 【注意】 本程序只能用于读取2K/页的Nand。本人的Micro2440上的Nand Flash为256M,型号为K9F2G08 $ touch board/samsung/micro2440/nand_read.c $ cat board/samsung/micro2440/nand_read.c #define rNFCONF (*(volatile unsigned *)0x4E000000) #define rNFCONT (*(volatile unsigned *)0x4E000004) #define rNFCMD (*(volatile unsigned *)0x4E00
[单片机]
u-boot-2011.03在mini2440/micro2440上的移植 支持yaffs下载
6.1 include/conskfigs/micro2440.h 添加 #define CONFIG_CMD_NAND_YAFFS 【说明】 本人在阅读cmd_nand.c时发现u-boot-2011.03已经支持yaffs写入,只需添加如上定义即可,但实际写入错误,再阅读源代码,发现只要按下一步修改即可,虽然这是最简单的方法,但似乎并不是最优的方法。 6.2 drivers/mtd/nand/nand_util.c int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, u_char *buffer, int withoob) {
[单片机]
u-boot移植(十二)---代码修改---支持DM9000网卡
一、准备工作 1.1 原理图      CONFIG_DM9000_BASE   片选信号是接在nGCS4引脚,若要确定网卡的基地址,则要根据片选信号的接口去确定。   在三星2440的DATASHEET中memory control这一章的Figure 5-1. S3C2440A Memory Map after Reset 已经说明了片选4的地址,如下:      只要发出的信号在 0x20000000--0x28000000 之间,就会使得片选4引脚变为低电平。所以可以确定我们网卡的基地址为0x20000000。   CONFIG_DM9000_IO 和CONFIG_DM9000_DATA   LADDR2 接在网卡的
[单片机]
<font color='red'>u-boot</font><font color='red'>移植</font>(十二)---代码修改---支持<font color='red'>DM9000</font>网卡
u-boot-2009.08在mini2440上的移植(四)---增加DM9000驱动
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,参考文章: http://blogold.chinaunix.net/u3/101649/showart.php?id=2105215 http://blog.chinaunix.net/space.php?uid=23787856&do=blog&id=1153
[单片机]
U-boot移植mini2440
本文章中的很多内容参考友善之臂的说明文档《mini2440之U-boot移植详细手册-20100419》,使用的U-boot的版本是u-boot-2010.03 说明:此次移植的目的不是为了制作一个功能强大的U-boot,只是做一个最简单的U_boot。该U-boot能够实现通过串口和电脑通信,可以将环境变量保存在NOR Flash中,通过TFTP服务器将使用NFS根文件系统的内核镜像从电脑拷贝到内存中执行。而且这个U-boot只支持从NOR中启动。 在移植U-Boot之前建议对U-Boot中的源码组织结构有较深的理解,可参考我的另一篇博文Bootloader介绍和Uboot源码结构 移植U-Boot的原则是,先选取与
[单片机]
【嵌入式】从零开始移植U-bootmini2440(二)——烧录篇
烧录 相关工具:j-link 软件:j-flash ARM V4.70 在编译成功之后,会生成u-boot.bin在output目录下,这个二进制文件就可以直接用于烧录。 烧录位置的确定方法 烧录的时候,我这里选择直接烧写在NOR中,看S3C2440的SPEC和开发板的原理图(找NOR的CE接口和S3C2440哪个引脚相连),当我们选择从NOR启动的时候,NOR Flash被映射到内存0x0000_0000 ~ 0x0800_0000,也就是说我们直接把bin文件烧录到0地址即可。 这里有一篇写的蛮好的blog,解释了ARM是如何通过NOR和NAND启动的。 https://www.cnblogs.com/aaron
[单片机]
【嵌入式】从零开始<font color='red'>移植</font><font color='red'>U-boot</font>到<font color='red'>mini2440</font>(二)——烧录篇
【嵌入式】从零开始移植U-bootmini2440(四)——C runtime配置篇
设置C运行环境及代码relocate - lib/crt0.S C-runtime startup Code for ARM U-Boot 在CPU完成最基本的初始化之后,我们总不能一直以汇编的方式写代码,此时我们就需要C运行环境。同时其他地方经常会把relocate单独拉出来讲,其实本质上来讲,也是属于创造C运行环境的一部分。 首先我们应该理解,C语言运行对于芯片来讲除了可以稳定,正确地执行指令,还需要什么样的内存环境? 众所周知,内存环境可以分成五段,其中TEXT段,data段在bin文件中,或者说就是在我们写代码的时候已经定义好,BSS段需要有系统初始化,剩下的是堆区和栈区,需要我们启动的时候划分好。 按照这个思路,
[单片机]
【嵌入式】从零开始<font color='red'>移植</font><font color='red'>U-boot</font>到<font color='red'>mini2440</font>(四)——C runtime配置篇
从零开始移植U-bootmini2440(三)——CPU初始化篇
经过前两节的准备,我们现在可以开始肝u-boot的代码了 U-boot版本:2020/5/2 编译环境:Ubuntu 16.04 arm-none-eabi-gcc version 4.9.3 20150529 (prerelease) (15:4.9.3+svn231177-1) 运行环境:mini2440(s3c2440,arm920t) 代码仓库:git@github.com:JingyeLi/u-boot_2440.git https://github.com/JingyeLi/u-boot_2440/tree/v0.1 u-boot.lds 这是一个很容易被人忽略的一个文件,包括我自己,以前一般用keil的时候都是自
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved