搞了半天spi驱动,写w25q64读取出数据都是ff,原来是芯片坏了。。。
先做其他的吧
串口驱动设备树
手册一般第一章基本就是需要查找的地址有
1.1Address Mapping
1.2System Boot
1.3System Interrupt Connection
1.4System DMA Hardware Request Connection
在1.1早到基地址UART4 FEB70000 64KB
在1.3找到中断号367 irq_uart4 High level
还需要dmas因为每个 UART 硬件上绑定的 DMA 通道是固定的、不重复的,这个在手册的Chapter 12 DMA Controller (DMAC)可以找到,在DAMAC1下有
UART4_TX是9
UART4_RX是10
uart4: serial@feb70000 {
compatible = "rzroomi,uart4";
reg = <0x0 0xfeb70000 0x0 0x100>;
interrupts = <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
clock-names = "baudclk", "apb_pclk";
reg-shift = <2>;
reg-io-width = <4>;
dmas = <&dmac1 9>, <&dmac1 10>;
dma-names = "tx", "rx";
pinctrl-0 = <&uart4m0_xfer>;
status = "disabled";
};
直接加入设备树你就会发现报错,因为瑞芯微已经在其他文件定义过了。所以只要加入
&uart4 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart4m0_xfer>;
};
系统开机已经自动创建节点和pwm一样瑞芯微已经写好了,直接写入/dev/ttyS4即可实现串口通信

接下来学学usb,原厂就已经写好了驱动,没啥实验,但是可以学学原理
板子介绍usb是这样的:2 个 USB 2.0 Host、1 个 USB3.0 Host 和 1 个 USB 3.0 OTG
USB 分为 HOST(主机)和从机(或 DEVICE) 而USB OTG 功能的 USB 接口既可以做HOST(做主机ID=0),也可以做 DEVICE(做从机ID=1)
USB 相关的控制器名字分别为:USB OTG 控制器、USB Host 控制器和 USB HS PHY 控制器,提供一个简称方便书写:OTG、USBH 和PHY
PHY:中文可称之为端口物理层
USBH:USBH 控制器这是一个主机控制器,此控制器由 EHCI 控制器和 OHCI 控制器组成
OTG:OTG 控制器有两个模式:正常模式(normal mode)和低功耗模式(low power mode)。 OTG控制器都可以运行在高速模式(HS 480Mbps)、全速模式(LS 12Mbps)和低速模式(1.5Mbps)。正常模式下每个 OTG 控制器都可以工作在主机(HOST)或从机(DEVICE)模式下,每个 USB 控制器都有其对应的接口
USB 驱动也包括三个部分:USB 控制器驱动、USB PHY 驱动和 USB接口驱动(CC logic 驱动)
所以设备树里可以找到有
14 usb_host0_ohci: usb@fc840000 {
15 compatible = "generic-ohci";
16 reg = <0x0 0xfc840000 0x0 0x40000>;
17 interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
18 clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST_ARB0>, <&u2phy2>,
<&aclk_usb>;
19 clock-names = "usbhost", "arbiter", "utmi", "alk_usb";
20 phys = <&u2phy2_host>;
21 phy-names = "usb2-phy";
22 power-domains = <&power RK3588_PD_USB>;
23 status = "disabled";
24 };
20 phys = <&u2phy2_host>;
21 phy-names = "usb2-phy";
是指定这个 USB 控制器使用 u2phy2 这个 USB PHY。PHY = 物理层收发器真正负责 USB 信号,使用usb2.0
power-domains = <&power RK3588_PD_USB>;属于 RK3588 的 USB 电源域内核会自动开关电源
因为在完成实习公司的任务,编译烧入代码,没写多少,所以本期就到这了