可以分为两部分:
1.BOOT MODE1和BOOT MODE0
常用的就是01串行下载和10内部boot模式启动。
其中串行下载是在使用nxp的官方烧录工具mfgtool通过usb otg向开发板下载代码的时候使用的,这个时候八个拨码开关的位置应该是:01 000000。
而内部boot模式是在正常运行的时候使用的,从内部boot模式启动,芯片会执行内部的boot rom代码,这段代码会进行硬件初始化,然后从boot设备(SD/EMMC,NAND)中将代码拷贝出来复制到指定的RAM中。
2.GPIO配置设备启动(此时前两个拨码应为10,配置为从boot启动模式)
启动设备通过24个配置IO:
BOOT_CFG1[7:0],BOOT_CFG2[7:0],BOOT_CFG4[7:0]。
其中所需要的就是六个引脚。
3.正点原子阿尔法开发板的启动方式设置总结
其中EMMC和NAND是两种底板型号,我买的是EMMC版本,所以可以选择EMMC启动或者SD卡启动。
2.imx6ull移植
1.移植bootloader代码(Uboot启动内核)
2.移植Linux内核
3.移植rootfs根文件系统(基本命令和文件)
3.Uboot使用实验
uboot官网: www.denx.de/wiki/U-Boot…
1.uboot编译
1.安装ncurses库
sudo apt-get install libncurses5-dev
2.传输uboot源码压缩包
可以在user下新建文件夹linux,再新建uboot文件夹,再新建alientek_uboot文件夹,传输uboot文件。
3.解压缩uboot源码压缩包
tar -vxjf uboot-imx-2016.03-2.1.0-g8b546e4.tar.bz2
4.我是512MB(DDR3)+8GB(EMMC)核心板。
新建sheel脚本文件“mx6ull_alientek_emmc.sh”。
#!/bin/bash
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- (加空格)
mx6ull_14x14_ddr512_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j12
三行shell脚本的作用是清理工程、配置ubbot,编译uboot。
5.赋予脚本可执行权限,编译脚本
chmod +x mx6ull_alientek_emmc.sh
./mx6ull_alientek_emmc.sh
2.安装交叉编译环境
1.将如下路径的交叉编译器上传到linux环境。
可以新建如下文件夹home/user/linux/tool。
2.在ubuntu中新建目录
sudo mkdir /usr/local/arm
3.在home/user/linux/tool目录下执行如下命令,复制到/usr/local/arm中,并解压。
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
4.使用vi打开/etc/profile文件夹,修改环境变量
sudo vi /etc/profile
打开后,在最下面输入:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
修改好后重启。
5.重启后,安装其他库。
sudo apt-get install lsb-core lib32stdc++6
6.验证是否安装成功。
arm-linux-gnueabihf-gcc -v
3.安装imxdownload软件
1.将imxdownload软件拷贝到工程文件下。
2.赋予权限
chmod 777 imxdownload
3.插入SD卡
4.使用imxdownload软件向sd卡中烧写程序
./imxdownload led.bin /dev/sdd
4.uboot烧写与启动
1.将sd卡插入u盘,插到电脑上
使用imxdownload软件将uboot编译文件烧写到sd卡中
chmod 777 imxdownload //给予 imxdownload 可执行权限,一次即可
./imxdownload u-boot.bin /dev/sdd //烧写到 SD 卡,不能烧写到/dev/sda 或sda1 设备里面!
2.将sd卡插入开发板,boot设置为从sd卡启动,即:10 000010。
使用usb线,将usb_ttl与电脑相连。
3.在电脑上打开mobaxterm软件,设置好串口参数,复位开发板,在3s内按下回车键。
5.学习10类uboot命令
一、信息查询命令
1.bdinfo
查看板子信息
2.printenv
输出环境变量信息
3.version
查看uboot版本号
二、环境变量操作命令
1.setenv
用于设置或者修改环境变量的值
2.saveenv
保存修改后的环境变量
eg:
setenv bootdelay 5
saveenv
三、内存操作命令
1.md
显示内存值
eg:
md.b 80000000 14
查看以 0X80000000 开始的 20 个字节的内存值,14是16进制
2.nm
修改指定地址的内存值
eg:
nm.l 80000000
0x12345678
以.l 格式修改 0x80000000 地址的数据为 0x12345678
3.mm
修改指定地址内存值
比nm有自增,就是输入后,会显示下一个地址的值,问询是否修改,不修改,输入q即可
4.mw
使用一个指定的数据填充一段内存
eg:
mw.l 80000000 0A0A0A0A 10
使用.l 格式将以 0X80000000 为起始地址的 0x10 个
内存块(0x10 \* 4=64 字节)填充为 0X0A0A0A0A
5.cp
数据拷贝命令
eg:
cp.l 80000000 80000100 10
使用.l 格式将 0x80000000 处的地址拷贝到 0X80000100 处,长度为0x10 个内存块(0x10 \* 4=64 个字节)
6.cmp
用于比较两段内存的数据是否相等
eg:
cmp.l 80000000 80000100 10
使用.l 格式来比较 0x80000000 和 0X80000100 这两个地址数据是否相等,比较长度为 0x10 个内存块(16 \* 4=64 个字节)


**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**