STM32MP157内核移植相关bug

news2024/11/25 12:46:48

STM32MP157 官方Linux5.15内核移植相关bug

  • 一、主频问题
  • 二、驱动开发时的头文件缺失问题
  • 三、结语


一、主频问题

  在初学STM32MP157驱动开发时,笔者曾对官方最新版的Linux内核进行了移植,但是因为一些问题,导致移植后的系统存在一些bug。最近笔者又重新对这部分做了一些了解,发现了一些问题,有兴趣的可以一起探讨。
  首先是主频问题,按照相关教程对TF-A和U-Boot进行移植后,在U-Boot中显示的芯片主频为650MHz。笔者使用了很多方法尝试修复,比如在U-Boot的设备树中修改 PLL 倍频、去除U-Boot中的pmic电源芯片验证、ADC和DAC验证等,但是并没有修复。最后笔者使用非验证方式的U-Boot进行烧写,也就是将U-Boot编译产生的u-boot-spl.stm32作为fsbl,直接作为引导,将u-boot.stm32直接作为启动文件,发现可以正确识别芯片并可以使用800MHz工作频率。然后将TF-A重新加到U-Boot的头部之后就又回到650MHz。(这里也使用了多种方式进行头部验证,包括Makefile.sdk直接编译出fip和metadata、使用fiptool手动合成等等),所以笔者猜测在TF-A中还是存在某些验证方式,例如pmic芯片验证、ADC输入电压采样验证等,导致芯片无法正确工作。
  后续笔者又采取了一些方式尝试修复:

  • 1.使用旧版本的TF-A编译出BL32,作为新版本U-Boot的头部验证
    这种方式会出现BL32无法正确引导BL33(也就是U-Boot)的现象,具体表现为开机进入BL32(SP_MIN方式)后一直重启,无法正确加载U-Boot。
  • 2.按照官方手册,将新版U-Boot的xxxx-fw-config.dts编译出.dtb设备树文件,作为TF-A的配置文件,然后编译出头部信息添加。
    这种方式也没法修复主频bug。

最后将正点原子官方的出厂镜像进行烧录,发现该镜像在启动时直接跳过了头部信息验证。
在这里插入图片描述
这里就要提一下V2.6版本的官方移植包问题,此版本在官方的开发手册中,原则上应该先对U-Boot进行编译,得到u-boot-nodtb.bin文件和u-boot.dtb文件,然后再生成u-boot-trusted.dtb,作为TF-A的输入配置,之后再编译TF-A,得到fip-tf-a-trusted.bin文件和metadata.bin文件,其中fip-tf-a-trusted.bin就是SP_MIN验证信息和U-Boot的结合,metadata.bin则是对此文件的验证。

所以这里笔者猜测,如果想要修复U-Boot中的主频bug,应该使用以下方法:
1.使用原子哥的方式,直接跳过头部信息验证,也就是将TF-A与U-Boot分离开来。
这种方式也存在一些问题:其一,TF-A无法再起到验证作用,那么这部分的开发就失去了设计的意义。其二,需要对TF-A内部进行修改,目前对笔者来说难度较大。
2.修改TF-A内部的验证方式
笔者猜测,在ST提供的源码中,TF-A内部应该存在某种对外设的验证,当外部没有此设备时,就自动降频到安全一点的工作模式。比如前面提到的pmic芯片、ADC采样某个管脚的电压值验证等。仅是猜测,还有待验证。
3.使用官方推荐的pmic电源芯片。注:这部分仅为笔者猜测,因为国产的一些第三方的开发板与官方的板子最大的差别就是在这里,所以如果想自己做板子并移植最新版的内核,目前来看还是复刻一下最好。之后有新版本的移植方式再替换。

