嵌入式开发实践系列文章 - 目录https://blog.csdn.net/tcjy1000/article/details/123701482

平台

操作系统:win10 64位

虚拟机:VMware® Workstation 14 Pro

虚拟机操作系统:ubuntu 18.04 64位  ubuntu-18.04.2-desktop-amd64.iso

开发板:迅为 iMX6Q

前言

最近一直想加强一下嵌入式Linux系统的开发,买了几本书,看了感觉效果不是很大,还是需要多与实践相结合。

之前搞过Atmel的ARM9+Linux,但现在Linux内核版本已经很高很新了,现在想搞个较新的,在网上找了找,选择了IMX6Q(四核,ARM Cortex-A9架构),除了跑Linux,还可以运行Android,可以让自己的了解更多。

买了开发板,要了开发板的资料,自己还是想一步步入手,一步步入门。

因此,还是从开发环境搭建开始研究。

搭建环境

(1)安装虚拟机,有免费的【Oracle VM VirtualBox】,还有付费(破解)的【VMware® Workstation】,这里选择VMware14。

(2)安装ubuntu18.04(较新)的Linux主机,用于嵌入式交叉编译环境的开发。

(3)下载IMX6Q的官方的代码。目前主要关注uboot,linux内核(目前NXP官方维护的)。

【imx内核源码】:

git clone https://source.codeaurora.org/external/imx/linux-imx

【imx uboot】

git clone https://source.codeaurora.org/external/imx/uboot-imx

现在大型的软件工程,git是一个不错的代码与版本管理工具。

(4)进入git clone下来的uboot目录,默认的分支应该是master,通过命令切换到自己想要的分支。

git branch -va(查看所有的本地与远程分支)

git checkout -b imx_v2018.03_4.14.98_2.0.0_ga  origin/imx_v2018.03_4.14.98_2.0.0_ga(切到 linux 4.14.98 这个分支上)

git pull(同步一下分支)

(5)如果是新安装的ubuntu18.04系统,环境还需要配置一下,否则直接编译,连make命令都可能不识别。

这里我安装了uboot编译需要的软件包(可以不断的编译与尝试,ubuntu会提示安装):

sudo apt-get install gcc-arm-linux-gnueabi

sudo apt-get install git

sudo apt install make

sudo apt install gcc

sudo apt install bison

sudo apt install flex

sudo apt-get install libncurses5-dev

sudo apt-get install libssl-dev

sudo dpkg-reconfigure dash(这里选择【取消】,意思是选用sh,而不是dash)。

(6)编译uboot-imx

首先在uboot-imx根目录下:

ls configs

看一下开发板的板子配置文件,找一个与现有开发板(IMX6Q,这里Q应该是四核的四的意思)型号接近的。我这里先选择一个看看环境是否正常。

make imx6q_icore_nand_defconfig

make menuconfig(图形配置,如果不更改,可以直接点【save】保存,保存 .config,退出)

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-(ubuntu 直接apt安装的,可以用)

第一次编译,很可能会不成功,如果不成功,看一下错误原因。

我遇到的错误为:

LD u-boot

arch/arm/mach-imx/built-in.o: In function `arch_preboot_os':

/home/imx6/share/uboot-imx/arch/arm/mach-imx/cpu.c:354: undefined reference to `ldo_mode_set'

Makefile:1304: recipe for target 'u-boot' failed

查看了一下报错的文件,/home/imx6/share/uboot-imx/arch/arm/mach-imx/cpu.c,发现这个错误,是一个函数没有定义或是头文件没有包含进来,造成函数名不识别的问题。

我的解决是找到这个宏 【CONFIG_LDO_BYPASS_CHECK】 ,在配置文件里去掉这个宏定义即可。

通过查看.config文件,发现了:CONFIG_LDO_BYPASS_CHECK=y(有效),因此,可以make menuconfig配置。

void arch_preboot_os(void)
{
#if defined(CONFIG_PCIE_IMX)imx_pcie_remove();
#endif
#if defined(CONFIG_SATA)sata_remove(0);
#if defined(CONFIG_MX6)disable_sata_clock();
#endif
#endif
#if defined(CONFIG_LDO_BYPASS_CHECK)ldo_mode_set(check_ldo_bypass());
#endif
#if defined(CONFIG_VIDEO_IPUV3)/* disable video before launching O/S */ipuv3_fb_shutdown();
#endif
#ifdef CONFIG_VIDEO_GIS/* Entry for GIS */mxc_disable_gis();
#endif
#if defined(CONFIG_VIDEO_MXS)lcdif_power_down();
#endif
#if defined(CONFIG_VIDEO_IMXDCSS)imx8m_fb_disable();
#endif
}

重新执行make menuconfig,去掉这个宏 【CONFIG_LDO_BYPASS_CHECK】相关的配置,

不勾选这个选项即可:【】Enable the LDO bypass checking and settting

再次编译uboot-imx通过。

小结

这样,uboot-imx正常的编译通过,和之前用过的ARM9处理器,编译方式大同小异。

但这仅仅是开始,还没有真正的了解这个IMX6Q的驱动与应用,还需要多看数据手册、原理图、教程文档、网络资源等。

更重要的是,重视每次的错误与失败,这都是成功的积累。

接下来,继续研究Linux内核的编译环境。

