标题: 关于py32f002a单片机在keil里的报错 [打印本页]

作者: linlinlin~    时间: 2023-4-4 14:32
标题: 关于py32f002a单片机在keil里的报错
最近整了个arm内核的py32f002a玩,但按照给的官方文件却在keil里报错。以前只玩过8位,没玩过32位。错误代码:


.\Objects\sy32.axf: Error: L6985E: Unable to automatically place AT section system_py32f0xx.o(.ARM.__at_0x20000000) with required base address 0x20000000. Please manually place in the scatter file using the --no_autoat option.

错误是在

文件里的



uint32_t VECT_SRAM_TAB[48]__attribute__((section(".ARM.__at_0x20000000")));
这行代码出现了错误,这应该是个启动运行前的文件,跟RAM有关,具体的我也不懂,好像也查不到什么好的解决办法。
只要把这行代码的0x20000000改成0x200000500就能编译成功,调试中能操作寄存器,但函数不能正常运行。只能操作寄存器。
不知道有没同样用过的遇到这种问题的,或者知道解决办法的。

作者: linpeng1981    时间: 2024-2-19 08:51
我刚好碰到这个问题,不过我用的是002B,我用了system_py32f002b.c替代了system_py32f0xx.c就正常了。f0xx.c可能针对的是所有型号,不同型号可能要改下参数。你可以去找个system_py32f002a.c或者就用002b.c就可以了。
作者: Hephaestus    时间: 2024-2-20 19:25
可能缺了#define具体单片机型号这一句,也可以在项目工程文件里面define。
作者: 电子蟋蟀    时间: 2024-3-18 11:27
这个应该是分散加载文件中的分段对应不上。把ARM替换成RW_IRAM1就可以了。即uint32_t VECT_SRAM_TAB[48]__attribute__((section(".RW_IRAM1.__at_0x20000000")));//((section(".ARM.__at_0x20000000")));
作者: protoblue    时间: 2024-3-18 11:28
uint32_t VECT_SRAM_TAB[48]__attribute__((section(".RW_IRAM1.__at_0x20000000")));
出错代码替换成上边的代码试试,我的问题这样解决的。
作者: 明日之星8    时间: 2024-3-18 21:55
我最近在玩XL32F001,我只用py32f002bx5.h这一个头文件,注意前面没有“system_”,
另加“core_cm”开头的三个内核头文件,其它的都是“库”开发有关的,我不玩“库”。
简简单单点个灯都要长长一大篇,我直接操作寄存器只要三五句就点亮了。
作者: Hephaestus    时间: 2024-3-19 00:49
明日之星8 发表于 2024-3-18 21:55
我最近在玩XL32F001,我只用py32f002bx5.h这一个头文件,注意前面没有“system_”,
另加“core_cm”开头 ...

没用汇编说明你的修行还不到家。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1