安装交叉编译器
编译工具官网
编译工具链官网:https://www.linaro.org/
# 此处为获取7.2.1版本,您可获取其他版本或者通过链接直接下载
wget http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
sudo cp -r ./gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi /opt/
sudo vim /etc/bash.bashrc
# 在文件末尾 添加以下内容
PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin"
# 添加完毕
# 使路径生效
source /etc/bash.bashrc
**注意:GCC版本要大于 6;此处为获取交叉编译链为7.2.1版本,也可以自行下载其他版本。安装好交叉编译链后可用命令 arm-linux-gnueabi-gcc -v 测试是否安装成功。注意自己的安装用户。
搭建spi flash烧录环境(板载spi flash可选)
安装好编译根据链后还需要安装烧录固件工具。这里使用 sunxi-tools:
# 0. 如果无安装git 首先安装git
sudo apt-get install git
# 1. 拉取 sunxi-tools 这个库
git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git
# 2.进行安装
cd sunxi-tools
make && sudo make install
# 3. 错误处理
# 3.1 如果出现 fatal error: libusb.h: No such file or directory 错误
sudo apt-get install libusb-1.0-0-dev
# 3.2 fel.c:32:18: fatal error: zlib.h: 没有那个文件或目录
sudo apt-get install zlib-devel
# 4. 不出意外 现在已经安装成功, 可以使用这个软件进行烧写。常用的命令有如下几个
# 4.1 查看芯片是否开启了下载模式, 如果出现芯片信息既可以烧录
sudo sunxi-fel ver
# 4.2 烧录到 flash
sudo xunxi-fel -p spiflash-write [烧录的地址] [烧录的文件]
# 4.3 烧录到 内存中
sudo xunxi-fel -p write [烧录的内存地址] [烧录的文件]
让芯片进入烧写模式
为了让芯片能接收烧写固件,可让芯片进入 fel 模式。
原理:当 flash 中无引导数据或者无法找到 flash 芯片时, 便自动进入 fel 模式。
有以下两种方法:
1、flash有程序的话,短接 flash 的 1、4 两脚,重新上电,让芯片找不到 flash,上电后松开短接,即可重新进入 fel 模式。
2、使用 U-boot 删除 flash 中的引导数据:
# 在 u-boot 中使用如下指令进行删除数据
# 1. 切换到 flash, 其中 0 为选择的flash,50000000 为速度。官方文档这里有错误。注意!
sf probe 0 50000000
# 2. 擦除flash, 为什么擦除这段地址,请查看spiflash编译章节
sf erase 0 0x10000
# 3. 重启
reset
# 4. 使用 sunxi-fel ver 即可找到芯片
sudo sunxi-fel ver
AWUSBFEX soc=00001663(F1C100s) 00000001 ver=0001 44 08 scratchpad=00007e00 00000000 00000000
sunxi 烧写命令
确认是否进入 fel 模式命令:sudo sunxi-fel ver
烧录命令:sudo sunxi-fel -p spiflash-write [烧录的地址] [烧录的文件]
SD卡烧录工具
sudo apt-get install gparted
此时在Ubuntu下面可以看到如下软件
安装好GParted软件,打开软件
在右上角可以看到两个硬盘,/dev/sda 为本地硬盘,/dev/sdb 是我们将要写数据的sd卡。