Digibutler new adventure
Hello,
DigibutlerK3 following
I decided to use "MQX" (present in eval board package from Freescale) as a starting point.
The reason for choosing "MQX" is:
- all source codes are present (no library).
- important documentation
- many examples
- Freescale installs MQX on multiple platform
to conclude the product is alive.
---(1)--- 2010 02 11 Eclipse GCC MQX
installation the latest version (galileo) Eclipse IDE for C/C++
- "Eclipse-cpp-galileo-SR1-win32.zip"
installation GCC from CodeSourcery
- "Freescale-coldfire-4.4-52-m68k-elf.exe"
installation MQX 3.5
- "FSLMQXOS_3_5_0.exe"
Eclipse structure:
- creation of a workspace (ex:"Kirin3")
- project application (ex:"DigiK3_MQX")
- project library "MQX_LIB"
- project library "MFS_LIB"
- project library "RTCS_LIB"
- project library "SHELL_LIB"
- project library "USB_LIB"
- an empty project "LIBRARY" containing all the libraries in one "libHLA.a"
because "m68k-elf-gcc" linker has problems with references in standard library
to import a project archive:
- create an empty workspace
File->Switch Workspace->Other
- File->Import...
- General->Existing Projects into Workspace->Next
- Select archive file->Browse : "ExportKirin3 aaaa mm dd.zip"
- Select All->Finish
---(2)--- 2010 03 01 MQX and gcc
MQX kernel OK
MQX shell OK
MQX mfs OK
MQX rtcs OK
MQX usb_host OK after some difficulties
- in "mcf5225.h" filler alignment wrong (fixed in MQX 3.5.1)
- in "host_dev_list.c" do.while bad "C" writing. never exit when compiled with optim (it's a bug in gcc)
the TCP/IP RTCS seems to be more effective than "NicheLite".
by analyzing with "Wireshark" the flow of a TCP/IP basic client/server,
at the client's question, "NicheLite" sends an ACK frame and after,
the response data frame (same as "OpenTcp" stack).
RTCS sends a single frame with datas and ACK.
---(3)--- 2010 03 07 SD Card
writing spi driver software (DTIN0-3)
installation "SD_card" soft
MQX mfs with USB and/or SD_card OK
---(4)--- 2010 03 13 RAM 512kb
adapting the code to drive the RAM with "MiniFlex Bus"
modified "H_Flasher" to download and execute code in RAM
Adding "Dhrystone Benchmark Program V2.1" by Reinhold P. Weicker
test in Flash and RAM for program better "MiniFlex Bus"
Flash/RAM =12.9 with FB_CLK=40MHz and 0 wstate
Flash/RAM = 8.8 with FB_CLK=80MHz and 1 wstate (0 is not allowed at 80MHz)
now we can test the code without reprogramming the flash
we only have to change "rom(RX)

RIGIN=0x00000000" to "rom(RX)

RIGIN=0x10000000"
in "intflash.lcf" to generate the code for Flash or RAM
adding a 128kb Ramdisk (for camera soon)
---(5)--- 2010 03 14 RTC
adding shell functions "date" and "time"
---(6)--- 2010 03 20 Extension IO_EXP_01A
writing process to drive "IO_EXP_01A" with QSPI (J13)
---(7)--- 2010 03 28 Erratic operation
the application was functioning erratically.
after searching hard, i finally found it.
it is a difference with the CW and GCC compiler.
in "Dispatch.s" when saving the context (macro SAVE_ALL_REGISTERS),
registers A0,A1,D0,D1 and D2 are omitted (optimization).
it is well with Codewarrior but GCC uses only A0,A1,D0 and D1 as scratch registers.
it is therefore necessary to add D2 when saving the context.
---(8)--- 2010 03 30 CAMERA C328R
in progress
it works but without preview mode
DigibutlerK3 files ( Eclipse "C" project ):
"ExportKirin3 aaaa mm jj.zip"
sources: http://pagesperso-orange.fr/HLaidet/DigibutlerK3.htm
Greetings, Henri