I am using st72f561 with cosmic compiler & STVD7 environment. I want to use global bit variables, hence I have edited the Linker file & it looks like this,
+seg .text -b 0x1000 -m 0xD000 -n .text +seg .const -b 0xE000 -m 0x200 -n .const +seg .bit -b 0x0080 -m 0x10 -n .bit -c +seg .bsct -b 0x0090 -m 0x50 -n .bsct +seg .ubsct -b 0x00E0 -m 0x1F -n .ubsct +seg .share -a .ubsct -n .share -is +seg .data -b 0x0200 -m 0x600 -n .data +seg .bss -a .data -n .bss The default linker file did not contain .bit segment, so I added the segment in the linker file. The compile, Build, Link went correct, w/o any error or wanrning. The bit started behaving randomly, hence I checked the map file. The map file was showing that it was mapped at the address of PFDDR:0. How to avoid the problems related to globally declared bits?? At the same time, localy declared bits are working properly & they were not visible in the map file.
Posted on May 05, 2006 at 11:37Hello, if you want to specify an absolute address for the .bit section in the linker file, you have to use bit notation. Replace +seg .bit -b 0x0080 -m 0x10 -n .bit -c with +seg .bit -b 0x0080:0 -m 0x10 -n .bit -c and it will probably work as you expect. If you just append the .bit segment after another segment (make sure you are still in page 0), the compiler will calculate the right address by itself. More details in the manual. Regards, Luca (Cosmic)
We did the changes in the linker file as per suggested by you. The results are very good. The global bit is mapped exactly at 000080:0 & serving it's purpose perfectly. Thank you again. Can you guide us towards any such document, in which such Compiler & Linker details are mentioned. We want to study this bit segemnt issue in detail to find out, where we went wrong in our approch to edit the linker file for the bit segment. Regards, Yogesh & Amit