Linux 2.6.20 cs8900驱动详析与移植过程

需积分: 4 15 下载量 42 浏览量 更新于2024-08-02 收藏 247KB DOC 举报
本文档深入分析了Linux 2.6.2版本中的cs8900驱动,针对一款名为cs8900a的网络芯片在该内核版本下的工作原理和移植过程。作者首先强调了在整个过程中,网络驱动的实现得益于互联网资源、Google搜索引擎以及嵌入式开发社区的帮助,特别是weibing博客文章的指导。 硬件配置方面,文章提到了以下关键点: 1. 使用的是S3C2410处理器作为平台基础。 2. cs8900a网络芯片被映射到了S3C2410的bank3空间。 3. cs8900a依赖于INT9中断进行通信处理。 4. 网络内核版本为Linux 2.6.20,这是一个较早但仍然在使用的关键版本。 网络驱动初始化阶段是核心内容,其流程从`init`进程开始,通过一系列函数调用直至`cs89x0_probe1`,在这个阶段完成了对cs8900的探测和初始化。下面是详细步骤: 1.1 `init`函数:作为启动时的第一个关键函数,`init`负责执行早期的系统初始化,包括设置ramdisk_execute_command参数(如初始化引导加载器)。 1.2 探测与初始化过程: - `cs89x0_probe1`函数是网络驱动的主要入口点,它会检测并配置cs8900a,包括硬件配置、驱动注册以及中断处理设置。 - 通过探测硬件特性,驱动程序会尝试配置芯片的寄存器,设置模式选择、地址映射等。 - 内核会检查设备是否存在,以及是否支持特定功能,如自适应速度和数据模式等。 1.3 模块化与非模块化加载的区别: - 当cs8900驱动作为内核的一部分编译时,初始化路径会遵循`init`进程的典型调用顺序。 - 如果驱动作为模块编译,虽然流程基本相同,但在启动时可能通过`ethif_probe2`和`probe_list2`等模块探测函数进行加载。 在整个过程中,作者强调了对网络驱动的深入理解对于驱动移植和调试的重要性,并鼓励读者参考weibing的博客文章获取更多实践指导。通过对Linux 2.6.20 cs8900驱动的详细分析,本文为理解和使用这类嵌入式网络芯片提供了有价值的参考信息。