0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

迅为2K1000龙芯开发板pmon BSP移植之配置CAN总线

北京迅为电子 2022-01-20 14:32 次阅读

移植pmon要比移植uboot难吗?

和 uboot 移植相比,给开发板移植 pmon 难吗?有什么区别呢。我们在移植 uboot 的时候,基本上是不 会在 uboot 的官网去下载纯净的 uboot 镜像的,而是用的半导体厂家提供的 bsp 包里面的 uboot。为什么要 这么做呢?并不是说 uboot 官网里面的 uboot 源码不能用,不能移植,而是 uboot 官网里面的 uboot 对相应的 CPU 的支持不是很好。你想哈,谁对 CPU 最熟悉呢?肯定是半导体厂家是不是,他们对自己的 CPU 肯定 是最熟悉的。所以他们提供的 bsp 里面的 uboot 是对他们的 CPU 支持最好的,驱动最全的。所以我们不会 在 uboot 官网去下载,然后在去移植。而且使用半导体厂家提供的 BSP 还有一个好处,就是移植非常简单。

就拿 uboot 移植来说,只需要基于半导体厂家的 BSP 来针对自己的开发板适配即可。所需要的工作并不多。

同理,在 LS2K1000 上我们使用的是 pmon,那这个 pmon 我们要去找原生的吗,显然不是。pmon 现在是龙 芯中科在进行维护,所以,龙芯中科提供的 pmon 会对自己的 CPU 支持的非常友好。基本上就是我们拿到 BSP 以后,稍加修改就可以完美的在开发板上来运行了。所以,pmon 的移植要比 uboot 的移植更加简单。

9.9.2 获取原厂 pmon 源码

源码 pmon 源码在:LS2K1000 开发板资料\12_原厂 BSP\1_pmon 源码

接着我们将 pmon 源码拷贝到 Ubuntu 虚拟机的任意目录下,然后按照手册 7.1 编译和 6.6 烧写 pmon 到开发板。可以发现,源码的 pmon 源码直接编译成功就可以在开发板上运行。非常友好。

9.9.3 配置 can 总线

我就进到 pmon 源码的 pmon-loongson3/Targets/LS2K/conf 路径下,使用命令 cp LS2K.dts LS2K.dts_back 备份一下设备树文件,如下图所示:

接着我们使用命令 vim LS2K.dts 打开设备树文件,找到 can0 和 can1 的设备节点,可以发现,在 BSP 里 面已经默认配置好了,不需要我们在额外配置,如下图所示:

接着我们来配置引脚的复用关系,通过 LS2K1000 的数据手册,可知地址 0x1fe10420 的第 16 到 17 位配置的是 can 引脚的复用关系,如下图所示:

通过上表可知,如果我们要把 GPIO 设置为 CAN 功能,我们需要将 16 到 17 位设置为 1,我们可以直接在 pmon 里面操作这个寄存器,比如使用在 Targets/LS2K/ls2k/tgt_machdep.c 文件中增加代码(volatile int *)0xbfe10420 |=(2<<16)将这俩位设置为 1,但是在 pmon 的 bsp 里面这些工作已经给我们做好了,只不过是没有编译进去而已。

在 Targets/LS2K/ls2k/tgt_machdep.c 文件的第 464 行使用了宏定义 PAI2 来决定包不包含 pai2.c 文件,如下图所示:

pai2.c 文件在路径 Targets/LS2K/ls2k/pai2.c 下,这个文件里面通过宏定义 SEL_CAN 来对 CAN 的管脚复用进行了配置,如下图所示:

所以我们是不是就不用在自己单独来添加代码了呢,我们只需要加上这 PAI2 和 SEL_CAN 这来个宏定义即可,我们打开 Targets/LS2K/conf/ls2k 文件,取消注释 option PAI2 并增加宏定义 option SEL_CAN,如下图所示:

