代码编织梦想

        学习嵌入式的过程中必然少不了开发环境的搭建;例如STM32中都有安装的很多软件,如MDK,IAR,或者串口调试助手等。而我们将在Ubuntu上进行我们环境搭建,因为在开源工具链支持、包管理、命令行工具、硬件支持、虚拟化和容器化等方面具有优势,非常适合嵌入式开发环境。相比于Windows配置和使用开源工具链时可能需要更多的配置工作。所以我们都选择在Ubuntu上进行我们的环境搭建与后期的开发。
        首先就是要在我们的虚拟机或者系统上搭建一个Ubuntu系统,在电脑上直接搭建博主推荐这篇帖子[Linux]如何在物理机安装Ubuntu(小白向)-CSDN博客。这些基本的解决过后,我们就开始进入正题了。涉及到的部分资料博主已放在了百度网盘里链接: https://pan.baidu.com/s/1uf___b7oOWyE9UsBkWjPdQ 提取码: bx27 
--来自百度网盘超级会员v3的分享

        首先第一步就是,虽然我们的开发是在Ubuntu下进行的,但是因为我们的大量资料以及文件都可能还是会放在Windows中,所以我们就需要在Windows和Ubuntu之间进行文件传递,例如在Ubuntu下写好的代码,可能因为二进制无法查看,便可以传递到Windows中的二进制查看软件中查看,这里我们使用FTP服务,FTP是一个标准的网络协议,用于在网络上传输文件。几乎所有操作系统都支持FTP,使其成为跨平台文件传输的通用解决方案。各种操作系统都有多个FTP客户端和服务器软件。例如,Windows上有FileZilla、WinSCP等,而Ubuntu上有FileZilla、lftp等。且配置FTP协议相对简单等很多优点。进入Ubuntu然后鼠标右键选择打开终端。

        终端中输入如下指令然后安装FTP服务

        服务安装安全后,使用nano命令打开/etc/vsftpd.conf文件

        打开过后找到下面两行,将这两行的前面的#删掉,如下图所示

        修改完成过后重启一下FTP服务,使用如下命令

        然后在Windows端下载我们的FTP服务的客户端软件,我们直接在官网下下载,下载 - FileZilla中文网下载 - FileZilla中文网下载 - FileZilla中文网,然后下啊在Windows(支持64位版本的就可以了),然后直接狠狠的下载,然后将FTP将快捷方式添加到桌面,我们将它打开。

        Ubuntu作为FTP服务器,FileZilla作为FTP客户端,客户端肯定要连接到服务器上,打开左上角的文件,然后点击里面的站点管理器。

        协议不用改就是文件传输协议,然后主机那个地方填写Ubuntu的系统IP地址,而且确保Ubuntu中虚拟机的网络IP地址和自己主机的IP地址处于同一个网段,端口不用填写,默认就是FTP协议的21端口,然后填写用户名字,也就是Ubuntu中自己的用户名字,密码也是自己当时在Ubuntu中设置的密码,然后填写完成后,就可以直接点击连接了。

        连接成功过后如上图,左边就是我们Windows的文件,右边是我们Ubuntu下的文件目录,但是可能在第一次打开的时候是乱码,,这时候还是打开我们的站点管理器,然后找到字符集选择强制UTF-8,然后断开连接后重新连接,右边的Linux文件便不会显示乱码了。如果之后需要进行文件互传的话直接拖动就可以了。

        后面及进行Linux驱动开发需要启动NFS,因此需要在Ubuntu中安装然后开启NFS服务,使用如下命令开始安装NFS服务。

        然后下载完成后,我们可以在哟用户的根目录下面我们可以创建一个名字为Linux的文件夹,方便以后我们所有在Ubuntu下进行的Linux驱动开发操作,然后我们在Linux的文件夹下再创建一个nfs的文件,来存放我们nfs相关的文件。下图是博主NFS文件的存放路径。

        为了方便以后再开发板上通过网络文件系统来访问NFS文件夹,要先配置NFS,然后使用命令打开NFS配置文件

        打开配置文件后在代码的最后段添加如下代码,

        添加好过后,还是需要重新启动一下服务

        然后还需要开启我们的SSH远程连接服务,SSH在可以做到让我们直接在Windows的终端上直接连接登录到Ubuntu,同样需要安装SSH服务,输入如图下命令便可直接安装,SSH的配置文件是/etc/ssh/sshd_config,但是我们直接使用默认配置即可。

        ARM裸机,Uboot移植,以及Linux移植,这些都需要在Ubuntu下进行编译,我们选择使用GCC编译器对代码进行编译,这个地方简单解释一下我们为什么需要GCC(GNU Compiler Collection)
        我们Ubuntu中自带的交叉编译器(GCC)是针对于X86架构的,由于我们是对ARM进行开发,所以我们需要一个交叉编译器,因为处理不同的处理架构(如x86和ARM)具有不同的指令集和体系结构,直接在一个架构上编译的代码通常无法在另一个架构上运行,我们采用ARM交叉编译器,作为GCC的一个种类我们就可以在电脑(x86)上开发,生成在ARM架构上的代码。
        这个地方做一点说明就是,当编译工具链和目标程序运行的架构平台相同时,这种编译方式就是本地编译。相反则是交叉编译。例如文本编辑器(如Visual Studio Code)编写C++代码,这些代码定义了文本编辑器的功能,如打开文件、编辑文本、保存文件等。再安装一个适合Windows操作系统和x86_64架构的C++编译器,使用刚才安装的编译器来编译你的C++源代码文件。编译器会读取源代码,将其转换成x86_64架构的机器语言,并生成一个可执行文件(.exe文件)。在这个例子中,编译平台(即你的开发环境)和目标平台(即电脑)都是Windows操作系统和x86_64架构。也就是我们的被你编译。
        交叉编译即是我们在上面提到的,在电脑上开发ARM架构。

        gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz这个是我们在64位上采用的交叉编译器,博主将它放在了资料整理里边了,可以自行去下载,这里博主先开始配置环境了。
        首先我们还是去Ubuntu上,博主在开始创建好的Linux文件夹下再创建一个tool文件夹,方便管理,然后从Windows直接拖动过去
        然后用cp命令将我们的文件夹复制到/usr/local/arm,当你将交叉编译器安装在的标准位置时,你可以更容易地在你的环境变量(如PATH)中设置指向它的路径。这样,无论你在哪个目录下工作,系统都能找到并使用这个交叉编译器。相比之下,如果交叉编译器位于你的个人目录下,你可能需要在每个脚本或会话中手动设置PATH环境变量。
        然后去到/usr/local/arm,将我们的文件进行解压使用如下命令

        然后会生成一个如下的一个新文件,文件里面就是我们需要的交叉编译器。
        然后我们再去修改一下环境变量,打开这个配置文件
        然后在配置文件中输入这一段文本,保存后然后关闭。

        最后对于环境配置好后,我们还是要重启一下我们的Ubuntu确保它能够生效,最后我们的交叉编译器就算是搭建完成了。

        然后我们安装使用这个指令安装一下相关的库,用于安装Linux标准基础的核心组件和GNU标准C++库的32位版本,这有助于增强系统的兼容性和支持更广泛的应用程序。

        其次为了验证一下我们的交叉编译器被正确安装,我们检查一下交叉编译器的版本号,


        命令执行后返回了我GCC版本号,也就是说明了我们的交叉编译器也还是被成功安装了。

        然后我们开始下载我们的编辑器,这里选择使用Vscode,它也是支持Linux版本的,并且是免费的,我们还是选择在Windows中下载好,然后传输到Ubuntu中,博主这里提供了1.32.版本的Vscode,也是同样放在了资料中,如果对其他版本有需求,可以去到Vscode的官网进行下载,但是记得一定是要下载Linux版本的,然后我们就开始配置。

        

        博主将他放在了Linux下的tool文件夹中,使用FTP确实可以很方便的直接进行互传,然后找到文件对应的位置使用如下命令进行安装,等待安装完成后我们去找到它的图片,因为下载好后并不会像Windows一样自动创建快捷方式,所以我们找到图片为其创建快捷方式。

        

        点击桌面上的主目录,然后再点击其他位置,点击Ubuntu

        

        然后点击以上路径,usr/share/applications/ 然后下方我们这里就可以看到一个code.desktop就是我们Vscode的快捷方式,将其复制或者拖动到桌面上他的快捷方式就算是创建完成了。

        然后接下来就是在Vscode中安装C/C++的插件,为什么我们选择对于ARM的开发选择的是C/C++呢?因为在ARM系统开发中,纯汇编语言编程工作量巨大且不易维护,而纯C/C++语言编程在硬件初始化和底层驱动实现方面可能存在不便。因此,混合使用C/C++和ARM汇编语言成为了一种常见的做法。其次ARM系统的开发往往需要对硬件进行直接操作,C/C++语言提供了丰富的硬件操作接口,能够满足这一需求。以及ARM开发工具链(如ARM GCC)提供了对C/C++语言的全面支持,包括编译器、链接器、调试器等工具,使得开发者能够方便地使用C/C++进行ARM系统的开发。所以我们打开Vscode下载如下插件,

        点击左边栏的最下面一个图标


        1. C/C++                            这个是来自微软官方的 C/C++ 插件,必备的插件,如果不安装,代码无法跳转,也没有自动补全
        2. C/C++ Snippets             重用代码模块也就是避免让我们对于很多重复的代码进行反复编写,也就是会有代码模板
        3. Code Runner                 也就是让我们编写的代码能够运行
        4. Include AutoComplete   自动对我头文件进行包含
        5. Rainbow Brackets         让我们的括号是花色的,可以让我们的代码界面看起来美观一点
        6. One Dark Pro                可以设置Vscode的主题,也就是这个版面的样式
        7. GBK to UTF8                将我们的GBK编码格式转换为UTF8
        8. ARM                              设计到编写ARM,所以安装一个ARM的语法高亮
        9. Chinese(Simplified)       我们Vscode是初始是英文的,下载一个中文的插件
        10. vscode-icons                这个是Vscode图标插件,方便辨认我们各个文件
        11. compareit                      比较插件,也就是可以在Vscode界面分区域显示不同文件的代码
        12. DeviceTree                   设备树语法插件
