Using the Freescale MC1322x Series ARM7 Processor with integrated 802.15.4
The purpose of this site is to
develop Open Source tools and
hardware for the
Freescale MC13224V
processor.
Getting Started Guides
Software Packages
The project currently contains the software packages described below:
- mc1322x-oe: is the Openembedded overlay for this project's
build environment. It provides an easy way to build GCC cross tools
that build ARM binaries and link against glibc appropriately. You
don't have to use it. If you do not, I highly recommend you use a
build of cross-tools that has thumb-interworking as the bootloader
expects your code to be in ARM mode, but calls to ROM are in THUMB (as
are the patch vectors).
We are using the following options to arm-linux-gcc to build code:
-fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -mcpu=arm7tdmi-s -mthumb-interwork -march=armv4t -mthumb -mcallee-super-interworking -mtune=arm7tdmi-s
see src/start.S
for a good starting stub
and boot.lds
for a basic linker script. (both from mc1322x-tests). If you want to
link to glibc you'll need a linker script more like the one in
contiki-mc1322x:
cpu/mc1322x/mc1322x.lds.
- mc1322x-rowley: MC13224v project files
for Rowley CrossWorks.
- libmc1322x: Simple build
system, library, and test programs for mc13224v based hardware. Easy
to include into your own projects as a submodule to build stand-alone
programs.
- mc1322x-tests: this package is deprecated and no
longer updated: the tests here are now part of libmc1322x
this is a basic package where proof-of-concept test programs are
developed for the various peripherals of the MC13224. So far
proof-of-concepts exist for all of the tricky features of this part
(e.g. the Radio, ROM services calls, the on-board Flash, and
interrupts).
you can find a
snapshot of
the latest stable build here, which you can load on to your
mc13224v using the UART bootloader
The binaries are:
- blink-red.bin - toggles GPIO 8 and 23
- blink-green.bin - toggles GPIO 9 and 24
- blink-blue.bin - toggles GPIO 10 and 25
- blink-white.bin - toggles GPIO 8, 9, 10, 23, 24, and 25
- blink-allio.bin - toggles all GPIO
- flasher.bin - flashes a bootable image to the NVM (use this with mc1322x-load.pl to flash your code)
- nvm-read.bin - reads and prints the last 1K of the onboard flash
- rftest-rx.bin - receives packets on channel 11. Prints out packets to UART1 and toggles GPIO 9 and 24
- rftest-tx.bin - transmits packets on channel 11. Prints out packets to UART1 and toggles GPIO 8 and 23
- romimg.bin - prints out the entire ROM section as binary data to UART1
- tmr-ints.bin - interrupt demo using timer0 that toggles GPIO 8, 9, 23, and 24 using interrupts
- tmr.bin - timer0 demo that toggles GPIO 8, 10, 23 and 25
- uart1-loopback.bin - initializes UART1 at 115200bps. Characters received get transmitted.
- contiki-mc1322x: this package is the Contiki tree modified
to support this part. Most of the refined drivers will be developed
here as the goal is integration with the main Contiki tree.
Contiki is currently going through a overhaul of it's lowlevel
radio layer. We have RIME working. There is also
this patch from Jon Smirl
which gets sicslowpan working with the contiki webserver at the full
data rate.
in contiki-mc1322x:
$ wget http://mc1322x.devl.org/files/webserver-smirl.patch
$ git checkout -b webserver-smirl cvs-merge-20091221
$ git apply webserver-smirl.patch
We've also completed preliminary support for the Linux 802.15.4
stack using the serial device driver. Currently this code is part of
the contiki-mc1322x tree, but we intend to make it stand-alone some
day. You can find the latest
stable build of this driver here.
- python-on-a-chip: this package is a basic skeleton
for python-on-a-chip. It
builds and it looks sane --- but that's about it for now.
Getting the code
$ git clone git://git.devl.org/git/malvira/mc1322x-oe.git
$ git clone git://git.devl.org/git/malvira/mc1322x-rowley.git
$ git clone git://git.devl.org/git/malvira/libmc1322x.git
$ git clone git://git.devl.org/git/malvira/contiki-mc1322x.git
$ git clone git://git.devl.org/git/malvira/python-on-a-chip.git
$ git clone git://git.devl.org/git/malvira/qemu.git
Status
- Working Openembedded build environment (see mc1322x-oe)
- Working pin toggle code (see blink-allio.c)
- Working UART bootloader tool (see mc1322x-load.pl)
- Basic QEMU mc1322x machine
(see our qemu clone) including support for factory
ROM images (no NVM support yet).
- Working UART (see uart1-loopback.c)
- Working radio initialization
(see rftest-rx.c
and rftest-tx.c)
including set_power and set_channel (no energy_detect scan
yet). Performs the factory calibration that is stored in NVM and is
different for each chip. Option for NCD demodulation (which increased
receive sensitivity from -94dBm to -100dBm and current draw by 2mA)
- Read, write, and erase support for on-board non-volatile storage (NVM)
- Working calls to ROM services (tested so far: _rom_data_init, NVM_Detect, NVM_Read, NVM_Write, NVM_Erase, NVMSetSVar)
- Working flash loader (flasher.bin and mc1322x-load.pl)
- Working interrupts
- Working timers
- Working ADCs (sample code adc.h
and adc.c)
- Basic Contiki support (processes, uarts, printf, and radio
transmission with RIME). Proof-of-concept 6lowpan running at 250kbp
(with patch)
-
Working Linux
802.15.4 serial
device driver. For now, part of the contiki tree.
Hardware
Hardware is now available for purchase from the Redwire Store.
The MC13224V based development kits available are:
- RedBee EconoTAG:
Development and prototyping board with MC13224 and FT2232 for JTAG and UART access over USB.
- RedBee-module:
Core mc13224 module that plugs into the RedBee development boards or
into your own application specific boards.
- RedBee-dev:
Basic development board for the RedBee-module. USB-serial interface,
pushbuttons, expansion/testing header, and more...
- RedBee-sensor:
Basic 2xAAA development board for wireless application testing and
power benchmarking. Includes battery holders, on/off switch, expansion
headers, temperature sensors, and more...
QEMU
Very basic support for qemu. No peripherals yet, but you can load images to address 0x00000000 and 0x00400000.
See README.qemu.mc1322x
for details.
The machine does not support the NVM (onboard flash memory) which
might contain important factory calibration data. This would be very nice to have.
Please see our development branch in our qemu tree for more details.
ROM code seems to be mostly in THUMB.
Mailing List
The mailing list for this project
is mc1322x@devl.org. Click here
to subscribe. View
the archives.
Patchworks tracker
Patches sent to the mailing list are caught by
our Patchworks
server located
here: http://patchwork.devl.org
mc1322x Website
This website is tracked in Git -
you can
browse its development history
or clone it from git://git.devl.org/git/malvira/mc1322x-homepage.git.
The site is covered by GPLv2
and maintained by Mariano Alvira.
This website is based on a design by Petr Baudis for GIT which was
based on a design by Jonas Fonseca
for the ELinks homepage.
Links
open-mc13224v --- these guys are also writing free mc1322x code.
Freaklabs.org --- open source zigbee stack
Contiki --- the easy way to
do TCP/IP and wireless networks is to have someone else do them!
Open-ZB --- open zigbee
Freescale --- product page for the MC13224V
Yargarto --- ARM toolchain for windows and mac.
Linux 802.15.4 stack