准备工作

  1. 下载代码LoRaMac-node 

  2. 阅读LoRaMac-node目录下的doc文件夹中的development-environment.md

开工

安装所需环境

  1. CMaka( >= 3.6),

    sudo apt install CMake

    若ubuntu版本为16.04及以下,请参照development-environment.md中提示进行安装高版本的CMake

  2. GNU ARM-Toolchain

    Step1: Inside Ubuntu, open a terminal and input
    sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

    Step2: Continue to input
    sudo apt-get update

    Step3: Continue to input to install toolchain
    sudo apt-get install gcc-arm-embedded

    若提示已安装,请先删除原先安装的软件

    sudo apt-get remove gcc-arm-none-eabi

  3. 安装openocd

    sudo apt-get install openocd

  4. 安装VSCode

    • C/C++
    • CMake
    • CMake Tools
    • Native Debug

开始操作

  1. 打开VSCode,将LoRaMac-node文件夹导入到VSCode中
  2. 会让选择kit,选择刚才安装的gcc-arm-embedded,正常安装目录在/usr/bin
  3. 点击VSCODE中的如下图标,在此栏的上方图标的三角和锤子分别为config(生成makefile文件),make(生成可执行文件)

  4. 点击之后,会在.vscode目录下生成launch.jsonsettings.json文件,其中setting.json中保存的式CMake的配置,修改其中的内容,可以修改生成的makefile,因为我手边没有stm32l1的芯片,所以在这,我修改成了MoteII和ping-pong(发现LoRaMac程序会提示FLASH不够),

  5. 修改之后点击CMake下的configure和build,会重新生成可执行文件。

  6. 至此,文件编译成功,接下来进行调试

    此处我先说一下openocd命令(我也不怎么了解,看development-environment.md现学的)

    openocd -f interface/stlink-v2.cfg -f target/stm32l0.cfg

    -f 用于选择cfg文件

  7. launch.json中有openocd的命令,可以修改其中的命林对其做修改适配我们的烧录器(因为我用的是stlink-v2),

  8. 直接按F5,启动调试

正常的话,启动之后就会跳转到main函数了

Note

  1. 本人对这套工具链还有些不熟悉,如有错误,还望指正
  2. 官方代码为低功耗的,在烧录之后再进Debug模式会进不去,提示exit code 1,经查是低功耗导致的
  3. 官方的md文件中没有说明低功耗设备在进入低功耗之后如何识别,经查,需要添加命令,完整的openocd命令为:
    openocd -f interface/jlink.cfg -c "transport select swd" -c "reset_config srst_only srst_nogate connect_assert_srst" -f target/stm32l0.cfg

在ubuntu下使用CMake及VSCode对LoRaMac-node代码进行编译调试的更多相关文章

  1. 39 Ubuntu下配置python的vscode开发环境

    0 引言 最近想在ubuntu下搞深度学习,首先配置了python的vscode开发环境.在配置python时,选择了Anaconda3.x,保证了其相对于系统python2.x的独立性.另外,vsc ...

  2. am335x在ubuntu下使用StarterWare编写裸机程序并在CCS中用Jlink调试

    StarterWare在AM335X上的烧录运行 步骤:1.下载安装StarterWare,我们团购的SK需要02.00.00.07版本.最近外网访问慢,我上传到论坛.2.找一张miniSD卡,不需要 ...

  3. Ubuntu下安装Golong并用Vscode做IDE最有效方法,避免99%的坑 | 轻松学习GO

    最详细的教程,避开99%的坑,亲测有效 由于大部分教程都是win版本的,所以专门总结了一个linux版本的,其核心在于环境配置和插件安装,经历本人通宵7小时解决了这个问题,用自己的踩坑帮助大家避坑,希 ...

  4. Ubuntu下使用cmake生成可执行文件

    1.单个CPP文件的cmake 首先编写一个简单的程序(main.cpp): #include <iostream> using namespace std; int main() { c ...

  5. Ubuntu下修改CMake版本

    https://blog.csdn.net/mdjxy63/article/details/82686504

  6. Ubuntu下升级Git以及获取ssh keys的代码

    今天开始用的git,记下获取ssh keys 的代码 ? 1 2 3 ssh-keygen -t rsa -C "your_email@example.com" # Enter f ...

  7. 解决Ubuntu下的Eclipse打开Windows编写的java代码的中文乱码

    其实所有的中文乱码 问题都是编码不同所导致的.这里要想让eclipse能正常显示出汉字,就要修改它的字符编码 步骤如下: 1 ,点击菜单栏中的Window(窗口),选择Preferences(首选项) ...

  8. ubuntu 下wireshark 软件安装与使用

    在ubuntu下,使用wireshark也是很有必要的.虽然可以使用tcpdump等工具. ubuntu:11.10     1. sudo apt-get install wireshark     ...

  9. 【linux学习笔记】在ubuntu下使用QT Cmake支持C++11

    今天在ubuntu下使用QT来进行C++编程,选择了Cmake,当用到initializer_list的时候提示不支持C++11,现提供一下解决方案: 错误提示: error: This file r ...

随机推荐

  1. 简单的量子算法(一):Hadamard 变换、Parity Problem

    Hadamard Transform Hadamard 变换在量子逻辑门中提过,只不过那时是单量子的Hadamard门,负责把\(|1\rangle\)变成\(|-\rangle\),\(|0\ran ...

  2. 洛谷P2057 [SHOI2007]善意的投票 题解

    题目链接: https://www.luogu.org/problemnew/show/P2057 分析: 由0和1的选择我们直觉的想到0与S一堆,1与T一堆. 但是发现,刚开始的主意并不一定是最终的 ...

  3. C#3.0新增功能07 查询表达式

    连载目录    [已更新最新开发文章,点击查看详细] 查询是什么及其作用是什么 查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织. 查询与它生成的结果不同. 通常情 ...

  4. 聊聊面试中的 Java 线程池

    ​背景 关于 Java 的线程池我想大家肯定不会陌生,在工作中或者自己平时的学习中多多少少都会用到,那你真的有了解过底层的实现原理吗?还是说只停留在用的阶段呢?而且关于 Java 线程池也是在面试中的 ...

  5. 面向对象和pickle模块结合

    面向对象和pickle模块相关 1.面向对象: class 类名: def init(self,参数1,参数2): self.对象的属性1 = 参数1 self.对象的属性2 = 参数2 def 方法 ...

  6. 二、SQL Server 2008附加数据库时出错的解决方法

    错误中提示“数据库的版本为661,无法打开.此服务器支持655版及更低版本.不支持降级路径”. 这种情况是由于高版本的数据库文件在低版本的数据库上造成的,即我们要附加的数据库文件的版本高于当前SQL ...

  7. linux初学者-网络桥接篇

    linux初学者-网络桥接篇 在网络的使用中,有时需要搭建网络桥来实现网络桥接.例如在一台主机上制作一台虚拟机,虚拟机是没有物理网卡的,这时虚拟机数据的发送和接收就需要通过主机上的物理网卡,需要主机的 ...

  8. js,ts操作dom总结

    以上面为例: js获取placeholder节点 : document.getElementsByClassName("newTicket")[0].getAttributeNod ...

  9. sqlmap用法大全

    sqlmap参数详解: Usage: python sqlmap.py [options] Options(选项): -h, --help            Show basic help mes ...

  10. 【JDK】JDK源码-Queue, Deque

    概述 Queue 和 Deque 都是接口.其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue). Deque 接口继承自 Queue 接口,表 ...