然后我们就安装这些插件。如果最后发现自己的Vscode下载了插件还是显示英文界面,那么就需要去手动设置一下。

        至此我们的开发环境基本就配置完全了,博主的学习路程也是按照正点原子的教程逐步学习的,在之后的发帖也是会参照正点原子的学习顺序,将自己的学习经历做一个记录与分享,所以如果有问题希望大家能够在评论区提出指正。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Hetertopia/article/details/140700965

arm+linux学习总结(1)——入门知识_tuxinbang1989的博客-爱代码爱编程

1.入门知识 1.1硬件构成 嵌入式系统硬件主控板主要由这些硬件构成: ①ARM架构为硬核的处理器,如TI/FreeScale等芯片厂商制造的处理器。 ②存储芯片:包括内存RAM和闪存FLASH。内存RAM中是在上电时存储程序运行的指令和数据的,掉电后数据消失,常用的是DDR2或DDR3芯片,低级一点的可以用SRAM芯片;闪存FLASH存储的是烧录

【i.mx6ull】裸机开发上手-爱代码爱编程

  stm32用得多了,现在试试NXP A核的i.mx6ull,下面介绍安装交叉编译工具链到编译下载的过程。 一、i.mx6ull介绍 1.1 概述   i.MX6ULL是一个高性能、超高效的处理器系列,具有NXP先进的单臂Cortex®-A7内核实现,运行速度高达792 MHz。i、 MX6ULL包括集成电源管理模块,降低了外部电源的复杂性,简化了