二、驱动开发时的头文件缺失问题

  在基于Linux-5.15的源码包进行开发时,会出现头文件缺失问题,例如<linux/ide.h>、<linux/module.h>问题,这里笔者在源码包下进行了查找,并没有查询到相关的头文件,也找不到能够兼容和替代的类似头文件。所以笔者猜测,可能是在新版本的内核中,相关的驱动开发方式有了新的变化。(也可能是官方还没移植完善就上架了,哈哈)。
  不过笔者尝试,将原子哥教程中的相关头文件,拷贝到新版本的对应目录中,编译出来的驱动也能够在5.15内核中运行,所以如果确实想用新版本开发驱动,可以暂时尝试一下此方法,之后再等待各大厂商教程的跟进。

三、结语

  笔者原以为学习完了相关教程,就能够对这些bug进行修复,结果发现还是能力不足,学海无涯,诸君共勉。以上的bug原因也仅是笔者的猜测,欢迎有兴趣的大佬们一起探讨。笔者对于Linux驱动开发的学习也到此告一段落,之后也许会找一些新的方向进行学习。

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

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

相关文章

Java学习之抽象类

目录 一、抽象类引出 二、抽象类的介绍 三、抽象类的细节 第一条 第二点 第三点 第四点 第五点 第六点 第七点 第八点 四、练习 第一题 第二题 一、抽象类引出 当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法&#xff0c;这个方法就是抽象方法,用…

【设计模式】创建者模式·建造者模式

学习汇总入口【23种设计模式】学习汇总(数万字讲解体系思维导图) 写作不易&#xff0c;如果您觉得写的不错&#xff0c;欢迎给博主来一波点赞、收藏~让博主更有动力吧&#xff01; 一.概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 …

Python实现哈里斯鹰优化算法(HHO)优化支持向量机回归模型(SVR算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO)&#xff0c;该算法有较强的全…

目标检测——day66 Scaled-YOLOv4: Scaling Cross Stage Partial Network

Scaled-Yolov4:可伸缩跨级部分网络 Scaled-YOLOv41. Introduction2. Related work2.1. Real-time object detection2.2. Model scaling&#xff08;模型缩放&#xff09;3. Principles of model scaling4. Scaled-YOLOv44.1. CSP-ized YOLOv44.2. YOLOv4-tiny4.3. YOLOv4-large…

上海亚商投顾:沪指缩量小幅调整 半导体与旅游股领涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪沪指今日缩量小幅调整&#xff0c;创业板指稍显强势&#xff0c;多数时间红盘运行&#xff0c;科创50指数涨超1%。半…

springMVC讲解(上)

SpringMvc 1&#xff0c;简介 springmvc是spring的一个后续产品&#xff0c;是spring的一个子项目&#xff0c;是spring为表示层所开发的一整套完备的解决方案&#xff0c;在表示层框架经历了struct、webWork、struct2等诸多产品的历代更迭之后&#xff0c;目前业界普遍选择了…

JAVA就业课程,面试题大全

面试整体流程1.1 简单的自我介绍我是xxxx,工作xxx年.我先后在xxxx公司、yyyy公司工作。先后做个xxxx项目、yyyy项目。1.2 你简单介绍一下xxxx项目为了解决xxxx问题&#xff0c;开发了一套xxxx系统&#xff0c;该系统主要有那些部分组成。简单介绍项目的整体架构。参与某个模块的…

【Python学习】输入和输出

前言 往期文章 【Python学习】列表和元组 【Python学习】字典和集合 【Python学习】条件和循环 在很多时候&#xff0c;你会想要让你的程序与用户&#xff08;可能是你自己&#xff09;交互。你会从用户那里得到输入&#xff0c;然后打印一些结果。我们可以使用iinput和pr…

MATLAB趣味绘图-内接正六边形旋转

MATLAB趣味绘图-内接正六边形旋转 观察一下内部的正六边形大概在外部的正六边形边的四等分点的位置&#xff0c;通过数学平面几何知识可得边和角度的迭代关系式为&#xff1a; an134an−1θnθn−1arctan⁡36a_n \frac{\sqrt{13}}{4} a_{n-1} \\ \theta_n \theta_{n-1}\arcta…

金融行业数据库场景下,SmartX 超融合表现如何|性能验证与落地实践

