wiki:TBR/BSP/Rtl22xx_t

Version 3 (modified by Rayx, on 11/03/07 at 10:47:05) (diff)

Rtl22xx t

This BSP is a thumb-enabled version of rtl22xx. Also, this bsp is an example of how development can development/change there own bsp from ARM mode to Thumb mode. Common code (IRQ, ISR) is already changed. BSP developer should take of there own assembly/inline-assembly codes which deal with CPSR/SPSR. Bellow is the things need to changed:

1) Changes the CPU_CFLAGS to CPU_CFLAGS += -mthumb in the BSP’s cfg file. -mthumb-interwork is not necessary because the low-level code has its own veneer that change between modes 2) start.S This file must be in ARM mode, so add .arm/.code 32 in the beginning. Code will transfer to thumb mode when call boot_card. So use bx instead of bl when doing this. If want the code return back to start.S after boot_card. LR must update because bx will not update lr automatically 3) bsp_dir/irq/bsp_irq_asm.S, it is better to write this function in C instead of assembly. However, this function should be thumb mode now, and when function finished, MUST return back to ARM mode with bx 4) bspclean.c. change the b _start to bx reg. Because the startup code must be in arm mode. (also b _start will refuse to compile in thumb mode)

BSP is compiled with gcc 4.2.1, binutils 2.18 with multi-lib for thumb enabled.

Note: 2007-Nov, this BSP and Thumb are first introduced into rtems. rtl22xx hardware can not run full test suits to verified thumb support(only tests in samples is run). It will be appreciated that other ARM based bsp can also test the thumb support and report bug.