stm32m157 U-boot 测试
自烧写测试烧写错误 STM32CubeProgrammer 报错ip parsing error: mmcl报错Layout line 5: ip parsing error: mmcl根本原因Tsv 配置文件写错IP 字段写了mmcl正确是mmc1数字 1不是字母 l L 的小写。 看截图表格你的 ssb1 那一行 IP 列写的是mmcl把数字 1 写成字母 L 小写l。这里也要选对#Opt Id Name Type Device Offset Binary - 0x01 fsbl1-boot Binary none 0x0 tf-a-stm32mp157d-atk-serialboot.stm32 - 0x03 ssbl-boot Binary none 0x0 u-boot.stm32 P 0x04 fsbl1 Binary mmc1 boot1 tf-a-stm32mp157d-atk-trusted.stm32 P 0x05 fsbl2 Binary mmc1 boot2 tf-a-stm32mp157d-atk-trusted.stm32 P 0x06 ssbl Binary mmc1 0x00080000 my-u-boot.stm32cd configs //进入 uboot 的 configs 目录 cp stm32mp15_trusted_defconfig stm32mp15_atk_trusted_defconfig //拷贝此时在 uboot 的 configs 目录下就存在一个名为“stm32mp15_atk_trusted_defconfig”的默认 配置文件这个默认配置文件就是给我们开发板使用的。创建默认配置设备树在 uboot 的源码目录下运行以下命令cd arch/arm/dts/ //进入 uboot 设备树目录 cp stm32mp157d-ed1.dts stm32mp157d-atk.dts //复制.dts cp stm32mp15xx-edx.dtsi stm32mp157d-atk.dtsi //复制.dtsi cp stm32mp157a-ed1-u-boot.dtsi stm32mp157d-atk-u-boot.dtsi //复制.dtsi修改电源管理设置sdmmc1 { pinctrl-names default, opendrain, sleep; pinctrl-0 sdmmc1_b4_pins_a; pinctrl-1 sdmmc1_b4_od_pins_a; pinctrl-2 sdmmc1_b4_sleep_pins_a; st,neg-edge; broken-cd; bus-width 4; vmmc-supply v3v3; status okay; }; sdmmc2 { pinctrl-names default, opendrain, sleep; pinctrl-0 sdmmc2_b4_pins_a sdmmc2_d47_pins_a; pinctrl-1 sdmmc2_b4_od_pins_a sdmmc2_d47_pins_a; pinctrl-2 sdmmc2_b4_sleep_pins_a sdmmc2_d47_sleep_pins_a; non-removable; st,neg-edge; bus-width 8; vmmc-supply v3v3; keep-power-in-suspend; status okay; };网络驱动修改ethernet0 { status okay; pinctrl-0 ethernet0_rgmii_pins_a; pinctrl-1 ethernet0_rgmii_pins_sleep_a; pinctrl-names default, sleep; phy-mode rgmii-id; max-speed 1000; phy-handle phy0; mdio0 { #address-cells 1; #size-cells 0; compatible snps,dwmac-mdio; phy0: ethernet-phy0 { reg 0; }; }; };从图13.2.6.3中可以看到 “ethernet5800a00 address not set.”字样说明已经找到了网络外设并且网络外设已经启动但是还是会报“No ethernet found.”错误这是因为uboot启动的时候获取不到MAC地址我们只需要设置一些地址相关的环境变量即可前面讲解uboot的设置好地址相关环境变量以后就可以在uboot中使用网络了用网线将开发板上的网络接口与电脑或者路由器连接起来保证开发板和电脑在同一个网段内通过ping命令来测试一下网络连接命令如下网络相关命令的时候已经讲过了命令如下setenv ipaddr 192.168.1.250 //开发板 IP 地址 setenv ethaddr 00:04:9f:04:d2:35 //开发板网卡 MAC 地址 setenv gatewayip 192.168.1.1 //开发板默认网关 setenv netmask 255.255.255.0 //开发板子网掩码 setenv serverip 192.168.1.249 //服务器地址也就是 Ubuntu 地址 saveenvping 192.168.1.249STM32MP1 开发高频踩坑1(数字一) 和l(L 小写) 看混。#include stm32mp157.dtsi #include stm32mp15xd.dtsi #include stm32mp15-pinctrl.dtsi #include stm32mp15xxaa-pinctrl.dtsi #include stm32mp157-m4-srm.dtsi #include stm32mp157-m4-srm-pinctrl.dtsi #include stm32mpl57d-atk.dtsi#include stm32mpl57d-atk.dtsi 应该是#include stm32mp157d-atk.dtsiUSB OTG设备树修改1、添加usb_phy_tuning子节点在这一小节里我们就给uboot添加USB_OTG功能操作stm32mp157d-atk.dtsi这个文件在根节点“/”下添加名为“usb_phy_tuning”的子节点节点内容如下usb_phy_tuning: usb-phy-tuning { st,hs-dc-level 2; st,fs-rftime-tuning; st,hs-rftime-reduction; st,hs-current-trim 15; st,hs-impedance-trim 1; st,squelch-level 3; st,hs-rx-offset 2; st,no-lsfs-sc; };添加STUSB1600 I2C子节点正点原子STM32MP157开发板上的USB OTG接口类型为Type-C使用STUSB1600芯片来实现此接口功能STUSB1600有一个I2C接口此I2C接口用来配置芯片因此我们还需要在设备树中添加STUSB1600相关的I2C节点内容。将如下内容添加到stm32mp157d-atk.dtsi的最后面i2c1 { pinctrl-names default, sleep; pinctrl-0 i2c1_pins_a; pinctrl-1 i2c1_pins_sleep_a; i2c-scl-rising-time-ns 100; i2c-scl-falling-time-ns 7; status okay; /delete-property/dmas; /delete-property/dma-names; stusb160028 { compatible st,stusb1600; reg 0x28; interrupts 2 IRQ_TYPE_EDGE_FALLING; interrupt-parent gpiog; pinctrl-names default; pinctrl-0 stusb1600_pins_a; status okay; vdd-supply vin; connector { compatible usb-c-connector; label USB-C; power-role dual; power-opmode default; port { con_usbotg_hs_ep: endpoint { remote-endpoint usbotg_hs_ep; }; }; }; }; };由于STUSB1600是挂在STM32MP157的I2C1接口下因此示例代码13.2.7.2是向I2C1节点追加内容stusb1600节点添加usb接口相关节点继续向stm32mp157d-atk.dtsi文件添加USB接口相关节点内容内容如下usbh_ehci { phys usbphyc_port0; status okay; }; usbotg_hs { phys usbphyc_port1 0; phy-names usb2-phy; usb-role-switch; status okay; port { usbotg_hs_ep: endpoint { remote-endpoint con_usbotg_hs_ep; }; }; }; usbphyc { status okay; };上述代码中有三个节点usbh_ehci、usbotg_hs和usbphyc其中usbotg_hs默认就有我们在前面将其屏蔽掉了完成以后如图13.2.7.3所示在stm32mp157d-atk-u-boot.dtsi文件中添加usbotg_hs节点最后我们需要在stm32mp157d-atk-u-boot.dtsi文件里面添加usbotg_hs节点节点内容如下所示usbotg_hs { phys usbphyc_port1 0; phy-names usb2-phy; u-boot,force-b-session-valid; hnp-srp-disable; /* TEMP: force peripheral for USB OTG */ dr_mode peripheral; // 删掉 usb-role-switch; port { usbotg_hs_ep: endpoint { remote-endpoint con_usbotg_hs_ep; }; }; };至此uboot下的USB OTG就已经修改完成重新编译uboot并烧写然后使用ums命令测试看看能不能将EMMC模拟成U盘挂载到电脑上命令如下做到这里保存修改的文件编译和拷贝。把STM32MP157D-ATK开发板的USB_OTG接口连接到电脑里重启开发板接着运行以下命令ums 0 mmc 1如果电脑上出现如图13.2.7.5所示的磁盘说明USB OTG工作成功LCD驱动修改RGB LCD 7 寸 1024×600 屏幕节点uboot也是支持LCD显示的但是要进行相应的设置主要是设置屏幕背光、屏幕时序参数这些这些直接在设备树里面修改即可。打开stm32mp157d-atk.dts文件在里面添加LCD相关节点信息首先在根节点“/”下添加panel_backlight和panel_rgb这两个节点节点内容如下示panel_backlight: panel-backlight { compatible gpio-backlight; gpios gpiod 13 GPIO_ACTIVE_HIGH; default-on; status okay; }; panel_rgb: panel-rgb { compatible simple-panel; pinctrl-names default, sleep; pinctrl-0 ltdc_pins_b; pinctrl-1 ltdc_pins_sleep_b; backlight panel_backlight; status okay; port { panel_in_rgb: endpoint { remote-endpoint ltdc_ep0_out; }; }; display-timings { native-mode timing0; timing0: timing0 { /* 7寸 1024*600 */ clock-frequency 51200000; hactive 1024; vactive 600; hfront-porch 160; hback-porch 140; hsync-len 20; vback-porch 20; vfront-porch 12; vsync-len 3; }; }; };第1~6行panel_backlight为LCD的背光控制节点主要指定LCD背光IO所使用的引脚正点原子的STM32MP157开发板LCD背光引脚为PD13。第8~38行panel_rgb为RGB LCD节点指定了LTDC接口所使用的IO、屏幕时序参数等。第11~12行指定LTDC接口的IOltdc_pins_b和ltdc_pins_sleep_b定义在stm32mp15-pinctrl.dtsi文件中。第22~35行的display-timings是非常重要的LCD时序参数不同的屏幕其时序参数不同这里演示的是正点原子7寸1024*600分辨率的。正点原子有4款RGB接口屏幕分别为4.3寸480*272和800*480分辨率、7寸800*480和1024*600分辨率这款屏幕时序参数如表13.2.9.1所示最后还需要在stm32mp157d-atk.dts文件里面向ltdc节点追加一些内容内容如下ltdc { status okay; pinctrl-names default; port { #address-cells 1; #size-cells 0; ltdc_ep0_out: endpoint0 { reg 0; remote-endpoint panel_in_rgb; }; }; };执行 ./stm32mp157d_alientek.sh 报权限不够问题分析plaintextrm: 无法删除include/config/dtc.h: 权限不够报错核心include/config下面的文件所有者不是当前普通用户 user大概率之前用 sudo/root 编译过 uboot生成的头文件属于 root现在普通用户执行脚本清理删不掉 root 的文件。现象uboot 的make clean/make distclean会尝试删除include/config/*文件是 root 权限普通 user 无删除权限。方案 1修复目录文件权限推荐不要一直用 sudo 编译 uboot在my_uboot目录下执行把整个源码目录所有者改回你当前普通用户userbashsudo chown -R $USER:$USER .执行完再跑你的编译脚本bash./stm32mp157d_alientek.shError: arch/arm/dts/stm32mp157d-atk.dtsi:223.17-31 syntax errorError: arch/arm/dts/stm32mp157d‑atk.dtsi:223.17‑31 syntax error FATAL ERROR: Unable to parse input tree报错指向第 223 行dtsusb_phy_tuning: usb‑phy‑tuning{问题根源设备树节点语法节点名称后面的左大括号{前面必须要有空格。 你代码dtsusb_phy_tuning: usb‑phy‑tuning{usb‑phy‑tuning和{紧贴在一起缺少空格DTC 编译器报语法错误。修改正确写法dtsusb_phy_tuning: usb‑phy‑tuning {在usb‑phy‑tuning与{之间加一个空格。完整修正片段dtsusb_phy_tuning: usb‑phy‑tuning { st,hs‑dc‑level 2; st,fs‑rftime‑tuning; st,hs‑rftime‑reduction; st,hs‑current‑trim 15; st,hs‑impedance‑trim 1; st,squelch‑level 3; st,hs‑rx‑offset 2; st,no‑lsfs‑sc; };Error: arch/arm/dts/stm32mp157d-atk.dtsi:223.17-20 syntax error FATAL ERROR: Unable to parse input tree scripts/Makefile.lib:308: recipe for target arch/arm/dts/stm32mp157d-atk.dtb failed make [2]: *** [arch/arm/dts/stm32mp157d-atk.dtb] Error 1 make [2]: *** 正在等待未完成的任务.... dts/Makefile:38: recipe for target arch-dtbs failed make [1]: *** [arch-dtbs] Error 2 Makefile:1090: recipe for target dts/dt.dtb failed make: *** [dts/dt.dtb] Error 2 useruser-virtual-machine:~/linux/atk-mp usb_phy_tuning: usb‑phy‑tuning { st,hs‑dc‑level 2; st,fs‑rftime‑tuning; st,hs‑rftime‑reduction; st,hs‑current‑trim 15; st,hs‑impedance‑trim 1; st,squelch‑level 3; st,hs‑rx‑offset 2; st,no‑lsfs‑sc; };错误定位报错stm32mp157d‑atk.dtsi:223.17‑20 syntax error现在行号直接指向源文件 223 行就是usb_phy_tuning: usb‑phy‑tuning {这一行。看你贴出来的代码里所有横线usb‑phy‑tuning、st,hs‑dc‑level里面的-不是英文减号是中文长破折号‑ 肉眼看着像横线但 dtc 编译器不认直接报语法错误。问题字符对比❌ 错误你现在的中文破折号usb‑phy‑tuning✅ 正确英文半角减号usb-phy-tuning所有属性里面的横线全部要替换成英文-st,hs‑dc‑level→st,hs-dc-levelst,fs‑rftime‑tuning→st,fs-rftime-tuningst,hs‑rftime‑reduction→st,hs-rftime-reductionst,hs‑current‑trim→st,hs-current-trimst,hs‑impedance‑trim→st,hs-impedance-trimst,squelch‑level→st,squelch-levelst,hs‑rx‑offset→st,hs-rx-offsetst,no‑lsfs‑sc→st,no-lsfs-sc完整正确代码复制这个这里全部是英文减号dtsusb_phy_tuning: usb-phy-tuning { st,hs-dc-level 2; st,fs-rftime-tuning; st,hs-rftime-reduction; st,hs-current-trim 15; st,hs-impedance-trim 1; st,squelch-level 3; st,hs-rx-offset 2; st,no-lsfs-sc; };操作步骤删除原来 223 行开始这一整块粘贴上面这段CtrlS保存文件清理再编译

