基于IMX6ULL的干货嵌入式Linux学习记录(一)——搭建环境和下载资料和编译试运行HelloWorld

基于IMX6ULL的干货嵌入式Linux学习记录(一)——搭建环境和下载资料和编译试运行HelloWorld


前言:

此系列教程(记录)基于野火的EBF6ULL Mini板,会记录笔者从最基本的获取资料到驱动再到一些简单实际的项目应用为止。

IMX6ULL可以用NXP官方的SDK像STM32等单片机那样基于库裸机开发,也可以上操作系统(如Linux)进行开发。

本文主要讲的是基于Linux的开发。

阅读本文需要读者拥有一些Linux的操作基础



一、获取资料

开发最离不开的就是开发资料的获取,一般会选择从官方或者其他平台获取全面的资料,比如工具链、官方提供的UBOOT、Linux Kernel等等。这里我们虽然用野火的EBF6ULL Mini板,但实际操作的时候,笔者使用的是百问网提供的一系列开发资料为主,我觉得很全。

资料图片:
在这里插入图片描述


二、搭建环境

笔者使用的是:

  • 上位机系统:Win10主机 + Ubuntu 20.04.2.0 LTS虚拟机
  • 主要编辑器:VSCode 和 Clion
  • 次要编辑器:Source Insight(索引好,用来浏览类似Linux Kernel之类工程体量大的项目源码)、vim、notepad++

1)主机软件安装(点击下载安装即可):

2)VMware15虚拟机基本使用

  1. 点击 “文件”
  2. 点击 “新建虚拟机”
  3. 点击 “典型”,下一步
  4. 点击 “安装程序光盘映像文件(iso)”,选择你下载的Ubuntu iso镜像,下一步
  5. 输入用户基本信息,建议用户名和密码短一点,方便,反正自己学习用,不用考虑安全性
  6. 命名和确定安装路径,下一步
  7. 分配磁盘大小,分个50 ~ 100GB,不然东西安装多了就不够空间了
  8. 自定义硬件,自己按需分配就行
  9. 然后等虚拟机安装完毕
  10. 进入系统 百度换下载源的方法(不然apt下载软件慢)

3)Linux虚拟机内基本软件安装
安装Samba(方便windows和linux互传数据)

sudo apt install samba

安装net-tools,主要是为了用ifconfig命令查看虚拟机ip

sudo apt install net-tools

安装ssh (最新ubuntu自带,但如果用的话,要重新安装)

sudo apt install ssh

安装python3(最新版ubuntu貌似自带,编译时有些脚本会用)

sudo apt install python3 python3-pip

安装32位支持(防止一些工具链是32位的在64位系统无法运行)

sudo apt install lib32z1

安装 swig 和 libncurse(内核编译和使用make menuconfig用到)

sudo apt install swig libncurses5

安装 7z (解压7z用)

sudo apt install p7zip-full

3)工具链配置(重要)

工具链我们可以从三种渠道获取,

  • linaro官网下载
  • 使用我们下载的开发资料里提供的工具链(建议这一种,厂商一般会配置好,不会出奇怪的问题
  • apt安装(不建议,容易混淆工具链)

把百问网提供的资料里的07_Bsp_sdk(不要在windows解压)拖进你的虚拟机(如果你的samba成功配置的话)。打开linux的终端,进入samba的共享目录,然后执行以下命令

cd ./07_Bsp_sdk/
7za x 100ask_imx6ull-sdk.7z -o./		// 解压7z包到当前目录

在 100ask_imx6ull-sdk/ToolChain/ 目录下的就是交叉编译工具链。

接下来有两种方法使用工具链:

1、配置工具链到 ~/.bashrc 内( ~/ 表示当前用户目录, gedit ~/.bashrc编辑这个文件,在行尾加上↓)

PATH="$PATH:xxx/bin"	# xxx/表示工具链的绝对路径

2、不配置~/.bashrc,编译时直接指定工具链的绝对路径(推荐,特别是多工具链的情况下,这种方法兼容性最强,后文用xxx/bin表示工具链的路径前缀

那么本文到这里,算是把环境搞好,工具链也配置好了,接下来可以跑一个HelloWorld看看


三、使用工具链编译你的程序

如果你有用gcc编译过程序,那么你应该比较熟悉这一步,因为编译非常简单,之前是调用gcc编译 ,那么现在就是用xxx/bin/arm-linux-gnueabihf-gcc编译。形如make、cmake之类的辅助工具,使用原生的就行。

那么我们写一段helloworld:

// main.c
#include <stdio.h>

int main()
{
	printf("Hello, World!\n");
	return 0;
}

接下来在命令行编译:

xxx/bin/arm-linux-gnueabihf-gcc main.c -o helloworld

然后如果你在上位机输入./helloworld的话,就会。。。。
在这里插入图片描述
这个信息代表这个可执行文件的格式不支持(因为我们不是用gcc而是arm-linux-gnueabihf-gcc),这个可执行文件只能放在你的开发板的linux系统上用。

那么问题来了,我们如何把程序放到开发板的系统里去呢?


四、烧录系统镜像到开发板并运行helloworld

在百问网提供的资料里,01_Tools目录下有百问网提供的烧录工具(在windows下用),我们可以直接使用,当然NXP官方也提供了工具,但操作有点蛋疼。。。。有好用的工具,何乐不为呢?

1)解压如下的压缩包,并进入目录里面

在这里插入图片描述
在file文件夹里,有这个工具内置的所有开发板固件,我们不动,直接用就行。

软件界面如下:
在这里插入图片描述
2)进入USB下载模式
接下来我们使开发板进入USB的下载模式,不同的开发板关于怎么进入USB下载模式都不一样,我使用的是野火的EBF6ULL Mini板,进入USB模式是先一直按MODE键再按RESET键(不用重新拔插USB),进入成功电脑应该会有提示音,
在这里插入图片描述

如果系统没有USB驱动,识别不到的话,参考这篇文章:韦东山鸿蒙开发教程05 - 鸿蒙系统体验之在IMX6ULL上体验鸿蒙系统

如果成功,软件界面会显示“设备已连接”,然后点击“烧写整个系统”,就可以自动烧写软件目录下的file文件夹下的镜像文件了。

3)使用软件MobaXterm(串口工具 ssh工具合集)观察信息
MobaXterm这个软件我觉得非常好用,我们可以使用这个软件打开并查看串口信息,也可以用各种协议与开发板相连(如SSH,你接入网络的话)

这里我们用串口(因为我没有多余的网线。。。)并用z-modem传输helloworld文件
在这里插入图片描述
然后RESET开发板,出现login提示的话,输入root就进入系统了
我们就可以在终端界面看到linux系统的提示符了。

4)使用z-modem传输helloworld文件

方法也很简单,在开发板的命令行界面输入命令 “rz”,表示用z-modem等待receive,右键终端界面,点击“Send file using Z-modem”,表示用z-modem发送文件,等他传输完毕就行。然后在开发板的命令行输入 “ls”,就可以看到我们之前编译的helloworld程序了。

接下来,就是运行,不用说了吧?
然后就能看到输出了
在这里插入图片描述
别看这个helloworld简单,他可是我们开发板上自己编写的第一个APP,以后进行开发板的应用开发也是这个道理,把这个流程记住,以后也是这样。


本篇完


下一篇

待续

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值