龙芯LS2K0300久久派上手体验
介绍
芯片
龙芯2K0300芯片是一款基于`LA264`处理器核的多功能SoC芯片,可广泛适用于工业控制、通信设备、信息家电和物联网等领域;该芯片采用高集成度设计,可提供丰富的功能接口,满足多场景应用需求,同时支持低功耗技术,能够在低能耗条件下进行高效处理,具有以下特色:
LoongArch
指令系统,有286个引脚- 16位DDR4-1600控制器,支持ECC校验
- 32KB一级指令缓存和32KB一级数据缓存,支持ECC校验;512KB二级共享缓存,支持ECC校验
- 集成2个USB2.0、2个GMAC、1路LCD显示
- 支持处理器核时钟动态变频;支持主要模块时钟动态关闭
开发板
久久派搭载龙芯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: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
循环输出方波
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
- 先查看/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类软件的交叉编译以及移植开发
总结
- BSP还不是很完善,刚出的内核reboot会panic,部分外设使用还是有问题
- 资料这一块还不多,希望官方加大开放力度,一块好的SOC需要有良好的开发生态