iMX6ul开发指导

环境描述

硬件型号: Freescale i.MX6 Ultralite (MCIMD6Y2CVM08AB XAD1910);
软件版本: ubuntu18.04
内核版本: BSP-Yocto-i.MX6UL-PD19.1.1

参考资料

  1. Phytec官网下载地址:phyCORE-i.MX 6UL/ULL
  2. FtpServer:/pub/SoftWare/Linux/Bsp-Yocto-i.MX6UL/
  3. Wiki资料:phyCORE-i.MX6UL
  4. BareBox资料:User manual
  5. i.Mx Linux学习资料:[野火]i.MX Linux开发实战指南

环境搭建

软件安装

  1. Eclipse安装,安装步骤参考Eclipse 安装环境指导 / Eclipse setup guide。
  2. Eclipse GDB调试,参考Development Environment Guide Debugging an Example Project 章节。
  3. Qt安装,安装步骤参考phyCORE-i.MX6UL Qt 开发环境配置。
  4. FSearch,类everything官网地址。

硬件设置

  1. 开发板从网络启动参考开发板从网络启动 / boot board from network。

模块开发

内核编译

  1. 操作步骤参考文档怎样用SDK编译内核模块 / how to use SDK compile kernel module。
  2. 内核源码下载(下载地址)完成后,也可以通过git来管理内核源码,执行命令git clone git://git.phytec.de/linux-mainlinegit checkout v4.14.184-phy1加载内核源码,执行编译步骤,内核源码解压位置/opt/kernel/linux-mainline-4.14.184-phy1
  3. 在解压文件加下执行source/opt/phytec-yogurt/BSP-Yocto-i.MX6UL-PD19.1.1/environment-setup-cortexa7hf-neon-vfpv4-phytec-linux-gnueabi执行make ARCH=arm imx_v6_v7_defconfig出现如下错误:

在这里插入图片描述

  1. 解决办法:sudo apt install build-essential

  2. 执行make menuconfig 出现如下错误:
    iMX6ul开发指导_第1张图片

  3. 执行make ARCH=arm imx_v6_v7_defconfig命令(注意:命令不能写错,否则报下图所示错误)
    在这里插入图片描述

  4. 执行 make ARCH=arm zImage 出现如下错误:
    在这里插入图片描述

安装lzop工具,执行sudo apt-get install lzop
8. 镜像编译完成后提示如下信息:
iMX6ul开发指导_第2张图片

设备树

  1. 设备树更改,以uart为例,设备树配置在 imx6ul-phytec-segin.dtsi 文件中,设备使能在文件 imx6ull-phytec-segin-ff-rdk-nand.dts 文件中,如下图所示iMX6ul开发指导_第3张图片

  2. 设备树编译
    make imx6ull-phytec-segin-ff-rdk-nand.dtb

内核升级

注意:开发板运行在BareBox下进行升级

  1. 创建tftp服务器,IP地址为192.168.3.10。
  2. 将内核文件zIamge、设备数文件imx6ull-phytec-segin-ff-rdk-nand.dtb放置于根目录下。
  3. 进入BareBox下,依次执行下列命令:

ubiattach /dev/nand0.root
ubiupdatevol /dev/nand0.root.ubi.kernel /mnt/tftp/zImage
ubiupdatevol /dev/nand0.root.ubi.oftree /mnt/tftp/imx6ull-phytec-segin-ff-rdk-nand.dtb

模块编译

  1. 内核模块编译,Makefile文件如下,
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ujw8EV7l-1609055314369)(/api/project/8088668/files/22358982/imagePreview)]

执行Makefile前需导入环境变量,命令如下
source/opt/phytec-yogurt/BSP-Yocto-i.MX6UL-PD19.1.1/environment-setup-cortexa7hf-neon-vfpv4-phytec-linux-gnueabi
2. 执行make

模块加载

  1. 对生成的.ko文件执行insmod,出现如下错误:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RpFeJfuA-1609055314370)(/api/project/8088668/files/22358993/imagePreview)]
    错误原因(编译环境内核版本与开发板运行内核版本不一致)可参考链接。
    解决办法:升级开发板内核,保持编译环境与运行环境内核版本一致。

模块调用

  1. 参考链接:Writting a Linux Kernel Module

应用开发

  1. 开机自启动程序,参考开机自启动一个应用/系统服务 / start a service or application when boot。
  2. Mqtt移植,参考资料:MQTT协议。
  3. Linux+cMake构建工程 未完待续
  4. 串口应用编程(三种模式,详细讲解参考《UNIX环境高级编程 第二版》第18章 终端I/O)
  • 终端属性描述可参考ZLG产品用户手册。
  • 在串口应用开发中,如果不是开发终端,只是数据传输,不处理串口数据,串口传输模式设置为原始模式,代码如下
    options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); options.c_oflag &= ~OPOST;
    注意:此时串口打开方式要设置为阻塞模式,否则每次只能读取一个字节。设置方式如下open(fd, O_RDWR | O_NOCTTY);

你可能感兴趣的:(iMx6ul,linux,内核,嵌入式,ubuntu)