Все работает.
Кроме extern необходимо использовать &
6.3.7 Methods of importing linker-defined symbols in C and C++
You can import linker-defined symbols into your C or C++ source code. They are external symbols and you must take the address of them.
The only case where the & operator is not required is when the array declaration is used, for example extern char symbol_name[];.
http://www.keil.com/support/man/docs/armli...62065956104.htm