调试思路
- 对比开发板检查差异性。
- 用试波器或万用表调试。
- 配合硬件工程师共同解决问题。
开发思路
- 先在config中打开相应宏开关。
- 设备树中加入相应配置即可。(可以扩展讲解宏开关有无生效)
pcie
先lspci查看是否注册成功。然后才能看到其pcie设备 。
usb
使用lsusb查看
led
使用的是led子系统,可以在/sys/class/leds/中设置。
can
can盒子+candump cansend.
rtc
使用hwclock进行读写。
uart
I2c
I2ctools进行读写。
ethernet调试。
驱动分为两部分 mdio与gmac,配置完设备树后可以查看/sys/platform/mido/到相应设备。网卡模式为rgmii-rxid因此仅需要设置tx 延迟即可。
1、如果mdio下没有设备或读phyid错误检查网卡复位脚MDIO硬件连接。
2、如果网卡不能up需要检查gamc线。
3、如果能up但无法ping通需要检查TX延迟与晶振问题。
switchRTL8370MB调试
硬件连接为spi+gmac,
spi 采样条件没有限制。
gmac中需要将延迟设置为0并强制设置成1000M。
8370的驱动是应用层通过open、ioctl调用进行spi通信。满足于系统的完整度与实时性,需要集成至kernel。
1、设备树spi中增加8370参数
2、gmac完成后即刻调用 rtl8370。
目的完成内核实时性。
显示设备调试。
虚拟网卡
思路:忽略对硬件的操作在内核中创建虚拟串口,应用层操作串口, 驱动中收发。
uart数据结构与系统调用, 注册中断用于接收数据。
网络为TcpClient, 通过ioctl传入server ip mac信息,创建网络数据包struct sk_buff进行 TCP三次握手,中间需要序号、检验和、长度。再发送数据 。
驱动调试
根据pc指向的函数地址
分为两种 1、驱动已集成内核中查看 /proc/kallsyms查看 或通过System.map查看。
2、使用obj-dump驱动查看地址 在/sys/module/ 中查看到偏移的 bss. data .txt。 查看.txt就可以了