i.MX6ULL嵌入式Linux开发3-Kernel移植

本文将引导您完成安装Linux内核的过程。
首先,可以从官方网站(kernel.org/)获取Linux内核的介绍。
NXP从Linux官方网站下载特定版本并移植到自己的CPU上,确认测试通过后将开放给NXP的CPU开发者。
开发人员下载NXP提供的Linux源代码并安装它以满足他们的生产需求。
本文使用NXP提供的Linux源代码。
接下来,Ubuntu操作系统中必须安装某些库(例如lzop和ncurses库)以支持内核编译。
在Ubuntu环境中创建一个文件夹,插入下载的Linux内核压缩包并解压。
解压完成后,通过创建一个名为build.sh的新脚本文件来执行编译过程。
在脚本中输入相应的命令,授予脚本适用的权限并运行以自动启动编译过程。
编译后的Linux内核生成一个zImage文件,该文件是Linux镜像文件。
同时在arch/arm/boot/dits目录下创建了几个DTB文件。
vmlinux、Image、zImage和uImage的区别是vmlinux编译生成的主要内核文件,zImage是gzip压缩的镜像文件,而uImage是老版本uboot特有的镜像文件,很少使用。
现在。
在Linux内核编译过程中,会创建一系列文件,其特殊结构如下。
编译完成后,会在arch/arm/boot目录下创建zImage文件,并在arch/arm/boot/dts目录下创建几个.dtb文件。
接下来将编译好的zImage和imx6ull-14x14-evk.dtb复制到Ubuntutftp目录下,用uboottftp命令下载到开发板。
在uboot中设置bootargs环境变量后,用命令将zImage和imx6ull-14x14-evk.dtb下载到开发板并启动。
如果启动过程中出现根文件系统丢失错误,则需要在bootargs中指定根文件系统的路径。
如果不指定或者路径设置错误,启动Linux内核后也会出现同样的错误信息,最终导致内核崩溃。
为了更好地了解Linux内核,您可以参考官方开发板设置,将自己的开发板添加到Linux内核中。
这包括制作imx_v7_mfg_defconfig文件的副本并将其重命名为您自己的开发板名称。
的更新Makefile并添加对新设备树文件的引用创建build_myboard.sh脚本并编写命令编译zImage和imx6ull-myboard.dtb文件以完成Linux内核定制。

正点原子嵌入式linux驱动开发——Linux多点电容触摸屏

探索Linux世界中多点电容式触摸屏驱动程序的开发,ATK7016屏幕示例展示了该技术的高级应用。
电容式触摸屏是具有多点触控和无压力响应的现代设备的首选。
在ALIENTEK的RGBLCD屏中,FT5426等驱动IC通过I2C接口与TFLCD+ATK-7016触摸屏结构紧密配合,实现数据交换。
作为一个强大的驱动程序,FT5426支持5点触摸并通过INT中断传输数据。
寄存器不仅用于启动,也是获取触摸信息的关键。
电容式触摸驱动器的构建涉及多个模块,其中输入子系统起着核心作用,由此引出对多点电容式触摸协议的分析。
早期的Linux内核对多点触控的支持有限,但随着MT(Multitouch)协议的出现,TypeA和TypeB这两种模式都为触控体验带来了更多的可能性。
在实际应用中,TypeB特别关注硬件跟踪,例如FT5426,通过时隙机制实时更新联系信息ABS_MT_SLOT和ABS_MT_TRACKING_ID是上报的重要事件。
TypeB驱动通过input_mt_slot指定每个slotABS_MT_TRACKING_ID用于识别联系人的添加和删除,而TypeA则通过input_sync同步信息并区分每个联系人以减少数据流量。
示例代码提供了对TypeA和TypeB接触报告序列的深入分析。
TypeA与st1232.c中的st1232_ts_irq_handler函数一样,首先获取接触坐标,然后按顺序报告它们,并在每个点之后调用input_mt_sync。
TypeB报告通过ili210x.c中的ili210x_report_events函数一一协调,最终发送SYN_REPORT。
MT协议的核心是输入子系统通过ABS_MT事件报告多点触摸坐标,如ABS_MT_POSITION_X/Y,而输入设备的实例化是通过input_mt_init_slots,其参数包括input_dev、槽号和相关标志。
在驱动程序代码中,诸如input_mt_report_slot_state和input_report_abs之类的函数非常重要,因为它们负责报告触摸事件和指针模拟状态管理。
编写驱动框架时,需要注意I2C接口配置、中断处理以及与输入子系统的交互。
驱动程序实现涉及硬件级别,例如4引脚连接、I2C接口配置以及中断和复位引脚管理。
实验部分需要配置FT5426的中断和复位,创建设备节点,保证I2C通信的正常工作。
综上所述,Linux多点电容触摸驱动开发是一项技术密集型工作,涉及硬件配置、协议理解、中断管理以及内核接口的高效使用。
从GT9147驱动更换到FT5426集成,每一个细节都决定了触控体验的流畅度。
深入研究驱动代码,结合芯片数据手册,带您进入触摸驱动的神秘世界。