Linux入门第二部分(ARM裸机篇) 第一章 开发环境搭建与了解

参考教程:https://www.bilibili.com/video/BV1yE411h7uQ/?spm_id_from=333.1387.favlist.content.click

一、Ubuntu和Windows文件互传

1、文件互传的目的

(1)在开发的过程中会频繁的在Windows和Ubuntu(不只是虚拟机)下进行文件传输,比如在Windwos下进行代码编写,然后将编写好的代码拿到Ubuntu下进行编译。

(2)实现Windows和Ubuntu下的文件互传,需要使用FTP服务。

2、开启Ubuntu下的FTP服务

(1)打开Ubuntu的终端窗口,然后执行命令"sudo apt-get install vsftpd"安装FTP服务。

(2)等待软件自动安装,安装完成以后使用vim编辑器打开/etc/vsftpd.conf,命令为"sudo vim /etc/vsftpd.conf"。

(3)在打开的vsftpd.conf配置文件中找到变量local_enable和write_enable,它们均需要定义为"YES",且不能被注释。

(4)修改完vsftpd.conf以后保存退出,执行命令"sudo /etc/init.d/vsftpd restart"重启FTP服务。

3、Windows下FTP客户端安装与设置

(1)Ubuntu作为FTP服务的服务器端,Windows作为FTP服务的客户端,客户端可以使用FileZilla软件,该软件可直接在官网下载,注意Windows下载的是客户端。

(2)安装完成后,打开FileZilla软件,界面如下图所示。

(3)站点配置:

①在菜单栏中选择"文件"→"站点管理器",打开站点管理器窗口。

②创建一个新站点,可以命名为"Ubuntu",然后对站点的"常规"进行设置,如下图所示。(其中双击重命名的操作为------先单击选中要重命名的站点,然后再单击一次)

③完成设置后,点击"连接",第一次连接可能会弹出提示是否保存密码的对话框,点击确定即可。

④连接成功以后如下图所示,其中左边是Windows文件目录,右边是Ubuntu文件目录,默认进入用户根目录下。

⑤Ubuntu文件目录下的中文目录如果都是乱码,是因为编码方式没有选对,先在菜单栏中选择"服务器"→"断开连接",然后打开站点管理器,选中要设置的站点"Ubuntu",选择"字符集",设置如下图所示。

⑥设置好字符集以后,按照第三步重新连接到FTP服务器上,Ubuntu下的文件目录中文显示恢复正常。

⑦如果要将Windows下的文件或文件夹拷贝到Ubuntu中,或者将Ubuntu中的文件或者文件夹拷贝到Windows中,只需要在一侧的文件目录区域选中要拷贝的文件或者文件夹,然后直接拖放到另一侧的文件目录区域即可。

二、Ubuntu下NFS和SSH服务开启

1、NFS服务开启

(1)打开Ubuntu的终端窗口,然后执行命令"sudo apt-get install nfs-kernel-server rpcbind"安装NFS服务。

(2)安装完成以后在用户根目录下创建一个名为"linux"的文件夹,在"linux"文件夹里面新建一个名为"nfs"的文件夹,以后NFS服务相关的所有文件都放到这个文件夹里面。

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cd /home/zevalin/
zevalin@zevalin-VMware-Virtual-Platform:~$ mkdir linux
zevalin@zevalin-VMware-Virtual-Platform:~$ cd linux/
zevalin@zevalin-VMware-Virtual-Platform:~/linux$ mkdir nfs

(3)为了后续可以在开发板上通过网络系统访问nfs这个文件夹,需要配置nfs,具体步骤如下:

①使用vim编辑器打开/etc/exports,命令为"sudo vim /etc/exports"。

②在打开的配置文件末尾追加内容"/home/zevalin/linux/nfs *(rw,sync,no_root_squash)",注意其中的用户名需填写自己的用户名。

③修改完配置文件以后保存退出,执行命令"sudo /etc/init.d/nfs-kernel-server restart"重启NFS服务。

2、SSH服务开启

(1)打开Ubuntu的终端窗口,然后执行命令"sudo apt-get install openssh-server"安装SSH服务。

(2)SSH的配置文件为/etc/ssh/sshd_config,保持默认配置即可。

三、SecureCRT软件

1、SecureCRT的功能

(1)SecureCRT支持SSH服务,可以远程登陆,同时它也支持串口通信,可以用作Linux开发板的串口终端。

(2)SecureCRT同样可以在官网中下载并安装,此处不过多赘述。

2、SecureCRT实现串口通信的设置步骤

(1)将开发电脑和开发板的TTL串口连接,并给开发板上电。

(2)打开SecureCRT,在菜单栏选择"文件"→"快速连接"。

(3)协议选择"Serial",端口按照实际情况选择(不一定是COM3),其它通信参数按下图所示配置即可(如无特殊说明,本文后续的串口通信参数均如下图所示),完成配置后点击"连接"。

