龙芯LS2K0300久久派上手体验

介绍

芯片

龙芯2K0300芯片是一款基于`LA264`处理器核的多功能SoC芯片,可广泛适用于工业控制、通信设备、信息家电和物联网等领域;该芯片采用高集成度设计,可提供丰富的功能接口,满足多场景应用需求,同时支持低功耗技术,能够在低能耗条件下进行高效处理,具有以下特色:

  • 处理器主频1GHz(功耗 < 1W),64位双发射超标量LA264,支持LoongArch指令系统,有286个引脚
  • 16位DDR4-1600控制器,支持ECC校验
  • 32KB一级指令缓存和32KB一级数据缓存,支持ECC校验;512KB二级共享缓存,支持ECC校验
  • 集成2个USB2.0、2个GMAC、1路LCD显示
  • 支持处理器核时钟动态变频;支持主要模块时钟动态关闭
  • 1个I2S、4个CAN-FD、4个SPI、2个QSPI、2个eMMC、2个SDIO、1个LIO、8通道ADC、4个I2C、10个UART,4个PWM、3组TIMER、106个GPIO、RTC、HPET、JTAG等

开发板

久久派搭载龙芯SOC芯片LS2K0300,板载Ethernet、WIFI / BT、USB、ADC、Audio、Display、RTC等功能或接口,内存容量512M,EMMC容量为4G,电源供电为USB Type C口,有2路拓展引脚

引脚资源

板载2 x 15 Pin IO接口

PIN 信号定义 备注 PIN 信号名称 备注
1 GND 2 P3V3
3 PWM2 GPIO88 4 UART0_TXD
5 PWM3 GPIO89 6 UART0_RXD
7 CAN2_TX GPIO73 8 UART1_TXD
9 CAN2_RX GPIO72 10 UART1_RXD
11 CAN3_TX GPIO75 12 UART2_TXD
13 CAN3_RX GPIO74 14 UART2_RXD
15 I2C1_SCL GPIO50 16 I2C0_SCL GPIO48
17 I2C1_SDA GPIO51 18 I2C0_SDA GPIO49
19 GND 20 GND
21 SPI2_CLK GPIO64 / TXD5 22 SPI1_CLK GPIO60 / RXD4
23 SPI2_CSn GPIO67 / TXD3 24 SPI1_CSn GPIO63 / RXD8
25 SPI2_MISO GPIO65 / RXD5 26 SPI1_MISO GPIO61 / TXD4
27 SPI2_MOSI GPIO66 / RXD3 28 SPI1_MOSI GPIO62 / TXD8
29 GND 30 P5V 5V电源

LCD接口(可以用FPC54转换成排针引脚来使用)

PIN 信号定义 备注
1 TSX+ 扩展触摸信号, NC
2 TSX- 扩展触摸信号, NC
3 TSY+ 扩展触摸信号, NC
4 TSY- 扩展触摸信号, NC
5、 15、 24、 33、 42、 46、 48 GND
6 LS2K_GPIO54 电源使能(硬件默认上拉)
7 LS2K_I2C_SDA0
8 LS2K_I2C_SCL0
9、 10、 11、 12 NC
13 LS2K_GPIO52 触摸板中断(硬件默认上拉)
14 LS2K_GPIO53 触摸板复位(硬件默认上拉)
16 - 23 LS2K_LCD_D[0:7] B 数据
25 - 32 LS2K_LCD_D[8:15] G 数据
34 - 41 LS2K_LCD_D[16:23] R 数据
43 LS2K_LCD_HSYNC 水平同步
44 LS2K_LCD_VSYNC 垂直同步
45 LS2K_LCD_EN 数据有效
47 LS2K_LCD_CLK 时钟输出
49 LS2K_PWM0 背光控制(GPIO87)
50 - 54 VCC_5V

ADC接口

PIN 信号定义 备注
1 P3V3 3.3V 电源输出
2 GND0
3 ADC 通道 4 0/4 通道可以独立采样, 也可以作为差分采样
4 ADC 通道 0 0/4 通道可以独立采样, 也可以作为差分采样
5 ADC 通道 1 1/5 通道可以独立采样, 也可以作为差分采样
6 ADC 通道 5 1/5 通道可以独立采样, 也可以作为差分采样
7 ADC 通道 2 2/6 通道可以独立采样, 也可以作为差分采样
8 ADC 通道 6 2/6 通道可以独立采样, 也可以作为差分采样
9 ADC 通道 3 3/7 通道可以独立采样, 也可以作为差分采样
10 ADC 通道 7 3/7 通道可以独立采样, 也可以作为差分采样

