Linux下的IMX6ULL——环境搭建与软件安装(一)

news2024/12/25 9:03:49

前言:

 从今天开始我们就要用到IMX6ULL这块开发板进行linux的学习了,对于初学者,下载好资料、搭建好开发环境后,按照下面顺序学习即可: 先应用,再驱动,最后做项目。应用、驱动、项目这三个慢慢走下来找个工作应该不是很难,难的是学扎实,找个好工作。

目录

一、配置VMWare 设置为使用双网卡

1.虚拟机网络设置注意事项

2.添加 NAT 网卡 

二、软件安装

1 安装Windows软件

2.安装Ubuntu软件

3.使用MobaXterm远程登录Ubuntu

4.使用FileZilla在windows和 Ubuntu之间传文件

 5.编程示例:Ubuntu上的Hello程序

(1) 用Source Insight编写hello.c

 (2) 使用FileZilla上传源码

(3) 编译、运行程序 

6.下载BSP及配置工具链

 (1)配置repo

(2)下载BSP

(3).配置交叉编译工具链

7.使用Source Insight 阅读Linux内核源码

(1)在Windows 上解压内核源码

(2)建立工程示例

(3)操作示例


一、配置VMWare 设置为使用双网卡

 NAT 网卡:Ubuntu 通过它上网,只要 Windows 能上网,Ubuntu 就能上网

 桥接网卡:Ubuntu 通过它跟开发板联通

        NAT,Network Address Translation,指网络地址转换。使用 NAT 网卡 时,Ubuntu 要访问外网,是委托 Windows 发出数据包,Windows 接收到回应后 再转发给 Ubuntu。外界看到的都是 Windows,看不到 Ubuntu。使用 NAT 时,只 要 Windows 能上网,Ubuntu 就必定能上网,无需设置 Ubuntu 的网络。

        桥接网卡,Ubuntu 就是使用一个真实的网卡开发板的网线也连接到这个真实的网卡上,这样 Windows、Ubuntu、开发板就都可以用过这个网卡互通了。

使用双网卡时,VMWare 打开的 Ubuntu 虚拟机界面如图所示:

1.点击进入“编辑虚拟机设置”;

2.查看是否有双网卡,即两个“网络适配器”;

1.虚拟机网络设置注意事项

网络适配器应该在开机前设置,否则会出现网卡消失等问题。而且网络适配器的顺序应该和虚拟网络编辑器一致,网络适配器 1 为桥接模式网络适配器为 NAT 模式,比如这里的虚拟网络编辑器是这样设置的虚拟网卡:

Vmnet0 是桥接模式,Vmnet8 是 NAT 模式,那么 Ubuntu 的网络适配器就要这样设置:

 

网络适配器是桥接模式,网络适配器 2 是 NAT 模式

2.添加 NAT 网卡 

如果它已经添加了 NAT 网卡,无需再添加 NAT 网卡。

如果你的 Ubuntu 虚拟机中没有 NAT 网卡,则可以如图 所示添加 NAT 网卡:

1.点击进入“编辑虚拟机设置”;

2.如果没有 NAT 模式的网卡,则继续下一步;

3.点击“添加”;

4.选择“网络适配器”;

5.点击“完成”;

6.设置新添加的“网络适配器”的“网络连接”为“NAT 模式”;

7.点击确定完成 NAT 网卡的添加;

添加 NAT 网卡后,可以启动 Ubuntu,使用 ifconfig 命令查看 IP,再使用 ping 命令确认可以连接外网

 目前我们只需要配置NAT网卡进行上网即可

二、软件安装

1 安装Windows软件

在我的资源中有这几种软件的压缩包,也可以在官网进行下载

2.安装Ubuntu软件

确保Ubuntu能上网之后,使用下面命令一键配置/初始化开发环境(其实就是安装tftp, nfs,vim 等软件,此脚本只支持Ubuntu-16.04 /Ubuntu-18.04)。