相关新闻

魔兽世界API文档查询太散?我把自己常用的宏工具站直接搬到了本地

魔兽世界API文档查询太散?我把自己常用的宏工具站直接搬到了本地

魔兽世界API文档查询太散?我把自己常用的宏工具站直接搬到了本地 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api 写这篇文章之前,先说个让我抓狂的夜晚。给魔…

2026/10/22 17:17:54 阅读更多 →
Windows CMD命令提示符实用指南与高效操作技巧

Windows CMD命令提示符实用指南与高效操作技巧

1. 为什么每个Windows用户都应该掌握CMD刚接触Windows系统的用户往往会对那个黑底白字的"命令提示符"窗口感到困惑——这玩意儿看起来像是上个世纪的产物,为什么在图形界面如此发达的今天,我们还需要学习这种"古老"的工具&#xff1…

2026/10/19 11:52:33 阅读更多 →
PoB 新手 18 分钟上手:一次搞定天赋模拟与伤害计算

PoB 新手 18 分钟上手:一次搞定天赋模拟与伤害计算

PoB 新手 18 分钟上手:一次搞定天赋模拟与伤害计算 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 凌晨一点,你还在论坛里反复刷新那套号称"…

2026/10/22 15:06:38 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/22 10:18:38 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/22 11:01:53 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/22 9:44:47 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/22 10:42:00 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/22 10:40:08 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/22 10:56:37 阅读更多 →

日新闻

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/22 1:47:45 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/21 21:32:28 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/22 5:12:39 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:50:56 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 21:51:55 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/22 19:06:46 阅读更多 →