arm linux 内核移植及驱动调试-网卡(1)

2023-05-16

最近在给一块ARM开发板(扬创的2440)移植新的kernel,原来的驱动都在,不过还是碰到不少问题,主要是对ARM LINUX的一些结构不甚了解,这里作个笔记以便自己或他人查阅。

前面没有什么大问题,把需要的内核配置和需要添加的开发板描述文件放入内核,并删删改改使之能编译通过,然后kernel就能在开发版里跑起来了(以后有 空把这段也写上),因为我设的是NFS ROOT,所以必须要把网卡驱动弄好,不过发现网卡驱动的init里的打印是有的,但是并没有进入probe,后面nand的驱动就能正确probe,很是奇怪。为了弄清到底是为什么,我沿着代码一层层的深入,通过无限打印大法,终于发现了问题。

原来ARM LINUX不是自动检测设备的,因为他没有一个PCI这样的总线可以随时查询设备,它的做法是devs.c 里面手动设置好设备的描述,在驱动init被调用后,经过一连串的调用(platform->bus->dd),进入dd.c的 driver_attach中,它又调用bus.c里面的bus_for_each_dev去查找有没有需要这个驱动的设 备,bus_for_each_dev使用了platform_match(platform.c)去寻找设备(仅仅是判断名称是否一致),如果找到就调 用驱动程序的probe函数。
这样我只需要在devs.c里面把dm9000的设备描述加上(定义好全局变量,然后加入mach-xxxx.c的 devices列表中),改了一下确实probe成功了,不过驱动还是没有运行起来,能进入中断但是收发数据貌似不对,不知道是不是和我设的MAC地址等 等有关,明天有空继续研究
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

arm linux 内核移植及驱动调试-网卡(1) 的相关文章

