开发环境
电脑:MacOS 14 (英特尔i5-12400F)
开发板:正点原子 mini Linux(I.MX6ULL)
资料包:【正点原子】阿尔法Linux开发板(A盘)-基础资料
本教程所用程序(LED 闪烁):01、例程源码\01、裸机例程\02_ledc
本教程所用下载工具(imxdownload):05、开发工具\02、Ubuntu下裸机烧写软件
参考文章:《I.MX6U 嵌入式 Linux 驱动开发指南 》
安装编译链
arm-none-eabi-gcc
brew install --cask gcc-arm-embedded
arm-linux-gnueabihf-gcc
MacOX下ARM交叉编译工具链arm-linux-gnueabihf
下载后解压并添加到环境变量,在.bash_profile
末尾加上bin文件的路径:
export PATH=$PATH:/Users/mac/Documents/arm-linaro-linux-gnueabihf/bin
并运行如下命令使其生效
source ~/.bash_profile
编译
切到本教程所用程序(LED 闪烁)目录:01、例程源码\01、裸机例程\02_ledc
mac@Mac-Pro 02_ledc % make clean
rm -rf *.o ledc.bin ledc.elf ledc.dis
mac@Mac-Pro 02_ledc % make
arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o start.o start.S
arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o main.o main.c
arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf start.o main.o
arm-linux-gnueabihf-objcopy -O binary -S ledc.elf ledc.bin
arm-linux-gnueabihf-objdump -D -m arm ledc.elf > ledc.dis
配置下载工具
由于MacOS的磁盘操作和Linux不太一样,所以需要先安装diskutil
工具
brew install diskutil
不然下载的时候会报Resource busy
切到本教程所用下载工具(imxdownload):05、开发工具\02、Ubuntu下裸机烧写软件
修改imxdownload.c
源码
//sprintf(cmdbuf, "sudo dd iflag=dsync oflag=dsync if=load.imx of=%s bs=512 seek=2", argv[2]);
sprintf(cmdbuf, "diskutil unmountDisk %s",argv[2]);
system(cmdbuf);
sprintf(cmdbuf, "sudo dd if=load.imx of=%s bs=512 seek=2",argv[2]);
编译并将可执行文件拷贝到本教程所用程序(LED 闪烁)目录:01、例程源码\01、裸机例程\02_ledc
gcc imxdownload.c -o imxdownload
通过ls /dev/disk*
和 df -h
综合查看SD卡的设备名,我这是/dev/disk2
mac@Mac-Pro ~ % ls /dev/disk*
/dev/disk0 /dev/disk0s4 /dev/disk1s1 /dev/disk1s4s1 /dev/disk2s1
/dev/disk0s1 /dev/disk0s5 /dev/disk1s2 /dev/disk1s5
/dev/disk0s2 /dev/disk0s6 /dev/disk1s3 /dev/disk1s6
/dev/disk0s3 /dev/disk1 /dev/disk1s4 /dev/disk2
mac@Mac-Pro ~ %
mac@Mac-Pro ~ % df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s4s1 466Gi 9.4Gi 398Gi 3% 394k 4.2G 0% /
devfs 197Ki 197Ki 0Bi 100% 682 0 100% /dev
/dev/disk1s2 466Gi 1.9Gi 398Gi 1% 922 4.2G 0% /System/Volumes/Preboot
/dev/disk1s6 466Gi 1.0Mi 398Gi 1% 1 4.2G 0% /System/Volumes/VM
/dev/disk1s5 466Gi 720Ki 398Gi 1% 21 4.2G 0% /System/Volumes/Update
/dev/disk1s1 466Gi 55Gi 398Gi 13% 469k 4.2G 0% /System/Volumes/Data
/dev/disk0s3 165Gi 44Gi 121Gi 27% 1 0 100% /Volumes/系统
/dev/disk0s4 300Gi 718Mi 299Gi 1% 1 0 100% /Volumes/软件
map auto_home 0Bi 0Bi 0Bi 100% 0 0 - /System/Volumes/Data/home
/dev/disk2s1 15Gi 1.1Mi 15Gi 1% 1 0 100% /Volumes/6ULL
烧录
切到本教程所用程序(LED 闪烁)目录:01、例程源码\01、裸机例程\02_ledc
mac@Mac-Pro 02_ledc % ./imxdownload ledc.bin /dev/disk2
I.MX6ULL bin download software
Edit by:zuozhongkai
Date:2019/6/10
Version:V1.1
log:V1.0 initial version,just support 512MB DDR3
V1.1 and support 256MB DDR3
file ledc.bin size = 608Bytes
Board DDR SIZE: 512MB
Delete Old load.imx
Create New load.imx
Unmount of all volumes on disk2 was successful
Download load.imx to /dev/disk2 ......
7+1 records in
7+1 records out
3680 bytes transferred in 0.008153 secs (451368 bytes/sec)
将SD卡插入开发板,并设置好拨码开关,即可看见LED闪烁