Mac M1使用PD虚拟机进行Linux开发(一)使用ubuntu进行裸机开发篇

一、虚拟机系统的安装

        使用Parallels Desktop 推荐的方式直接安装Ubuntu/Debian即可,这里我选择Debian(8G丐版在实际跑ubuntu的时候,用了几天,后面内存占用较高,改小运行内存后会出现闪退的情况,具体原因没有深究。Debian使用体验确实不错,使用的是xfce4桌面,这里先给大家避个雷)

        博主这里默认的硬件配置是2核心+2G内存,实际体验很不错,暂时没发现卡顿。

        安装过程全程不用动电脑,等待就好,硬件配置后面可以在虚拟机的配置中修改。

二、 基本环境的配置和源的替换

        这里仍然不用赘述,我使用的是清华源,注意替换好源之后要更新。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free

sudo apt-get update

sudo apt-get upgrade

三、安装交叉编译工具链

        方法一:(缺点,只能在裸机开发下工作正常,编译uboot会出现问题,具体原因没有深究)

        这里看过正点原子教程的都知道是在 linaro中下载解压安装的,但是教程中是针对x86架构的ubuntu,实际上我们安装的是arm架构的虚拟机,安装是一定会出问题的。

        但是之前在ubuntu试图安装的时候偶然发现gcc-arm-linux-gnueabihf,然后就尝试了一波如下命令

sudo apt-get install gcc-arm-linux-gnueabihf

       

        然后就安装成功了,看一下版本信息是没问题的。

        可以看到主机是aarch64,证明版本安装正确。

        方法二:

        由于在线安装交叉编译工具链会存在问题,于是推荐大家使用arm官方发行的交叉编译工具链进行安装下载地址,验证后发现可以进行uboot编译,但是编译命令脚本会和正点原子官方所提供的有所差别。安装好后,修改环境变量

sudo vi /etc/profile

        重启查看版本号

        验证成功,下一篇文章会进行uboot编译验证。 

 四、进行Linux 裸机下载验证

        我们在虚拟机上写好测试的程序之后,生成.bin文件

        这里使用Makefile编译

CROSS_COMPILE 	?= arm-linux-gnueabihf
TARGET		  	?= bsp

GCC 			:= 	$(CROSS_COMPILE)-gcc
LD				:= 	$(CROSS_COMPILE)-ld
OBJCOPY 		:= 	$(CROSS_COMPILE)-objcopy
OBJDUMP 		:= 	$(CROSS_COMPILE)-objdump

INC_DIRS 		:= 	imx6ul 			\
				   	bsp/clk 		\
				   	bsp/led 		\
				   	bsp/delay 		\
					bsp/key			\
					bsp/gpio		\

SRC_DIRS		:= 	project 		\
				   	bsp/clk 		\
				   	bsp/led 		\
				   	bsp/delay 		\
					bsp/key			\
					bsp/gpio		\
				   
				   
INCLUDE			:= 	$(patsubst %, -I %, $(INC_DIRS))

S_DIR_FILES		:= 	$(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.S))
C_DIR_FILES		:= 	$(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.c))

S_FILES			:= 	$(notdir  $(S_DIR_FILES))
C_FILES			:= 	$(notdir  $(C_DIR_FILES))

S_OBJS			:= 	$(patsubst %, obj/%, $(S_FILES:.S=.o))
C_OBJS			:= 	$(patsubst %, obj/%, $(C_FILES:.c=.o))
OBJS			:= 	$(S_OBJS) $(C_OBJS)

VPATH			:= 	$(SRC_DIRS)

.PHONY: clean
	
$(TARGET).bin : $(OBJS)
	$(LD) -Timx6ul.lds -o $(TARGET).elf $^
	$(OBJCOPY) -O binary -S $(TARGET).elf $@
	$(OBJDUMP) -D -m arm $(TARGET).elf > $(TARGET).dis

$(S_OBJS) : obj/%.o : %.S
	$(GCC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<

$(C_OBJS) : obj/%.o : %.c
	$(GCC) -Wall -nostdlib -c -O2  $(INCLUDE) -o $@ $<
	
clean:
	rm -rf $(TARGET).elf $(TARGET).dis $(TARGET).bin $(OBJS)

	

        此时进行下载验证会报错,因为之前正点原子的imxdownload 执行文件是在x86端编译的,显然我们在arm平台上要重新编译一次。

        重新编译imxdownload

        再将其拷贝到项目工程目录下 ,再次进行验证

        下载成功!

        至此,裸机开发部分,暂时没遇到其他问题。可以开心的在M1上进行Linux 裸机学习咯

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值