u-boot-2016.11移植网卡(基于s5pv210)

根据原厂uboot进行移植 1.首先编译原厂uboot make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16 2.把编译得到的uboot.bin烧进板子就可以看到那些部分是支持,那些是不支持的,不支持的... 阅读详情

以下代码都在github

https://github.com/SourceLink/S5PV210

一、网卡初始化分析

网卡初始化是在board_init_r中的init_sequence队列中的initr_net函数中:

#ifdef CONFIG_CMD_NET
        INIT_FUNC_WATCHDOG_RESET
        initr_net,
#endif

initr_net函数中又调用了eth_initialize函数进行初始化

#ifdef CONFIG_CMD_NET
static int initr_net(void)
{
        puts("Net:   ");
        eth_initialize();
#if defined(CONFIG_RESET_PHY_R)
        debug("Reset Ethernet PHY\n");
        reset_phy();
#endif
        return 0;
}
#endif

进行代码跟踪后发现eth_initialize函数在net/eth_legacy.c中定义

        /*
         * If board-specific initialization exists, call it.
         * If not, call a CPU-specific one
         */
        if (board_eth_init != __def_eth_init) {
                if (board_eth_init(gd->bd) < 0)
                        printf("Board Net Initialization Failed\n");
        } else if (cpu_eth_init != __def_eth_init) {
                if (cpu_eth_init(gd->bd) < 0)
                        printf("CPU Net Initialization Failed\n");
        } else {
                printf("Net Initialization Skipped\n");
        }


然后继续跟踪发现board_eth_init 在smdkv210.c中定义。


二、移植

1、首先更改board_eth_init函数,更改如下:

int board_eth_init(bd_t *bis)
{
        int rc = 0;
        /* add by Sourcelink */
        rc = dm9000_initialize(bis);
        return rc;
}

2、更改硬件初始化,在smdkv210.c中

int board_init(void)
{
        dm9000_pre_init();

        gd->bd->bi_arch_number = MACH_TYPE_SMDKC100;
        gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;

        return 0;
}

static void dm9000_pre_init(void)
{
        u32 smc_bw_conf, smc_bc_conf;
        /* Ethernet needs bus width of 16 bits */
        smc_bw_conf = SMC_DATA16_WIDTH(CONFIG_ENV_SROM_BANK) | SMC_BYTE_ADDR_MODE(CONFIG_ENV_SROM_BANK);
        smc_bc_conf = SMC_BC_TACS(0x0) | SMC_BC_TCOS(0x1) | SMC_BC_TACC(0x2)
                        | SMC_BC_TCOH(0x1) | SMC_BC_TAH(0x0)
                        | SMC_BC_TACP(0x0) | SMC_BC_PMC(0x0);

        /* Select and configure the SROMC bank */
        s5p_config_sromc(CONFIG_ENV_SROM_BANK, smc_bw_conf, smc_bc_conf);
}

3、把驱动添加到编译程序中,查看vim drivers/net/Makefile 

obj-$(CONFIG_DRIVER_DM9000) += dm9000x.o
发现需要定义这个宏,接着在smdkv210.h中定义。

4、定义一些关键宏

1)CONFIG_DM9000_NO_SROM

2)CONFIG_ENV_SROM_BANK 1      选择SROM_BANK1,具体参看原理图修改

3)CONFIG_DM9000_BASE      0x88000000  bank1的地址也就时dm9000的地址

4)DM9000_IO               (CONFIG_DM9000_BASE)

5)DM9000_DATA             (CONFIG_DM9000_BASE + 0x4)

6)CONFIG_CMD_PING 可以使用命令ping

7)CONFIG_NET_RANDOM_ETHADDR   CONFIG_LIB_RAND  随机生成网卡物理地址

/* add by Sourcelink */
#define CONFIG_DRIVER_DM9000    
#define CONFIG_DM9000_NO_SROM
#define CONFIG_DM9000_BASE      0x88000000
#define DM9000_IO               (CONFIG_DM9000_BASE)
#define DM9000_DATA             (CONFIG_DM9000_BASE + 0x4)
#define CONFIG_NET_RANDOM_ETHADDR       
#define CONFIG_LIB_RAND
#define CONFIG_ENV_SROM_BANK    1
#define CONFIG_CMD_PING
#endif /* CONFIG_CMD_NET */