book@100ask:~$ git clone https://e.coding.net/weidongshan/DevelopmentEnvConf.git 
book@100ask:~$ cd DevelopmentEnvConf 
book@100ask:~$ sudo ./Configuring_ubuntu.sh 

上述命令是下载脚本,给它添加可执行权限,运行它。按提示输入book密码123456和选择 对应的系统,如图

 如果执行该命令出现如图所示的错误

 可以先执行下面的命令后再重新执行前面的命令:

sudo apt-get update 

3.使用MobaXterm远程登录Ubuntu

        先确认Ubuntu的IP,可以使用它的NAT网卡IP,也可以使用它的桥接网 卡IP。建议使用NAT网卡IP,因为使用桥接网卡的话必须启动开发板。

       在Ubuntu终端执行ifconfig命令确定NAT网卡IP(注意:这个IP过一 段时间会发生变化,那就使用新IP重新连接)

安装、运行MobaXterm,如下建立Session:

在MobaXterm左侧就可以看到如图 ,双击它就可 以登录Ubuntu(第1次登录时会提示你输入密码,密码是123456),然后就可以 执行各种Linux命令了: 

4.使用FileZilla在windows和 Ubuntu之间传文件

使用MobaXterm既可以ssh登录又可以传输文件,不过Mobaxterm在传输文件时使用效率上没有FileZilla高,所以我们推荐windows和 Ubuntu互相传输文件时使用FileZilla。

第1次连接时,会有如图 所示的提示,选择“总是信任”

 在Filezilla中,左边是Windows文件,右边是Ubuntu的文件

 5.编程示例:Ubuntu上的Hello程序

(1) 用Source Insight编写hello.c

启动Source Insight,点击“File”->“New”,新建文件,如图

 接下来编写代码,保存文件

#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
    printf("hello, world!\n"); 
    return 0; 
}

 (2) 使用FileZilla上传源码

(3) 编译、运行程序 

6.下载BSP及配置工具链

100ask_imx6ull 开发板的BSP都保存在Git站点上,通过repo命令进行 统一管理。

 (1)配置repo

下载repo工具前需要设置git的邮箱和用户名,git邮箱和用户名请根据 个人情况进行配置。

book@100ask:~$ git config --global user.email "user@100ask.com" 
book@100ask:~$ git config --global user.name "100ask"

 注意:请先配置git 邮箱和用户名,否则会导致下载失败

(2)下载BSP

通过repo管理多个git仓库中的源码,可以及时更新最新代码,以方便开 发者学习使用。执行以下4条命令(注意:repo init那行命令不好复制,需要 要认真比对命令,有的阅读器复制出去可能会格式错误导致命令错误):

 下载git仓库:

git clone https://e.coding.net/codebug8/repo.git

创建目录并且进入目录: 

mkdir -p 100ask_imx6ull-sdk && cd 100ask_imx6ull-sdk

 执行repo仓库命令里的repo命令,并且初始化

../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml  --no-repo-verify 

 下载源码

../repo/repo sync -j4

 下载成功后,可以看到名为Linux-4.9.88的目录,可以在Ubuntu压缩 它,再传回Windows。在Windows下解压后,用source insight建立工程, 这样就可以很方便地阅读源码了。

注意:使用source insight阅读Linux源码的方法,请参考章节《使用Source Insight 阅读Linux内核源码》。

Ubuntu 下压缩命令为(最好是下载之后马上压缩,不要编译内核后再压缩, 否则文件太大了)

tar  cjf Linux-4.9.88.tar.bz2  Linux-4.9.88

首次下载时如果提示

Testing colorized output (for 'repo diff', 'repo status'): 

 此时输入以下内容即可,继续执行

../repo/repo sync -j4 

命令即可开始同步源码(同步代码根据网络情况需要等待数分钟)。 

同步完成后如图 

