这是目录

  • 一、显示接口
    • 1.1、LCD接口
    • 1.2、核心板接口
  • 二、添加驱动
    • 2.1、确认驱动型号
    • 2.2、添加驱动
  • 三、测试
  • 四、附加
    • 4.1、交叉编译器安装
    • 4.2、内核和module编译
    • 4.3、扩展rootfs大小

本文使用环境:
电脑:Ubuntu 18.04.5 LTS
开发板:NanoPi-NEO2 500M
GUI:lvgl
交叉编译器:aarch64-linux-gnu
内核版本:4.14
显示屏:1.33寸LCD高清IPS
显示屏资料:https://openmv.io/products/lcd-shield (128,为什么会这么贵,搞不清楚)

写在前面
机缘巧合咸鱼上收了一块nanopi得开发板,抽空研究研究玩一玩,记录一下心得体会。
本文使用的内核为4.14,不支持3.x的,因此需要单独编译: 本文编译内核的教程

一、显示接口

1.1、LCD接口

我TB买的显示屏,然后自己按照尺寸画的扩展板,接的LCD。
立创工程:链接: 暂时还没有做好,做好了再放上来

接口是直接SPI通讯的,如下:

1.2、核心板接口

核心板接口参考两个文章,
核心板管脚: 核心板管脚定义

nanopi教程推荐的LCD: 教程推荐的lcd管脚定义

参考上面两个文章,可以看出,自己的LCD只需要按照对应的接线进行配置即可,需要linux的pin号,后期驱动需要。

Pin Name Linux gpio Pin Name Linux gpio
1 VDD_3.3V 2
3 4
5 6
7 LCD_RESET 203 8
9 10
11 LED_EN 0 12
13 14
15 16
17 18
19 LCD_MOSI 64 20
21 LCD_MISO 65 22 LCD_D/C 1
23 LCD_CLK 66 24 LCD_CS 67

二、添加驱动

2.1、确认驱动型号

首先要确认内核是存在改驱动的,要不然就麻烦了。那么如何确认?
可以参考文章

简而言之就是直接找内核中有没有定义该驱动,本文所有LCD屏幕驱动为ST7789,内核文件中存在改驱动,因此直接使用即可。

2.2、添加驱动

这小节也可以参考之前的文章。
可以参考文章

sudo modprobe fbtft_device custom name=admatec_c-berry28  busnum=0 cs=0 gpios=reset:203,dc:1,led:0 rotate=90 debug=7

其中 name gpios 都需要根据驱动的具体型号进行确定。本文的1.2小节有对应的编号
name:fbtft_device.c中是什么就是什么
busnum:用于指定使用第几个spi控制器,(本文是spi 0)
CS:SPI的第几个CS片选线,(本文是cs 0)
rotate:屏幕翻转角度
debug:debug等级7.(实际使用中不要开debug,否者你会发现vsr/log/下面的文件会不断变大,直到把整个内存占满)

加载后可以通过lsmod查看全部模块加载情况。
lsmod | grep xxx,单独查看模式加载情况
dmesg | grep “fb” 查看log,排查异常情况

虽然但是,这里还是很麻烦,7789的驱动并没有单独编译出来,所以需要下载内核文件编译输出ko文件。。。。。。
本文编译内核的教程
交叉编译器、内核和uboot需要自己下载。交叉编译器需要安装,教程也在上面的链接。
我这里直接上传.ko文件。
链接: 驱动文件

后续的添加启动可以参考:
可以参考文章

三、测试

到这里应该是可以点亮了,具体的显示内容可以根据自己的需求配置。
参考之前的lvgl文章:【Linux】linux上使用lvgl

四、附加

4.1、交叉编译器安装

4.2、内核和module编译


上图的nodule编译非常重要,lcd的驱动是按照module来处理的。

4.3、扩展rootfs大小

编译完成后的镜像不能直接下进入系统,因此太大了。系统没有扩容,rootfs只有1.几个G,完成不够。。。。。。。注意:烧写完成的SD卡不要插入nanopi启动。。要不然以下步骤有点麻烦。本文是烧写完后直接用SD卡进行的扩容。
接下来扩容。需要用到电脑。UBUNTU。。。
插入SD卡,然后在 Ubuntu 电脑中安装下 gparted 这个软件,执行下列命令:注意不要在SD卡的路径下操作。。

sudo apt install -y gparted
sudo gparted

选择SD卡。

可以看出rtoofs已经基本用完,因此目标是把rootfs扩大。

简单一点把userdata直接删掉,全部分给rootfs。。。。。。

编译的命令总结如下:


nanopi-neo2:使用的的:sun50i-h5-nanopi-neo2UBOOT:
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- distclean
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- nanopi_neo2_defconfig
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j16KERNEL:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- distclean
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j16make Image dtbs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-cp arch/arm64/boot/Image /media/zxx/boot/
cp arch/arm64/boot/dts/allwinner/sun50i-h5-nanopi*.dtb /media/zxx/boot/编译modules:make modules ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-sudo make modules_install INSTALL_MOD_PATH=/media/zxx/rootfs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-教程:
https://wiki.friendlyelec.com/wiki/index.php?title=Building_U-boot_and_Linux_for_H5/H3/H2%2B&redirect=no

