1.为什么不是gcc 之前我们花了三篇文章介绍Linux下如何进行C语言编程: Linux C语言编程(上篇) | gcc的使用 Linux C语言编程(中篇) | make的使用 Linux C语言编程...(下篇) | gdb的使用 这是为了给接下来的Linux下嵌入式开发打好基础,尽快熟悉Linux下c编程,但是在开发stm32的时候,编译工具链要使用gcc-arm-none-eabi,为什么不是gcc...这就要说到linux下的交叉编译了,因为我们要在PC机上编译出可以运行在ARM上的程序,使用gcc编译出的是在PC上运行的程序,所以我们要使用gcc-arm-none-eabi进行交叉编译~ 2.gcc-arm-none-eabi...如果系统可以提示,说明环境变量配置成功,可以开心的使用arm-none-eabi工具链啦~ 3.从裸机工程开始 3.1.硬件说明 这里我使用的是野火霸道开发板,板载芯片为STM32F103ZET6,下载器使用...==下一篇==:Linux下开发stm32(二) | 使用openocd下载与调试 (https://blog.csdn.net/Mculover666/article/details/84900665
先来回顾一下前两篇 Linux下开发stm32(一) | 使用gcc-arm-none-eabi工具链编译 Linux下开发stm32(二) | 使用openocd下载与调试 前两篇我们介绍了如何创建一个空的裸机工程...然后将其转为bin格式或hex格式,使用openocd下载,最后编写了一个makefile雏形,并成功点亮了一个LED~ 但是这个LED我们是通过指针直接操作寄存器地址来完成的,接下来,我们在此基础上,引入stm32...头文件,其中包含了寄存器的宏定义,也就是使用寄存器进行开发~ 1.创建寄存器工程 首先将上一节中创建的裸机工程00-template-reg复制一份出来,改名为01-led-reg: ?...头文件不用编译,但是要注意 在编译含有该头文件的源文件时,如果头文件和源文件不在一个文件夹里,需要用-I(大写i)参数声明头文件路径; 头文件经常通过判断用户是否有宏定义来进行一些选择编译,可以使用-D
,这样一来既提高了开发效率,也减少了代码量,如果还不能在MDK里熟练使用固件库编程,建议先补基础~接下来,我们在上一节寄存器工程的基础上,添加固件库,使用固件库进行开发。...支持库 libraries:stm32固件库中的外设驱动库 user:存放用户自己的文件 doc:存放说明文档 ?...其实文件虽然多,但是仔细理一下会发现可以分为以下几步: 找到全部的c文件; 将每个c文件编译为目标文件,不进行链接; 将所有的目标文件一起链接,生成可执行文件; 下面一步一步来~ 首先如何找到所有的c文件呢...可以在c文件全部使用相对于makefile的相对路径,显然这是最笨的办法,因为这么多文件,不可能一步一步添加,但是,在linux下可以使用find命令来寻找目录下的文件,所以我们使用find ./ -name...这里我们的makefile就完成了,如果可以的话,还可以使用#添加必要的注释进去,最后进行一下优化,让它默认生成bin文件和hex文件: ?
下面我详细聊一下常见的开发流程,以及如何优化你的现有流程。 1、工具链和开发环境 STM32CubeIDE 是 ST 官方提供的跨平台 IDE,支持 Linux,可以直接安装。...它整合了 Eclipse 和 GCC ARM 工具链,你可以在一个环境里完成开发、编译和烧录,非常适合 STM32 系列 MCU。...很多人选择这种方式进行纯命令行开发,尤其适合 Linux 用户。...openocd VSCode + PlatformIO,这也是一套流行的开发环境,PlatformIO 可以轻松配置编译工具链和调试器,支持丰富的 STM32 系列开发板。...Linux 环境下会更顺畅,调试和开发体验也更好。
2.2.权限授权 sudo:在编译和安装的时候最好带上使用sudo,防止因为管理权限出错; contrib / 60-openocd.rules:在Linux上使用USB设备时,需要将此文件复制到/etc.../configure [options](如果没有设置,options选项可以为空)生成构建所需要的makefile: ?...最后产生一个配置总结,可以看到默认打开CMSIS-DAP,那么如何打开别的呢?...flash write_image erase 将文件下载到目标芯片flash reset 目标芯片复位 注意: 要下载的目标文件需要使用绝对路径,所以下载之前先使用pwd查看一下,...==下一篇==:Linux下开发stm32(三) | 寄存器工程开发
第一时间看干货文章 1 STM32是一款单片机,它由意法半导体公司制造。...值得注意的是,Cortex-M下的处理器没有内存管理单元MMU。 2. 内存管理单元 MMU 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。...图5 shell 2中的bash地址 既然是多进程依赖了内存管理单元,那么在使用嵌入式linux时只开一个进程可以吗?肯定是不可行的!...由于Cortex®-m处理器没有内存管理单元,因此跑不了linux系统。任何事情都不是绝对的,如果你重写了linux内核且搭配足够大的内存芯片,从理论上来说是可以省掉MMU的。...咱还是留个心眼吧 干货 | 详解 stm32 在线 IAP 升级 如何搭建一台永久运行的个人服务器?
安装stm32cubemx 官方下载:https://www.st.com/en/development-tools/stm32cubemx.html 下载之后解压,双击进行安装,若出现“mac无法验证开发者...如果没有,可以安装gcc,make工具包含在gcc工具链中。 3..../gcc-arm-none-eabi/* 好啦,再回来编译一下,编译成功: ? 四、下载工具 1. 安装openocd 下载工具使用openocd。...配置串口设备名称和基本参数(按配置项前的字母,按下哪个设置哪个): ? 配置完成后点击回车,选择保存为默认,退出。 3....minicom的功能很强大,如有兴趣可以自行探索~
应用程序开发方式 ? 在Linux下开发应用程序可以调用两种接口来实现,一种是直接调用系统调用接口,另一种是调用库函数来实现。 1、什么是系统调用?...Linux环境下, 使用的C库一般都是glibc, 它封装了几乎所有的系统调用, 代码中使用的“系统调用”, 实际上就是调用C库中的函数。 因为C库函数通过系统调用来实现,库函数对上层提供了C库接口。...实例:文件操作 Linux下文件操作应用程序结构如下: ? (图片来源:野火Linux开发实战指南) Linux下,“一切皆文件”。...lseek 函数可以用与设置文件指针的位置,并返回文件指针相对于文件头的位置。...相关参考书籍: 《Linux环境编程:从应用到内核》 《野火Linux开发实战指南》 《嵌入式Linux上的C语言编程实践》 ?
因此阿里的大牛为了解决灵活部署的问题,开发出了第四种模式FULLNAT模式。...因此我们希望开发一个TOA的组件,直接以内核模块的形式提供给业务方进行配置。 基本原理及实现 1517421198_70_w821_h398.png 如上图所示: 1....具体的流程如下图所示 1517424734_34_w381_h760.png 这里面有两个点需要注意一下: 1.
Windows下Cygwin可以使用哪些Linux命令 目录 我们先来看下Cygwin安装后的目录结构,如图所示: 注:笔者的Cygwin安装在C盘根目录下。...没错,在bin目录下,已经实现了Windows下和同linux同名的各种常用的命令 也就是说,在linux下用到的命令,Cygwin基本都是支持 常用的命令 目录切换命令 #切换到当前目录下的dir目录...#切换到用户目录,比如是root用户,则切换到/root下 cd ~ #进入D盘 cd D: #进入带空格的目录,需要用引号把名称引起来 cd "C:\Program Files" 文件操作...–av soure_dir target_dir #文件改名 mv source target #用vi来编辑文件file vi file 在本文中就分享文件和目录操作常用命令,其他命令大家可以在...bin下找到,然后只需看对应的linux命令的用法即可
今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”。...查了查资料并动手分析了一下,找到了比较满意的解释。cp并不改变目标文件的inode,事实上它的实现是这样的: # strace cp test2 test 2>&1 | grep open....这也可以解释为什么cp的目标文件会继承被覆盖文件的属性而非源文件。...不过想想也可以宽恕,毕竟ld也是用户态程序,没有权利去锁定inode,也不应与内核的文件系统底层实现耦合。 到这里都还算在情理之中,看起来Linux也都处理的很好。...;“rm & cp”与“cp覆盖”背后所隐藏的底层差异却可以成为你的救星。
前言:在经过前面两篇学习,大家对Linux开发工具都有一定的了解,而在此之前最重要的两个工具就是vim,gcc。...如果对这两个工具不太了解,可以先阅读这两篇文章: Linux开发工具 (vim) Linux开发工具 (gcc/g++) 首先让我们来初步了解一下本篇的目标: 1....make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。...再复制好链接之后,我们在Linux下输入指令: 指令:git clone 链接 即可将远端仓库克隆到本地 完成之后我们可以在里面新建文件和目录 2.1 git的三板斧 git add...总结 Linux常用的开发工具我们就说到这里,Linux开发工具不仅仅只有这么一点,make/makefile我们也仅仅只做到了入门,做一下简单的介绍,目前阶段完全够用,Linux内容还有很多,希望我们能继续加油
上一次说到在window下搭建Android开发环境,总体比较简单。这一次就说说在Linux搭建Android开发环境,这里主要以很流行的Ubuntu 操作系统为例,其他的大同小异。...准备工作 其实准备工作和上一篇的window下搭建的差不多,这里不再进行说明,请参见Window下搭建Android开发环境 需要注意的是JDK以及Eclipse要下载Linux版本的....然后就可以安装了,执行sudo ./jdk-6u20-linux-i586.bin就开始安装JDK了,遇到协议和同意协议的时候回车或者输入Y回车即可。 安装好后我们就可以开始配置环境变量了。...Eclipse的安装 ADT的安装 SDK的API,DOC的下载 这些和Window下一样,可以参考Window下搭建Android开发环境 小结 linux下和window的配置步骤基本上一样,都是下载软件...,配置环境变量等,linux下的难点还是对于shell命令的掌握以及对于环境变量的配置,说白了还是对于linux系统掌握的程度,是否能熟练使用?
同时,对于像微软 ASP 这样的竞争者来说,PHP 无疑是另一种高效率的选项,本篇文章重点为大家讲解一下Linux下搭建PHP开发环境具体方法。...2.测试php 进入apache的web根目录:/var/www/html记住此路径地址,FTP或SSH上传时把项目上传到此地址,当然也可以自己重新配置或host文件。
大家好,又见面了,我是全栈君 在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。...当然,linux操作系统本身对C语言的支持也是相当到位的。...如果还没有过Linux编程经验的朋友可以首先在自己的pc上面安装一个虚拟机,然后就可以在shell下面编写自己的C语言代码了。...如果你看到了,那么恭喜你,你已经可以开始linux的c语言编程之旅了。 当然,我们不会满足于这么简单的打印功能。...下面就可以编写一个简单的迭代函数, #include int iterate(int value) { if(1 == value) return
开发环境总体版本信息如下: 1、Linux:CentOS 6.8 2、Java版本:jdk-8u172-linux-x64.tar.gz 3、Hadoop版本:hadoop-3.1.0.tar.gz 4
可是系统安装后在/usr/local下并没有java目录,这需要我们去创建一个java文件夹,如图 ? .../startup.sh 再打开浏览器测试一下,输入http:localhost:8080,看有没有那个猫的页面出来,有的话就说明安装成功了 三、eclipse的安装 解压,gunzip eclipse-java-juno-SR2...-linux-gtk.tar.gz 安装 tar -xvf eclipse-java-juno-SR2-linux-gtk.tar -C /opt 然后去图形界面进入/opt/eclipse...目录,运行eclipse,就可以打开eclipse界面了。
本人的系统环境:Linux ubuntu 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:25:33 UTC 2013 i686 i686 i686 GNU/Linux...1、安装skyeye sudo apt-get install skyeye s kyeye -h可以看到skyeye的版本号为1.2.5 也可以到http://sourceforge.jp...skyeye/bin加入路径 2、安装arm-elf-*工具 下载工具http://www.uclinux.org/pub/uClinux/arm-elf-tools/,工具包是用makeself打包好的,可以直接运行安装...解压缩包# tar zxvf arm-linux-gcc-4.4.3-20100728.tar.gz /usr/local# sudo mkdir arm-linux /usr/local/arm-linux.../4.4.3/bin #source /etc/profile 以上是实验所需要的工具,arm-elf-*是用来编译uclinux,arm-linux-*是用来编译arm Linux用的 测试skyeye
,我尝试过各种各样的开发环境,而在最近一段时间的开发中我使用了Visual Studio Code来作为代码编辑器,其优异的工程管理,超快的启动速度,各种各样功能强大的插件,使我立刻爱上了这个文本编辑器...但是在开发中来来回回在编辑器和Keil等IDE之间来回切换对我造成了不少不方便,另外由于希望能够在windows下使用gcc工具链开发,所以我尝试使用插件来完整的在vscode上搭建了一个开发环境。...可以说这是我在windows平台下尝试过的最好用的一种搭配,下面我就来详细讲述一下这个环境的搭建和基本使用方式。...,把有选择的那页全部勾选就行,这样就可以很方便的在文件夹目录下快速用VS Code打开文件或工程目录了。...settings.json 用于设定工程中 VS Code 的特殊设置 可以设置特定的如代码格式化样式等。
有关stm32F1,stm32F4 固件驱动包的下载,请打开这篇文章: https://blog.csdn.net/xiaoeleis/article/details/105789061 STM32开发实战...上一段话包含两层意思:1、在不熟悉STM32的情况下,如何入手学习相关的技术知识。2、在不熟悉STM32的情况下,作为公司在职开发人员,如何快速进入STM32相关的项目开发工作中,保证开发效率。...3、在不用手册,通过观察CubeMX图形配置部分,然后明确具体有关时钟总线,外设关系的情况下,就可以找到代码的问题所在。...然后参照上图详细总结一下系统时钟的关系如下: 其中40kHz的LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。...另外,STM32还可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。 系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。
领取专属 10元无门槛券
手把手带您无忧上云