整体框架
调试思路
- 对比开发板检查差异性。
- 用试波器或万用表调试。
- 配合硬件工程师共同解决问题。
开发思路
- 先在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就可以了
mipi与dp屏开发
内核开发
中断
- 概念与作用:中断是硬件或软件向处理器发出的信号,用于通知CPU有紧急事件需要处理,打断当前运行的任务,从而实现异步事件的处理。
- 在内核中的应用:内核中断处理程序(ISR)负责响应外设的中断请求,处理设备数据,并唤醒等待该事件的进程。
- 深入理解:包括中断向量、中断优先级、嵌套中断、软中断与硬中断的区别,以及在 SMP(对称多处理)环境下中断处理的优化和锁的使用。
MMU
cache、多核等机制;