使用MacBook m1 开发imx6ull(一):开发环境配置

背景介绍

最近决定学习i.mx6ull的开发。手上仅有一台macbook m1,因此只能在macbook上折腾开发环境,虽然说编译环境最终还是依赖于linux,但是相比x86_64版本,使用aarch64的linux将面临一些新的问题,所以做一下学习笔记,开发板使用了正点原子的i.mx6ull阿尔法。

虚拟机下的开发环境配置

由于编译环境仍然是linux,因此MacBook要装虚拟机,相比其他arm芯片的电脑,mac的一个优势是能用rosetta2对一些代码进行转译,但是使用中仍然有较大的局限性。因此大部分软件都是直接安装了aarch64版本。imx6ull的在mbp m1上的开发环境包括了linux虚拟机、gnu交叉编译工具、代码编辑器:

  1. 虚拟机的选择 ,现在m1端一共有三款产品,分别是Parallels, VMware fusion,UTM。其中Parallels是最成熟的产品,经济能力足够的话买个paralles能省下很多事;VMware fusion是个人版免费,但是在网络配置方面有限制,使用资料比较多。UTM是开源的,parallels的平替版,细节上欠缺点,但是免费而且没有使用限制,并且UTM既是虚拟机也是模拟器。
  2. linux的选择。只要支持arm64版本的均可下载,UTM和parallels均有下载链接;https://mac.getutm.app/gallery/ ,utm下载页面上也有x64版本的ubuntu 14.04可以下载,只能用模拟器的方式降速运行。图形界面卡到爆,命令行界面速度还行,有时候代码需要复制粘贴就比较麻烦了,如果要用教程中提供的uboot等,UTM上模拟命令行界面的x64版本是唯一的选择。而用aarch64版本,则意味着很多东西要重新编译,考虑到后续的开发,笔记以aarch64为主,而且很多aarch64版本很多软件必须用新版,跟旧版软件兼容性较差,可以跟电容爆破工程师的笔记对应着看。
parallels@ubuntu22-04-02-desktop:~$ uname -a
Linux ubuntu22-04-02-desktop 5.15.0-112-generic #122-Ubuntu SMP Thu May 23 07:51:32 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
  1. 交叉编译器。linaro官网在新的版本中提供了对aarch64架构的支持。所以可以在linaro的下载页进行下载,我选用了稳定的12.3版本。
parallels@ubuntu22-04-02-desktop:/usr/local/arm/gcc-linaro-13.0.0-2022.06-aarch64_arm-linux-gnueabihf$ ls
arm-linux-gnueabihf  gcc-linaro-13.0.0-2022.06-linux-manifest.txt  lib      share
bin                  include                                       libexec
  1. 代码编辑器。vscode经过十年发展,已经变得非常成熟。在虚拟机里直接用vscode编写代码是一种选择,不过mac端的vscode更加符合mac用户的审美,所以更推荐使用macbook端的vscode进行远程开发,这里用到vscode插件Remote-SSH。点击查看Remote-SSH的配置方法,这样也符合远程开发的实际需求。
  2. Tips:原子哥提供的一些开源工具,比如imxdownloder在aarch64环境下也要重新编译才能使用。
gcc imxdownload.c -o imxdownload

开发必装软件列表

软件(组)用途平台
vsftpd文件传输Ubuntu
ssh远程访问Ubuntu/Mac
nfs-kernel-server开发板远程Ubuntu
COMTool串口综合工具Mac
vscode代码编辑Ubuntu/Mac
linaro包交叉编译器Ubuntu

不用虚拟机,Mac原生交叉编译配置

Macbook原生配置了zsh的shell,我在网上也找到了适用于MacBook M1芯片的交叉编译器,因此,不用虚拟机也可以对工程进行编译按照上述虚拟机的方式,先创建一个/usr/local/arm文件夹(目录)

sudo mkdir /usr/local/arm

然后将下载到的arm-unknown-linux-gnueabihf.tar.xz文件移动到该目录下,解压:

sudo mv arm-unknown-linux-gnueabihf.tar.xz /usr/local/arm
tar -xf arm-unknown-linux-gnueabihf.tar.xz

确定一下bin目录的位置,我这边是/usr/local/arm/arm-unknown-linux-gnueabihf/bin,确定完成后,将该目录添加到PATH,我这里的方法是先打开~/.zshrc

sudo vim ~/.zshrc

然后添加一行

export PATH="$PATH:/usr/local/arm/arm-unknown-linux-gnueabihf/bin"

保存并退出~/.zshrc。

最后向终端输入

arm-unknown-linux-gnueabihf-gcc --version

检查输出结果,输出了版本信息则已经配置成功了。

arm-unknown-linux-gnueabihf-gcc (crosstool-NG 1.24.0) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

原子哥的imxdownload在Mac下要作修改,找到“构建烧写的shell命令”,将开头两行注释,作出如下修改。

	/* 构建烧写的shell命令 */
	/*linux版本*/
	//cmdbuf = malloc(SHELLCMD_LEN);
	//sprintf(cmdbuf, "sudo dd iflag=dsync oflag=dsync if=load.imx of=%s bs=512 seek=2",argv[2]);	
	/*mac版本*/
	sprintf(cmdbuf, "diskutil unmountDisk %s",argv[2]);	
	system(cmdbuf);
	sprintf(cmdbuf, "sudo dd if=load.imx of=%s bs=512 seek=2",argv[2]);	

经过尝试,裸机程序用arm-unknown-linux-gnueabihf-gcc编译完全没有任何问题,但是编译U-boot的时候host主机选项里并没有MacBook,所以U-boot的编译配置之后还要研究。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值