Licheepi Nano屏幕驱动并输出打印信息

news/2024/12/4 19:08:20/

Licheepi Nano买回来好长时间,没咋玩,最近看了一个利用F1C100S自制迷你电脑的博客,里面主要参考的就是Licheepi Nano。我打算先在Licheepi Nano上完成屏幕操作、Debian文件系统和USB键盘等内容,这里介绍怎样利用Licheepi Nano外接屏幕,并且将信息可以输出到屏幕上。(对了,我的屏幕并不是官方的,实在tb上买的一块40脚-rgb-4.3寸屏幕,因为Licheepi Nano板载屏幕背光驱动,买了直接插就能用)

文章目录

  • 整体思路
  • 一、Linux源码中设备树修改
    • 1.1下载内核核配置文件
    • 1.2设备树修改
    • 1.3编译make
  • 二、u-boot修改
    • 2.1u-boot下载核配置
    • 2.2可视化配置
    • 2.3编译make
  • 三、实际效果
  • 附录:参考博客和后续想移植的


整体思路

这里讲一下编译linux内核和u-boot的思路,不然很容易弄混。去官网或github下载linux内核或u-boot之后,最理想的状态就是直接make就能生成我们需要的文件,但是有那么多系统,那么多板子,所以需要利用其自带的配置文件或者自己去找配置文件,替换了.config,之后再用对应的编译器去make。

一、Linux源码中设备树修改

首先,要对内核文件进行修改和编译,具体如下:

1.1下载内核核配置文件

🍬🍬🍬下载内核文件
github上的仓库不见了,需要自己去Linux官网下载,内核文件下载参考->链接: 大佬博客,该博客里面也给出了Licheepi Nano的配置文件。我这里用的是之前github仓库中的4.14内核。

下载licheepi nano配置文件
下载配置文件并复制到源码目录下,然后改为.config

mv lichee_nano_linux.config .config

在这里插入图片描述
改为.config之后,进行可视化配置,

make ARCH=arm menuconfig
//如果没有其他的需求,直接保存即可

1.2设备树修改

🍬🍬🍬修改设备树支持屏幕
内核配置之后不能直接编译,需要对 源码目录/arch/arm/boot/dts 中的设备树文件进行修改,Licheepi Nano的设备树文件为suniv-f1c100s-licheepi-nano.dts。打开后添加panel节点:
在这里插入图片描述
其中,我的屏幕是4.3寸,480X272大小的屏幕,所以设置compatible = qiaodian,qd43003c0-40”, “simple-panel”

还要添加:
在这里插入图片描述
保存之后,然后,make,下面:

1.3编译make

我的工具链是gnueabihf,一般是gnueabi

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8

make之后,在 源码目录/arch/arm/boot/dts 目录下生成suniv-f1c100s-licheepi-nano.dtb文件,还有 源码目录/arch/arm/boot 目录下的zImage拷贝到TF卡的第一分区(分区方法见前文)。

二、u-boot修改

2.1u-boot下载核配置

🍬🍬🍬u-boot下载和配置
直接从github中获取u-boot:

git clone https://github.com/Lichee-Pi/u-boot.git -b nano-v2018.01

谢天谢地,Licheepi Nano的配置文件licheepi_nano_defconfig文件在configs里面。配它!

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_defconfig

在这里插入图片描述

2.2可视化配置

🍬🍬🍬可视化配置
然后,进行可视化配置,这里需要进一步改写两个参数。

make ARCH=arm menuconfig

按y勾选boot arguments 和bootcmd两个选项。

1.boot arguments填入:

console=ttyS0,115200 panic=5 root=/dev/mmcblk0p2 rootwait rw  

其中ttyS0代表着串口0输出信息,如果要想使用屏幕打印启动信息需要添加:

console=tty1 console=ttyS0,115200 panic=5 root=/dev/mmcblk0p2 rootwait rw  

其中,tty1大概讲一下,tty代表着Linux系统的终端控制,我们都知道屏幕驱动在linux中一般都是设备节点/dev/fb0,一般设备驱动fb0会和tty1即一号终端有联系,添加console=tty1之后,启动信息就会同时打印到屏幕和串口0。
2.bootcmd填入: 一行话哦~

load mmc 0:1 0x80008000 zImage;load mmc 0:1 0x80c08000 suniv-f1c100s-licheepi-nano.dtb;bootz 0x80008000 - 0x80c08000;

