原创 在 Windows 中使用 WSL 编译 Linux 和 U-Boot

2020-9-30 15:13 1990 19 10 分类: MCU/ 嵌入式

By Toradex 胡珊逢

1). 简介

通常当编译 LinuxU-Boot 相关源代码时,由于编译工具或者文件系统限制,这些任务需要在 Linux 发行版中完成,如常见的 UbuntuFedoraLinux MintArch Linux 等。在电脑安装双系统,或者虚拟机,是使用 Linux 发行版的主要方式。Windows 推出的 WSL Windows Subsystem for Linux)则提供了另外一种方式来使用 Linux 系统。本文接下来将介绍如何在 Windows 10 电脑上使用 WSL 来编译使用NXP iMX8 ARM平台的 LinuxU-Boot  Device tree overlays

 

本文所演示的ARM平台来自于Toradex 基于NXP iMX8QM ARM处理器的Apalis iMX8QM ARM嵌入式平台。

 

 

2). 编译流程

WSL 有两个版本,这里我们将使用 WSL 2。在开始安装 WSL之前,推荐先安装 Windows Terminal。这是微软新推出的终端工具,可以很好的兼容 WSL。并且还直接集成了一些 Linux 的命令工具,如  sshscp

WSL 具体的安装方法请参考微软官方的适用于 Linux  Windows 子系统安装指南 (Windows 10)。安装完毕后我们将使用 Ubuntu-20.04 为例进行编译演示。

打开 Windows Terminal 点击标签页旁边的 + ,可以看到刚才安装的 Ubuntu-20.04 WSL 已经自动出现在其中。点击后即可启动 Ubuntu 。目前的 WSL 还不支持图形,所以接下来的操作会在 Windows Terminal 以命令行的形式完成。

                                              image001.png

进入Ubuntu-20.04 WSL后,命令操作的形式和通常的 Ubuntu 没有区别。首先安装一些编译所需的软件。

sudo apt update
sudo apt install make bison flex
sudo apt install build-essential
sudo apt install libncurses-dev
sudo apt install libssl-dev

交叉编译工具 gcc 的安装可以通过两种形式。在 Ubuntu-20.04 WSL 中通过 wget 等命令直接下载。另外还可以在Windows  电脑上通过浏览器下载,然后使用 Windows 的文件浏览器直接访问  Ubuntu-20.04 WSL 的文件系统,将编译工具复制进去。交叉编译工具的选择可以参考这里

在文件浏览器中输入 \\wsl$\,其会显示电脑上可以用的 WSL 实例文件系统。例如将适用于 Apalis iMX8QM Linux BSP 5.0   gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz 复制到 Ubuntu-20.04/home/ben 目录下。

image002.png  

重新回到 Windows Terminal 命令行终端,解压该工具,并设置环境变量。

tar vxf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
export ARCH=arm64
export DTC_FLAGS="-@"
export PATH=/home/ben/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/:$PATH
export CROSS_COMPILE=aarch64-none-linux-gnu-

使用 git 工具下载 LinuxU-Boot 源码。

git config --global user.name "XXX"
git config --global user.email your_email
git clone -b toradex_imx_v2020.04_5.4.24_2.1.0 git://git.toradex.cn/u-boot-toradex.git
git clone -b toradex_5.4-2.1.x-imx git://git.toradex.cn/linux-toradex.git
git clone -b toradex_5.4-2.1.x-imx git://git.toradex.cn/device-tree-overlays.git


详细的编译步骤和说明可以参考我们开发者中心的相关网页说明

例如编译 U-boot

make apalis-imx8_defconfig
make -j3 2>&1 | tee build.log

例如编译 Linux  device tree

make defconfig
make -j3 Image 2>&1 | tee build.log
make DTC_FLAGS="-@" freescale/fsl-imx8qm-apalis-ixora-v1.1.dtb


 编译 Device tree overlays

