嵌入式跨平台工具链终极方案

news2024/12/17 4:30:38

嵌入式跨平台工具链终极方案

  • 1. 解决烦人的编译,从编译器开始
  • 2. T0级别的代码编辑器IDE
  • 3. git linus之父开发神奇的分布式代码管理工具

我们从8051开始学习嵌入式,用过了不少IDE,比如经典的keil和IAR,但是这些IDE都不便宜,如果不用点科学手段,我们是无法使用的。秉承做个正值合法,诚实守信的良好公民,我们还是需要找到更完美的开发方案,不仅能节约个人或者公司的开发成本,还能大大提高开发技术和效率。今天给大家推荐一套开源免费的跨平台开发方案工具链:“ vs code + GCC(或者其他编译器)+CMAKE+xmak/ninjia + vscode-commandbar +git+JLINK(芯片公司提供的IDE)"
这个方案不仅不要钱,还可以多平台使用,不再让开发限制在windows平台下,我们在linux和mac也能愉快的开发我们的产品,大大提高效率。

1. 解决烦人的编译,从编译器开始

为什么我们要用收费的IDE,最大的原因是他给我们提供了编译脚本,用过比较简单的图形化界面,就可以把我们的代码编译成可执行文件。这样看似简化了大家的门槛,但是大大提高了项目的成本,也提高了大家对其他方法的学习成本。
编译最重要的是将代码转换为可执行文件,在十年前,大家使用makefile来构建编译工程确实很难,晦涩难懂的语法,阻挡了90%的程序员,但是随着cmake/xmake/ninjia等简单的编译脚本兴起,makefile不再是我们使用make来构建编译工程的”拦路虎“
给大家推荐一个demo,大家都能学会,里面还有github的demo工程供大家参考。

  1. cmake 构建库:如何使用CMAKE gcc生成一个库文件?-CSDN博客
  2. cmake 构建可执行文件:如何使用CMAKE gcc生成一个可执行文件?_怎么使用cmake 生成可执行文件-CSDN博客
  3. cmake 构建各种刷写的二进制文件:如何使用CMAKE 将elf 转成二进制文件_cmake -oihex obinary-CSDN博客

2. T0级别的代码编辑器IDE

VS code是一个优秀的代码编辑工具,只要安装简单的插件,都能让开发效率大大提高,相比99%的开发者都知道,我就不再多说了。
今天给大家推荐一个图形化插件,让编译等脚本通过GUI实现,不再烦人的敲命令。
”vscode-commandbar“,自定义GUI神器,让脚本编程GUI的桥梁,步骤如下

  1. vscode-commandbar 添加GUI图标并,启动task脚本
{

  "skipTerminateQuickPick": true,
  "skipSwitchToOutput": false,
  "skipErrorMessage": true,
  "commands": [
    {
      "text": "$(gear) build",
      "tooltip": "build UI",
      "color": "yellow",
      "commandType": "palette",
      "command": "workbench.action.tasks.runTask|make build",
      "alignment": "left",
      "skipTerminateQuickPick": true,
      "skipSwitchToOutput":false,
      "priority": 3
    },
    {
      "text": "$(bug) debug",
      "tooltip": "debug UI",
      "color": "green",
      "commandType": "palette",
      "command": "workbench.action.tasks.runTask|make debug",
      "alignment": "left",
      "skipTerminateQuickPick": true,
      "skipSwitchToOutput":false,
      "priority": 2
    }
  ]
}

vscode 按钮效果|100 这样实现了自定义的UI编译与下载。

  1. task 启动shell脚本,实现编译或者下载调试
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "make build",
      "type": "shell",
      "command": " ./build.sh",
      "group": "build",
      "presentation": {
          "reveal": "always",
          "panel": "new"
      },
      "options": {
          "cwd": "${workspaceFolder}/"
      }
    },
    {
      "label": "make debug",
      "type": "shell",
      "command": " ./debug.sh",
      "group": "build",
      "presentation": {
          "reveal": "always",
          "panel": "new"
      },
      "options": {
          "cwd": "${workspaceFolder}/tools/lauterbach/"
      }
    }
  ]
}
  1. cmake 编译脚本实现编译命令启动
rm -rf build
mkdir build
cd build
LOG_FILE="cmake.log"
echo "Configuring project..."
cmake -G "Unix Makefiles" .. > >(tee "$LOG_FILE") 2>&1
#cmake --build . --target all -- -k -j $(nproc) >> "$LOG_FILE" 2>&1
make -j$(nproc) 2>&1 | tee build.log
make install
cd ..
  1. lauterbach 启动脚本(当然大家也可以启动其他的调试IDE,lauterbach是比较常用的)
#!/bin/bash
set -e
export SYS=${T32_PATH:-"/home/$USER/t32"}
echo "To customize the T32 installation path, please set environment variable 'T32_PATH'; currently using '${SYS}'."
echo "To configure custom user behaviour this script will load config from ~/.user_cmm . Please add your custom setup there."
echo "To load ELF files please assign given variables: &myELF in your custom cmm file!"
"${SYS}/bin/pc_linux64/t32marm" -c usb_configs/config_usb_mcu.t32 ${SYS} -s cmm/debug.cmm
exit

3. git linus之父开发神奇的分布式代码管理工具

git 在开发界比较有名,直接引用网友的教程:Git使用教程(超详细!)-CSDN博客
如果侵权,通知必删。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2260854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu安装Gitlab详细图文教程

1、环境准备 1.1、Ubuntu环境 Ubuntu24.04Sever版安装教程 1.2、更新系统 sudo apt update -y sudo apt-get update sudo apt-get upgrade 2、安装Nginx 2.1 安装nginx # 安装 apt install nginx -y 2.2 修改nginx配置⽂件 # 修改nginx配置 vim /etc/nginx/si…

