历史上的今天
今天是:2025年01月16日(星期四)
2019年01月16日 | LPC1788升级程序调试备忘
2019-01-16 来源:eefocus
1、程序运行地址跳转
__asm void JMP_Boot( uint32_t address )
{
LDR SP, [R0] ;Load new stack pointer address
LDR PC, [R0, #4] ;Load new program counter address
}
2、中断向量表重新映射目标地址 DestAddr
#define DestAddr 0x00000000
SCB->VTOR = DestAddr & 0x1FFFFF80;
3、flash地址跳转校验
uint8_t app_checksum_is_correct(void)
{
int i;
uint32_t cksum, *buff;
buff = (uint32_t *)NOR_FLASH_BASE;
//判断App程序的第一个跳转指令地址 是否是SDRAM的高位地址
if((buff[1] & SDRAM_BASE_ADDR) != SDRAM_BASE_ADDR)
return 0;
//以下是校验码算法,各位自己琢磨
cksum = 0;
for (i = 0; i < 7; ++i) {
cksum += buff[i];
}
cksum = (0xFFFFFFFF - cksum + 1);
//判断校验码是否符合要求,返回1 表示OK
return ((cksum == buff[7]) && (buff[7] != 0));
}
After Build/Rebuild
$K\ARM\BIN\ELFDWT.EXE !L BASEADDRESS(0x00000000)
Target
IROM1 : Start size
//ram 地址对其
__align(4) uint8_t SendData[512];
4、遇到问题一定要自己独立多想办法解决
上一篇:LPC17XX系列ISP升级流程
下一篇:stm32程序下载调试之swd
史海拾趣
|
如何学习嵌入式系统(基于ARM平台) 前言 网上看到众多网友都问了关于嵌入式系统方面的很多问题,很多都可在这里找到答案,希望我的这篇文章能给他们以启发。也请大家不要轻易转载。 一、嵌入式系统的概念 &n ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:03 编辑 几年来,我已经从一个技术至上主义者变成技术节制主义者。面对最近轮番炒作的3D电影、3D电视时,我没有任何激动。虽然调研机构DisplaySearch说,2008年3D电视出货70 万台,10年后是这样的:3D ...… 查看全部问答> |
|
hBr = (HBRUSH) GetStockObject (BLACK_BRUSH); // hBr = (HBRUSH) GetStockObject (RGB(255,0,0)); 把BLACK_BRUSH改成RGB(255,0,0)为什么不行呢??? hOldBr = (HBRUSH) SelectObject (hdc, hBr); ...… 查看全部问答> |




