uboot 调试
@[toc] 成功debug https://blog.csdn.net/qq_39665253/article/details/145641929 u-boot 配置 https://docs.u-boot.org/en/latest/develop/gdb.html 123CONFIG_CC_OPTIMIZE_FOR_DEBUG=yCONFIG_LTO=n CONFIG_LOG_MAX_LEVEL=9 重新编译.得到u-boot的elf文件(不带后缀就是),可以使用file u-boot确认 ST-LINK debug失败12345678910111213141516171819202122232425262728293031{ "version": "0.2.0", "configurations": [ { "name": "Stlink-Debug", "cwd...
向u-boot提交补丁的流程
@[toc] 首先需要订阅一下,地址在此https://lists.denx.de/listinfo/u-boot,使邮箱地址对应有一个成员名称,才能向uboot社区发送补丁,否则会收到Post by non-member to a members-only list2. 注册完毕即可发送补丁,发送完之后即可在https://patchwork.ozlabs.org/project/uboot/list/看到了(首次贡献的话发送完补丁后需要等待至少12个小时才会将发送的补丁显示在patchwork上)。 观看如下文档的步骤使用patman工具 https://docs.u-boot.org/en/latest/develop/sending_patches.html pip install patch-manager git config sendemail.aliasesfile doc/git-mailrc 使用git config --list | grep sendemail检查是否生效 patman send -n试运行,并不会真的发出去...
UBOOT 早期串口调试功能CONFIG_DEBUG_UART适配教程
@[toc] https://github.com/wdfk-prog/u-boot/tree/art-pi-debug 前提条件 该思路使用与STM32系列,其他芯片系列仅做参考 Kconfi配置 开启如下配置 其中CONFIG_DEBUG_UART_BASE是串口的寄存器地址.地址看手册就行,找不到也基本不用看了. CONFIG_DEBUG_UART_CLOCK是串口所在时钟的频率. 需要注意该频率是没有初始化时钟源,默认采用HSI,分频与倍频都是1时的时钟频率 可以使用CUBEMX辅助计算 1234CONFIG_DEBUG_UART_BOARD_INIT=yCONFIG_DEBUG_UART=yCONFIG_DEBUG_UART_BASE=0x40004c00CONFIG_DEBUG_UART_CLOCK=64000000 编写makefile 参考board/st/stm32mp1/debug_uart.c和makefile的实现编写 找到所在的板子的路径 我这里使用的是board/st/stm32h750-art-pi 添加makefile,把de...
U-BOOT 配置按钮功能及使用教程
@[toc] https://github.com/wdfk-prog/u-boot/tree/art-pi-debug Kconfig配置 添加如下配置,使用按键驱动与按键绑定命令功能与按键命令识别 12345CONFIG_BUTTON_CMD=yCONFIG_CMD_BUTTON=yCONFIG_BUTTON=yCONFIG_BUTTON_GPIO=yCONFIG_CMD_BOOTMENU=y 添加env环境变量 路径参考:board/st/stm32h750-art-pi/stm32h750-art-pi.env 这里的button_cmd_0=后面是需要支持的cmd命令,必须要可以使用的 这里使用bootmenu体现 1234567891011button_cmd_0_name=Userbutton_cmd_0=bootmenubootmenu_0=mount internal storage=usb start && ums 0 mmc 0; bootmenubootmenu_1=fastboot=echo S...
[UBOOT][STM32]编写LED支持教程
@[toc] 前提1.目的:uboot启动时没有状态提醒,无法知道当前板子运行到了什么阶段2.所以需要一个LED来指示当前的U-BOOT状态 编写 参考:board/st/stm32f429-discovery/led.c 在自己的板级目录下makefile修改. 加入led.c的编译 12//board/st/stm32h750-art-pi/Makefileobj-y += led.o 添加led.c文件并编写 board/st/stm32h750-art-pi/led.c GPIO编号转换成引脚的宏已经写好了,对应修改成自己的引脚既可 gpio_direction_output(RED_LED, 1);这个就是配置后输出对应的电平,根据需要修改高低电平既可 1234567891011121314151617181920212223242526272829303132333435#include "acpi/acpi_device.h"#include <status_led.h...
[U-BOOT][STM32]设置使用SD卡中的linux程序启动
@[toc] https://github.com/wdfk-prog/u-boot/tree/art-pi-debug 前提 使用SD卡启动linux,可以方便linux的升级 当然SD卡linux去写入flash替换正在运行的linux程序也是可以的 操作步骤Kconfig配置 打开fat文件系统支持,这一块根据自己SD卡的格式化文件系统去配置. 这里就使用fat32去举例了. SD卡格式化程序可以使用格式化程序,这个是SD卡协会推荐的格式化程序,暂时没遇见格式化后无法识别的情况. 12CONFIG_CMD_FAT=yCONFIG_FS_FAT=y env或cli命令实现 可以编译时存入env变量中,直接从bootmenu中选择启动SD卡的linux还是flash中烧录的 12//stm32h750-art-pi.envbootmenu_0=load from SD=mmc dev 0;fatload mmc 0 0xC1000000 APT_Pi_Krl.itb.bin; bootm 0xC1000000; 这段代码也可以在CLI命令行环境中手动输入执行哦...
[U-BOOT][STM32]SD卡导入导出环境变量
@[toc] https://github.com/wdfk-prog/u-boot/tree/art-pi-debug 前提 u-boot的环境变量十分重要,可以说有了环境变量.u-boot的配置和灵活性得到了提高. 只有u-boot编译了相关程序,使用环境变量执行命令,可扩展性将会大大增加. 操作步骤 结合之前的内容 Kconfig需要启用如下配置 用于导入导出env变量,编辑env变量 CONFIG_ENV_IS_IN_FAT这个是用于从fat中加载env变量环境到内存中.没有设置将从默认的编译程序中加载,这种就不可改变了.但是存在fat文件系统中的env环境变量,是可以一直保存与修改的,掉电后还可生效. 1234567891011// configs/stm32h750-art-pi_defconfig## Command line interface -> Environment commands#CONFIG_CMD_EXPORTENV=yCONFIG_CMD_IMPORTENV=yCONFIG_CMD_EDITENV=yCONFIG_CMD_SAV...
[U-BOOT][STM32F40xx]移植与编写
@[toc] https://github.com/wdfk-prog/u-boot/tree/f4debug 参考 参考uboot现有支持板子与芯片型号 1234567891011├── common├── stih410-b2260├── stm32f429-discovery├── stm32f429-evaluation├── stm32f469-discovery├── stm32f746-disco├── stm32h743-disco├── stm32h743-eval├── stm32h750-art-pi├── stm32mp1└── stm32mp2 使用stm32f429-discovery作为模板配置使用 编译与修改 编译 12export CROSS_COMPILE=arm-none-eabi- ARCH=arm;make configs/stm32f429-discovery_defconfigmake -j12 将编译后的.bin文件烧录到指定地址CONFIG_TEXT_BASE=0x08000000 这个时候是看不到任何现象的...
[uboot][stm32]配置LTDC屏幕
@[toc] https://github.com/wdfk-prog/u-boot 前提 手上刚好有块屏幕,尝试在uboot中点亮一下 使用前请使用其他手段点亮该屏幕确保屏幕的完好再进行操作.确保配置的参数及引脚是可用的. dts设备树修改 ltdc状态修改为重定向前绑定,另外进行GPIO的绑定.根据需要自行配置.注意我使用的是H7系列芯片.不同系列芯片AF的内容不一致,需要自行查看修改. 12345678910111213141516171819202122232425262728293031323334<dc { pinctrl-0 = <<dc_pins>; pinctrl-names = "default"; status = "okay"; bootph-all;};&pinctrl { ltdc_pins: ltdc@0 { pins { pinmux = <STM32_PI...
[Linux][ARM][asm bug]BUG宏的理解
@[toc] https://github.com/wdfk-prog/linux-studyhttps://github.com/wdfk-prog/other 编写原因 阅读linux源码时,看到了#define BUG()的定义,便尝试理解.发现自行理解较难,便去网上搜索.搜索了好久,才终于搞懂这一块干了什么.所以写这个文章,给后面的人减少点搜索工作量. 网上搜索的要么不够深入,要么根本不是arm架构的实现. BUG_INSTR 的指令理解 #define BUG()这块自行理解既可,这里着重说明BUG_INSTR为什么要这么写 1234567891011121314151617/* * Use a suitable undefined instruction to use for ARM/Thumb2 bug handling. * We need to be careful not to conflict with those used by other modules and * the register_undef_hook() system. */ ...