随机推荐

  • SQL数据分析之MySQL数字、字符、日期函数-可用于where和select【精心整理】

    文章目录 一 数字函数二 字符函数三 日期函数 一 数字函数 1 round四舍五入 1 xff09 用法示例 span class token comment 保留整数位四舍五入 span span class token keyword
  • SQL数据分析之流程控制语句【if,case...when详解】

    文章目录 零 写在前面一 if单条件判断语句二 case when多条件判断1 单条件 xff08 if else效果 xff09 2 多条件 xff08 if else if else效果 xff09 3 常量用法 xff08 switc
  • Go语言安装与第一个HelloWorld程序

    Go语言第一个HelloWorld程序 Go xff0c 又称 Golang xff0c 是一个Google于 2009年11月 开源的编译型编程语言 Go是从2007年末由Robert Griesemer Rob Pike Ken Tho
  • SQL数据分析之窗口排序函数rank、dense_rank、raw_number与lag、lead窗口偏移函数【用法整理】

    文章目录 零 写在前面一 窗口排序函数1 基础2 rank over 跳跃式排序3 dense rank over 4 raw number over 5 注意 二 窗口偏移函数1 lag 2 lead 3 综合练习 注意 xff1a 这些
  • SQL数据分析之子查询的综合用法和案例题【耐心整理】

    文章目录 零 写在前面一 子查询基础用法二 子查询综合用法 xff08 难题 xff09 零 写在前面 本文所有代码均是在SQL ZOO平台进行 xff0c 数据也该平台下的world表和一些其他平台提供的数据表 xff0c 所有代码均已通
  • python变量命名规范

    一 变量的命名 变量是对象的引用 xff0c 变量存放于栈中 xff0c 对象存放于堆中 python对变量的命名比较简明 xff0c 不得使用数字开头即可 xff0c 在此可引申下 xff0c 包和变量名 xff0c 全都小写 xff0c
  • python-基本数据运算

    一 基本数据运算 xff1b 0不能作除数 xff0c 否则报错 1 43 加 1 43 2 61 3 2 减 3 1 61 2 3 乘 3 2 61 6 4 除 6 2 61 3 5 整除 7 2 61 3 6 求余数 9 2 61 1
  • Verilog电路设计小技巧之表达式位宽

    不积跬步无以至千里 记录Verilog电路设计中的点点滴滴 今天想说说verilog中表达式的位宽问题 xff0c 编码过程中 xff0c 经常会出现很多表达式位宽不匹配 基本上在跑lint的时候 xff0c 只要一个表达式中有任意2个操作
  • MicroPython在Pycharm上的运行方式

    安装插件micropython 安装CP210x VCP Winodws 可在设备管理器中查看 安装python环境变量envs 在Pycharm中激活环境变量 eg xff1a activate MicroPython pip insta
  • VS2012运行C++程序出现fatal error LNK1104: 无法打开文件“kernel32.lib”错误

    VS2012运行C 43 43 程序出现fatal error LNK1104 无法打开文件 kernel32 lib 错误 一 本人的安装环境 xff1a win7 64位 二 解决方法 当时安装完成之后 xff0c 运行一个简单的Hel
  • 调试llvm时出现collect2: fatal error: ld terminated with signal 9

    安装llvm debug版本 release版本的安装过程可以参考https blog csdn net vincentuva article details 82993563 在安装使用debug版本时 xff0c 只需要进入到build
  • 地址栏中的#是什么意思

    我们在开发vue时 xff0c 地址栏中会出现 xff0c 如下图所示 xff1a 当我们点击跳转A页面时 xff1a 那么地址栏中的 到底是什么意思 xff1f 如何去掉 xff1f 路由的两种显示模式 Hash模式 这个模式下地址栏中包
  • Anaconda静默安装

    我们默认安装Anaconda时 xff0c 需要进行交互才可以完成安装 xff0c 例如需要输入yes xff0c 或者回车 有时候我们只需要他进行默认安装即可 xff0c 不需要进行交互 命令如下 xff1a span class tok
  • 使用godoc创建可以本地浏览的go文档站点

    Golang 的官网地址是golang org xff0c 有的时候国内打不开 现在国内的可以使用 xff08 golang google cn xff09 其实 xff0c 如果已经安装好了 go xff0c 可以在本地直接查看go 文档
  • 慎用 dpkg --force-all 安装 linuxqq

    最近与一个朋友联络 xff0c 要用 QQ 去 xff31 xff31 官网上只有比较早的版本 xff0c 安装后 xff0c 还提示必须更新 xff0c 点击还找不到下载 xff0c 悲了个催 后面幸好有 web qq 暂时解决了这个问题
  • 又开了一个BLOG,发个贴纪念一下

    很久没写技术方面的BLOG了 xff0c 最近因为查询资料看了很多比人的BLOG 感觉心里有些痒痒的 xff0c 所以决定再次开一个BLOG xff0c 本人是搞嵌入式开发的 xff0c 对各种通讯终端 xff0c CPU以及LINUX比较
  • How to make linux boot from network

    1 Enable dhcp server on a linux server the etc dhcpd conf should be looked like this ddns update style interim ignore cl
  • 转回CSDN了

    在BLOGSPOT上面挣扎了几个月 xff0c 还是放弃了 xff0c 毕竟看我的BLOG绝大多数肯定是中国人 xff0c 一个老被中国政府封的BLOG是没办法让别人接受的 xff0c 哎 xff0c 还是对BLOGSPOT恋恋不舍阿 xf
  • 最近在研究Mythtv

    mythtv是一个linux下的开源电视节目观看 录制和管理的软件 xff0c 如果装在普通PC上就可以变成一台电视PC xff0c 可以使用遥控器来看电视 xff0c 录节目 xff0c 如果装在一个嵌入式系统里就是一个机顶盒啦 xff0
  • arm linux 内核移植及驱动调试-网卡(1)

    最近在给一块ARM开发板 扬创的2440 移植新的kernel xff0c 原来的驱动都在 xff0c 不过还是碰到不少问题 xff0c 主要是对ARM LINUX的一些结构不甚了解 xff0c 这里作个笔记以便自己或他人查阅 前面没有什么