【迅为iMX6Q】开发板:uboot-imx编译相关推荐

  1. 迅为IMX6Q开发板独立文档和程序源码汇总158个

    迅为IMX6开发板支持五种系统Android4.4/6.0/7.1系统:Linux + Qt4.7/5.7系统:  Ubuntu12.04/16.04系统:Debian 9.9 系统:Yocto系统( ...

  2. imx6q 开发板_mplayer移植-迅为IMX6Q开发板

    0 1 mplayer简介 mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布.它资源占用率低,无论是音频还是视频方面,支持的格式相当全面,支持的输出设备也很多,可以在各种主流操作系统中 ...

  3. mplayer移植-迅为IMX6Q开发板

    0 1 mplayer简介        mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布.它资源占用率低,无论是音频还是视频方面,支持的格式相当全面,支持的输出设备也很多,可以在各种 ...

  4. 迅为IMX6Q开发板在道路交通信号控制系统解决方案中的应用

    智能交通综合管控平台是为交通指挥系统服务的统一信息平台,以信息技术为主导,以计算机通信网络和智能化指挥控制管理为基础,建成集高新技术应用为一体的智能化指挥调度集成平台,实现信息交换与共享.快速反应决策 ...

  5. Linux单独编译设备树,迅为IMX6Q开发板-非设备树内核-单独编译内核驱动

    内核驱动不仅可以将驱动编译到内核中,还可以动态的编译内核驱动.本文档介绍如何以模块的方式编译内核驱动. 要动态的编译内核,首先需要将内核源码编译通过,内核的编译请参考使用手册第五章. 9.5.2.1 ...

  6. 迅为IMX6Q开发板上移植mplayer

    好久不见,最近真的是太忙了~最近有很多小伙伴也在问我开发板Linux系统要怎么播放音视频,为了弥补大家,所以今天写一个长文来和大家一起探讨下. 01.mplayer简介 mplayer是一款开源多媒体 ...

  7. 迅为IMX6Q开发板 Buildroot文件系统mqtt测试

    以开发板作为服务器,Ubuntu 开俩个终端作为订阅者和发布者进行测试 我们打开/etc 下面的 mosquitto.conf 文件,添加 user root.如下图所示: 使用以下命令启动开发板的 ...

  8. OTA在线升级Android7.1系统迅为IMX6Q开发板支持SATA,PCIE,EIM总线,WIFI蓝牙

    iTOP-IMX6 开发平台是基于 NXP 的 IMX6 系列芯片开发的产品,该产品广泛应用于车载系统.数字标牌.金融设备.人机界面.机上娱乐系统.工业控制.医疗设备.仪器仪表.智慧城市.商业电子等多 ...

  9. 编译linux系统到开发板,迅为3399开发板Linux固件编译-Ubuntu16系统编译

    1 获取 Ubuntu 源码 Ubuntu.Linuxqt 和 debian 系统共用一套源码,获取 Ubuntu 源码具体参考"13.1.1 章节 获取 Linux 源 码". ...

  10. 迅为3399开发板Linux固件编译

    Linux 系统编译 13.1.1 获取 Linux 源码 首先从网盘下载迅为提供的 Linux 源码,在光盘的"iTOP-3399 光盘资料\20201112(使用最新日期即可)\05Li ...

最新文章

  1. 斯坦福SAIL负责人Christopher Manning:语言理解是人机灵魂的桥梁
  2. 阿里达摩院包揽AI领域六大权威榜单冠军:用人类的学习方式超越人类
  3. 刚换工作,记录下心得
  4. oracle12cnolog,oracle12c 服务占用内存太大,oracle调整内存解决方法
  5. Java生鲜电商平台-订单配送模块的架构与设计
  6. android Context
  7. Android 系统(135)---Android anr 分析步骤总结
  8. 一个家庭女人太强势,这个家庭会怎样?
  9. python开始_python开始的一天
  10. Metasploit应用举例
  11. NVIDIA显卡驱动的重装
  12. 多目标水母搜索(MOJS)算法(Matlab实现)
  13. pageX,pageY,screenX,screenY,clientX,和clientY,offsetX ,offsetY,layerX,layerY的使用 和 区别
  14. elasticsearch服务自动断掉
  15. java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍
  16. 开源 微商分销系统 php,[PHP程序] 微商新零售分销平台源码Thinkphp内核 产品营销推广神器...
  17. 一只喵的西行记-3 唱斑马斑马的黑马
  18. Java数据结构与算法---斐波那契数列Fibonacci
  19. html编辑器增加超级链接,ueditor1.2.1修改超链接默认值,ueditor编辑器新窗口打开连接...
  20. Java工程师的职业规划,java迭代器实现原理

热门文章

  1. 极速pdf文件打印时此计算机未连接到网络,PDF文件不能打印的五种解决方案
  2. Makefile 语法入门
  3. 计算机专业英语教学反思,高中英语课堂教学反思
  4. 【Java课堂】接口详解
  5. 总有人会偷看你的朋友圈
  6. Python批量压缩图片
  7. opencv 将两张图片显示到一幅图片中
  8. 计算机电源启动时序,控制电源启动及关断时序
  9. 卡尔曼滤波器的实用方法及其实现方法
  10. CQOI2016游记