一、FTP、NFS、SSH
FTP,即 File Transfer Protocol,文件传输协议。在开发过程中,Ubuntu作为FTP服务器,Windows作为FTP客户端,使用FileZilla直接可以实现Ubuntu和Windows文件互传。
NFS,即 Network File System,网络文件系统。在进行Linux驱动开发的时候需要NFS启动,通过网络将Ubuntu中的文件直接作为启动文件。
SSH,即Secure Shell,安全Shell。用于在Windows下使用终端软件安全远程登录Ubuntu。
二、交叉编译器
Ubuntu自带的GCC编译器是针对 X86架构的,我们开发的是ARM架构的,用的是Linaro公司提供的适用于Cortex-A7内核的GCC交叉编译工具链arm-linux-gnueabihf。
具体步骤是,从Linaro公司官网根据芯片型号选择自己想要的GCC交叉编译工具链的压缩包并下载,然后解压就得到了交叉编译工具链。最后将交叉编译器的路径添加到系统的环境变量中,以便在终端中可以直接使用。
三、汇编语言点亮LED灯
- 编译文件 led.c -> led.o
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
- 链接文件 led.o -> led.elf
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
- 格式转换 led.elf -> led.bin
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
- 反汇编 led.elf -> led.dis
arm-linux-gnueabihf-objdump -D led.elf > led.dis
- Makefile
led.bin:led.s
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
arm-linux-gnueabihf-objdump -D led.elf > led.dis
clean:
rm -rf *.o led.bin led.elf led.dis
- 使用 imxdownload软件向 SD卡烧写 led.bin文件
./imxdownload led.bin /dev/sdd
四、I.MX6U启动方式的启动模式、启动设备类型和镜像烧写过程
- 启动方式(BOOT方式)
I.MX6U有四个 BOOT模式,这四个 BOOT模式由 BOOT_MODE[1:0]来控制。
常用的两个启动模式:
1. 串行下载(USB/UART)
2. 内部boot模式(bootROM)
- 内部boot模式的启动设备选择
通过GPIO选择启动设备
- 镜像烧写
.bin文件需要添加头部信息才能变成可烧写文件。
程序组成: IVT+Boot data+DCD+.bin
五、C语言点亮LED灯
- 使用链接脚本文件链接文件
arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf $^
- 链接脚本文件
SECTIONS{
. = 0X87800000;
.text :
{
start.o
main.o
*(.text)
}
.rodata ALIGN(4) : {*(.rodata*)}
.data ALIGN(4) : { *(.data) }
__bss_start = .;
.bss ALIGN(4) : { *(.bss) *(COMMON) }
__bss_end = .;
}
六、I.MX6ULL官方SDK
SDK包里面 NXP已经编写好了寄存器定义文件、例程文件等。
从官网下载SDK_2.2_MCIM6ULL_RFP_Win.exe并安装,安装完成后是一个文件夹。
- 需要用到的寄存器定义头文件
fsl_common.h
fsl_iomuxc.h
MCIMX6Y2.h