东山派七号STM32MP157-适配U-Boot LCD驱动 内核启动LCD打印启动信息

news/2024/11/8 3:29:26/文章来源:https://www.cnblogs.com/yuewusayuri/p/18534332

最近淘到一块东山派7号开发板,基于STM32MP157DAC,因为便宜,买过来玩。

但是韦东山的资料真的有一说一,板子出的挺多,除了卖的最好的板子,其他的资料非常非常少。。(韦老师您看到了别生气,至少因为资料少引发问题我解决了也算收获经验了。。。)

我说的是实话,因为正点原子作为国内销量最高的学习板研发制造零售一体的公司,你即使去某鱼淘一块几年前的老版本开发板,你依然能在他的官网找到对应的教程资料。像东山刚出一年的Dongshanpi PicoW,自带的sigmastar家的sdk很多bug,sdk构建rootfs、burning的过程都很模糊,官网的奶牛快传也失效好久了。。。虽然定位是最少利润的,面向高端玩家的板子,但是跟荒漠寻泉一样的开发体验真的很让人劝退你们家的产品。

但是最后还是要说一句,本人在解决问题的过程学到了很多 学习过程一切顺利的开发板 上学不到的东西。喜欢不喜欢这种感受因人而异。能接受,东山的板子又便宜性能又好(100块钱的mp157,白菜价),如果不能接受买正点的板子去。

正片开始

我按照https://github.com/DongshanPI/buildroot-external-dongshanpiseven的方法编译fs、uboot、kernel,成功boot起来

问题1:uboot屏幕不亮

出现的第一个问题,买了一块韦东山板子通用的LCD,装上之后在内核阶段成功light up,但是在uboot阶段无法点亮,包括背光。

解决过程

内核和uboot都是有对应driver的,既然buildroot主线已经适配了st官方的mp157 evaluation board,很复杂的寄存器定义和boot初始化就不需要我们动了,uboot阶段,无显示那问题肯定是uboot的设备树适配问题。

内核的设备树适配在东山的仓库里面已经做好了,所以内核阶段的lcd是正常工作的,那么接下来我们就修改uboot的dts

很轻松,我们就找到了我们想要的东西,stm32mp157c-100ask-512d-v1.dts,就修改它

不懂怎么修改和移植?很简单,上面说到正点原子的资料很全,他们家也有mp157的板子,直接看他们的资料!

下载后打开【正点原子】STM32MP157开发板(A盘)-基础资料\09、文档教程(非常重要)\【正点原子】STM32MP1嵌入式Linux驱动开发指南V2.1.pdf

430页,可以看到如下内容

按照文章写的来操作,其中有几个地方不同

正点原子的背光引脚和韦东山的不一样,一个是PD13,一个是PE11

韦东山:

所以要改成以下:

还有这几个中断和gpio,我当初根本不懂具体连接的是啥,但是很重要,我最开始就是没加,背光亮了但是面板死活点不亮,把uboot的debug打开后重新编译,启动会输出两分钟的log才boot。。。

但是我也发现了与gpio未找到相关的错误:

simple_panel_ofdata_to_platdata : Warning: cannot get enable GPIO: ret=-5

直接在uboot源码里搜索这个函数,找到

就怀疑设备树pinctrl没设置导致的,加上就好了。应该是ltdc外设与rgb lcd控制的很重要的引脚

具体的内容是内核的设备树复制来的

在正点原子手册可以看到,这两个pinctrl设置的是设备具体的PINMUX,但是正点原子是ltdc_pins_xb,韦东山是ltdc_pins_xa

为什么是simple-panel?因为uboot里有这个通用的lcd驱动,位置在drivers/video/simple_panel.c

可以看到compatible字串的数值就是simple-panel,驱动会按照这个去设备树内寻找适配的设备,所以设备树里的名字一定不能错

再按照正点原子的文档加上时序信息即可

此时直接编译会提示找不到ltdc_ep0_out,就从linux源码的arch/arm/boot/dts/stm32mp157c-100ask-512d-lcd-v1.dts
摘抄一段ltdc的节点写到设备树的dts内

再在menuconfig里配置相关开启lcd支持的选项,加上自定义logo的bmp,具体的上网搜搜吧我就不赘述了

编译烧录直接点亮

问题2:内核启动阶段,console不显示启动信息

我一直觉得启动过程中显示一大堆文字很帅(),所以使用每款板子都会把console的log打开

相关的教程在正点原子的手册里可以看到

我设置了,没用!!!!

要是有用我就不会在这写东西了。。。

解决过程

我又折腾了两天,才找到原来正点原子里手册写的

Uboot会在内核启动的时候把bootargs传递给内核

是不一定的!!比如我这种情况

请看下面:我确实设置了console=tty1,但是就是不在lcd上显示

我很确信我的lcd是正常的,因为执行echo hello linux! > /dev/tty1可以在lcd上输出字符串,编译内核的时候打开了BootUp Logo,还能看到linux的小企鹅logo

那为什么不会显示?是内核配置的问题吗?我替换了正点原子出厂镜像的内核到我的板子上,因为设置不同导致启动到后面会panic,但是依然没显示console log。

那肯定就是uboot的问题,我在imx6ull上改动bootargs,内核立马做出对应反应,在tty1开启与关闭log