(3).配置交叉编译工具链

        交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在 ARM 等其他平台上运行。

        设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变 量,下面介绍具体设置方法。

        设置这3个环境变量有多种方法,任意选择其中一种方法即可,建议使用“永 久生效”的方法。

永久生效

如需永久修改,请修改用户配置文件:

vim  ~/.bashrc 

在行尾添加或修改,加上下面几行(请把第3、4行合并为一行,有些PDF工 具无法正确复制甚至丢失“-”符号,请仔细对比):

export ARCH=arm 
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf- 
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin 

设置完毕后,要执行

source ~/.bashrc

命令使其生效,并通过

arm-buildroot-linux-gnueabihf-gcc -v 

命令来验证是否配置成功:

book@100ask:~$ source  ~/.bashrc 
book@100ask:~$ arm-buildroot-linux-gnueabihf-gcc -v 

以上操作是设置IMX6ULL Pro版工具链的过程。

7.使用Source Insight 阅读Linux内核源码

        在后面开发驱动程序时,驱动程序中用到的函数都是来自内核,所以可以先在Windows下 创建内核的Source Insight工程。

        如果你不想学习驱动开发,那么可以不创建内核的工程。但是以后学习大型APP时,也可 以使用Source Insight来阅读、编写代码

(1)在Windows 上解压内核源码

在Ubuntu下压缩了内核,把压缩文件通 过FileZilla 传回Windows,并解压。

在Windows解压内核时会提示一些错误,会提示是否覆盖文件,选择“覆盖”即可。这是 因为Linux下的文件区分大小写,a.c和A.c以不同的文件,但是Windows下不区分大小写, 这2个文件是同一个。这些错误不会影响我们阅读源码。

(2)建立工程示例

新建工程

运行source Insight,点击菜单“Project->New Project”,如图所示:

设置工程名及工程数据目录 

在弹出的New Project对话框中设置“New project name”(项目的名 称),然后设置Where do you want to store the project data file? (项目文件保存位置),点击Browse按钮选择源码的目录即可

指定源码目录

        设置源码目录: Project Source Directory – the main location of your source files”() 点击红框左边“…”选择源码目录,点击OK

添加源码 

        在新弹出的对话框中,点击“Add”或“Add All”。“Add”是手动选择需要 添加的文件,而“Add All”是添加所有文件。我们使用“Add All”,在弹出的提 示框中选中“Recursively add lower sub-directories”(递归添加下级的 子目录)并点击OK。同样的Remove File,Remove All是移除单个文件或者移 除所有文件

        添加文件完成后会弹出下面窗口,点击“确定”即可 

此时界面会返回到主界面,如图 点击“Close"

同步文件

        同步文件的意思是让Source Insight去解析源码,生成数据库,这样有助 于以后阅读源码。比如点击某个函数时就可以飞快地跳到它定义的地方 

        在弹出的对话框中 选中“Force all files to be re-parsed”(强制解 析所有文件),并点击“Start”按钮开始同步         

 (3)操作示例

打开工程

        前面建议工程后,就会自动打开了工程。如果下次你想打开工程,启动Souce Insight后,点击菜单“Project -> Open Porject”就可以在一个列表中选择以前建立的工程

在工程中打开文件

        点击"P"图标打开文件列表,双击文件打开文件,也可以输入文件名查找文件,如图 

在文件中查看函数或变量的定义

        打开文件后,按住ctrl键的同时,用鼠标点击函数、变量,就会跳到定义 它的位置,如图 

查找函数或变量的引用

        双击函数,右键点击弹出对话框选择“Lookup Reference”;或者双击函 数后,使用快捷键"ctrl+/"来查找引用 

其他快捷键 

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

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

相关文章

酷开科技丨大屏购物买买买,酷开系统助力网购模式再升级

