Boot与App程序设计
1.flash分配
:Boot一般在7K到10K,EE可以视情况分配,假如flash足够大,可以采用先写到APP之外的地址,然后将数据搬移到APP起始地址。
EE页大小设置,
Flash页大小设置#define FMC_PAGE_SIZE 0x800
一般F0为1k,F1为2K(必须参考手册,设置为最小可擦除页的倍数)
2.中断的处理,找出对应芯片的中断数量
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
for(i=0;i<60;i++)
{
NVIC_InitStructure.NVIC_IRQChannel = i; //¸üÐÂʼþ
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //ÇÀÕ¼ÓÅÏȼ¶0
//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //ÏìÓ¦ÓÅÏȼ¶1
NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE; //ÔÊÐíÖжÏ
NVIC_Init(&NVIC_InitStructure);
}
采用上面的方式,关掉全部中断,
__disable_irq();可以视具体情况使用,关掉后记得打开__enable_irq();
3.Boot与App初始化设置
,可以定义不同的arch_stm32.c 或者arch_sys.c和arch_sys.h,用于存放arch_init函数,void GoApp(void)、arch_gpio_init();、LED_Init();
4.采用CAN的方式升级
,Boot中CAN的接收ID,发送ID修改,另外CAN不采用中断接收的方式,而是采用查询的方式
5.针对不同的BOOT和APP 要修改的地方
:
BOOT:OPTION中的IROM地址
GoApp()中APP_START_ADDRESS的地址
程序写入的地址SECTOR_ADDR_5和SECTOR_ADDR_0
EE中的页大小和地址:PAGE_SIZE(芯片页地址的倍数)、EEPROM_START_ADDRESS
APP:OPTION中的IROM地址
修改中断向量表的映射地址
:F0
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
memcpy((void*)0x20000000, (void*)APP_START_ADDRESS, VECTOR_SIZE);
// for(i = 0; i < 48; i++)
// {
// VectorTable[i] = (__IO uint32_t)(APPLICATION_ADDRESS + (i<<2));
// }
SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
:F1,F2
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x10000); 0x10000是APP偏移地址
EE中的页大小和地址:PAGE_SIZE(芯片页地址的倍数)、EEPROM_START_ADDRESS
6.文件存放
:Boot中的自己的文件有upgrade.c boot.c
Boot与APP相关的几个有:
初始化:IO初始化、延时初始化、CAN初始化、灯初始化、串口初始化、EE初始化
在往上是CAN发送接收、串口发送
因此,Boot中的文件有upgrade.c boot.c arch_boot_can.c(自己的CAN初始化,去掉中断) arch_gpio.c arch_eeprom.c arch_stm32.c 或者arch_sys.c arch_usart.c hal_can.c
Stm32f10x_it.c
Boot与App程序设计相关推荐
- okta-spring_通过Okta的单点登录保护Spring Boot Web App的安全
okta-spring "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多 ...
- 通过Okta的单点登录保护Spring Boot Web App的安全
"我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 您可以使 ...
- 嵌入式编程中boot和app的s19简易合并方法(使用mfc编程)
嵌入式中boot和app为两个项目,使用手动合并方式较慢,如何使用mfc编写程序实现自动合并 1.实现逻辑,首先将boot.s19和app.s19拷贝一份 CommonCopyFile((CStrin ...
- 系统开机进入boot menu app menu解决办法
三星笔记本,开机进入boot menu & app menu,无法开机. 插入win7安装光盘显示boot security: acess deny. 解决 1.开机点击F1进入到bios界 ...
- android起源说法错误的是,知到APP19秋冬—《移动APP程序设计》见面课答案
知到APP19秋冬-<移动APP程序设计>见面课答案 打开右边网址即可查题www.xuanxiu365.com [网址速记:选修365] 查题解析答案参考,同时提供大学网课,选修课 公务员 ...
- 部署Spring Boot Angular App(Maven和Tomcat)的4种方法
在上一篇有关Spring Boot angular 5的文章中 ,我们使用Spring Boot angular 5实现了一个完整的堆栈端到端Web应用程序.在本文中,我们将讨论在tomcat上部署S ...
- SWPU第一届APP程序设计大赛筹备工作
1 竞赛网址 http://main.corntree.net/champion/index 2. 选题讨论 关于竞赛的题目,目前几个想法: 1.私密相册 2.打印机 3.贴图(制作表情包) 4.聊天 ...
- N76E003合并boot和app
N76E003的FLASH容量为18KB,这18KB可分为LDROM(Load ROM)和APROM(Application ROM).LDROM和APROM共用这18KB的FLASH,可以通过配置C ...
- 瑞萨单片机iap串口升级boot程序与app程序合并的工程构建-学习记录
MCU型号: R7F0C004 编辑软件:CS+ for CC boot区程序地址分配:0x0000-0x1ffff app区程序地址分配: 0x2000-0xfffff 复制一份常规的app程序,然 ...
最新文章
- 如何用php实现分页效果
- 数字信号处理中的自相关和互相关计算和物理意义(二)
- 1036 跟奥巴马一起编程 (15分)——16行代码AC
- vue 父组件与子组件之间的传值(普通传值)
- 操作多台_一支热电偶能否连接多台显示仪表
- 计算机课本ppt,计算机基础知识培训教材(ppt44页) .pptx
- iOS开发中的单元测试(三)——URLManager中的测试用例解析
- 新西兰储备银行数据遭泄露
- sqoop简单的demo 先跑起来再说
- 中国期货交易技术的逆袭之路
- Mac使用JMeter录制脚本
- 《人工智能导论》自然演绎推理
- linux离线安装nettools,CentOS最小安装之安装net-tools并配置网络
- 二十世纪初的心理学时间轴制作
- python表白女神
- 如何查看python有哪些内置函数_如何查看 Python 全部内置变量和内置函数?
- aspose-words,pdf
- html5 评测 小米6,小米6X和小米6哪个好?小米6与6X区别对比全面评测
- 《菅销在移动互联网时代》智慧树知到章节测试答案
- pdf怎么合并?合并有技巧
热门文章
- 11.STC15W408AS单片机CCP/PCA/PWM应用
- python批量改名
- SpringBoot普通参数与基本注解(@PathVariable、@RequestHeader、@RequestParam、@RequestBody)
- insert table mysql_MYSQL insert data(如何插入数据到table)
- [ZCMU OJ]1633: 酷酷的单词(遍历)
- C语言求一元二次方程根
- SAP FI02和FI12银行主数据的维护
- 详解:S锁(读锁)和X锁(写锁)
- 程序员,你还没有软技能吗?难怪你不幸福
- linux的网络管理,Linux之网络管理