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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值