(4)连接成功后,此会话配置会被保存,窗口中左侧是会话管理列表,后续重新打开SecureCRT时,可以直接使用曾经配置过的会话快速连接。

(5)一些Linux开发板默认出厂烧写了Linux系统,SecureCRT连接上开发板以后,可以通过串口操作开发板中的Linux系统,此时SecureCRT就是开发板的终端,和Ubuntu中的终端一样。

四、Ubuntu交叉编译工具链

1、交叉编译器的安装

(1)Ubuntu自带的gcc编译器是针对X86架构的,如果希望在Ubuntu中编译能够在ARM架构上运行的软件,需要使用交叉编译器。

(2)本文使用Linaro GCC编译器,可以直接在官网或者其它开源渠道下载压缩包,然后在用户根目录下的"linux"文件夹里面新建一个名为"tool"的文件夹,以后导入Ubuntu的工具文件都放到这个文件夹里面,包括现在下载的Linaro GCC编译器压缩包。

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/桌面$ cd /home/zevalin/linux/
zevalin@zevalin-VMware-Virtual-Platform:~/linux$ mkdir tool

(3)继续在Ubuntu中创建目录/usr/local/arm,然后将刚刚导入的交叉编译器复制到这个目录中。

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:~/linux$ cd /usr/local/
zevalin@zevalin-VMware-Virtual-Platform:/usr/local$ sudo mkdir arm 
zevalin@zevalin-VMware-Virtual-Platform:/usr/local$ cd /home/zevalin/linux/tool/
zevalin@zevalin-VMware-Virtual-Platform:~/linux/tool$ sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f

(4)拷贝完成以后在/usr/local/arm目录中对交叉编译工具进行解压(命令为"sudo tar -Jvxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz"),解压完成以后会生成一个名为"gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf"的文件夹,这个文件夹中的内容就是交叉编译工具链。

(5)修改环境变量,使用vim编辑器打开/etc/profile文件,在文件末尾追加"export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin",然后保存。

(6)重启Ubuntu系统,交叉编译工具链就安装成功了。

2、交叉编译器验证

运行命令"arm-linux-gnueabihf-gcc -v"查看编译工具的版本号,如果安装正确,会打印版本信息

bash 复制代码
zevalin@zevalin-VMware-Virtual-Platform:/usr/local/arm$ arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../libexec/gcc/arm-linux-gnueabihf/4.9.4/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/snapshots/gcc-linaro-4.9-2017.01/configure SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-objc-gc --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=hard --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --with-fpu=vfpv3-d16 --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/sysroots/arm-linux-gnueabihf --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabihf/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabihf --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/label/docker-trusty-amd64-tcwg-build/target/arm-linux-gnueabihf/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 4.9.4 (Linaro GCC 4.9-2017.01) 

五、Visual Studio Code软件

1、Visual Studio Code软件的安装

(1)Windows版本的安装比较简单,此处不再赘述。

(2)Linux版本的安装也比较简单,具体可参考上一部分的第二章,此处也不再赘述。

2、Visual Studio Code插件的安装

(1)VSCode支持多种语言,比如C/C++、Python、C#等等,本文主要编写C/C++程序,所以需要安装C/C++的扩展包,安装方法如下:

(2)推荐安装的插件(截至2026年仍可安装):

|----------------------|-------------------------------------------------------------|
| 插件名 | 用途 |
| C/C++ | 微软官方C/C++插件,提供代码补全、跳转定义、查看声明、调试、头文件解析,嵌入式Linux、驱动、裸机C代码核心插件 |
| C/C++ Snippets | C/C++代码片段模板,快速插入for循环、if、main 函数、结构体等常用代码模板,减少重复敲代码 |
| C/C++ Advanced Lint | C/C++静态检查插件,配合检查代码规范、潜在bug、未初始化变量、类型隐患,做代码静态校验 |
| Code Runner | 一键运行代码片段,支持C、Python、Shell 等,快速跑小段测试代码,不用手动敲编译命令 |
| Include AutoComplete | 头文件#include自动补全,自动检索工程内头文件路径,写#include时自动提示 |
| Rainbow Brackets | 彩虹括号,不同层级括号用不同颜色标记,快速匹配{ } ( ) ,多层嵌套代码不容易看错 |
| One Dark Pro | 热门代码主题(配色),深色护眼主题,修改编辑器显示颜色 |
| GBKtoUTF8 | 编码转换,GBK和UTF8互相转换;Windows中文文件经常是GBK,Ubuntu是UTF8,防止中文乱码 |
| Arm Assembly | ARM汇编语法高亮、汇编代码提示 |
| Chinese(Simplified) | VSCode简体中文语言包,把VSCode界面汉化 |
| vscode-icons | 文件图标美化,不同后缀(.c .h .sh .Makefile .dts)显示不同图标,方便识别文件类型 |
| compareit | 文件对比,对比两个文件差异,类似Beyond Compare,适用于看代码改动 |
| DeviceTree | 设备树dts/dtsi语法高亮、补全,Linux驱动开发专用 |
| TabNine | AI代码补全插件,根据上下文自动补全代码、注释 |

