i.MX6ULL开发笔记 | 01 - i.MX6ULL Alpha开发板快速上手

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了i.MX6ULL开发笔记 | 01 - i.MX6ULL Alpha开发板快速上手相关的知识,希望对你有一定的参考价值。

一、正点原子Alpha i.MX 开发板

最近需要学习嵌入式 linux 相关的内容,拿出我压箱底的imx6ull开发板,清清灰还是一个好板子:

我使用的是eMMC核心板,主要的资源如下:

  • 主控:MCIMX6Y2CVM08AB,主频800Mhz(实际792MHz),工业级
  • eMMC:KLM8G1GET,8GB
  • DDR3L:NT5CC256M16EP-EK,512MB,商业级


底板资源如下,比较丰富:

二、i.MX6ULL 处理器

1. 概览

i.MX6ULL(官网)是NXP基于ARM Cortex-A7内核的单核处理器家族,主频可以高达900MHz。


i.MX6ULL应用处理器包含了电源管理模块,可以降低外部电源电路设计的复杂度,并且简化了供电时序。该系列中的每个处理器都提供了丰富的内存接口,包含16-bit的LPDDR2、DDR3、DDR3L,Nand Flash、Nor Flash、eMMC、Quad SPI,还有其它广泛的接口用于连接外设的,比如WLAN、蓝牙、GPS、显示、摄像头等。

2. 框图

3. i.MX6ULL系列处理器概览

三、交叉编译器

开发环境搭建的核心是安装交叉编译器,编译器版本取决于我们选择使用的uboot、kernel版本,在学习阶段我们保持和教程统一,使用 4.9-2017.01 版本。

1. Linaro

Linaro自2010年以来一直在推动Arm上的开源软件开发,为创新提供所需的工具、Linux内核质量和安全性。Linaro与成员公司和开源社区合作,维护Arm软件生态系统,并在Arm架构上开拓新的市场。

随着技术的发展,linaro也在发展,将继续通过Linux内核、工具链、安全和持续集成测试等工作来帮助维护和发展Arm软件生态系统的同时,我们也在多个市场开展工作,以支持Arm技术。这些设备包括汽车、物联网和边缘设备、客户端设备和云计算和服务器。

关于linaro的进一步了解,有篇博客讲的不错:Linaro是什么?,下面的引用来自这篇博文。

Linaro是ARM公司发起,其他做ARM SoC公司(ARM、Freescale、IBM、三星、ST、TI 6家公司)共同投资的一个非盈利组织,在ARMRISC架构处理器的基础上,并引入和基于Linux内核,构建位于底层的Linaro平台(或称ARM平台),支持相应的Linux操作系统(按照Linaro的设想,如:android、MeeGo、LiMo、Ubuntu、WebOS等),使其搭载开放的移动互联终端设备(如:智能手机、平板电脑、互联电视、车载信息娱乐系统等),能顺利运行和长足发展。

截至发文,linaro给出的合作伙伴,而且微软最近也加入了linaro,将一起构建arm on windows的生态:

2. Linaro’s GNU gcc compiler

该工具链有两种方式下载,东西都是一样的,区别在于:linaro发布的版本属于开发者构建的版本,可以尝试的最新出炉的编译器,但不一定稳定,linaro完成一个版本的开发后交给arm,arm发布稳定版本,但版本稍微落后而已。

(1)正式版本:Arm官方发布的AArch64和Arm 32位A核的预构建GNU交叉工具链。

下载地址:Arm开发者网站,目前已经更新到了11.2-2022.02版本。

(2)开发构建版本:Linaro每月提供GNU工具链集成构建,为用户提供上游构建的快照。

下载地址: GNU Toolchain Integration Builds,目前最新为 12.0-2022.02-1版本(不稳定版本)。

每次发布都是基于一个Gcc版本的,比如 11.2-2022.02 就是基于Gcc 11.2 的,发布包里:

  • arm-none-eabi:AArch32 bare-metal target(32位裸机开发)
  • arm-none-linux-gnueabihf:AArch32 GNU/Linux target with hard float(32位Linux开发,带有硬件浮点计算单元)
  • aarch64-none-elf:AArch64 bare-metal target(64位裸机开发)
  • aarch64-none-linux-gnu:AArch64 GNU/Linux target(64位linux开发)

其中 arm-none-eabi 是用于裸机开发的,比如stm32就使用这个编译器,而 arm-none-linux-gnueabihf 是用于linux开发的,所以imx6ull使用这个编译器

在发布包里,针对常见的主机平台,这四个工具都相应的提供了windows版本、linux x86_64版本、linux AArch64版本、macOS (x86_64) 版本。

3. 老版本下载

目前官方的发布地址中,编译器版本都比较新:

比较老的版本快照在这里:https://snapshots.linaro.org/components/toolchain/binaries/,从 4.9-2015.05 一直到 10.2-2021.01。

选择arm-linux-gnueabihf编译器:

下载 x86_64 位版本:

右键复制下载链接,使用axel工具下载(sudo apt-get install axel):

axel https://snapshots.linaro.org/components/toolchain/binaries/4.9-2017.01-rc1/arm-linux-gnueabihf/gcc-linaro-4.9.4-2017.01-rc1-x86_64_arm-linux-gnueabihf.tar.xz

4. 交叉编译器安装

交叉编译器下载之后解压,配置环境变量即可完成安装。

解压:

xz -d gcc-linaro-4.9.4-2017.01-rc1-x86_64_arm-linux-gnueabihf.tar.xz
tar -xf gcc-linaro-4.9.4-2017.01-rc1-x86_64_arm-linux-gnueabihf.tar

将其中的bin目录配置到环境变量,在~/.bashrc文件最后添加:

export PATH=$PATH:/home/mculover666/imx6ull/tools/gcc-linaro-4.9.4-2017.01-rc1-x86_64_arm-linux-gnueabihf/bin

环境变量生效:

source ~/.bashrc

安装完成后,检查输入arm是否可以自动补全:

查看版本是否对应:

由于编译器版本比较老,还需要安装额外的库:

sudo apt-get install lsb-core lib32stdc++6

以上是关于i.MX6ULL开发笔记 | 01 - i.MX6ULL Alpha开发板快速上手的主要内容,如果未能解决你的问题,请参考以下文章

i.MX6ULL开发笔记 | 02 - i.MX6ULL启动方式与镜像格式

i.MX6ULL开发板终结者硬件资源说明

i.MX6ULL驱动开发 | 01-Linux内核模块的编写与使用

i.MX6ULL驱动开发 | 01-Linux内核模块的编写与使用

迅为I.MX6ULL终结者开发板资源介绍

i.MX6ULL驱动开发 | 36 - 注册spilcd为framebuffer设备并使用lvgl测试