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

news2024/12/23 10:01:50

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.coloradmin.cn/o/849220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java进阶(1)——JVM的内存分配 反射Class类的类对象 创建对象的几种方式 类加载(何时进入内存JVM) 注解 反射+注解的案例

目录 引出java内存分配java内存分布概略图堆方法区常量池 创建对象内存分配 反射class文件的底层类加载顺序1.检查2.开辟静态资源空间3.常量池4.其他...5.创建一个唯一的类的对象获取Class对象的几种方式 创建对象几种方式new 看到new : new Book()反射 Class.forName(“包名.类…

断路器回路电阻试验

试验目的 断路器回路电阻主要取决于断路器动、 静触头的接触电阻, 其大小直接影响正常 运行时的发热情况及切断短路电流的性能, 是反应安装检修质量的重要数据。 试验设备 回路电阻测试仪 厂家: 湖北众拓高试代销 试验接线 对于单断口的断路器, 通过断口两端的接线…

8年测试经验,接口测试总结,测试进阶之路一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、什么是接口测试…

开源数据库Mysql_DBA运维实战 (部署服务篇)

前言❀ 1.数据库能做什么 2.数据库的由来 数据库的系统结构❀ 1.数据库系统DBS 2.SQL语言(结构化查询语言) 3.数据访问技术 部署Mysql❀ 1.通过rpm安装部署Mysql 2.通过源码包安装部署Mysql 前言❀ 1.数据库能做什么 a.不论是淘宝,吃鸡,爱奇艺…

k8sday02

第四章 实战入门 本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。 Namespace ​ Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。 ​ 默认情况下&…

机器学习实战1-kNN最近邻算法

文章目录 机器学习基础机器学习的关键术语 k-近邻算法(KNN)准备:使用python导入数据实施kNN分类算法示例:使用kNN改进约会网站的配对效果准备数据:从文本文件中解析数据分析数据准备数据:归一化数值测试算法…

淘宝API接口为开发者提供了与淘宝平台进行数据交互和操作的便捷途径

淘宝API接口是指淘宝开放平台提供的一套接口,用于与淘宝网进行数据交互和操作。通过使用淘宝API接口,第三方开发者可以实现商品搜索、店铺信息获取、订单管理、商家服务等功能,从而实现与淘宝平台的对接和数据共享。 淘宝API接口的使用可以帮…

C语言赋值号的运算顺序

从右到左。 int & f(int & a) { printf("参数 %d\n", a); return a; } int main(void) {int a 9;int b 3;f(a) f(b);// 运行到此处,a 3,b 3return 0; } 输出

卡尔曼滤波算法demo

代码 learn_kalman.py #codingutf-8 import numpy as np import time from kinematic_model import freedrop from controller import kalman_filterimport matplotlib.pyplot as plt # 支持中文 import matplotlib as mpl mpl.rcParams[font.family]SimHei plt.rcParams[a…

每天一道leetcode:剑指Offer 25.合并两个链表

今日份题目&#xff1a; 输入两个递增排序的链表&#xff0c;合并这两个链表并使新链表中的节点仍然是递增排序的。 示例 输入&#xff1a;1->2->4, 1->3->4 输出&#xff1a;1->1->2->3->4->4 提示 0 < 链表长度 < 1000 题目思路 递归…

BL302嵌入式ARM控制器:高性能处理器驱动的储能优化利器

嵌入式ARM控制器钡铼技术BL302系列是工业级坚固型工业控制器&#xff0c;采用NXP的高性能处理器I.MX6ULL&#xff0c;搭配先进的ARM Cortex-A7构架&#xff0c;运行速度高达800MHz&#xff0c;具有高度的稳定性。本产品最高可提供4路RS485/RS232&#xff0c;1路CAN口&#xff0…

嵌入式开发学习(STC51-13-温度传感器)

内容 通过DS18B20温度传感器&#xff0c;在数码管显示检测到的温度值&#xff1b; DS18B20介绍 简介 DS18B20是由DALLAS半导体公司推出的一种的“一线总线&#xff08;单总线&#xff09;”接口的温度传感器&#xff1b; 与传统的热敏电阻等测温元件相比&#xff0c;它是一…

SpringBoot整合达梦数据库

近期接到了一个需要国产化的项目&#xff0c;用到了达梦数据库&#xff0c;没想到一开始配置就出现了问题&#xff0c;下面把配置给大家粘贴出来&#xff0c;大家少踩点坑。 一、先下载达梦数据库 这是达梦数据库下载链接&#xff0c;达梦数据库没有免费的&#xff0c;个人好…

Chapter 12: Regular expressions | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Regular ExpressionsRegular ExpressionsCharacter matching in regular expressionsExtracting data using regular expressionsCombining searching and extractingEscape characterSummaryBonus section for Unix / Linux usersDebugg…

[保研/考研机试] 约瑟夫问题No.2 C++实现

题目要求&#xff1a; 输入、输出样例&#xff1a; 源代码&#xff1a; #include<iostream> #include<queue> #include<vector> using namespace std;//例题5.2 约瑟夫问题No.2 int main() {int n, p, m;while (cin >> n >> p >> m) {//如…

【LeetCode】字符串与栈的练习

字符串相乘 class Solution { public:/** 将两个字符串相乘拆分成两步&#xff1a;* 先将一个字符串的每个字符与另一个字符串相乘得到一个计算结果* 再将所有计算结果的字符串进行相加*/string multiply(string num1, string num2) {string result "0";// 一个字…

微服务——es数据聚合+RestClient实现聚合

数据聚合 聚合的种类 DSL实现Bucket聚合 如图所示&#xff0c;设置了10个桶&#xff0c;那么就显示了数量最多的前10个桶&#xff0c;品牌含有7天酒店的有30家&#xff0c; 品牌含有如家的也有30家。 修改排序规则 限定聚合范围 DSL实现Metrics聚合 如下案例要求对不同的品…

录像模糊变高清:提高录制视频清晰度的方法

录像是记录生活点滴的重要方式之一&#xff0c;然而&#xff0c;由于种种原因&#xff0c;我们可能会遇到一些模糊、不清晰的视频。为了解决这一问题&#xff0c;今天来给大家分享一下如何利用牛学长视频修复工具修复录像视频清晰度的方法&#xff0c;方便快捷&#xff0c;无需…

springBoot集成caffeine,自定义缓存配置 CacheManager

目录 springboot集成caffeine Maven依赖 配置信息&#xff1a;properties文件 config配置 使用案例 Caffeine定制化配置多个cachemanager springboot集成redis并且定制化配置cachemanager springboot集成caffeine Caffeine是一种基于服务器内存的缓存库。它将数据存储在…

批量查询快递信息的最佳解决方案

快递查询是我们日常生活中经常需要进行的操作&#xff0c;然而&#xff0c;当我们有多个快递单号需要查询时&#xff0c;逐个查询就显得非常繁琐和耗时。为了解决这个问题&#xff0c;今天给大家推荐一款实用的软件——【固乔快递查询助手】。 首先&#xff0c;在浏览器中搜索并…