六、Linux开发板介绍

1、开发板资源

(1)本文基于I.MX6U-ALPHA开发板进行Linux开发的学习,故本节仅介绍该型号开发板的硬件资源和原理图。

(2)I.MX6U-ALPHA开发板底板板载资源:

|----------------------------|----|
| 资源 | 数量 |
| 核心板接口 | 1 |
| 电源指示灯(蓝色) | 1 |
| 状态指示灯(红色) | 1 |
| 六轴(陀螺机+加速度)传感器芯片ICM20608 | 1 |
| 高性能音频编码芯片WM8960 | 1 |
| CAN接口(TJA1050芯片) | 1 |
| RS485串口接口(SP3485芯片) | 1 |
| RS232串口接口(SP3232芯片) | 1 |
| ATK模块接口 | 1 |
| 光环境传感器(IIC通信) | 1 |
| 摄像头模块接口 | 1 |
| OLED模块接口 | 1 |
| USB串口 | 1 |
| USB SLAVE(OTG)接口,用于USB从机通信 | 1 |
| USB HOST(OTG)接口,用于USB主机通信 | 1 |
| 有源蜂鸣器 | 1 |
| RS232/RS485选择接口 | 1 |
| TF卡接口 | 1 |
| 10M/100M以太网接口(RJ45) | 2 |
| 录音头(MIC/咪头) | 1 |
| 立体声音频输出接口 | 1 |
| 立体声音频输入接口 | 1 |
| 小扬声器 | 1 |
| 扬声器外接接口(左右声道) | 2 |
| 5V电源供应/接入口 | 1 |
| 3.3V电源供应/接入口 | 1 |
| 直流电源输入接口 | 1 |
| 启动模式选择配置接口 | 1 |
| RTC后备电池座 | 1 |
| 复位按钮,可用于复位MPU和LCD | 1 |
| 功能按钮(供开发使用) | 1 |
| 电源开关(控制整板电源) | 1 |
| Mini PCIE 4G模块接口 | 1 |
| Nano SIM卡接口 | 1 |
| SDIO WIFI接口 | 1 |

(3)I.MX6ULL核心板板载资源:

|------------------|----------------------------------------------|
| 资源 | 说明 |
| CPU | MCIMX6Y2CVM08AB(工业级),800MHz(实际792MHz),BGA289 |
| 外扩DDR3L | NT5CC256M16EP-EK,512MB字节 |
| EMCC | KLM8G1GET,8GB的EMMC芯片 |
| 两个2*30的防反插BTB插座 | 引出120PIN |

2、开发板底板原理图概览

(1)底板转接板接口部分原理图:

(2)引出IO口:

(3)USB串口/串口1选择接口:

(4)RGB LCD接口:

(5)复位电路:

(6)启动模式设置接口:

(7)VBAT供电接口:

①I.MX6U-ALPHA开发板的VBAT供电电路:

②核心板VBAT供电原理图:

(8)RS232串口接口:

(9)RS485串口接口:

(10)CAN接口:

(11)USB HUB接口:

(12)USB OTG接口:

(13)光环境传感器电路:

(14)六轴传感器电路:

(15)LED指示灯电路:

(16)按键检测电路:

(17)摄像头模块接口:

(18)有源蜂鸣器电路:

(19)TF卡接口电路:

(20)SDIO WIFI接口电路:

(21)4G模块接口电路:

(22)ATK模块接口电路:

(23)以太网接口电路:

(24)SAI音频编解码芯片外围电路:

(25)开发板板载电源供电电路:

(26)电源输入输出接口:

(27)USB串口电路:

相关推荐
LHICOD2 小时前
Linux-2
java·linux·后端·jar·vmware·svm·vm
余额瞒着我当琳2 小时前
Linux初识:Linux的历史,计算机的发展脉络,发行版本,选购云服务器,安装Xshell,第一次连接,基础命令指南
linux·运维·服务器
垆边人似月.3 小时前
RDMA 文件传输踩坑(四):从固定延时改造为 READY/ACK 协议
linux·服务器·网络
水饺编程3 小时前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
阿里云基础软件3 小时前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
m0_743697594 小时前
DNS的反向域名的相关问题
linux
Android系统攻城狮4 小时前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
思想觉悟4 小时前
SEAndroid实战
android·linux·c++
前进吧-程序员5 小时前
C++20 协程实战:手写 Task、单线程调度器与 awaiter 的三个钩子
linux