简介:下午制作了两个ARM-OB下载器,原以为会很快搞定,谁知道,在最后一步出现了如下的问题.....
ERROR: RAM check failed @ address 0x20000000.
- ERROR: Write: 0xE7FEBE00 E07CE062
- ERROR: Read: 0x0000000 000000000
- ERROR: (0 bytes of RAM have been checked successfully)
- ERROR: Failed to read back target memory
我感觉好奇怪啊,三个月前我制作ARM-OB下载器的时候还没有这个问题出现,为什么呢? 百度该问题,出现的答案不一而同。
(1)有的人说是芯片锁住了。。。我否定,因为刚刚焊接好的电路板,芯片还没下过程序,怎么锁住?而且以前也没这个问题。
(2)有的人说是硬件电路问题,没有供电,或者TMS和TCK引脚没接好。。。
下一刻,我否定了这个说法。因为我用J -LINK ARM 4.08i 版本下载FLASH,该软件提示,能连接成功,但是下不进去程序。证明不是连接和电源问题,否则如果有问题,根本连接都连接不成功的。
(3)会是我电路焊接的问题么?因为我记得这两个新板子与旧板子唯一一点不同的就是1.5k 电阻找不到,我用1.6k电阻代替。可是,没理由啊,因为1.5与1.6相差这么一点,怎么可能苛刻到这个地步?我不信。
我又把两个板子重新焊接了一遍,确定没有什么虚焊和漏焊的问题后,连接上去,发现问题依旧。。。
两个小时过去了。我不断检查,排除。。。。快疯了。。。
什么问题呢?
就在崩溃的边缘,,我突然想起,会不会软件本身的问题,我记得以前我下载程序用的是J-LINK 4.32 a , ,现在是4.08i 会不会太旧了?
重新下了个最新的4.32版本来下,惊喜出现了,成功下载!!!
那一刻有,好欣喜若狂。
一个小问题,纠结了两个小时。在最后的最后,我实在没有想出其他解决办法了。问题虽小,可以也得解决啊不是!本来想喊别人帮忙的,。。。最后终于还是自己解决了。没有多大的成就,仅仅一个小问题。可是,它让我相信了,只有不放弃,问题总会有解决的办法的。
以为念,以为记!!
关键字:STM32 读RAM 下载
引用地址:
解决STM32不能读RAM下载的问题
推荐阅读最新更新时间:2024-11-09 18:52
stm32 中空编码器tim4初始化
#include stm32f10x.h #include encode.h #include misc.h #include nvic.h #include sys.h #include delay.h void TIM4_Mode_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; //PB6 ch1 A,PB7 ch2 RCC_APB1PeriphClockCmd(RCC_APB1Periph_
[单片机]
STM32时钟初始化研究
时钟是一个MCU的脉搏,研究清楚脉搏才能更清楚的把握整个MCU的运行。本文主要研究STM32F10x系列,利用官方库文件进行初始化设置。开发环境为MDK4.6,库文件V3.5版本,STM32参考手册。 利用MDK自带仿真器,仿真发现。芯片启动首先打开system_stmf10x.c文件,调用void SystemInit(void)函数。下面贴上代码和中文注释 void SystemInit (void) { /* Reset the RCC clock configuration to the default reset state(for debug purpose) */ /* Set HSION bit */
[单片机]
STM32 串口DMA方式接收
STM32 是一款基于ARM Cortex-M3内核的32位MCU,主频最高可达72M。最近因为要在车机上集成TPMS功能, 便开始着手STM32的开发工作,STM32F10x系列共有5个串口(USART1~USART5),支持DMA方式通信,DMA方式由于不需要CPU的参与,而是直接由DMA控制器完成串口数据的读写,因而可以很大程度的提高CPU的利用率。在使用STM32串口之前需要做一系列的初始化工作: 1.RCC(复位和时钟控制寄存器)初始化,启用GPIO、DMA、USART时钟。 2.NVIC(嵌套向量中断控制寄存器)初始化,完成各个硬件中断的配置。 3.USART初始话,配置串口,设置DMA通道等。 4.DMA初始化,完
[单片机]
STM32开发笔记19: STM32CubeMX中定时器的配置方法
单片机型号:STM32L053R8T6 本文介绍在STM32CubeMX进行定时器的配置,产生固定时间中断的方法,以TIM2为例,步骤如下: 1、使能TIM2,指定时钟源。 2、查看数据手册,确定该定时器的内部数据总线,本文所引用的定时器内部数据总线为APB1。 3、在时钟配置中确认所选定时器的内部数据总线的时钟频率,我这里是32MHz。 4、在配置页中,选中相应的时钟,在Prescaler中输入预分频系数,在Counter Period中输入溢出系数。例如,本例中时钟为32MHz/32=1MHz,也就是一个周期为1us,我选择溢出系数为1000,则产生中断的时间为1ms。
[单片机]
关于多路步进电机控制系统的设计方案分析
本文设计实现了一种三路步进电机控制系统,它基于RTThread嵌入式实时系统,提高了系统的实时性和后期的功能扩展能力。系统控制电路采用STM32F4系列的微控制器,结合小功率步进电机驱动器A4988,完成了硬件电路板设计。软件中运用操作系统自带的finsh机制,实现对指令的初步解析,控制系统可以通过读取G指令,控制多路电机按照一定轨迹运动,同时可以调节电机运动的加减速参数。实际项目验证证明该系统具有很好的稳定性。 随着计算机技术和微电子技术的发展,步进电机作为自动化控制的执行单元,越来越多地运用在各种领域中,许多控制领域需要对多台步进电机进行同步协调控制,如军事、航空、机器人控制。特别是近年来,随着嵌入式技术和集成化的发展,其
[单片机]
STM32——关于printf重定向到串口的问题
简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls __io_putchar() */ #define PU
[单片机]
STM32填坑:时钟使能必须在外设初始化之前
最近在STM32上写了一份串口通信的程序,但下载复位后串口却不能工作,初始化的代码如下: //发送/接收的GPIO、串口和中断的初始化结构体 GPIO_InitTypeDef GPIO_InitStructureTx; GPIO_InitTypeDef GPIO_InitStructureRx; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //设置发送和接收引脚 GPIO_InitStructureTx.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructureRx.GPIO_Pin = GP
[单片机]
stm32 mmc卡扫描指定文件夹下的所有文件 串口输出(文件名长度有限制)
硬件环境:神州一号开发板 软件环境:mdk 1、sd卡初始化 2、f_mount 3、扫描函数如下: #define _USE_LFN 0 FRESULT scan_files (char* path) { FRESULT res; FILINFO fno; DIR dir; int i; char *fn; #if _USE_LFN static char lfn ; fno.lfname = lfn; fno.lfsize = sizeof(lfn); #endif res = f_opendir(&dir, path); if (res == FR_OK) { i = strl
[单片机]