龙芯2K0300 BSP 开发指南

龙芯2K0300 BSP 开发指南

【免费下载链接】docs-2k0300 2k0300 平台板卡的产品规格书,用户手册等文档 【免费下载链接】docs-2k0300 项目地址: https://gitcode.com/open-loongarch/docs-2k0300

本文详细介绍了龙芯2K0300 BSP(Board Support Package)的开发指南,包括BSP 1.0与BSP 2.0的区别、源码编译与交叉工具链配置、u-boot与内核编译流程以及驱动模块开发与加载。内容涵盖工具链升级、内核版本差异、环境准备、源码获取、编译步骤及常见问题解决方法,为开发者提供全面的技术指导。

BSP 1.0 与 BSP 2.0 的区别

龙芯2K0300的BSP(Board Support Package)是支持硬件平台的基础软件包,包含引导程序、内核、驱动和工具链等组件。BSP 1.0和BSP 2.0是不同版本的支持包,主要区别体现在工具链、内核版本、功能支持及开发流程上。以下从多个维度对比两者的差异:

1. 工具链升级

特性BSP 1.0BSP 2.0
工具链版本GCC 8.3GCC 13.3
支持架构LoongArch64LoongArch64(优化指令集支持)
安装方式手动下载并解压通过脚本自动安装

mermaid

2. 内核版本差异

特性BSP 1.0BSP 2.0
内核版本Linux 5.10Linux 6.12
驱动支持基础外设驱动新增CAN、USB 3.0等驱动
性能优化基础调度优化多核调度增强

mermaid

3. 编译流程优化

  • BSP 1.0:需手动配置环境变量,依赖较多(如libssl-devlibelf-dev)。
  • BSP 2.0:引入自动化脚本set_env.sh,简化工具链和内核配置。
# BSP 2.0示例
$ source ./set_env.sh abi2

4. 功能扩展

  • BSP 2.0新增支持:
    • 蜂鸟板的CAN总线驱动。
    • 先锋派的USB 3.0接口。
    • 图形化配置工具(如menuconfig集成)。

5. 代码仓库与文档

资源类型BSP 1.0BSP 2.0
内核仓库linux-5.10linux-6.12
文档链接快速指南-v1.0快速指南-v2.0

mermaid

6. 兼容性说明

  • BSP 1.0:适用于Ubuntu 18.04/20.04。
  • BSP 2.0:需Ubuntu 22.04及以上版本,对硬件资源要求更高。

通过上述对比,开发者可根据项目需求选择合适的BSP版本。BSP 2.0在性能和功能上更具优势,但需注意环境适配问题。

源码编译与交叉工具链配置

龙芯2K0300 BSP开发的核心环节之一是源码编译与交叉工具链的配置。这一过程涉及从获取源码到生成可运行镜像的全流程,是开发的基础。以下将详细介绍如何在Ubuntu环境下完成这一任务。

1. 环境准备

在开始之前,确保系统已安装必要的工具链和依赖库。以下命令适用于Ubuntu 22.04或更高版本:

sudo apt update
sudo apt install -y git vim openssh-server make gcc g++ bison flex libssl-dev libelf-dev

2. 获取源码

龙芯2K0300的源码主要包括U-Boot、Linux内核和Buildroot。以下命令用于克隆这些仓库:

mkdir ws
cd ws
git clone https://gitee.com/open-loongarch/u-boot.git
git clone https://gitee.com/open-loongarch/linux-6.12.git
git clone https://gitee.com/open-loongarch/buildroot-2024.08.git

3. 交叉工具链配置

交叉工具链是编译龙芯2K0300源码的关键。以下是配置步骤:

  1. 下载工具链

    wget https://gitee.com/open-loongarch/cross-toolchain/raw/master/gcc-13/loongarch64-linux-gnu-gcc13.3.tar.xz
    sudo tar xf loongarch64-linux-gnu-gcc13.3.tar.xz -C /opt
    
  2. 设置环境变量: 在U-Boot或内核目录中运行以下命令:

    source ./set_env.sh abi2
    

4. 编译U-Boot

U-Boot是系统的引导程序,以下是编译步骤:

  1. 选择配置

    cd ~/ws/u-boot
    ./buildenv.sh 2k300
    

    根据提示选择loongson_2k300_pai_defconfig(先锋派)或loongson_2k300_mini_dp_defconfig(蜂鸟板)。

  2. 编译

    make
    
  3. 安装工具: 将mkimage工具复制到系统路径:

    cd tools
    sudo cp mkimage /usr/bin/
    

5. 编译Linux内核

Linux内核的编译过程如下:

  1. 选择配置

    cd ~/ws/linux-6.12
    ./buildenv.sh 2k300
    

    选择loongson_2k300_defconfig

  2. 编译内核镜像

    make uImage
    
  3. 编译模块

    make modules
    

6. 编译驱动模块

如果需要编译自定义驱动模块,可以按照以下步骤操作:

  1. 进入驱动目录

    cd ~/ws/01
    
  2. 编译模块

    make -f Makefile-cross
    

7. 模块加载与卸载

将编译生成的.ko文件加载到目标设备:

  1. 加载模块

    insmod hello.ko
    
  2. 查看模块

    lsmod
    
  3. 卸载模块

    rmmod hello
    

8. 流程图

以下为源码编译与交叉工具链配置的流程图:

mermaid

9. 常见问题

以下表格总结了编译过程中可能遇到的问题及解决方法:

问题原因解决方案
make: command not found未安装make工具sudo apt install make
openssl/evp.h: No such file or directory缺少OpenSSL开发库sudo apt install libssl-dev
flex: not found未安装flex工具sudo apt install flex

