1、安装交叉编译工具链
1.1 下载4.9.4版本的交叉编译器,并存放到/usr/local/arm目录
链接:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/
1.2 新建/usr/local/arm文件,并将下载好的压缩包解压到此文件夹中
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
这样,该文件夹里面就是我们的交叉编译工具链。
1.3 修改环境变量
1.3.1 所有用户全局设置
打开/etc/profile文件,在最后面添加如下内容:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
生效:
source profile
1.3.2 当前用户全局设置
打开~/.bashrc文件,添加内容同上(注意文件名根据自己实际下载的填写)
生效:
source .bashrc
1.4 在使用交叉编译工具链之前还需安装其他库
sudo apt-get install lsb-core lib32stdc++6
1.5 验证
arm-linux-gnueabihf-gcc -v
1.6 使用
1.6.1 编译
arm-linux-gnueabihf-gcc -g -c led.s -o led.o
-g,产生调试信息;-c,编译但不链接;-o,指定编译产生的文件名
1.6.2 链接
arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led.elf
-Ttext,指定链接地址,即程序的运行地址
1.6.3 格式转化
arm-linux-genueabihf-objcopy -O binary -S -g led.elf led.bin
-O,指定输出格式为二进制格式;-S,不复制源文件中的重定位信息和符号信息;-g,不复制源文件调试信息
1.6.4 反汇编
arm-linux-gnueabihf-objdump -D led.elf > led.dis
-D,表示反汇编所有的段。大多数情况下我们都是用 C语言写试验例程的,有时候需要查看其汇编代码来调试代码,
因此就需要进行反汇编,一般可以将 elf文件反汇编。
2、Uboot烧写
2.1 将imxdown拷贝到工程目录下,也就是和.bin文件在同一个文件夹下
2.2 给予imxdownload可执行权限 chmod 777 imxdownload
2.3 电脑中插入sd卡(使用 ls /de/sd*来查看确认sd卡是sd多少)
2.4 烧写bin文件
./imxdownload u-boot.bin /dev/sdd