[En-Nut-Discussion] Ethernut on TI's Cortex-M3 (Stellaris LM3S...)
Uwe Bonnes
bon at elektron.ikp.physik.tu-darmstadt.de
Sun Oct 14 23:05:12 CEST 2012
>>>>> "Philipp" == Philipp Burch <phip at hb9etc.ch> writes:
Philipp> Hi to everyone, I've made some progress this weekend, tough I
Philipp> didn't come as far as I hoped. The libraries now build without
Philipp> errors or warnings and I am also able to compile and link the
Philipp> "simple" example. It needed more work than expected, so for
Philipp> example some changes to the linker file and to the .nut
Philipp> configs.
The magical factor of three between the time allocated and the time used..
Philipp> As mentioned previously, TI supplies the CMSIS for
Philipp> the Stellaris microcontrollers, so I now replaced the other
Philipp> header containing lots of #defines.
Philipp> As TI seems to only distinguish between the LM3S and the LM4F
Philipp> families, there are now some family-specific files like
Philipp> lm3s.h. I'm not done yet with this separation however, so there
Philipp> are still files and preproc directives which only fit for the
Philipp> single device LM3S9B96.
Philipp> I've uploaded my changes to http://hb9etc.ch/ethernut/ as three
Philipp> files: - The complete Git repository containing all the files
Philipp> and changes so far. Simply unpack the archive, cd to the
Philipp> contained folder and run git reset --hard to get the working
Philipp> copy back. - The new patch showing the changes from Subversion
Philipp> revision r4719. - The updated simple.c which is supposed to
Philipp> simply blink the user LED on the design kit.
Some nitpicking first:
- nut/arch/cm3/dev/lm3/lm3s_clk.c seems TI supplied. Put it under vendor.
- Your repository mixes CR/LF and LR line endings. E.g.
diff --git a/nut/arch/cm3/dev/lm3/system_LM3S.c b/nut/arch/cm3/dev/lm3/system_LM3S.c
index fac3162..96d8848 100644
--- a/nut/arch/cm3/dev/lm3/system_LM3S.c
+++ b/nut/arch/cm3/dev/lm3/system_LM3S.c
@@ -47,7 +47,7 @@
// will be configured according to the macros in the rest of this file.
// If it is defined to be 0, then the system clock configuration is bypassed.
//
-#define CLOCK_SETUP 1
+#define CLOCK_SETUP 0^M
^^^^
here or
diff --git a/nut/arch/cm3/dev/lm3/system_LM3S.c b/nut/arch/cm3/dev/lm3/system_LM3S.c
new file mode 100644
index 0000000..8eb8393
--- /dev/null
+++ b/nut/arch/cm3/dev/lm3/system_LM3S.c
@@ -0,0 +1,616 @@
+/*********************************************************************//**^M
+ * @file system_LM3S.c^M
here.
You probably also forgot to add the lm3XX.conf file you work with.
Philipp> Anyway, the problem I'm facing now is that the controller seems
Philipp> to hit an unexpected interrupt or even an exception when
Philipp> running the example code. The end result is that the LED does
Philipp> not blink, but according to GDB the processor hangs in one of
Philipp> the endless loops found in cortex_init.c, namely in
Philipp> IntDefaultHandler(). If I comment the loop there, it looks like
Philipp> the CPU hits a BusFault, at least this is what GDB/OpenOCD
Philipp> says.
You access some not-existing memory. Try to single step through your
program, if you don't have anything else under suspect.
Philipp> Could anyone give me a hint on what to do now? I couldn't
Philipp> figure out how to single-step through the program using GDB to
Philipp> find out where it enters the handler and I don't really know
Philipp> the way through all of the Nut/OS sources.
I assume a gdb like debugger and a gdb-server like setup.
Compile your program and libraries with -O0 for linear flow and with -g
>st-util&
>arm-none-eabi-gdb xxx.elf
>>tar ext :4242( or whatever your debugger, my example is STLINK)
>>b NutInit
>>load
>>c
Now you should be in arch/cm3/os/nutinit.c: NutInit
>> b main
>> c
If you now are in main, the illegal memory access happens in your user
code. Now use single stepping
>> s
to find the root of the problem.
If the problem happens early in your setup, I suspect some problem in the
clocksetting. Try to set breakpoints there.
To print out e.g. the sysctl structure, use
>> p /x *((SYSCTL_Type*)0x400FE000
...
Bye
--
Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
More information about the En-Nut-Discussion
mailing list