arm_linux 学习之路:第一天_qq_36982493的博客-爱代码爱编程

今天是2022年5月19日,我开始学习Linux。 最开始学习的动力是什么呢,是因为想换工作了,因为我是做STM32编程的,现在好多都是需要Linux的,具体Linux是什么呢?只是听说过和windows类似,什么二叉树的方式编译的等等吧。感觉挺神秘的,具体咋样也不太清楚。 下面说一下我学习了一上午的一个感觉吧。 首先Arm_Linux 其实是ARM

正点原子imx6ull裸机开发,c语言配置和c语言实现亮灯闪烁_正点原子linux c语言led闪-爱代码爱编程

目录 设置处理器模式 设置SP指针 跳转C语言 软件编写 链接脚本 利用makefile进行编译 设置处理器模式 设置6ULL处于SVC模式下。 设置程序状态寄存器(CPSR)的bit4-0 即,将寄存器M[4:0]设置为10011 = 0X13。 读写状态寄存器需要使用汇编中的MRS和MSR指令 MRS指令将C

i.mx6裸机开发(1):环境搭建_mcimx6l8d 开发-爱代码爱编程

1. 熟悉sdk SDK(Software Development Kit)是NXP针对其官方评估 版的软件开发包,可以在NXP的官网下载得到。SDK中包含了 各种程序范例,我们心心念念的固件库也包含在它里边。 NXP官网链接:https://www.nxp.com 未登录的用户需要先登录NXP官网,没有帐号的需要先注册。 登陆之后搜索所需要

imx6ull_gpio控制led灯_imx6 gpio-爱代码爱编程

一、LED硬件原理图 如上图:UART3_RTS引脚高电平点亮 ,低电平熄灭     如上图:UART3_RTS与CPU的连接位置    如上图:UART3_RTS为CPU管脚27控制     如上图:GPIO具体控制流程图    二、GPIO介绍 GPIO 通用输入/输出外设提供专用的通用管脚,可以配置为 输入