在金融行业&#xff0c;数据库是一项至关重要的 IT 基础设施。作为交易和数据的主要载体&#xff0c;数据库往往需要在短时间内处理大量的业务数据&#xff0c;其可靠性、稳定性和性能将直接影响业务系统的运行状态。而在进行数据库基础架构选型时&#xff0c;一些客户对于超融…

C++学习笔记——类和对象

1.面向对象的三大特性&#xff1a;封装、继承、多态 2.对象有其属性和行为 3.具有相同性质的对象&#xff0c;可被抽象为类 1.封装 1.封装是C面向对象三大特性之一 2.封装的意义&#xff1a; &#xff08;1&#xff09;将属性&#xff08;变量&#xff09;和行为&#xff…

python学习 --- 字典基础

目录 一、什么是字典&#xff1f; 1、字典示意图-无序说明 2、字典实现原理 二、字典的创建 1、使用花括号 2、使用内置函数dict() 三、字典常用操作 1、字典中元素的获取 2、key的判断&#xff08;存在与否&#xff09; 3、字典元素的删除 4、字典元素的新增 5、获…

计讯物联智慧水务解决方案:用“智水”捍卫生命之泉

项目背景 水是生命的源泉&#xff0c;是城市的灵魂&#xff0c;是农业的命脉&#xff0c;是工业的基石。2022年以来&#xff0c;基于国家政策的引导、科技革新的驱动与供排水需求增长&#xff0c;智慧水务的发展突飞猛进&#xff0c;从信息化到数字化&#xff0c;再到智能化&a…

若依 ruoyi vue el-switch 列表开关状态显示有误 全部关闭的问题

后台使用int类型传状态status的值但是前端列表展示的开关状态是未开启&#xff0c;实际上&#xff0c;后台传的都是开启的状态结果应该是这样确定后台传的status值 在 el-switch 标签中是否使用了正确的值判断&#xff0c;比如 后台用的是字符串、布尔 或者是 数值类型&#xf…

android判断文件是否存在跳转不同activity

android studio版本&#xff1a;2021.2.1Patch 2例程名称&#xff1a;ActivityJump完成日期&#xff1a;2023.1.17一直在完善一个小东西&#xff0c;也是不断的在学习。之前做的那个桌面日历天气&#xff08;老旧安卓手机发挥余热做桌面时钟摆件使用&#xff09;&#xff0c;有…

java 数列排序

试题 基础练习 数列排序提交此题 评测记录 资源限制内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s问题描述给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200输入格式…

【渗透测试】信息搜集总结

前言零零散散的发布过很多文章了&#xff0c;但是也没有完整的总结一下&#xff0c;今天就从信息搜集入手&#xff0c;系统的总结一下。一方面可以巩固自己的基础&#xff0c;作为自己的字典随用随查&#xff0c;另一方面希望对大家的学习和工作起到帮助作用。按照这个过程基本…

求两点间的距离-C语言实现

任务描述 已知两点A(x1,y1),B(x2,y2),求其间的距离。 输入 一行四个浮点数,x1,y1,x2,y2 输出 两点间的距离,要求不要输出多余的零。 本关知识 两点间的距离公式 pow函数 在C语言中,提供了用于求x的y次幂的函数,函数原型为: double pow(double x, double y…

啊啊啊小红书爆款标题技巧被我找到了!

我通过平日里对小红书的了解和积累&#xff0c;再加上这一阵子对小红书爆款笔记的研究&#xff0c;终于在这么多笔记当中发现了小红书爆款笔记标题的撰写规律&#xff01; 我们在撰写小红书的时候恨不得篇篇都是爆文&#xff0c;那么今天就来讲一下小红书那些爆款笔记标题的撰写…

75、DiffRF: Rendering-Guided 3D Radiance Field Diffusion

简介 主页&#xff1a;https://sirwyver.github.io/DiffRF/ 对应用于三维亮度场的概率扩散过程进行去噪。在3D监控和体积渲染的指导下&#xff0c;模型能够无条件地合成高保真3D资产(左)。 蒙面补全的新应用(右)&#xff0c;即从不完整的对象中恢复形状和外观的任务(在右上方…