uboot Ethernet初始化 这部分代码实在init_sequence_r初始化的【即uboot启动过程中】 阅读详情

相关推荐

802.1AS时间同步机制深度解析:从Sync报文到多域冗余设计

本文深度解析了802.1AS时间同步机制,从Sync与Follow_Up报文的核心交互原理入手,详细阐述了其如何通过精确的时钟频率比测量、链路延迟计算和驻留时间补偿来实现微秒乃至纳秒级同步。文章进一步探讨了802.1AS-2020版本引入的多时钟域冗余设计,为构建高可靠的车载TSN网络提供了关键见解和实战配置指南。

pytorch8learner的博客 460

Net: Board Net Initialization Failed No ethernet found.

启动uboot时网络初始化始终报错。Net: Board Net Initialization Failed No ethernet found.

weixin_52849254的博客 2344

LangChain实战:Plan and Execute代理在智能预算规划中的应用

本文详细介绍了如何利用LangChain框架中的Plan and Execute代理实现智能预算规划。通过拆解复杂财务问题、调用多工具链协作,该代理能自动完成从个人月度预算到家庭年度综合预算的智能规划,并具备消费习惯学习和多目标优化等进阶功能,帮助用户实现精准财务管理和决策优化。

weixin_42530732的博客 382

【NanoPi T2】 8.uboot gmac网卡驱动(4) - 移植rtl8211e网卡驱动(首发)