随着技术的发展和家庭场景智能化的趋势&#xff0c;消费者对品质和体验的需求不断提高。在这一背景下&#xff0c;OTT大屏营销生态得到了快速发展&#xff0c;大屏的购物功能进一步被释放&#xff0c;已经具备更强的“转化”能力。电视的智能化、交互简单化、账号同步化等特性使…

如何利用验证链技术减少大型语言模型中的幻觉

一、前言 随着大型语言模型在自然语言处理领域取得了惊人的进步。相信深度使用过大模型产品的朋友都会发现一个问题&#xff0c;就是有时候在上下文内容比较多&#xff0c;对话比较长&#xff0c;或者是模型本身知识不了解的情况下与GPT模型对话&#xff0c;模型反馈出来的结果…

Linux基础指令(二)

目录 前言 1. which 2. alias 3. cat 3.1 echo指令 3.2 输出重定向 3.3 cat指令 3.4 * cat其他用法 4. more指令 5. less指令 6.head指令 7. tail 指令 8. 时间相关的指令 9. cal指令 总结 前言 Linux环境下的指令本质是一组可执行的命令&#xff0c;它们被编写成可…

商家在哪里可以制作小程序抽奖活动

在当今数字化时代&#xff0c;小程序已经成为一种普及且高效的营销工具。对于商家而言&#xff0c;利用小程序开展抽奖活动是一种极具吸引力的营销策略。本文将详细介绍商家如何创建小程序抽奖活动&#xff0c;并阐述其带来的营销效果。 一、明确活动目的与方案 在开始制作小程…

图纸管理制度《一》

在不断进步的时代&#xff0c;我们都跟制度有着直接或间接的联系&#xff0c;制度一般指要求大家共同遵守的办事规程或行动准则&#xff0c;也指在一定历史条件下形成的法令、礼俗等规范或一定的规格。那么什么样的制度才是有效的呢? 彩虹图纸管理软件_图纸管理系统_图纸文档管…

浅析 C# Console 控制台为什么也会卡死

一&#xff1a;背景 1. 讲故事 在分析旅程中&#xff0c;总会有几例控制台的意外卡死导致的生产事故&#xff0c;有经验的朋友都知道&#xff0c;控制台卡死一般是动了 快速编辑窗口 的缘故&#xff0c;截图如下&#xff1a; 虽然知道缘由&#xff0c;但一直没有时间探究底层…

【C++】不是用new生成的对象调用析构函数

2023年10月23日&#xff0c;周一上午 #include <iostream>class Book{ private:int price; public:~Book(){std::cout<<"调用析构函数"<<std::endl; } };int main(){Book b1;b1.~Book(); } 从运行结果可以看出&#xff1a; 手动调用b1.~Book()时&…

众和策略:题材股什么意思?

题材股是股票商场上的一个术语&#xff0c;许多刚接触股票出资的人可能对它不太熟悉。那么&#xff0c;题材股什么意思呢&#xff1f;在本文中&#xff0c;咱们将从多个角度剖析这个问题&#xff0c;帮忙读者更好地了解。 一、什么是题材股 题材股是指某个工作或主题的股票集结…

redis缓存基本使用和缓存问题解决

一、缓存 1、缓存使用 为了系统性能的提升&#xff0c;我们一般都会将部分数据放入缓存中&#xff0c;加速访问。而 db 承担数据落盘工作。 哪些数据适合放入缓存&#xff1f; &#xff08;1&#xff09;即时性、数据一致性要求不高的 &#xff08;2&#xff09;访问量大且更…

面试官:说说Loader和Plugin的区别?

一、区别 前面两节我们有提到Loader与Plugin对应的概念&#xff0c;先来回顾下 loader 是文件加载器&#xff0c;能够加载资源文件&#xff0c;并对这些文件进行一些处理&#xff0c;诸如编译、压缩等&#xff0c;最终一起打包到指定的文件中plugin 赋予了 webpack 各种灵活的…

抛硬币有连续x次正面的期望

