[mini2440]内核源码驱动阅读

mini2440所有驱动都有共同的地方(linux-2.6.32.2\arch\arm\mach-s3c2440\mach-mini2440.c)。

1.网卡驱动.

a.使用 dm9000.

代码路径:

linux-2.6.32.2\drivers\net\dm9000.c 网卡的全部操作硬件的驱动。

linux-2.6.32.2\arch\arm\mach-s3c2440\mach-mini2440.c 主要功能是把网卡添加到总线。

b.网卡驱动如何与TCP/IP协议进行联系。

是通过 net/core/dev.c 来实现的, 它是linux抽象出的一个核心网络设备, 用来连接网络协议栈和网卡驱动, 这个core-dev 提供了一个net_device_ops数据结构, 由具体的网卡驱动来填充这个接口, 比如上面提到的 static const struct net_device_ops dm9000_netdev_ops = { .ndo_open = dm9000_open, 这个动作就是实现core-dev的ndo_open动作。 你可以研究下loopback设备, 这个有助于你理解linux协议栈与网卡驱动间的关系, 以及ifconfig这些命令的实现原理。

2.屏幕驱动。

\linux-2.6.32.2\drivers\video\s3c2410fb.c

参考:https://www.linuxidc.com/Linux/2011-10/44431.htm

Linux-4.9.2内核在mini2440上的移植(九)——LCD驱动移植 https://blog.csdn.net/zl199203/article/details/78141947

程序基本结构
 1.模块初始化-->向platform核心注册自己
 2.实现linux设备模型必须的probe函数-->向frambuffer核心注册自己(最重要)
                       resume函数-->系统在由挂起恢复的时候调用
                       suspand-->系统在挂起的时候调用 
                       remove--> 驱动程序注销自己的时候调用                  
 3.frambuffer驱动模型fb_ops各函数的实现-->实现fb驱动的ioctl命令需要的函数

 

mini2440lcd驱动分别涉及到了platform和frambuffer核心,利用这两个核心实现其功能。

3.GPIO驱动

路径:

linux-2.6.32.2\drivers\char\mini2440_leds.c

linux-2.6.32.2\drivers\char\mini2440_pwm.c

linux-2.6.32.2\drivers\char\mini2440_buttons.c

linux-2.6.32.2\arch\arm\plat-s3c24xx\gpio.c

参考:Linux-2.6.32.2内核在mini2440上的移植(十五)---移植LED驱动

http://www.eeworld.com.cn/mcu/article_2016120431925.html

4.串口驱动

参考:基于Linux-2.6.32.2在mini2440驱动分析一:串口驱动 https://blog.csdn.net/yuesichiu/article/details/8189336

路径: linux-2.6.32.2/drivers/serial/s3c2440.c

 

(end)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值