这个是Licheepi Nano的一些启动参数,不详细讲了。

附图:
在这里插入图片描述

可视化设置好之后,Save,保存为.config(默认的),之后编译:

2.3编译make

//我的工具链是gnueabihf,一般是gnueabi
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j8
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8

编译完生成u-boot-sunxi-with-spl.bin文件,将该文件拷贝到tf卡,注意:这里是sdb不是sdb1也不是sdb2。

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdb bs=1024 seek=8

三、实际效果

根文件系统的制作和拷贝这里就不介绍了,我这里是制作的Debian系统,最后附录给出大佬的博客链接。
插卡启动!插卡启动!插卡启动!
理论上启动信息会输出到你的串口调试助手和屏幕(这个图我没拍)。
由于Licheepi Nano没有任何输入设备,没有键盘还不能直接操作,但是可以在串口助手通过如下几条指令将一些信息打印到屏幕

ls >/dev/tty1	//注意千万不要给了fb0
ls >/dev/fb0	//错误的,这样只会在屏幕的最上边叠加一些东西。

测试图片:

在这里插入图片描述

在这里插入图片描述


附录:参考博客和后续想移植的

1、内核编译:
https://blog.csdn.net/weixin_41544435/article/details/124459930
https://www.cnblogs.com/twzy/p/15355842.html
2、u-boot移植:
https://blog.csdn.net/weixin_41544435/article/details/124459930
https://www.cnblogs.com/twzy/p/14865952.html
3、Debian文件系统制作(强烈推荐)
https://www.cnblogs.com/twzy/p/15160824.html
4、USB移植(下一步)
https://www.cnblogs.com/twzy/p/15243838.html


http://www.ppmy.cn/news/1015638.html

相关文章

企业文件传输软件安全性分析与对比

随着科技的日新月异和应用领域的日益广泛,文件传输软件在人们生活和工作中发挥的作用越来越重大,因此出现了许多不同种类的文件传输软件。但是,随着网络安全问题的严峻,如何确保文件传输软件的安全性成为了一个亟待解决的问题。所…

论文阅读---《Unsupervised Transformer-Based Anomaly Detection in ECG Signals》

题目:基于Transformer的无监督心电图(ECG)信号异常检测 摘要 异常检测是数据处理中的一个基本问题,它涉及到医疗感知数据中的不同问题。技术的进步使得收集大规模和高度变异的时间序列数据变得更加容易,然而&#xff…

每日一学:什么是 Harbor ?

目录 什么是 Harbor ? 一、Harbor 的优势 二、Harbor 架构构成 三、Core services 这是 Harbor 的核心功能 什么是 Harbor ? Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Reg…

前端根据url在线预览功能

文章目录 加载脚本WORDexcelpdfimgvideo 加载脚本 // wordawait this.utils.loadScript(https://unpkg.com/promise-polyfill/dist/polyfill.min.js)await this.utils.loadScript(https://unpkg.com/jszip/dist/jszip.min.js)await this.utils.loadScript(https://unpkg.com/do…

C++初阶——函数重载

前言:C中除了可以在不同的命名空间中使用同名函数,还有一种支持在同一个作用域中同名函数的方式——函数重载。 函数重载 一.什么是函数重载?二.函数重载的3种规则三.特殊情况 一.什么是函数重载? C允许同样同一作用域中声明几个功…

维深(Wellsenn):2023中国消费端VR内容开发商调研报告(附下载

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 国内互联网大厂商入局VR,字节跳动、网易表态明确。字节跳动2021年收购国内头部VR硬件厂商PICO后,加速构建VR内容生态,2021年 成立海南创见未来当前已推出VR视频应用…

DP与EDP接口协议学习

文章目录 一、概念介绍DP----DisplayPort,一种标准化数字式视频接口&协议EDP---Embedded DisplayPort,DP协议在嵌入式领域拓展DP和HDMI对比----HDMI当前应用更广,DP是PC领域推出协议 二、DP&EDP相关协议分析三条数据通路Manlink 、Au…

海思uvc_app源码学习笔记

文章目录 前言流程hicamerahistreamhiuvc 模块分析总结 前言 海思mpp例子里面的uvc_app源码学习笔记。 看了半天,以为是3516读取usb摄像头数据的,结果是实现一个usb摄像头的。可以搞个公对公的usb线测试下。 大概流程是从摄像头获取图像,进行…