然后我们重新编译 pmon 源码并烧写到开发板上,使用命令 devmem 0x1fe10420 来查看有没有成功将这俩个管脚的复用设置成 can,如下所示:

将 0x00131D49 换算成 2 进制,可以发现 16 到 17 位已经成功设置成了 1,所以这俩个 GPIO 已经成功被设置成 CAN。接着我们就可以来测试开发板的 CAN 功能了。

3.2.7 CAN 接口测试

开发板板载了两路 CAN 接口, 我们可以使用这两路 CAN 接口验证 CAN 的数据收发。首先我们使用电缆线连接 CAN1 和 CAN2(can 连接的时候: H 接 H、 L 接 L) , 如下图所示:

开发板上的两路 CAN 默认是关闭的, 我们在调试串口终端输入“ip link set can0 up type can bitrate

125000 triple-sampling on” 命令, 设置 CAN0 的波特率是 125000, 并打开 CAN0, 运行结果如下图所示:

然后我们在调试串口终端输入“

ip link set can1 up type can bitrate 125000 triple-sampling on” 命令, 设

置 CAN1 的波特率是 125000( CAN 总线在进行数据收发的时候,通信双方的波特率要设置成一致),并

打开 CAN1, 运行结果如下图所示:

接下来我们使用 CAN0 作为数据接收端, 我们需要在调试串口终端输入“candump can0 &” 命令, 运行结果如下图所示:

然 后 我 们 使 用 CAN1 作 为 数 据 发 送 端 , 我 们 在 调 试 串 口 终 端 输 入 “cansend can1 6A0#11.22.33.44.55.66.77.88”命令, 发送数据, 其中的 6A0 是帧 ID, #后面的是数据, 共 8 个字节。 运行结果如下图所示:

上图我们可以看到 CAN1 发送数据以后, 后台运行的 CAN0 接收程序收到了 CAN0 的数据, 并显示出来, 接收到的数据和发送的数据内容一致。

数据接收端和发送端也可以互换,可以参考上面的命令(主要是解释和发送程序的 CAN 接口设置对)。

相应视频教程:https://www.bilibili.com/video/BV1mT4y117eN?p=1

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 龙芯
    +关注

    关注

    3

    文章

    340

    浏览量

    31244
  • PMON
    +关注

    关注

    0

    文章

    7

    浏览量

    8237
