|
0x8000000 => flash memory. 0x20000000 => SRAM memory. Please see LD file in you project folder . |
发表于 2022-2-16 11:53 我的问题是app起始地址是一样的情况下,带UCOS-II系统的程序和使用标准库的程序,两者生成的Reset_Handler地址为什么一个是0x080 4xxx,一个是0x0802 xxxx |
发表于 2022-2-15 18:37 你好,我这个是芯片的flash有1M,0x0800 0000---0x0801 FFFF 这个区域分配给了bootloader,0x0802 0000这个区域开始是主程序的起始地址 |
发表于 2022-2-16 11:53 是的。我之前用bootloader跳转到标准库写的app,跳转前最后的判断是
,这样就正常跳转了,但是到用到UCOS-II的程序,系统编译发现这个LASH_APP1_ADDR+4这个位置的地址不对了 |
AUG 发表于 2022-2-16 09:44 你好,现在才看到。主要的疑问是我APP程序时从0x08020000开始的,但是BIN文件的第二个地址竟然时0x0804xxxx,这个程序用的时ucos-II。我在用IAP从bootloader跳转到主程序时,发现跳转失败才发现的,因为之前用标准库写的并没有这个问题,又特意去看来下,才发现标准库和UCOS-II生成的有些不同。标准库是0x0802xxxx. 我在网上查询以后,查到说BIN文件第二个地址是Reset_Handle()的地址。 |
AUG 发表于 2022-2-16 09:44 bootloader设定128k那是家里有矿随便浪。其实楼主的问题是app起始地址0x08020000,而Reset_Handler地址0x0804xxxx,这之间的128k是怎么冒出来的? |
| 一个bootloader能有128K的大小?当然你可以跳转到这儿运行也没我问题,如果你的flash足够大的话。 还有你说的Reset_Handler地址不一样,这是不可能的,启动文件里面可以看到你的复位地址在哪儿,跳转过去之后只是加上偏移就可以了。还有你看的是0x08020000的数据,是你主程序开始的内容,跟你用什么库生成是没关系的吧,你改下代码然后哦重新编译一下,估计也会有所不一样。同时你可以直接查看BIN文件的数据,并不需要去仿真烧录到单片机里面查看。 |
| 0x20000对应128k,如果你的代码有这么大不太正常了吗? |