uboot 学习笔记

使用 patch 命令打补丁, -p1 标识忽略第一级目录。 在串口上使用 q 命令,推出菜单界面,然后 print 可以打印出环境变量。想要返回菜单,只要输入 menu 即可。输入 ? 打印出可选命令。输入多条命令,可以使用分号隔开。输入 help 是各个命令的 usage 短帮助信息,输入...

stm32f4 dma + uart idle + double 调试小记

使用 stm32f4 调试uart 接收, 使用 空闲中断,dma 双缓冲模式,有以下几点需要注意的。 调试的时候断点不要打在 if (USART_GetITStatus(USART6, USART_IT_IDLE) != RESET) 这种语句上面,要打在 if 的代码块里面。mdk ...

arm 裸机学习笔记

位置无关码 bl 是位置无关码,指令中带的数值是,编译的时候,编译器计算好的,需要跳转的位置减去 bl 指令所在位置的结果。这样当程序最开始在 4k sram 中运行的时候,跳转的位置是在 0 + offset 的位置,当后期sdram 初始化好了之后,程序移动到 sdram 中运行的时候,跳...

mini2440 裸机程序,下载到nand 里面,复制到 sdram 中不运行

按照韦东山的视频中 sdram的裸机代码,写了一份,通过 minitools 下载到 0x30000000,然后烧录到 nand中,接过不能正常运行。 尝试过多种方法后,只有一种解决方法,就是不要用 0x30000000这个地址。 可以把 makefile 中的地址改为0x30008000,m...

bne 1b 汇编含义

汇编指令中 bne label 这条指令有以下两种特别的写法:bne 1b, bne 1f. bne 1b 指的是 backward,倒退寻找标号为 1 的地方并跳转。 同样也有 bne 1f,值得是 forward,向前寻找标号为1的地方并跳转。

mini2440 裸机程序下载到 sdram 不能运行。

今天在 写了个简单的 led 的汇编程序,下载到 mini2440 的 nand flash 里面可以正常运行,但是下载到 sdram 里面不能运行。 后来发现有几个注意点, 要在 sdram 中运行,链接脚本的地址不能像 nand 里面一样是0,必须是 sdram 里面的地址,比如说 0x...

ucosiii 学习笔记

OSTaskCreate 的参数中有一个 void *p_ext,这个参数用来传递额外的信息,可以用来传递数组,结构体等等。 AppTaskStart --> CPU_Init --> CPU_TS_Init --> CPU_TS_TmrInit --> BS...

stm32h7 开发板学习

按键和 IO 之间连接一个 1K 电阻,可以防止当 IO 被配置为高电平输出的时候,按下按键,导致 VDD 和 GND 直接连通。

stm32h7 hal 库的学习

stm32h7xx_hal_conf.h 中需要注意的几个地方: HSE_VALUE 这个外接晶振的频率 TICK_INT_PRIORITY 这个 tick 的中断优先级,因为 HAL_DELAY 这个函数是基于这个 tick 的中断的,所以如果有其他高优先级的中断中调用了 HAL_D...

hard fault 学习记录

使用 segger 的 hard fault 的源文件后,当调试时,发生硬件错误的时候,可以查看 HardFaultRegs 中的内容,并对比 segger_HardFaultHandler.c 中的定义,就能得出具体是哪种错误了。