在写boot loader程序和app程序有什么区别,link文件需不需要修改?需要注意什么?
bootload程序是系统启动时执行的前期程序,通常用于处理升级任务或特殊处理,如出厂恢复等等。同时在升级过程中bootload引导升级完成后,要跳转到APP。APP是你应用项目逻辑的核心,这部分程序根据你实际需求而编写。在应用过程中要分别实现这两个程序,然后采用LINK文件连接编译时,决定程序烧录初始空间。boot程序在跳转要指向APP烧录地址,而APP的中断表也要根据烧录地址进行偏移。这部分与芯片架构有关,但基本常识都一致。
把本站 Bootloader 标签下的所有问题和文章都过一遍。
1、bootloder与app的目的不同,bootloader是为了装载或升级app而存在和使用的,app则是你的核心业务逻辑的载体。
2、link时的启动地址是bootloader的地址,bootloader内部的跳转地址才是app的真实地址;
3、因为bootloader会占用一部分flash空间,建议在芯片flash>256KB时再考虑使用bootloader。
我也尝试用飞凌的IAP 修改了flexspi_nor.scf
/ Sizes /
; load region size_region
LR_IROM1 m_text_start m_text_size
{
ER_IROM1 m_text_start m_text_size ; load address = execution address
{
ITCM 0x400 0xFBFF {
;drv_flexspi_hyper.o(+RO)
;fsl_flexspi.o(+RO)
}
LR_m_interrupts m_interrupts_start m_interrupts_size {
VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
}
}
LR_m_interrupts_ram m_interrupts_start m_interrupts_size {
VECTOR_RAM m_interrupts_start m_interrupts_size { ; load address = execution address
.ANY (.m_interrupts_ram)
}
}
问题:编译出错,不知哪里原因。
no section to be FIRST/LAST
好像是没有定义FIRST/LAST