收藏 人收藏

    评论

    相关推荐

    龙芯LS2K1000LA和LS2K1000有何区别?

    则是使用mips架构。所以俩个不同架构的处理器使用的源码略有不同,但是硬件上基于2k10002k1000la的开发板&核心
    发表于 11-14 11:06

    电子】龙芯LS2K1000LA和LS2K1000有何区别?

    电子】龙芯LS2K1000LA和LS2K1000有何区别?
    的头像 发表于 11-13 14:13 256次阅读
    【<b class='flag-5'>迅</b><b class='flag-5'>为</b>电子】<b class='flag-5'>龙芯</b>LS<b class='flag-5'>2K1000</b>LA和LS<b class='flag-5'>2K1000</b>有何区别?

    itop-3568开发板AMP双系统使用手册烧写AMP镜像

    itop-3568开发板AMP双系统使用手册烧写AMP镜像
    的头像 发表于 11-04 15:00 417次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>itop-3568<b class='flag-5'>开发板</b>AMP双系统使用手册<b class='flag-5'>之</b>烧写AMP镜像

    【北京】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器

    【北京】itop-龙芯2k1000开发指南Linux基础入门vim 编辑器
    的头像 发表于 10-25 14:56 303次阅读
    【北京<b class='flag-5'>迅</b><b class='flag-5'>为</b>】itop-<b class='flag-5'>龙芯</b><b class='flag-5'>2k1000</b><b class='flag-5'>开发</b>指南Linux基础入门vim 编辑器

    国产龙芯处理器选择2K1000开发板有资料

    视频教程 新增龙芯2K1000开发环境搭建系列、系统编译与烧写系列、PMON基础知识及启动流程分析系列、pmon
    发表于 10-16 14:23

    龙芯2K0300蜂鸟试用】龙芯2K0300蜂鸟开发板引脚定义及体验开发板

    今天大家隆重介绍这块龙芯2K0300蜂鸟开发板你详细介绍开发板引脚定义及
    发表于 09-19 18:54

    【作品合集】龙芯2K0300蜂鸟开发板试用精选

    广东龙芯2K0300蜂鸟开发板采用核心加扩展板的模式设计,核心上集成了CPU 、DDR4 、PHY芯片、EMMC、NOR FLASH等
    发表于 09-10 18:17

    龙芯2K0300蜂鸟试用】龙芯2K0300蜂鸟开发板开发环境搭建

    的需求,开发者提供了广阔的应用空间。 龙芯2K0300蜂鸟开发板开发环境通过下面的方法来搭
    发表于 09-05 21:16

    北京RK3568开发板嵌入式学习Linux驱动全新更新-CAN+

    北京RK3568开发板嵌入式学习Linux驱动全新更新-CAN+
    的头像 发表于 09-04 15:29 495次阅读
    北京<b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3568<b class='flag-5'>开发板</b>嵌入式学习<b class='flag-5'>之</b>Linux驱动全新更新-<b class='flag-5'>CAN</b>+

    【北京龙芯iTOP-LS2K0500开发板快速启动手册-第3章 Windows安装串口终端

    龙芯iTOP-LS2K0500开发板
    的头像 发表于 08-28 15:13 552次阅读
    【北京<b class='flag-5'>迅</b><b class='flag-5'>为</b>】<b class='flag-5'>龙芯</b>iTOP-LS<b class='flag-5'>2K</b>0500<b class='flag-5'>开发板</b>快速启动手册-第3章 Windows安装串口终端

    【北京】itop-龙芯2k1000 sylixos 嵌入式实时系统烧写手册-第一章与第二章 详细步骤

    【北京】itop-龙芯2k1000 sylixos 嵌入式实时系统烧写手册-第一章与第二章 详细步骤
    的头像 发表于 08-26 14:18 697次阅读
    【北京<b class='flag-5'>迅</b><b class='flag-5'>为</b>】itop-<b class='flag-5'>龙芯</b><b class='flag-5'>2k1000</b> sylixos 嵌入式实时系统烧写手册-第一章与第二章 详细步骤

    2K0500开发板硬件连接快速测试

    2K0500开发板硬件连接快速测试
    的头像 发表于 08-13 15:40 305次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b><b class='flag-5'>2K</b>0500<b class='flag-5'>开发板</b>硬件连接快速测试

    RK3562开发板安卓人工智能主板性能

    RK3562开发板安卓人工智能主板性能
    的头像 发表于 05-31 11:32 999次阅读
    <b class='flag-5'>迅</b><b class='flag-5'>为</b>RK3562<b class='flag-5'>开发板</b>安卓人工智能主板性能<b class='flag-5'>之</b>选

    Banana Pi开源社区推出BPI-5202开发板,国产龙芯Loongson 2K1000LA

    BPI-5202作为单纯的嵌入式通用控制器软硬件开发平台,采用龙芯2K1000LA芯片设计,基本配置中有2个独立MAC以太网端口、
    的头像 发表于 04-13 16:14 1052次阅读
    Banana Pi开源社区推出BPI-5202<b class='flag-5'>开发板</b>,国产<b class='flag-5'>龙芯</b>Loongson <b class='flag-5'>2K1000</b>LA

    [广东龙芯2K1000/2K500开发板] OpenWRT 使用说明

    如何编译 从BSP 包的文件系统目录下找到OpenWrt 的源码并解码。 ##源码中已包含2k500和2k1000板卡的配置 ##2k50
    发表于 02-19 14:40