• 迅为龙芯2K1000开发板pmon BSP移植配置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。接着我们就可以参考手册 3.2.7 章节来测试开发板的 CAN 功能了。
    更多内容可关注北京迅为2K1000开发板
  • 相关阅读:
    LIB和 DLL区别
    C++ STL总结
    浅谈static和extern关系
    死锁及处理
    函数模板与模板函数
    Linux无法启动httpd_正在启动httpd
    httpd不允许远程连接问题
    虚拟机UUIDexist_更改UUID
    MySQL远程连接丢失问题
    Apache服务端允许跨域
  • 原文地址:https://www.cnblogs.com/liyue3/p/16287766.html
Copyright © 2020-2023  润新知