On Feb 15, 2011, at 3:32 PM, Bernard Davison wrote:
> Another thing to note when working with the tool chain / gcc is that when you compile you need to make sure that the linker is including the correct multilibs.
> To find the options that you need do the following.
> arm-none-eabi-gcc -print-multi-lib
> This will print something like:
Just as a heads up. I added multilib support to SAT (https://github.com/esden/summon-arm-toolchain) now it should generate all the libraries with the correct parameters.
> If we want / need to include the thumb2 versions of the multilibs then we must specify every option for that library set.
> i.e. -mthumb -march=arm7 -mfix-cortex-m3-ldrd -msoft-float
> Note that what you have will be different from the above and will need adjusting accordingly.
I tested a little bit and the flags necessary to build the right assembler and link with the correct multilib are the following:
CFLAGS=-mcpu=cortex-m3 -mthumb -msoft-float
LDFLAGS=-mthumb -march=armv7 -mfix-cortex-m3-ldrd -msoft-float
> The alternative to this is to build gcc so that it only supports the target architecture. (This is NOT what the summon-arm-toolchain currently does)
You should be able to generate just that by passing DEFAULT_TO_CORTEX_M3=1 to the SAT script. Please tell me if the parameters passed in there are not correct for someone.
> Please let me know if you have any questions.
Thank you for your and Eric Parsonage work on that. The changes in SAT are based on your work. I hope that solves the problems for most people if not everyone. :)
> On 16/02/2011, at 7:33 AM, Gareth McMullin wrote:
>> On Wed, Feb 16, 2011 at 8:38 AM, Gareth McMullin
>> <gareth@...> wrote:
>>> Ok, there seems to be a lurking bug in the USB code. You aren't the
>>> first person to have this problem. I unfortunately can't reproduce the
>>> problem with either of the two hosts I have available.
>> I've found the problem: just tried building with summon-arm-toolchain,
>> and I observe the same problem. The build_config_descriptor() function
>> uses memcpy() to contruct the configuration descriptor, on entry to memcpy
>> an invalid instruction is encountered and the target is found in
>> No further USB requests are handled.
>> It seems that summon-arm-toolchain is linking in an ARM mode memcpy
>> instead of thumb. This can be solved by adding -mthumb to the linker
>> I've attached a patch to the generic makefile, which just added the full CFLAGS
>> to the linker command line. It solved the problem and should be safe.
>> I've also removed the "-Wl,--gc-sections", and changed options to "-O0 -g3".
>> The options in git make the examples very hard to debug, and I think this
>> may create a barrier to newbies trying out the library. Especially
>> for an example,
>> we can give up some size to make things easier.