内核配置说明
在这里使用的是 linux-4.19-0802,没有的可以去文章最后自取,简单讲一下 pwm 的设置。
用 vscode 打开 linux-4.19-0802,我们要做的修改大部分在 arch/loongarch/boot/dts/loongson/ 这个目录下这几个文件:

首先打开 2k0300-pinctrl.dtsi
下滑找到 pwm0_pin 往下这几段。
我们随便看一个:

在这里指定了我们的引脚,计算方式为 416+0 号引脚到 416+0 号引脚,也就是说我就用这一个引脚。再比如 spi 这里,就是说用 416+0 号引脚到 416+3 号引脚。

在这里我们 PWM 引脚要用的就是 <&gpa4 0 0>; <&gpa4 1 1>; <&gpa4 2 2>; <&gpa4 3 3>;将 PWM0-3 分别配置为 <&gpa4 0 0>; <&gpa4 1 1>; <&gpa4 2 2>; <&gpa4 3 3>;就可以了。
接下来打开 loongson_2k0300_pai_99_wifi.dts

这里就是我们注重检查的部分,由于 SPI2 和 PWM 有冲突,所以一定要记得关掉。
这就是内核简单的修改,更多的不多赘述,以下是 linux-4.19-0802(原版未改过,感兴趣的可以自己修改) 和我的 vmlinuz,以下是我自己的引脚分配方案。
| GPIO复用 | 主功能复用 | 第一复用 | 第二复用 | |
| 按键 1 | GPIO43 | uart1_tx | gmac1_ptp_pps | lio_data[3] |
| 按键 2 | GPIO42 | uart1_rx | gmac1_ptp_trig | lio_data[2] |
| 按键 3 | GPIO45 | uart2_rx | gmac1_rx[0] | lio_data[5] |
| 按键 4 | GPIO44 | uart2_tx | gmac1_rx_ctl | lio_data[4] |
| 左编码器 A 相 | GPIO64 | spi2_clk | pwm[0](pwmchip0) | uart0_dcd / uart5_rx |
| 左编码器 DIR | GPIO51 | i2c_sda[1] | gmac1_tx[1] | lio_data[11] |
| 右编码器 A 相 | GPIO67 | spi2_cs | pwm[3](pwmchip3) | uart1_cts / uart9_rx |
| 右编码器 DIR | GPIO50 | i2c_scl[1] | gmac1_tx[0] | lio_data[10] |
| 左电机方向 | GPIO73 | can_tx[2] | sdio1_d[5] | gmac0_crs |
| 左电机 PWM | GPIO65 | spi2_miso | pwm[1](pwmchip1) | uart0_ri / uart5_tx |
| 右电机方向 | GPIO72 | can_rx[2] | sdio1_d[4] | gmac0_col |
| 右电机 PWM | GPIO66 | spi2_mosi | pwm[2](pwmchip2) | uart1_rts / uart9_tx |
| 舵机 | GPIO88 | tim2_ch2 | sdio1_d[6] | pwm[2] |
| 无刷电调 1 | GPIO89 | tim2_ch3 | sdio1_d[7] | pwm[3] |
| 无刷电调 2 | GPIO89 | tim2_ch3 | sdio1_d[7] | pwm[3] |
| 蜂鸣器 | GPIO61 | spi1_miso | i2c_sda[0] | uart0_cts / uart6_rx |
| 拨码开关 1 | GPIO74 | can_rx[3] | sdio1_d[6] | gmac1_col |
| 拨码开关 2 | GPIO75 | can_tx[3] | sdio1_d[7] | gmac1_crs |
| 串口调试 TX | GPIO41 | uart0_tx | gmac0_ptp_pps | lio_data[1] |
| 串口调试 RX | GPIO40 | uart0_rx | gmac0_ptp_trig | lio_data[0] |
| 龙邱屏幕 |
| |||
适配于龙邱开源库,带 PWM 及屏幕,无 ADC