通过以上步骤,可以顺利完成龙芯2K0300的源码编译与交叉工具链配置。

u-boot 与内核编译流程

本文将详细介绍如何在龙芯2K0300平台上完成u-boot与内核的编译流程,包括环境配置、工具链安装、源码获取、编译步骤以及常见问题的解决方法。通过本文的指导,开发者可以快速搭建开发环境并生成可运行的固件。

环境准备

在开始编译之前,需要确保系统环境满足以下要求:

  1. 操作系统:推荐使用Ubuntu 20.04或更高版本。
  2. 软件依赖:安装必要的工具链和依赖库。
  3. 工作目录:创建一个干净的工作目录用于存放源码和编译输出。
安装依赖工具

运行以下命令安装所需的工具:

sudo apt update
sudo apt install git vim openssh-server make gcc g++ bison flex libssl-dev libelf-dev -y

获取源码

  1. u-boot源码

    git clone https://gitcode.com/open-loongarch/u-boot.git
    
  2. 内核源码

    git clone https://gitcode.com/open-loongarch/linux-5.10.git
    

配置交叉工具链

龙芯2K0300平台需要使用特定的交叉工具链进行编译。下载并安装工具链:

wget http://ftp.loongnix.cn/toolchain/gcc/release/loongarch/gcc8/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4.tar.xz
sudo tar xf loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4.tar.xz -C /opt
sudo ln -sf loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.4 /opt/loongson-gnu-toolchain-x86_64-loongarch64-linux-gnu

编译u-boot

  1. 进入u-boot目录

    cd u-boot
    source ./set_env.sh
    
  2. 选择配置

    • 先锋派使用loongson_2k300_pai_defconfig
    • 蜂鸟板使用loongson_2k300_mini_dp_defconfig

    运行以下命令选择配置:

    ./buildenv.sh 2k300
    
  3. 编译u-boot

    make
    
  4. 复制工具: 将生成的mkimage工具复制到系统路径:

    sudo cp tools/mkimage /usr/bin/
    

编译内核

  1. 进入内核目录

    cd linux-5.10
    source ./set_env.sh
    
  2. 选择配置

    ./buildenv.sh 2k300
    
  3. 编译内核镜像

    make uImage
    

    编译完成后,生成的uImage位于arch/loongarch/boot/目录下。

常见问题

  1. 缺少依赖库

    • 如果编译过程中提示缺少库文件,请根据错误信息安装对应的库。例如:
      sudo apt install libelf-dev -y
      
  2. 工具链路径问题

    • 确保工具链路径正确配置,并在set_env.sh中正确声明。

流程图

以下为u-boot与内核编译的流程图:

mermaid

通过以上步骤,开发者可以顺利完成龙芯2K0300平台的u-boot与内核编译工作。如有其他问题,请参考官方文档或社区支持。

驱动模块开发与加载

在龙芯2K0300 BSP开发中,驱动模块的开发与加载是一个关键环节。本节将详细介绍如何开发一个简单的内核模块,并将其加载到系统中运行。

1. 驱动模块开发

驱动模块的开发通常包括以下步骤:

  1. 编写模块代码:创建一个简单的模块文件,例如hello.c,内容如下:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

static int __init hello_init(void) {
    printk(KERN_INFO "Hello, LoongArch 2K0300!\n");
    return 0;
}

static void __exit hello_exit(void) {
    printk(KERN_INFO "Goodbye, LoongArch 2K0300!\n");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple driver for LoongArch 2K0300");
  1. 编写Makefile:创建一个Makefile文件,用于编译模块:
obj-m := hello.o
KDIR := /path/to/your/kernel/source
PWD := $(shell pwd)

all:
    make -C $(KDIR) M=$(PWD) modules

clean:
    make -C $(KDIR) M=$(PWD) clean

2. 编译驱动模块

在完成模块代码和Makefile的编写后,执行以下命令编译模块:

$ make -f Makefile-cross

如果编译过程中出现错误,例如缺少scripts/module.lds文件,可能是由于内核未完全编译。此时需要先完整编译内核:

$ cd /path/to/kernel/source
$ make

然后再次尝试编译模块。

3. 驱动模块加载与卸载

编译成功后,生成的.ko文件可以通过以下命令加载到内核中:

  1. 加载模块
# insmod hello.ko
  1. 查看已加载的模块
# lsmod | grep hello
  1. 卸载模块
# rmmod hello
  1. 查看内核日志
# dmesg | tail

4. 示例输出

以下是一个模块加载和卸载的示例输出:

[   10.123456] Hello, LoongArch 2K0300!
[   15.654321] Goodbye, LoongArch 2K0300!

5. 注意事项

  • 内核版本匹配:确保模块编译时使用的内核版本与目标系统一致。
  • 依赖项:编译内核模块前,需安装必要的工具链和依赖项,如gccmakelibssl-dev等。
  • 调试信息:在开发过程中,可以通过printk输出调试信息,并使用dmesg查看。

通过以上步骤,您可以轻松完成龙芯2K0300驱动模块的开发与加载。

总结

本文系统性地梳理了龙芯2K0300 BSP开发的核心流程,从版本差异分析到具体实践操作,包括工具链配置、内核编译、驱动开发等关键环节。通过对比BSP 1.0和2.0的特性差异,并结合实际编译示例与问题解决方案,帮助开发者快速掌握龙芯2K0300平台的开发要点,为后续项目落地奠定基础。

【免费下载链接】docs-2k0300 2k0300 平台板卡的产品规格书,用户手册等文档 【免费下载链接】docs-2k0300 项目地址: https://gitcode.com/open-loongarch/docs-2k0300

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值