那应该就是uboot没把我写的bootargs传递给内核

我在东山板子上使用命令dmesg | grep console,找到了一句

就可以看到在Kernel刚上电的时候显示了一句[ 0.000000] Kernel command line:(现在我改好了,当初这一句是没有console=tty1的)

这就是bootargs传递给内核的参数,但是我明明设置的不是这个!!!我的tty1呢,我也没有写过什么root=/dev/mmcblk1p4 rootwait rw c

肯定有东西在背后捣鬼

在buildroot源码和韦东山的buildroot配置两个仓库的位置使用万能的grep:

stm32mp157c-100ask-512d-v1_extlinux.conf这是什么文件???是韦东山团队适配七号开发板时候编写的!原来是这个文件里面的东西覆盖了我的bootargs

可以看到在uboot上电的时候,解析了这个文件,把字串传递给了内核,怪不得不受我控制

在里面加入我想要的console=tty1,重新编译buildroot,启动画面就成功输出打印信息了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828658.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chapter16

segmentation.py参数第一题问题先让我们用一个小地址空间来转换一些地址。这里有一组简单的参数和几个不同的随机种子。你可以转换这些地址吗? segmentation.py -a 128 -p 512 -b 0 -l 20 -B 512 -L 20 -s 0 segmentation.py -a 128 -p 512 -b 0 -l 20 -B 512 -L 20 -s 1 segm…

刻不容缓腾讯云双十一活动羊毛攻略!!!

前言 每年的各大云厂商都在举办自己的活动,这不腾讯云举办了双十一嘉年华上云拼团 GO, 像我们这类程序员都拥有自己的博客或者需要部署的应用以及 Demo 案例,缺少不了云服务,接下来我带着大家领略最佳价格!!一、活动时间与节奏预热期(10 月 24 日 - 10 月 31 日)可提前了解活…

避坑指南:Mask操作时不要使用float(-inf)填充

在Transformer等类似深度学习任务中有掩码自注意力机制等子模块,会涉及默认的填充值, 建议填一个足够小的数,如-1e6就OK了,如果设置成float(-inf),如: if mask is not None:mask = mask.expand(attention_scores.shape[0], -1, -1, -1)attention_scores = attention_score…

游记:第37届校赛

T7 悦跑圈!启动! 改完这个题我就睡觉 求在s1或s2闭合的最小环,所以我枚举了边,假设一条边的两头分别是u和v,我以为环就是dij跑出来的d[u]+d[v],虽然不会立刻原路返回起点,但是中间可能有重复路径,而环是不能有这种路径的,所以从一开始就错了。(不长记性,失恋三部曲忘…

zlibrary镜像网站,z-library中文入口(持续更新)

zlibrary,一个全球领先的数字图书馆,拥有超过1300万册电子书资源,供人下载。它跨越多个学科,从古典文学到现代科技,再到人文艺术,无所不包。ZLibrary的使命是促进教育平等,让每个人都能便捷地获取知识。zlibrary数字图书馆镜像网址 zlbrary最新官网地址:https://zh.z-l…

MacOS(Unix系统)炫酷完美终端配置

MacOS(Unix系统)炫酷完美终端配置 1 下载安装 iTerm2 1.1 iTerm2,没有上架到AppStore,只能通过下载zip包安装,这是下载地址: https://iterm2.com/downloads.html ,压缩包双击打开后,将解压后的App拖动到【应用程序】文件夹就完成了。1.2 打开iTerm2 配置如下图,iTerm2…

流程编排LiteFlow-业务代码解耦

LiteFlow真的是相见恨晚啊,之前做过的很多系统,都会用各种if else,switch这些来解决不同业务方提出的问题,有时候还要“切一个分支”来搞这些额外的事情,把代码搞得一团糟,毫无可读性而言。如何打破僵局?LiteFlow为解耦逻辑而生,为编排而生,在使用LiteFlow之后,你会发…

Linux中awk命令实现指定字段的第一个字母大写

001、[root@PC1 test]# ls a.txt [root@PC1 test]# cat a.txt ## 测试数据 abcd KHG DETT dre ssae rtE [root@PC1 test]# awk {$1 = toupper(substr($1, 1, 1)) substr($1,2); print $0} a.txt ## 此处借助awk的内置函数…

java学习11.7

继续学习spring的内容

高级语言程序设计第六次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/ 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13303 学号:092300125 姓名:张天荣#include<stdio.h>int P(int num){int i;for(i=2;i<=num/2;i++){if(num%i==0)return…

【Maple2023软件下载与安装教程】

1、安装包Maple 2023: 链接:https://pan.quark.cn/s/8141b75ee5b5 提取码:d6AZ Maple 2022: 链接:https://pan.quark.cn/s/c726906349f2 提取码:geCP Maple 2021: 链接:https://pan.quark.cn/s/a5f710946c9a 提取码:fGKB Maple 2020: 链接:https://pan.quark.cn/s/83fd1…

SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能

SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能@目录项目整体描述页面图简介:功能概括说明具体功能举例代码介绍首页index.html操作成功跳转hello.html首页跳转index.html代码方法1:读取指定的Excel方法2:读取上传的Excel里面的内容方法3:java单文件…