首先来看期望的基本公式 其中x是抛x次&#xff0c;p是在抛第x次后出现连续正面的概率 先来看出现1次正面的期望 按照公式来算是 抛1次 1/2的概率 抛2次 1/4的概率 抛3次 1/8的概率... 我们可以写一个程序试一下 signed main() {ios_base::sync_with_stdio(0); cin.tie(0…

企业需要拓展出海业务?CRM为您保驾护航(下)

2022年企业似乎格外艰难&#xff1a;线上流量看似见顶&#xff0c;线下受疫情影响严重&#xff0c;展会推迟&#xff0c;出差受阻&#xff0c;增长乏力沦为常态。为了寻求增长&#xff0c;一批又一批企业将目光看向海外&#xff0c;那里尚有流量红利和增长空间等待挖掘。CRM客户…

解码Java的垃圾回收:掌握GC机制,提升代码的稳定性与可伸缩性

1. GC是什么 JVM垃圾收集(Java Garbage Collection ) GC采用分代收集算法&#xff1a; 次数上频繁收集Young区次数上较少收集Old区基本不动Perm区 2. GC 算法总体概述 JVM在进行GC时&#xff0c;并非每次都对上面三个内存区域一起回收的&#xff0c;大部分时候回收的都是指…

【milkv】internal codec -- mic

文章目录 一、硬件二、dts三、配置引脚board_initpin 四、makefile五、config六、添加tinyalsa七、测试结果7.1 查看录制device信息7.2 录制音频7.3 pc端获取录制好的设备7.4 使用audacity查看波形 一、硬件 i2s0 —— adc i2s1 —— pdm i2s3 —— dace spk_en存疑 i2s2 ——…

Git常用的命令有哪些?

一、前言 git 的操作可以通过命令的形式如执行&#xff0c;日常使用就如下图6个命令即可 实际上&#xff0c;如果想要熟练使用&#xff0c;超过60多个命令需要了解&#xff0c;下面则介绍下常见的的git 命令 二、有哪些 配置 Git 自带一个 git config 的工具来帮助设置控制…

【Python爬虫】安装requests库解决报错问题

requests 确保pip的安装命令行下安装出现的问题以及解决办法换镜像源安装验证安装为什么使用requests库呢 废话不多说了&#xff0c;直接进入正题 确保pip的安装 首先要想安装requests库&#xff0c;第一点就是要确保pip已经安装。这个pip在Python高级版本中已经默认安装了。…

html+js实现自定义弹窗

哈哈 转载 这个还不错 但是我暂时用不到 htmljs实现自定义弹窗_html自定义弹框-CSDN博客 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>自定义弹窗</title><style>body,P{margin:0;padding:0;}.popup {disp…

IBM Spectrum LSF 作业调度系统,让用户、IT 和业务充分利用 HPC

IBM Spectrum LSF 作业调度系统&#xff0c;让用户、IT 和业务充分利用 HPC 要点   通过隐藏工作负载密集型计算环境的 复杂性&#xff0c;提高用户生产效率&#xff1b; 简化计算集群管理并划分工作负载优先级&#xff0c; 以快速满足竞争激烈的行业瞬息万变的需求&#xf…

华为面试题

一、实习 1、健康险核心 batch 自动查询和一键重启 2、后端如何实现免密登录 Spring Boot与Spring Security&#xff1a; 如果你使用的是Spring框架&#xff0c;Spring Security可以为你提供大量的安全功能。创建一个基于Spring Boot的新项目&#xff0c;并添加Spring Securi…

高效访问数据的关键:解析MySQL主键自增长的运作机制!

文章目录 &#x1f34a; 主键自增长的概念&#x1f34a; 主键自增长的数据类型&#x1f34a; 主键自增长的步长&#x1f34a; 主键自增长的性能优化&#x1f389; 为什么需要主键自增长的性能优化?&#x1f389; 主键自增长的性能优化方案&#x1f4dd; 1. 调整主键自增长的步…