redis集群安装部署 redis三主三从集群

redis集群安装部署 redis三主三从集群 1、下载redis2、安装redis集群 三主三从3、配置redis开机自启动3.1、建立启动脚本3.2、复制多份redis启动脚本给集群使用3.3、添加可执行权限3.4、配置开机自启动 1、下载redis 本次redis安装部署选择当前最新的稳定版本7.4.1 下载链接: …

泊松编辑 possion editing图像合成笔记

开源地址: GitHub - kono-dada/Reproduction-of-possion-image-editing 掩码必须是矩形框

【Linux系列】Linux 系统中查看目录权限

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

6.2 MapReduce工作原理

MapReduce工作原理涉及将大数据集分割成小块并行处理。Map任务读取数据块并输出中间键值对,而Reduce任务则处理这些排序后的数据以生成最终结果。MapTask工作包括读取数据、应用Map函数、收集输出、内存溢出时写入磁盘以及可选的Combiner局部聚合。ReduceTask工作则…

9. 高效利用Excel设置归档Tag

高效利用Excel设置归档Tag 1. Excle批量新建/修改归档Tag2. 趋势记录模型批量导入归档Tag(Method1)2. 趋势记录模型批量导入归档Tag(Method2)3. 趋势记录控件1. Excle批量新建/修改归档Tag Fcatory Talk常常需要归档模拟量,对于比较大的项目工程会有成千上万个重要数据需…

docker 部署 redis

docker 部署 redis 1. 下载 redis 镜像 # docker images | grep redis bitnami/redis 7.2.4-debian-11-r5 45de196aef7e 10 months ago 95.2MB2. docker-compose 部署 version: "3" services:redis:image: bitnami/redis:7.2.4-debian-11-…

基于python绘制数据表(上)

利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …

使用skywalking,grafana实现从请求跟踪、 指标收集和日志记录的完整信息记录

Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目, 目前SkyWalking支持Java、 .Net、 Node.js、…

ViG:图像分类领域前沿

🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 图片分类任务方法概述卷积神经网络(CNN)视觉Transformer(ViT)视觉图神经网络(ViG&a…

系列2:基于Centos-8.6Kubernetes 集成GPU资源信息

每日禅语 自省,就是自我反省、自我检查,自知己短,从而弥补短处、纠正过失。佛陀强调自觉觉他,强调以达到觉行圆满为修行的最高境界。要改正错误,除了虚心接受他人意见之外,还要不忘时时观照己身。自省自悟之…

03篇--二值化与自适应二值化

二值化 定义 何为二值化?顾名思义,就是将图像中的像素值改为只有两种值,黑与白。此为二值化。 二值化操作的图像只能是灰度图,意思就是二值化也是一个二维数组,它与灰度图都属于单信道,仅能表示一种色调…

发现一个对话框中的按钮,全部失效,点击都没有任何反应,已经解决

前端问题,技术vue2,ts。 发现一个对话框中的按钮,全部失效,点击都没有任何反应。 因为我只在template标签中加入下面这个代码,并没有注册。 只要有一个子组件没有注册,就会影响所有的按钮,使当前…

RT系列机器人详细介绍(BC-Z、RT-1、OMM、RT-Trajectory、Q-Transformer、RT-2、RT-X、RT-H)

目录 一、BC-Z二、RT-1三、MOO四、RT-Trajectory五、Q-Transformer六、RT-2七、RT-X八、RT-H参考文献 一、BC-Z BC-Z通过结合大规模的交互式模仿学习系统、灵活的任务嵌入和多样化的数据,实现了在未见任务上的零样本泛化,为机器人学习领域提供了一种新的…

鸿蒙系统-前端0帧起手

鸿蒙系统-前端0帧起手 先search 一番 找到对应的入门文档1. 运行项目遇到问题 如下 (手动设计npm 的 registry 运行 npm config set registry https://registry.npmjs.org/)2.运行后不支持一些模拟器 配置一下(如下图,运行成功&am…

Redis是什么?Redis和MongoDB的区别在那里?

Redis介绍 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是关于Redis的详细介绍: 一、数据结构支持 字符串(String) 这是Redis最…

【问题记录】07 MAC电脑,使用FileZilla(SFTP)连接堡垒机不成功

项目场景: 使用MAC电脑,以子账号(非root)的形式登录,连接堡垒机CLB(传统型负载均衡),使用FileZilla(SFTP)进行FTP文件传输。 问题描述: MAC电脑…

从0到1实现vue3+vite++elementuiPlus+ts的后台管理系统(一)

前言:从这篇文章开始实现vue3vite的后台管理系统,记录下自己搭建后台系统图的过程。 这篇文章完成项目的初始化和基本配置,这一步可以直接跟着vue3官网进行。整个系列只有前端部分,不涉及后端。 vue3官网:https://cn.…

计算机网络错题

文章目录 码分复用透明传输差错检测停止-等待协议回退N帧协议CSMA/CD协议以太网交换机Vlanip地址的无分类编制方法ip地址的应用规划ip数据包的发送和转发过程路由信息协议IPI2016201720202022 2.5信道 码分复用 透明传输 差错检测 停止-等待协议 回退N帧协议 CSMA/CD协议 以太网…

报错:Method Not Allowed

当报错这个的时候就要注意了,自己的方法是否写对了!!! 就像我的这个因为我的后端是put,所以这也是put,我报错就是因为这写了get,虽然页面是改变了,但是一刷新,就会原形毕…