树莓派3B驱动ST7735(内核)(TODO)

2024-09-03 23:04
文章标签 驱动 树莓 内核 3b todo st7735

本文主要是介绍树莓派3B驱动ST7735(内核)(TODO),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(TODO)

https://www.youtube.com/watch?v=dj0WrkpPRho

要在树莓派 3B 上配置支持 ST7735S 显示屏,并在启动过程中将信息输出到这个显示屏,同时允许通过显示屏进行 shell 交互,需要进行以下步骤:

### 1. **安装必要的工具和库**
在配置和编译内核之前,需要确保系统安装了必要的工具和库:

```bash
sudo apt update
sudo apt install git bc bison flex libssl-dev make
```

### 2. **下载并配置内核源代码**
下载树莓派的 Linux 内核源代码:

```bash
git clone --depth=1 https://github.com/raspberrypi/linux
cd linux
```

在内核源代码目录中,使用 `menuconfig` 配置内核:

```bash
make bcmrpi_defconfig
make menuconfig
```

### 3. **配置内核支持 ST7735S 显示屏**
在 `menuconfig` 中,确保以下选项被启用:

1. **Framebuffer 驱动支持**:
   - `Device Drivers` → `Graphics support` → `Framebuffer Devices` → `Support for frame buffer devices`
   - `Device Drivers` → `Graphics support` → `Framebuffer Devices` → `Support for small TFT LCD display modules`

2. **SPI 支持**:
   - `Device Drivers` → `SPI support` → `User mode SPI device driver support`
   - `Device Drivers` → `SPI support` → `SPI bus master support`

3. **ST7735S 驱动**:
   - `Device Drivers` → `Graphics support` → `Framebuffer Devices` → `Support for small TFT LCD display modules`
   - 在这里选择 ST7735S 驱动。如果找不到,可以通过以下方式启用:
     ```bash
     Device Drivers → Graphics support → Support for small TFT LCD display modules → 
     Enable support for ST7735 panel
     ```

### 4. **配置设备树覆盖 (Device Tree Overlay)**
树莓派使用设备树配置硬件。你需要创建或修改设备树覆盖文件,以便配置 SPI 接口和 ST7735S 显示屏。

创建一个自定义的设备树覆盖文件 `st7735s-overlay.dts`,配置 SPI 和显示屏:

```dts
/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2708";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";

            spidev@0 {
                compatible = "st7735r";
                reg = <0>;
                spi-max-frequency = <32000000>;
                rotate = <270>;
                bgr = <1>;
                fps = <60>;
                dc-gpios = <&gpio 24 0>;
                reset-gpios = <&gpio 25 0>;
            };
        };
    };
};
```

编译设备树覆盖文件:

```bash
dtc -@ -I dts -O dtb -o st7735s-overlay.dtbo st7735s-overlay.dts
sudo cp st7735s-overlay.dtbo /boot/overlays/
```

### 5. **配置启动参数**
编辑 `/boot/config.txt` 文件,加载设备树覆盖文件并配置控制台输出:

```bash
dtoverlay=st7735s-overlay
```

将控制台输出重定向到显示屏:

```bash
framebuffer_width=160
framebuffer_height=128
enable_uart=1
```

### 6. **编译并安装内核**
编译内核并安装:

```bash
make -j4 zImage modules dtbs
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/kernel7.img
```

### 7. **测试配置**
重启树莓派并查看 ST7735S 显示屏是否正确显示启动信息:

```bash
sudo reboot
```

如果配置正确,启动信息将显示在 ST7735S 显示屏上,并且可以通过显示屏进行 shell 交互。

这篇关于树莓派3B驱动ST7735(内核)(TODO)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134298

相关文章

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

Ubuntu22.04回退系统内核

文章目录 起因回退操作卸载内核禁止内核升级 起因 最近因为系统内核自动升级,导致显卡驱动检测不到,炼丹环境被破坏。无奈只能重装驱动,于是跟着手册操作发现驱动要求的是内核版本是5.15.0-25-generic,而我通过uname -r发现这时候的内核版本是6.8.0-40-generic,看来只能回退了。 我搜索了网上很多的文章,没有一篇文章能够完全解决这个问题,所以在我多次尝

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

跟我一起玩《linux内核设计的艺术》第1章(四)——from setup.s to head.s,这回一定让main滚出来!(已解封)

看到书上1.3的大标题,以为马上就要见着main了,其实啊,还早着呢,光看setup.s和head.s的代码量就知道,跟bootsect.s没有可比性,真多……这确实需要包括我在内的大家多一些耐心,相信见着main后,大家的信心和干劲会上一个台阶,加油! 既然上篇已经玩转gdb,接下来的讲解肯定是边调试边分析书上的内容,纯理论讲解其实我并不在行。 setup.s: 目标:争取把setup.

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte