
i.MX6U嵌入式开发
文章平均质量分 95
i.MX6ULL嵌入式ARM开发板实践
码农爱学习
码农爱学习,专注嵌入式~
展开
-
嵌入式Qt-表格使用测试
本篇介绍Qt中表格组件的使用,需要用到QTableWidget。原创 2022-10-17 22:55:25 · 940 阅读 · 0 评论 -
嵌入式Qt-FFmpeg设计一个RTSP播放器
本篇介绍了通过Qt程序,设计一个RTSP视频播放器,运行在嵌入式Linux平台上,来播放网络视频,并增加启动、暂停、画面翻转等操作按钮。原创 2022-09-13 22:36:52 · 2668 阅读 · 3 评论 -
嵌入式Qt-交叉编译FFmpeg与视频播放测试
本篇介绍了嵌入式Qt播放视频的准备工作:交叉编译FFmpeg库并移植到Linux板子中,并先通过ffmpeg指令测试视频播放效果。下篇将尝试设计Qt界面来结合FFmpeg进行视频的播放。原创 2022-09-05 22:37:05 · 2510 阅读 · 0 评论 -
嵌入式Qt-简易网络监控摄像头
本篇介绍了如何用Qt实现一个网络摄像头功能,通过服务端将USB摄像头转换为一个IP摄像头,Linux板子中的客户端来连接服务器,将摄像头的实时画面显示出来。原创 2022-08-29 21:52:47 · 4339 阅读 · 8 评论 -
嵌入式Qt-控制硬件:滑动条控制RGB灯
本篇介绍了通过Qt中滑条的使用,并使用滑条来控制i.MX6ULL板子中RGB三个颜色LED的亮灭。通过烧录野火自带的系统固件,使用系统提供的LED驱动程序,再配置自己编译的Qt应用程序,来实现整个功能。...原创 2022-08-15 22:20:12 · 1824 阅读 · 1 评论 -
嵌入式Qt-实现两个窗口的切换
本篇介绍了介绍了QStackedWidget的使用,通过这个类,实现了Qt时钟和Qt秒表这两个页面可以随意切换。原创 2022-08-08 22:52:51 · 2451 阅读 · 1 评论 -
嵌入式Qt-做一个秒表
本篇通过一个秒表的实例,介绍了如何使用Qt Creator的UI界面设计功能,进行Qt的开发,并将代码进行交叉编译,放入i.MX6ULL的Linux环境中测试运行情况。原创 2022-08-01 23:40:48 · 2187 阅读 · 0 评论 -
嵌入式Qt-动手编写并运行自己的第1个ARM-Qt程序
上篇文章介绍了如何搭建在Linux开发板中搭建Qt的运行环境,并测试了Qt自带的例程。本篇,来介绍如何自己编写一个Qt程序,并将编译结果放到Linux开发板中运行。1 Windows上编写Qt程序因为Qt是支持跨平台的,所以我们可以先在Windows平台上编写和查看Qt的运行效果,然后再通过交叉编译,编译出ARM Linux平台的可执行文件,最终放到开发板中查看运行结果。Windows上需要安装Qt Creator软件来开发Qt程序,该软件的安装过程,和大多数软件的安装过程都差不多,在此不再演示安装原创 2022-03-04 20:16:47 · 2437 阅读 · 1 评论 -
嵌入式Linux-Qt环境搭建
本编介绍如何在嵌入式Linux开发板上配置Qt运行环境,并进行Qt程序运行测试。原创 2022-02-12 22:29:43 · 5203 阅读 · 3 评论 -
【i.MX6ULL】驱动开发13——电容触摸驱动实践(下)
上篇文章介绍了电容触摸驱动的编写,包括设备树的修改和驱动程序(IIC驱动+中断+input子系统),并通过将触摸坐标值实时打印出来的方式,对触摸功能进行测试。本篇,先来介绍一会测试触摸是库——tslib,使用它可以进行图形化的触摸测试。之后,再回头来分析分析触摸协议上报的原理以及通过input子系统上报的数据的具体含义。文章目录1 tslib的使用1.1 tslib库移植1.1.1 ubuntu上编译tslib1.1.2 开发板上配置tslib1.2 tslib库测试1.2.1 屏幕校准1.2.2 多点原创 2022-01-16 17:09:27 · 899 阅读 · 0 评论 -
【i.MX6ULL】驱动开发12——电容触摸驱动实践(上)
上篇文章介绍了LCD屏幕的使用,这个屏幕还有触摸功能,本篇就来介绍LCD的触摸功能的使用。关于触摸的内容有点多,分为上下两篇进行讲解,本篇先介绍触摸驱动的编写以及将触摸点坐标实时打印出来进行测试,先有一个整体的使用感受,下篇文章再介绍具体的触摸上报协议以及图形化的测试方法。文章目录1 触摸介绍1.1 硬件原理图2 编写触摸驱动代码2.1 修改设备树2.1.1 IIC引脚2.1.2 复位引脚2.1.3 中断引脚2.1.4 IIC设备添加GT9112.2 触摸芯片数据寄存器2.3 编写驱动程序2.3.1 I原创 2022-01-10 23:04:13 · 1415 阅读 · 0 评论 -
【i.MX6ULL】驱动开发11——LCD驱动实践
之前在Linux系统移植时提到过LCD驱动,本篇来看下Linux设备树如何配置LCD驱动。1 知识点首先需要了解一个新的概念:Framebuffer1.1 FramebufferFramebuffer直译即帧缓冲,简称 fb,它是Linux将系统中所有跟显示有关的硬件以及软件集合起来,将底层的LCD虚拟抽象出一个/dev/fbX设备,应用程序可以通过操作/dev/fbX来实现对屏幕的显示控制。NXP官方Linux内核已默认开启了LCD驱动,在dev/目录下可以看到fb0这样一个设备Frame原创 2022-01-10 23:02:47 · 3489 阅读 · 0 评论 -
【i.MX6ULL】驱动开发10——阻塞&非阻塞式按键检测
上篇文章:介绍了linux中的五种I/O模型,本篇,就来使用阻塞式I/O和非用阻塞式I/O两种方式进行按键的读取实验,并对比之前使用输入捕获和中断法检测的按键程序,查看CPU的使用率是否降低。文章目录1 阻塞I/O方式的按键检测1.1 阻塞I/O之等待队列1.2 阻塞I/O程序编写1.2.1驱动程序1.2.2 应用程序1.2 实验2 非阻塞I/O方式的按键检测2.1 非阻塞I/O之select/poll2.2 非阻塞I/O程序编写2.2.1 驱动程序2.2.2 应用程序2.2.2.1 poll方式读取原创 2021-12-09 23:41:58 · 468 阅读 · 0 评论 -
【i.MX6ULL】驱动开发9——Linux IO模型分析
前面两篇介绍按键的文章,无论是用GPIO来读取,还是用中断的方式,其应用程序通过循环读取的方式获取按键值,都会使得CPU的占用率很高。本篇先来介绍Linux中几种的I/O模型,以后使用这类方式进行按键值的读取,可以极大降低CPU的使用率。1 Linux中的I/O模型这里以网络I/O为例进行分析,网络IO的本质是socket的读取,socket在linux系统被抽象为流,对于一次IO访问,以read为例,当一个read操作发生时,它会经历两个阶段:等待数据准备 (Waiting for the dat原创 2021-11-29 23:31:17 · 690 阅读 · 0 评论 -
【i.MX6ULL】驱动开发8——中断法检测按键
上篇,学习GPIO输入功能的使用,本篇,来学习使用中断的方式来检测按键的按下。文章目录1 Linux中断介绍1.1 中断的上半部与下半部1.2 下半部的3种实现方式1.2.1 软中断1.2.2 tasklet1.2.3 工作队列1.3 中断API函数1.3.1 request_irq中断请求函数1.3.2 free_irq中断释放函数1.3.3 irq_handler_t中断处理函数1.3.4 中断使能/禁用函数1.3.5 获取中断号2 软件编写2.1 修改设备树文件2.2 按键中断驱动程序2.2.1 硬原创 2021-11-15 22:56:44 · 1925 阅读 · 0 评论 -
【i.MX6ULL】驱动开发7——按键输入捕获
前面几篇文章,从最基础的寄存器点灯,到设备树点灯,再到GPIO子系统点灯,一步步了解嵌入式Linux开发的各种点灯原理。点灯用到的都是GPIO的输出功能,这篇,通过按键的使用,来学习GPIO输入功能的使用。1 硬件介绍1.1 板子上按键原理图先来看原理图,我板子上有4个按键sw1~sw4:1.1.1 SW1SW1是板子的系统复位按键,不可编程使用1.1.2 SW2、SW3SW2:SNVS_TAMPER1,GPIO5_1平时是低电平,按下去是高电平。SW3:ONOFF它也是系统原创 2021-11-09 22:48:38 · 1088 阅读 · 0 评论 -
【i.MX6ULL】驱动开发6——Pinctrl子系统与GPIO子系统点亮LED
前面的两篇文章(寄存器配置点亮LED与设备树版的点亮LED),其本质都是通过寄存器配置,来控制LED的亮灭。使用直接操作寄存器的方式,是将与LED有关的寄存器信息,直接写到了LED的驱动代码中,这也是一种比较常规的控制方式。但当芯片的寄存器发了变动,就要对底层的驱动进行重写。使用设备树的方式,是将与LED有关的寄存器信息,写到了设备树文件中,这样,当设备的信息修改了,还可以通过设备树的接口函数,来获取设备信息,提高了驱动代码的复用能力。本篇介绍的Pinctrl子系统与GPIO子系统的方式,不需要再直原创 2021-10-19 00:25:00 · 605 阅读 · 0 评论 -
【i.MX6ULL】驱动开发5——设备树原理与点亮LED
上篇文章(【i.MX6ULL】驱动开发4–点亮LED(寄存器版))介绍了在驱动程序中,直接操作寄存器了点亮LED。本篇,介绍另外一种点亮LED的方式——设备树,该方式的本质也是操作寄存器,只是寄存器的相关信息放在了设备树中,配置寄存器时需要使用OF函数从设备树中读取处寄存器数据后再进行配置。文章目录1 什么是设备树1.1 背景介绍1.2 设备树介绍1.3 DTS、DTSI、DTB、DTC2 设备树框架与DTS语法2.1 设备树代码分析2.1.1 imx6ull-14x14-evk-emmc.dts2.1.原创 2021-10-10 09:58:18 · 647 阅读 · 0 评论 -
【i.MX6ULL】驱动开发4——点亮LED(寄存器版)
上篇文章(【i.MX6ULL】驱动开发3–GPIO寄存器配置原理),介绍了i.MX6ULL芯片的GPIO的工作原理与寄存器配置。本篇,就要来实际操作一下GPIO,实现板子上LED灯的亮灭控制。文章目录1 地址映射1.1 MMU介绍1.2 TLB介绍1.3 I/O映射函数ioremap()iounmap()1.4 I/O内存访问函数2 程序编写2.1 LED驱动程序2.1.1 字符设备的基本框架2.1.2 具体完善1)GPIO寄存器宏定义2)GPIO硬件初始化3)字符设备初始化4)LED亮灭控制5)驱动退原创 2021-10-10 09:54:30 · 672 阅读 · 1 评论 -
【i.MX6ULL】驱动开发3——GPIO寄存器配置原理
前面的两篇Linux驱动文章,介绍了字符设备驱动的两种新旧开发方式,并使用一个虚拟的字符驱动来学习字符设备的开发的流程。本篇起,就要来操作Linux开发板的硬件,首先当然是通过经典的点亮LED灯程序,来学习Linux IO口操作的字符设备开发流程。对比STM32的点灯程序,有寄存器操作与库函数操作两种,但其本质都是在配置寄存器。同样,i.MX6ULL也有多种点灯方式:裸机系统:汇编操作寄存器点灯、C语言操作寄存器点灯跑Linux系统:字符驱动LED点灯、设备树驱动LED点灯究其本质,最终都是原创 2021-09-22 23:42:24 · 3861 阅读 · 1 评论 -
【i.MX6ULL】驱动开发2——新字符设备开发模板
上篇文章介绍了字符设备的开发模板,但那是一种旧版本的驱动开发模式,设备驱动需要手动分配设备号再使用 register_chrdev进行注册,加载成功以后还需要手动使用mknod命令创建设备节点,比较麻烦。目前Linux内核推荐的新字符设备驱动API函数,使得驱动的使用更加自动化,本篇就来一起研究下。先看目录:文章目录1 旧字符设备驱动的弊端2 新字符设备驱动原理2.1 分配和释放设备号2.2 字符设备注册2.2.1 cdev字符设备结构2.2.2 cdev_init 函数2.2.3 cdev_add函原创 2021-08-30 23:25:15 · 447 阅读 · 0 评论 -
【i.MX6ULL】驱动开发1——字符设备开发模板
之前的几篇文章(从i.MX6ULL嵌入式Linux开发1-uboot移植初探起),介绍了嵌入式了Linux的系统移植(uboot、内核与根文件系统)以及使用MfgTool工具将系统烧写到板子的EMMC中。本篇开始介绍嵌入式Linux驱动开发。内容较多,先看目录:文章目录1 Linux驱动分类2 Linux驱动基本原理2.1 Linux软件分层结构2.2 Linux内核驱动操作函数2.3 Linux驱动运行方式2.4 Linux设备号2.4.1 设备号的组成2.4.2 主设备号的分配3 字符设备驱动开发原创 2021-08-23 23:33:53 · 947 阅读 · 2 评论 -
i.MX6ULL嵌入式Linux开发6-系统烧写到eMMC与遇到的坑!
前进几篇文章,已经搞定了Linux移植三巨头:uboot、kernel(包含dtb)和rootfs,除了uboot是烧写在SD中的,其它的都是在ubuntu虚拟机的nfs服务器中,运行时必须通过网络将这些文件加载到开发板的内存中运行。本篇就来研究,将这几个文件打包烧写到板子的eMMC中,实现嵌入式Linux系统的烧写,这样,在没有网络的情况下,板子也可以正常运行。系统烧写使用的是NXP官方的MfgTool工具,通过USB OTG口来烧写。文章目录1 MfgTool介绍2 MfgTool烧写步骤2.1原创 2021-08-16 23:51:26 · 2631 阅读 · 0 评论 -
i.MX6ULL嵌入式Linux开发5-根文件系统完善
上篇文章,使用BusyBox构建了基础的嵌入式Linux系统的根文件系统,基本的功能可以正常运行,但在个基础功能上,还要许多地方需要完善。文章目录1 完善根文件系统1.1 创建/etc/init.d/rcS文件1.2 创建/etc/fstab文件1.3 创建/etc/inittab文件2 根文件系统其他功能测试2.1 软件运行测试2.2 开机自启动测试2.3 外网连接测试3 结语1 完善根文件系统上篇说道,Linux系统运行起来后,可以正常的执行"ls"等基础命令,但仔细观察系统运行后的打印信息,有一原创 2021-08-08 18:02:45 · 440 阅读 · 0 评论 -
i.MX6ULL嵌入式Linux开发4-根文件系统构建
前面几篇介绍了uboot的移植与内核的移植,本篇进行根文件系统的构建,这是Linux移植三大组成部分的最后一步,根文件系统构建好后,就构成了一个基础的、可以运行的嵌入式Linux最小系统。文章目录1 根文件系统简介2 BusyBox构建根文件系统2.1 BusyBox简介2.2 搭建NFS服务2.3 修改配置BusyBox2.3.1 修改Makefile添加编译器2.3.2 busybox中文字符支持2.3.3 配置busybox2.4 编译busybox构建根文件系统2.5 向根文件系统添加lib库2.原创 2021-08-02 22:12:34 · 776 阅读 · 3 评论 -
i.MX6ULL嵌入式Linux开发3-Kernel移植
本文进行Linux内核的移植。1 Linux内核简介官网:https://www.kernel.org/NXP 会从linux内核官网下载某个版本,然后将其移植到自己的 CPU上,测试成功后就会将其开放给NXP的CPU开发者。开发者下载 NXP 提供的 Linux 内核,然后将其移植到自己的产品上。本文我们就使用NXP提供的Linux源码,文件名为:linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz22 Linux内核编译编译内核之前需要先在ubuntu上安装lz原创 2021-07-26 23:22:42 · 868 阅读 · 2 评论 -
i.MX6ULL嵌入式Linux开发2-uboot移植实践
上篇文章,我们介绍了如何使用NXP原厂的uboot进行编译和烧写,将uboot运行在自己的开发板上。NXP原厂的uboot,直接烧录到我的开发板中,LCD的驱动是不正常的,需要进行修改。本篇我们就来继续研究uboot,使得uboot能匹配我们自己的开发板。修改uboot以匹配开发板的方式有两种,一种是在NXP原厂开发板i.MX 6ULL EVK的文件上进行修改,另一种仿造NXP的开发板文件,添加自己的开发板文件。为了能更多的了解uboot,我们使用代码改动较大的第二种方式进行uboot的移植。在修改u原创 2021-07-19 21:55:36 · 1110 阅读 · 5 评论 -
i.MX6ULL嵌入式Linux开发1-uboot移植初探
本系列教程以i.MX6ULL处理器的ARM开发板为实验基础,学习记录嵌入式Linux开发的各种知识与经验,主要内容包括嵌入式Linux移植,嵌入式Linux驱动开发,嵌入式Linux应用开发等。本系列教程将以野火的i.MX6ULL eMMC开发板为硬件基础,以野火EBF6ULL Pro开发板教程和正点原子i.MX6ULL阿尔法开发板教程为参考,进行学习实践。1 嵌入式Linux移植概述Linux 的移植主要包括3部分:移植bootloader 代码, Linux 系统要启动就必须需要一个 boo原创 2021-07-13 00:08:02 · 1437 阅读 · 3 评论