IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式Linux 学习笔记 (一) fbtft使用笔记 -> 正文阅读

[嵌入式]嵌入式Linux 学习笔记 (一) fbtft使用笔记

前言

在断断续续学习了比较长时间的嵌入式Linux之后,我着手准备自己设计一款Linux的小电脑,在设计硬件之前,我需要掌握一些软硬件的使用,比如fbtft用于驱动小LCD屏幕,usb摄像头,2.4Gwifi模块等
我对Linux还不算太熟悉,所以记录下这段时间的学习过程,加以巩固
刚开始所有的实验都基于比较成熟的硬件平台,正点原子Linux开发板,之前也是用这款开发板进行学习的,后面再迁移到自己做的板子上

参考资料

软硬件平台

  • ubuntu采用正点原子的虚拟机镜像,uboot,kernel和rootfs均采用正点原子教程镜像,内核版本4.1.15,采用网络方式挂载
  • 开发板采用正点原子linux开发板,屏幕用的中景园2.4寸 240*320 驱动ILI9341

配置过程

根据fbtft驱动配置设备树

fbtft的驱动在drivers->staging->fbtft中,找到我这款屏幕的驱动代码,发现设备树节点名称需要是 “ilitek,ili9341”

在这里插入图片描述
然后需要自己选定要用哪几个引脚,完成pinctrl的配置
这款屏幕是SPI接口的,除了SCL和SDA引脚外还需要配置RES,DC,CS和BLK引脚
查看原理图,我设置DC用GPIO_1,RES用GPIO_2,CS还用ECSPI3_SS0,BLK背光控制用和正点原子LCD相同的PWM引脚 BLT_PWM
这时候我们还不知道这些引脚到底对应芯片的哪几个脚,于是需要继续查看原理图和内核源码
在这里插入图片描述
在核心板的原理图上发现了这些引脚的具体名称,接下来查看imx6ul的gpio驱动部分
在这里插入图片描述
最后在 imx6ul-pinfunc.h 里发现了这些引脚的宏定义,以GPIO1为例,可以看到GPIO1_IO01有很多复用功能,我们需要将他配置为GPIO最基本的功能
在这里插入图片描述
其他引脚也类似,将设备树中以前的pinctrl节点注释掉,添加新的节点,0x10b0是GPIO输出的一般配置,0x10b1一般用于配置复用引脚
在这里插入图片描述
然后配置ecspi3设备树节点,pinctrl选择上面配置好的节点,按照我的理解pinctrl只是把对应的引脚初始化了,具体哪个引脚是什么功能,比如CLK或者RST等还需要在ecspi节点中选择用哪个引脚,比如RST用了GPIO1_IO02,于是设备树中就有reset-gpios = 这一句。ili9341节点的属性是参照官方wiki中的来配置的
在这里插入图片描述

这是背光引脚的配置
在这里插入图片描述
在这里插入图片描述
一切修改完后,记得在设备树中搜索是否有重复节点,有没有把同一个引脚配置成不同的功能

修改内核选项

运行make menuconfig 来配置内核选项 或者./mx6ull_alientek_emmc.sh来配置并且编译内核
其中./mx6ull_alientek_emmc.sh中有四行


make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_alientek_emmc_no_lcd_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j16

第一行清理工程,第二行用事先保存好的配置来更新并覆盖掉内核根目录下的.config文件
第三行打开一个图形界面,看看还有没有什么要配置的,第四行编译所有,包括内核镜像和设备树

如果只改动了设备树,则只需要编译设备树 make dtbs ,把生成的dtbs拷贝到板子上就行了

关闭板子自带的LCD驱动,把光标指的地方关闭就可以了
在这里插入图片描述
在staging drivers里选中small TFT display的支持
在这里插入图片描述
选择对应的驱动芯片
在这里插入图片描述
最后可以将配置重新保存一下,省得下次配置又被覆盖了,每次运行./mx6ull_alientek_emmc.sh之前的.config就会被清理

在这里插入图片描述
这样内核就配置完成了

修改uboot参数

在uboot中更改启动选项为网络启动,方便之后修改,增加console=tty1,这样开机后屏幕上就会出现log信息
其中10.100是ubuntu ip,10.150是板子ip
在这里插入图片描述
抄下官方教程,下面这么设置后就可以板子插键盘操作LCD终端了
在这里插入图片描述

setenv bootargs 'console=tty1 console=ttymxc0,115200 root=/dev/nfs  nfsroot=192.168.10.100:/home/alientek/linux/nfs/rootfs,proto=tcp rw ip=192.168.10.150:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off'
saveenv

测试

屏幕接上板子,开机后出现log,这是最开始拍的,还没有设置rotate参数
可以找到/dev/fb0
在这里插入图片描述
运行命令

cat /dev/urandom > /dev/fb0

屏幕有花屏就是对的
在这里插入图片描述
用mplayer播放视频测试下
命令行参考
https://blog.csdn.net/xiaolong1126626497/article/details/124313017
mplayer -cache 8192 -zoom -x 320 -y 240 -framedrop gong.mp4
大功告成
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:00:44  更:2022-08-06 11:03:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:10:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码