调试过程就不多说了,还是比较坎坷的,遇到了很多问题。 配置设备树 打开gmac设备 arch/arm/dts/s5p4418-nanopi2.dts 这里还是稍微做下解释吧,网卡设备已经有配置了,在 arch/arm/dts/s5p4418.dtsi 不记得我是否有改过,因为一开始GPIO的配置不正确,自己有写代码初始化过,但是后来发现设备树里面定义好了GPIO的配置,就是上面这一排pinctrl,具体配置在 arch/arm/dts/pinctrl.dtsi` 添加宏定义 添加一下phy宏定义,配置

柏鑫的博客 4526

【保姆级教程/代码】GNSS反演大气可降水量(Precipitable Water Vapor, PWV)

GPS精密单点定位(PPP)是一种采用精密卫星星历和卫星钟差进行非差单点定位的方法,在观测过程中采用双频载波相位观测法以确保高精度定位精度。本文利用PPP技术来求解天顶对流层延迟(zenith tropospheric delay,ZTD)。ZTD由湿延迟(ZWD)和干延迟(ZHD)组成,其中占比90%的ZHD与地面测站高程、大气压和测站纬度等参数有良好的相关性,可以通过Saastamoinen模型精确求出;

weixin_43910227的博客 2925

思科—OSPF多区域配置实验

实验目的:配置OSPF多区域,使得不同网段的PC互相ping通。 网络拓扑如下: R0的配置 Router>en Router#conf t Router(config)#int g0/1 Router(config-if)#ip add 192.168.1.1 255.255.255.0 Router(config-if)#no shut Router(config-if)#exit Router(config)#int g0/0 Router(config-if)#ip add 192.168.

m0_46237205的博客 1万+

uboot-uboot网络初始化分析

uboot-uboot网络初始化分析

子歌的博客 2771

Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(10) C++ 前置后置增减运算符重载形式与比较

C语言的++、–运算符在此不讨论。 文章目录1、前置后置增减运算符重载的形式2、前置和后置运算符的性能比较 1、前置后置增减运算符重载的形式 自增运算符“++”和自减运算符“–”分别包含两个版本。即运算符前置形式(如 ++x)和运算符后置形式(如 x++),这两者进行的操作是不一样的。因此,当我们在对这两个运算符进行重载时,就必须区分前置和后置形式。C++根据参数的个数来区分前置和后置形式。如果按照通常的方法来重载 ++ 运算符(即作为成员函数重载时不带参数,或者作为非成员函数重载时带有一个参数),那么重载

二进制君 5831

3519v101的uboot的RTL8201百兆网卡配置

1.烧写 其中部分文件我已经修改过,下面全面描述修改的过程。 2.修改头文件配置 1)修改配置文件hi3519v101.h 2)修改内容为: 3)修改原因: 在\u-boot-2010.06\drivers\net\higmacv300中看到网卡的设备信息为: a.设置PHY的工作模式 struct higmac_board_info          enu...

wangdapao12138的博客 3653

【Python】秋招机考 —— 2025/8/27 华为 AI 方向

2025 华为 AI 秋招机考题目包含15道单选题、5道多选题和2道机器学习编程题,涵盖核心算法与数学知识。单选题考察了Softmax激活、Transformer位置编码、Jacobi迭代、大模型幻觉现象、特征向量、K-means聚类、矩阵秩、实对称矩阵性质、SVD分解、概率论等知识点。多选题涉及高斯-赛德尔迭代和朴素贝叶斯分类器。

一杯水果茶!足矣~ 840

[工作流节点10] 获取多条数据并循环执行 —— 明道云批处理自动化实战

本文系统介绍了明道云工作流中"获取多条数据+循环执行"的批处理功能。该功能通过筛选数据集合并逐条处理,适用于批量通知、数据更新等场景。文章详细解析了功能配置方法,包括数据筛选、循环设置和异常处理,并提供了合同到期提醒等典型应用案例。同时强调了数据量控制、分批处理、错误处理等优化策略,帮助用户实现高效批量自动化。这一功能组合能将业务从单条处理升级为批量驱动,显著提升工作效率。

每日出拳老爷子的博客 455

嵌入式linux开发uboot移植(七)——三星官方uboot的移植

嵌入式linux开发uboot移植(七)——三星官方uboot的移植 友善之臂Smart210开发板是基于三星SMDKV210评估板裁剪、调整而来的。因此三星官方发布的基于SMDKV210评估板的uboot是移植uboot到Smart210开发板的最合适uboot版本。本文将SMDKV210的uboot移植到Smart210开发板。Smart210开发板的配置如下: SoC:Samsung S5PV210 SDRAM:512MB DDR2 RAM FLASH存...

一口Linux的专栏 645

10、智慧变电站 - 加载vue大屏元素(整体效果)

这一篇文章非常简单,但是也非常出效果阅读前面几篇文章,都可以看到有顶部、左侧、右侧的面板,主要我不会录gif图片,大屏元素面板还有一些动态加载的效果。 vue的transition标签 Vue 提供了 transition 的封装组件,可以给任何元素和组件添加进入/离开过渡;在进入/离开的过渡中,会有 6 个 class 切换:v-enter 、v-enter-active 、v-enter-to 、v-leave 、v-leave-active 、v-leave-to。我们正好使用这个特性来达到面板进入

github_39988036的博客 1040

S5PC210的UBOOT移植过程

总结uboot从源码移植的过程,是从飞凌6410的板子中修改而来。 1、查看U-Boot目录结构(一般要修改的内容在cpu、board、 common、lib_xx、include等目录下)2、对照自己的开发板的CPU型号、生产厂商、具体型号以及开发板的原理图,修改相应的配置文件,如串口、网卡、 存储器等。 第一阶段: 1、打开u-boot主目录下的makef

yuzeze的专栏 1408

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

u-boot2020.04移植(支持网络)

前面基于goni这块板子移植的u-boot并不支持网络,但是我的开发板上面是支持网络的,所以这里把网络支持添加上。先看一下硬件是怎样接的: DM9000属于类内存总线的设备,被映射到s5pv210的SROM区域,从图上可以知道它接在SROM的bank1,CMD接在ADDR2。从前面的过程分析我们知道,网络相关的初始化在board_init_r阶段,有两个相关的函数,下面来看一下: /*common/board_r.c*/ /*这个函数主要的作用是设置mac地址,但u-boot提供了可以随机 生成mac地

漫长当下 805

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

PHY芯片的使用(三)在U-boot下网络PHY的移植

以太网 PHY 驱动移植,主要包括 Linux、 u-boot 及设备树等三个方面标准框架下的移植。本文以裕太8511PHY为例展开说明。

比特流1024的博客 6285

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

详细讲解u-boot之网络移植与调试

首先来回顾一下,上一篇我们采用的是NXP官方默认imx6ull开发板的配置参数,任何参数都未做修改,现在使用默认配置网络未能正确识别,说明我们的硬件设计与官方的设计有偏差。,从设备树文件中可以得到,imx6ull FEC1对应位ethphy0,而ethphy0对应的phy地址默认位2,这与我们开发板硬件给的phy地址不符合,因此修改设备树中FEC1对应的phy地址为0。查找结果如上,spi4接口中使用了GPIO5的7和8两个管脚,并且该设备status状态为“okay”激活,解决方法如下,

Wang_XB_3434的博客 1万+

Zynq-Linux移植学习笔记之七-网络驱动

这一篇讲一讲u-boot里面的网络驱动以及linux内核里面的网络驱动,以及u-boot和linux的启动流程。1、u-boot启动流程u-boot启动是从start.s开始的,一直到进入main_loop结束。过程用下面一个表格表示,这里只列出几个重要的过程函数: 序号 执行过程 1 start.s(_start) 2 lowlevel_init.s(lowlevel_ini

无知的我 6933

13_Uboot移植

大功基本上告成,还差最后一步, uboot中的LAN8720A驱动有点问题,打开文件drivers/net/phy/phy.c,找到函数genphy_update_link,这是个通用PHY驱动函数,此函数用于更新PHY的连接状态和速度。第335行为ENET1的PHY地址,默认是0X2,第339行为ENET2的PHY地址,默认为0x1。第29-39行,设置DRAM 的大小,宏PHYS_SDRAM_SIZE就是板子上DRAM 的大小,如果用的NXP官方的9X9 EVK开发板的话DRAM大小就为256MB。

Yuanghxb的博客 1380

嵌入式linux驱动之路18:U-Boot 移植(1)

嵌入式linux驱动之路18:U-Boot 移植(1)

fsfabc的博客 1421

uboot phy移植心得(基于hi3531A平台)

正常来说hi3531A提供的uboot已经可以满足正常需求,但是由于项目需求,我们会去适配不同的phy芯片。 需要修改的部分: 1.在include/configs/hi3531a.h 里有两个宏 CONFIG_HIGMAC_PHY1_ADDR 和 CONFIG_HIGMAC_PHY1_INTERFACE_MODE,分别指的是phy地址和模式。我这边需要mii模式就将这两个宏改成了 2 ,0。这个

a8411969的专栏 3600

基于IMX6Q的u-boot-2017.11的移植(3)->Ethernet MAC (ENET)移植

观察上次移植的uboot的串口输出: U-Boot 2017.11 (Jan 07 2018 - 11:50:48 +0800) CPU: Freescale i.

honorxcl的博客 3988

uboot代码解析3:内存管理、控制台、网络、启动函数

uboot内存管理

1871

uboot下phy的工作

UBOOT的PHYCHIP配置 PHYCHIP的配置位于 include/configs/XXX_config.h中 #define CONFIG_YYY_ETH #define CONFIG_YYY_ETH_SPI_BUS 0 #define CONFIG_YYY_ETH_SPI_CS 0 代码流程 Uboot下PHYCHIP的驱动代码由一些函数构成,这些函数包含在文件PHYCHIP

哲的专栏 8708

X210开发板(S5PV210芯片)uboot移植DM9000驱动移植

DM9000芯片介绍 DM9000连接方式

weixin_42031299的博客 1128
上一篇: u-boot-2016.11移植nandfalsh(基于s5pv210)
下一篇: ubuntu16安置ftp
Sourcelink
博客等级 码龄12年 31粉丝 43原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值