【Linux】NanoPi-NEO2外接spi-lcd相关推荐

  1. nanopi neo2 black 上电使用

    最近上手一个小东西,nanopi neo2 black,非常精致,可以运行linux core ,可以运行Ubuntu 内核,感兴趣可以淘宝,或者官网看看. 我买这个板子的时候,赠送了16GB的TF卡 ...

  2. 12010.linux应用程序之spi

    linux应用程序之spi 1 参考博客 2 SPI 三种模式 3 应用程序 3.1 头文件定义 spidev.h 3.2 内核中提供了一个应用层参考的示例代码 3.3 使用内核提供的通用spi驱动框 ...

  3. Linux内核自带SPI设备驱动测试程序分析:spidev_test.c

        在Linux系统中,SPI 的用户模式设备接口的驱动源码位于 drivers/spi/spidev.c,在应用层生成 /dev/spidev* 的节点,可以通过 read. write 达到与 ...

  4. 君正 Halley6 开发板调试SPI LCD

    kernel版本:linux-4.4.94 CPU: X1600 LCD: 3.5 寸TFT(320×240),Model Name LQ035NC111 本⽂以芯⽚x1600, 开发板halley6 ...

  5. 【全志T113-S3_100ask】15-2 linux系统gpio模拟spi驱动屏幕——ILI9341

    [全志T113-S3_100ask]15-2 linux系统gpio模拟spi驱动屏幕--ILI9341 背景 (一)查阅参考文档 (二)使能内核模块 (三)修改设备树 (四)测试 (五)后语 背景 ...

  6. linux内核添加spi驱动,Linux内核驱动之spi子系统spi协议.docx

    Linux内核驱动之spi子系统spi协议 概况 SPI接口是摩托罗拉首先提出的全双工三线同步串行外围接口SCK,MOSI,MISO,采用主从模式(Master Slave)架构:支持多slave模式 ...

  7. nanopi neo2 black 音乐闹钟

    nanopi neo2 black 有音频接口,可以用它来放个音乐,折腾一下做个音乐闹钟吧. 首先查看cron是否运行 $ ps -ef | grep cron //查看cron是否运行 root 5 ...

  8. 基于ST MCU( STM32L431RCTx) SPI模块外接SPI FALSH的案例

    文章目录 1.相关开发环境 2.SPI1 外接SPI FLASH 3.SPI FLASH初始化 3.1 SPI FLASH支持SPI MODE0/3的通讯控制 3.2 SPI 硬件CRC 不需要DIS ...

  9. 如何给ESP32选择外接SPI Flash

    给ESP32选择外接SPI Flash [前言]:  许多用户在使用 ESP32 做开发的时候,都会碰到如何选择外接 Flash 的难题,因为不同厂商的 Flash 存在很多差异,Flash 支持的工 ...

最新文章

  1. 深度丨吴恩达走了,林元庆也走了,百度研究院到底怎么了?
  2. 回顾2019年5个重大宕机事件
  3. 软件调试学习笔记(三)—— 调试事件的处理
  4. C语言库函数大全及应用实例十四
  5. C# 单例模式的多种简单实现
  6. LoadRunner 12.02 安装教程及中文语言包安装
  7. 【Spring-AOP-学习笔记-3】@Before前向增强处理简单示例
  8. 高新计算机考试1-8视频,最新版计算机高新考试 PS 第1单元1-8.doc
  9. java 主流算法_java常用算法
  10. C语言判断素数(两种方法)
  11. 扫码枪回车键条码_收银系统中扫描枪扫描条码后必须按回车键才能查询商品的解决办法...
  12. 台达DVP PLC与3台西门子V20变频器通讯程序 台达PLC与3台西门子变频器通讯
  13. 2个最好的中文图标搜索引擎
  14. 论strpos 的正确使用方式
  15. 《工程伦理与学术道德》第一章习题
  16. 蚂蚁区块链第2课 如何申请获得100万创新大赛参赛资格?
  17. java中暴力是啥方法_[蓝桥杯][历届试题]回文数字 中规中矩的暴力方法(Java代码)...
  18. 免费Bootstrap后台管理模板
  19. 2019 年 Google 编程之夏活动报告
  20. matlab的基本用法---常用的输入输出函数

热门文章

  1. 探索者系列_百度百科
  2. 球球大作战(Python)
  3. 2020年华东师大研究生机试题
  4. 六行python代码的爱心曲线_6行python代码的爱心线
  5. 近期一个称重设备微信端开发前端知识点,及使用插件遇到的常见问题
  6. CSS:CSS概述与引用
  7. Java:文件写入读取操作和工具类
  8. 便捷效率处理CAD转PDF方法你知道吗?
  9. 二重调度(一):什么是二重调度?
  10. c++数独游戏3.0