We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi
I am using a cortex m3 arm from microsemi and I am trying to get the uLink2 debugger to load and debug my code. I have the standard on board 64K of nvm (addr 0) which is only good for start up really and 2GB of DDR RAM memory (0xA0000000) where my application will run.
I have tried to tell the debugger about this RAM memory that starts at 0xA0000000 with the following debugger initialization file but it seems to be totally ignoring it and giving me a error 129: MapMem - map size truncated to 128MB. If i try to load the symbols after this completes whatever it is doing, the uVision/uLink2 IDE hangs and I have to kill it.
RESET MAP MAP 0xA0000000, 0xA07FFFFF READ WRITE EXEC MAP 0xA0800000, 0xA0FFFFFF READ WRITE EXEC MAP 0xA1000000, 0xA17FFFFF READ WRITE EXEC MAP 0xA1800000, 0xA1FFFFFF READ WRITE EXEC
Does anyone ideas as to what I have done wrong or what I can do to allow my code to be loaded?
Maybe ask Keil support what to do when they complain about 128MB limits and real-world systems has more than 128MB of memory.
Yes, I did actually try that for the past 2+ weeks and I still do not have answer from them which is why I am reaching out to the community. I've gone back and forth with them (slowly) but no explanation why this is happening or how to fix it. They says that the MAP command is what to do but it is not working.
I don't know why I am not getting a answer to this question. Its there product. They created it and should know how it works.
So my development is stopped until I get make this work.
I really can't help out here.
I only work with small ARM processors using with the Keil tools.
For more powerful ARM chips, I instead run Linux and use gcc to build everything.
So I have never been even close to any 128MB limit with MDKARM.
I appreciate your at least looking at my issue. I see that you help a lot of people on the forum and to me that shows what I great guy/engineer you are because I know it takes time to do. I hope you keep doing it because I am learning a lot from your posts.
This is my first experience with a ARM processor so I have had to try to how it works quickly because of the crazy delivery schedule. It doesn't help when the tools don't work right. :-(
The size is not due to my code being HUGE but that there are a lot of very big data structures to hold MBs of data as well as ZI data.
This is why my memory map that is creating this 128MB truncation. The MAP directive is suppose to tell the debugger about he extra memory past 128MB but its not working
Load Region FLASH_LOAD (Base: 0x00000000, Size: 0x00025848, Max: 0x00080000, ABSOLUTE, COMPRESSED[0x00025124]) Execution Region ER_RO (Base: 0x00000000, Size: 0x00000908, Max: 0x00008000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x00000000 0x00000188 Data RO 2881 RESET M2S050T_MSS_CM3_hw_platform.lib(startup_m2sxxx.o) 0x00000188 0x00000008 Code RO 3102 * !!!main c_w.l(__main.o) 0x00000190 0x00000034 Code RO 3741 !!!scatter c_w.l(__scatter.o) 0x000001c4 0x0000005a Code RO 3739 !!dczerorl2 c_w.l(__dczerorl2.o) 0x0000021e 0x00000002 PAD 0x00000220 0x0000001a Code RO 3743 !!handler_copy c_w.l(__scatter_copy.o) 0x0000023a 0x00000002 PAD 0x0000023c 0x0000001c Code RO 3745 !!handler_zi c_w.l(__scatter_zi.o) 0x00000258 0x000002fc Code RO 2611 .text M2S050T_MSS_CM3_hw_platform.lib(system_m2sxxx.o) 0x00000554 0x000000e8 Code RO 2882 .text M2S050T_MSS_CM3_hw_platform.lib(startup_m2sxxx.o) 0x0000063c 0x00000038 Code RO 2951 .text M2S050T_MSS_CM3_hw_platform.lib(low_level_init.o) 0x00000674 0x0000010c Code RO 3420 .text M2S050T_MSS_CM3_hw_platform.lib(retarget.o) 0x00000780 0x0000000a Ven RO 3747 Veneer$$Code anon$$obj.o 0x0000078a 0x0000000a Ven RO 3748 Veneer$$Code anon$$obj.o 0x00000794 0x0000010e Data RO 1544 .constdata sys_config.o 0x000008a2 0x00000014 Data RO 3422 .constdata M2S050T_MSS_CM3_hw_platform.lib(retarget.o) 0x000008b6 0x00000002 PAD 0x000008b8 0x00000050 Data RO 3737 Region$$Table anon$$obj.o Execution Region ARM_LIB_HEAP (Base: 0x0af00000, Size: 0x00080000, Max: 0x00080000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x0af00000 0x00080000 Zero RW 2 ARM_LIB_HEAP.bss anon$$obj.o Execution Region ER_RW (Base: 0x20000000, Size: 0x00000060, Max: 0x00008000, ABSOLUTE) Base Addr Size Type Attr Idx E Section Name Object 0x20000000 0x0000001c Data RW 2612 .data M2S050T_MSS_CM3_hw_platform.lib(system_m2sxxx.o) 0x2000001c 0x00000004 Data RW 3423 .data M2S050T_MSS_CM3_hw_platform.lib(retarget.o) 0x20000020 0x00000040 Zero RW 3421 .bss M2S050T_MSS_CM3_hw_platform.lib(retarget.o) Execution Region STACKS (Base: 0x20001000, Size: 0x00003800, Max: 0xffffffff, ABSOLUTE, UNINIT) Base Addr Size Type Attr Idx E Section Name Object 0x20001000 0x00003800 Zero RW 2879 STACK M2S050T_MSS_CM3_hw_platform.lib(startup_m2sxxx.o) Execution Region ER_DDR (Base: 0xa0000000, Size: 0x0cc3fde8, Max: 0x20000000, ABSOLUTE, COMPRESSED[0x000005a8]) 0xa0000000 0x00000000 Code RO 3050 .ARM.Collect$$_printf_percent$$00000000 c_w.l(_printf_percent.o) . . . . 0xacc3fde8 0x00000000 Zero RW 2880 HEAP M2S050T_MSS_CM3_hw_platform.lib(startup_m2sxxx.o)
I'm confused, you mean 2 Gbit, 256 MByte, because 2GB isn't going to fit at 0xA0000000, and 256MB is 0x10000000
The 128MB is a HARD limit Keil has used, only they can provide an answer to why that number was chosen.
RESET MAP MAP 0xA0000000, 0xA7FFFFFF READ WRITE EXEC MAP 0xA8000000, 0xAFFFFFFF READ WRITE EXEC
7FFFFF -> 8MB-1 7FFFFFF -> 128MB-1
Yes you are correct. Keil tech support told me that I only needed/should MAP the memory I was actually using and not all of the available memory which is what I tried to do in 128MB chunks.
I had tried this first and it didn't make any difference.
What I posted was not correct. It was another desperate attempt to get this to work with a smaller build I made. Sorry about the confusion.
Does Kiel monitor this forum at all? I am not getting much help from tech support on this
I have a case open for past 2 or 3 weeks but still have not gotten an answer as to why MAP is not working.
This is not an official support venue, staff have been known to post here, and lurk.