cpp -nostdinc -I ../../linux-toradex/arch/arm64/boot/dts/freescale -I ../../linux-toradex/include -undef -x assembler-with-cpp
apalis-imx8_atmel-mxt_overlay.dts apalis-imx8_atmel-mxt_overlay.dts.preprocessed
dtc -@ -Hepapr -I dts -O dtb -i ../../linux-toradex/arch/arm64/boot/dts/freescale -o apalis-imx8_atmel-mxt_overlay.dtbo
apalis-imx8_atmel-mxt_overlay.dts.preprocessed


 当这些都编译好以后,生成的文件都可以通过文件浏览器将其复制出来。

image003.png

image004.png

image005.png

在完成编译工作后,Windows Terminal 命令行终端输入 exit 命令即可退出 WSL,但其仍在后台运行。通过以下命令来查看仍在运行的 WSL 实例,并将其关闭。

PS C:\Users\Ben> wsl --list --running
适用于 Linux  Windows 子系统分发版:
Ubuntu-20.04 (默认)
PS C:\Users\Ben> wsl --terminate Ubuntu-20.04

 

 

3). 总结

借助 WSL运行 Linux 发行版,为 Linux 开发人员提供一种简便的方式,免去双系统的切换,或者安装庞大的虚拟机系统。WSL 是直接运行在 CPU 上,避免了虚拟化技术的开销。目前该技术也有限制,如WSL 还无法使用图形界面,从而使得一些需要借助图形化界面 IDE  Eclipse 完成的 C/C++ 应用开发还不是很适合。当然网络上也有关于如何在WSL 安装 X11 并通过远程桌面的方式来开启图形界面的说明,但这会影响到 WSL 的性能。WSL 的方式比较适合不需要借助图形界面的编译任务,如makecmake 编译,甚至是  Yocto 编译等。

作者: hai.qin_651820742, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1864768.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

yzw92 2020-10-3 09:13

感谢分享
相关推荐阅读
hai.qin_651820742 2021-03-16 17:26
在iMX8上使用MIPI-CSI摄像头
By Toradex胡珊逢NXP i.MX8QM/QP处理器能够支持2路4 lane的MIPI CSI-2输入,每路最高为4K@30分辨率。文章接下来将使用Apalis iMX8QM计算机模块配合e-...
hai.qin_651820742 2021-03-11 14:23
NXP iMX8基于eIQ框架测试Machine Learning
By Toradex秦海1). 简介随着嵌入式处理器性能的提升甚至一些嵌入式处理器已经开始集成针对人工智能和机器学习的硬件加速单元NPU,机器学习应用在嵌入式边缘设备的应用也慢慢展现。为此,...
hai.qin_651820742 2021-03-02 12:11
NXP iMX8集成SELinux支持
By Toradex胡珊逢 SELinux 是 Security-Enhanced Linux 的简称,它是为 Linux 提供安全子系统的内核模块。其主要作用是控制进程对资源的访问,在基...
hai.qin_651820742 2021-01-29 16:54
嵌入式 Linux 系统 VPN 应用
By Toradex胡珊逢联网需求在各种嵌入式应用中正开始变得越来越普遍,随之而来就是数据传输的安全挑战。VPN是应对该挑战的有效措施。除此之外,VPN 还能够穿透防火墙或者 NA...
hai.qin_651820742 2020-12-31 12:08
NXP iMX8X基于Docker测试CAN接口通讯
By Toradex秦海1). 简介随着嵌入式设备的发展,由于部署更灵活应用方便等特性,原本在网络应用中广泛使用的docker技术也慢慢在一些嵌入式设备中应用,因此本文就基于嵌入式ARM平台...
hai.qin_651820742 2020-12-25 17:38
CAN FD 在 iMX8 计算机模块上的应用
​By Toradex胡珊逢CAN 总线在工业、汽车行业具有非常广泛的应用,为网络中设备之间点对点通信提供一种可靠、稳定、经济的方案。伴随网络中设备节点的增加,由于 1Mbps&n...
广告
我要评论
1
19
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /5 下一条