本章节主要讲,如何将NXP官方i.MX6ULL EVK评估板的uboot源码移植适配到ELF 1开发板。本身uboot的作用就是启动内核,只要能成功启动内核,uboot使命便已完成。但是从开发调试的角度来讲,有时候我们需要在uboot阶段使用一些外设接口方便调试,例如使用tftp更新uboot、调试内核等,这就需要使用网络接口;从产品开发角度来讲,有时候需要在uboot阶段显示厂商logo,这就需要uboot支持LCD功能接口。所以我们也要对uboot的常用功能接口做一些适配。好在对于这些常用功能接口的硬件设计方案,ELF 1开发板与NXP EVK板基本一样,这样就大大减少我们的移植工作。我们将ELF 1开发板资料包\07-NXP 原厂资料\07-1 NXP官方源码\u-boot-imx-2016.03.tar.gz复制到/home/elf/work/elf1_uboot目录下(如果没有此文件夹,就自行创建),并解压缩,准备进行移植。本章uboot移植工作基于eMMC版进行。
经过第六章,我们完整地移植了NXP的内核,相信大家对IOMUX已经很熟悉了,我们再简单地提一下,如果您还没有看内核篇章,强烈建议您看完第六章之后再进行本章的学习。
IOMUX是指引脚复用功能配置,MUX是指multiplex多路复用的意思,由于芯片硬件引脚资源有限,但又想实现尽可能多的功能,于是芯片厂商,就实现了一个引脚可复用为多路功能的设计。不同厂家的SOC芯片有不同的配置方法,下面我们讲i.MX6ULL的引脚功能复用的配置方法。
例如i.MX6ULL芯片GPIO1_06引脚就有9种复用功能:
一般来讲,如果要想将一个引脚复用成为自己期望的功能,需要设置三个寄存器:
一、IOMUXC_SW_MUX_CTL_PAD:配置引脚复用模式,即复用为哪种功能。
二、IOMUXC_SW_PAD_CTL_PAD:配置引脚的电气参数,根据所选功能及硬件环境,配置成合适的电气参数,如上下拉电阻,驱动能力,开漏输出还是推挽输出等。
三、SELECT_INPUT:配置功能引脚选择,对于同一功能可复用到多个引脚的情况,会存在此寄存器,并且需要配置此寄存器。对于一个功能只能使用某一个引脚的情况,由于不存在使用其他引脚的可能,所以不存在此寄存器。
具体IOMUX的配置,在以下章节会详细介绍。