当前位置: 首页 > news >正文

杰发科技Bootloader(2)—— 基于7840的Keil配置地址

在7840的sample代码里面有一个简单的Boot跳转APP的示例

PFlash地址从0开始

DFlash的地址从1000000开始

Boot解析

他的boot地址配置为0

Boot的代码主要是这几行,主要作用就是Flash的跳转

int main(void)
{SystemClock_Config();InitDebug();printf("demo start...\r\n");printf("BOOT\r\n");printf("Jump to APP\r\n");Go_To_App();printf("demo end...\r\n");while (1){;}
}

地址的配置

#define     BOOT_START_ADD      0x00000000
#define     BOOT_SIZE           0x00030000#define     APP_START_ADD       0x00030000

boot跳转APP的代码

static void Go_To_App(void)
{if (((*(__IO uint32_t *)APP_START_ADD) >= 0x1FFF0000) && ((*(__IO uint32_t *)APP_START_ADD) <= 0x2000EFFF)){DisableInterrupts                                               /* 关全局中断 */Jump_To_App = (Func)(*(__IO uint32_t *)(APP_START_ADD + 4));    /* 指向APP程序的Reset中断*/__set_MSP(*(__IO uint32_t*)APP_START_ADD);Jump_To_App();}printf("Jump to APP Fault\r\n");
}

只烧录Boot的测试

确实从0开始

APP解析

App主要代码

int main(void)
{DisableInterrupts;SCB->VTOR = APP_START_ADD;EnableInterrupts;SystemClock_Config();InitDebug();printf("demo start...\r\n");printf("APP\r\n");printf("demo end...\r\n");while (1){;}
}

APP代码烧录之后打印结果,Zdemo start没找到在哪儿写的

可以看到App的代码地址配置从30000开始

修改APP起始地址

改到40000

修改地址之后需要全片擦除,否则之前地址还有APP的内容,看不出来效果。擦除之后重新烧录Boot代码。

Boot烧录完成发现无法跳转到APP

需要修改Boot的跳转地址

修改之后测试OK

查看内存数据

是按照40000之后的地址保存数据

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Redis的五种数据类型与命令
  • 【教程】Node.js+Apache 部署网页全过程(非常详细!)
  • Knowledge Editing for Large Language Models: A Survey
  • 通信原理-思科实验三:无线局域网实验
  • 【使用 Pytest 记录日志文件并确保测试用例正常执行】
  • python实现盲反卷积算法
  • 2024最新网络安全自学路线,内容涵盖3-5年技能提升
  • Ubuntu 22.04.4 LTS (linux) GoAccess 分析 Nginx 日志
  • 如何学习自动驾驶仿真与算法优化 前后端开发
  • 深入理解Prompt工程
  • GO集成方式、Java文字识别接口集成方法
  • Odoo 17 仪表盘开发指南:打造高效的数据可视化中心
  • CSS前端面试题——怎么用CSS实现一个宽高自适应的正方形?
  • .NET Core中如何集成RabbitMQ
  • C++初阶学习——探索STL奥秘——标准库中的string类
  • $translatePartialLoader加载失败及解决方式
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • crontab执行失败的多种原因
  • Date型的使用
  • Java基本数据类型之Number
  • leetcode386. Lexicographical Numbers
  • Mocha测试初探
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • React 快速上手 - 07 前端路由 react-router
  • Spring-boot 启动时碰到的错误
  • vue 配置sass、scss全局变量
  • 基于Android乐音识别(2)
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 跳前端坑前,先看看这个!!
  • 为什么要用IPython/Jupyter?
  • 用jQuery怎么做到前后端分离
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 【云吞铺子】性能抖动剖析(二)
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​用户画像从0到100的构建思路
  • #图像处理
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (回溯) LeetCode 77. 组合
  • (六)c52学习之旅-独立按键
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (一)WLAN定义和基本架构转
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)我也是一只IT小小鸟
  • (自用)仿写程序
  • *** 2003
  • ./configure,make,make install的作用
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET/C#⾯试题汇总系列:⾯向对象
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net程序集学习心得