连接

供电:USB Type C线,这个没有串口功能,只是纯粹的供电

串口:CH340T USB串口线连接UART 0,推荐使用MobaXterm,串口配置波特率115200、数据位8、停止位1、奇偶校验位None

联网:参考另一篇文章,设置虚拟机网络为桥接方式联网,在串口终端调用命令给开发板分配一个IP,可以实现开发板直连虚拟机PC

udhcpc -i eth0

开发环境

前置依赖

toolchain:loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1.tar.xz

kernel:linux-4.19-0614.tar.gz

rootfs:loongos-qt.cpio

编译内核

先安装bison、flex

sudo apt install bison flex libncurses5‐dev libssl-dev

导入toolchain环境变量

export PATH=$PATH:/home/asensing/loongson/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3-1/bin

拷贝配置

cp arch/loongarch/configs/loongson_2k300_defconfig .config

配置内核

make menuconfig ARCH=loongarch

编译内核

make vmlinuz ARCH=loongarch CROSS_COMPILE=loongarch64-linux-gnu- -j8

清理内核

make clean ARCH=loongarch CROSS_COMPILE=loongarch64-linux-gnu- -j8

拷贝到指定位置/boot目录下,设备树默认是编译到内核里边去的

scp vmlinuz root@192.168.137.111:/boot

外设调试

GPIO

以文件系统下GPIO调试为例:

  • 设置和查看GPIO状态:ls -l /sys/class/gpio
  • 导出GPIO:echo XX > /sys/class/gpio/export
  • 取消导出GPIO:echo XX > /sys/class/gpio/unexport
  • 设置GPIO电平值:echo X > /sys/class/gpio/gpioX/value
  • 查看GPIO电平值:cat /sys/class/gpio/gpioX/value
  • 设置GPIO工作模式:echo “out” >/sys/class/gpio/gpioX/direction
  • 查看GPIO寄存器的信息 :/sys/class/gpio/gpiochipX
  • 查看GPIO占用:cat /sys/kernel/debug/gpio
  • 查看GPIO中断:cat /proc/interrupts

循环输出方波

while true; 
do 
	echo 1 > /sys/class/gpio/gpio48/value; 
	sleep 0.1; 
	echo 0 > /sys/class/gpio/gpio48/value; 
	sleep 0.1; 
done;

i2c

以i2c-tool工具为例(BH1750设备调试):

  • 先查看/dev目录下是否有i2c总线节点,没有的话要检查一下设备树有没有i2c的总线节点
  • 查看i2c总线上的从设备:i2cdetect -y 0
  • 读取数据:i2cget -y 0 0x23 0x00
  • 写入数据:i2cset -y 0 0x23 0x00 0x10

PWM

以pwm0的配置为例

  • 导出节点:echo 0 > /sys/class/pwm/pwmchip0/export
  • 取消导出:echo 0 > /sys/class/pwm/pwmchip0/unexport
  • 开启:echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
  • 关闭:echo 0 > /sys/class/pwm/pwmchip0/pwm0/enable
  • 设置周期:echo 1000000 > /sys/class/pwm/pwmchip0/pwm0/period
  • 设置极性(normal或inversed):echo "normal" > /sys/class/pwm/pwmchip0/pwm0/polarity

ADC

以ADC通道0为例

  • 查看ADC数值:cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
  • 查看ADC分辨率:cat /sys/bus/iio/devices/iio\:device0/in_voltage_scale

串口

设置串口1波特率115200、数据位8、停止位1、奇偶校验位None

stty -F /dev/ttyS1 speed 115200 cs8 -parenb -cstopb raw -echo -echoe -echok -echoctl -echoke

设置输入、输出波特率

stty -F /dev/ttyS1 ispeed 9600 ospeed 9600

读取串口数据

cat /dev/ttyS1

快速开发

在QtCreator中自定义Compilers

自定义Debuggers

添加远程设备

配置Kits

设置完这几步,即可在QtCreator里边很方便地进行非Qt类软件的交叉编译以及移植开发

总结

  • 这个SBC很小(几乎跟树莓派一样大),IO资源确实非常丰富,甚至可以用FPC 54 PIN引出GPIO来使用
  • BSP还不是很完善,刚出的内核reboot会panic,部分外设使用还是有问题
  • 资料这一块还不多,希望官方加大开放力度,一块好的SOC需要有良好的开发生态
  • RAM偏小,跑GUI可能会有点吃力,希望出个大内存版本
阅读剩余
THE END