ARM - rmu75/linuxcnc-wiki GitHub Wiki
jjf 2011-02-28
find AVR page here http://wiki.linuxcnc.org/cgi-bin/wiki.pl?AVR http://wiki.linuxcnc.org/cgi-bin/wiki.pl?AVR-Net-IO FPGA: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?FPGA
Xilinx
http://www.xilinx.com/technology/roadmap/processing-platform.htm
STM
The STM32F207xx chips from ST have PTP. See Reference manual RM0033
file CD00225773.pdf, chapter 28.5.9
NXP LCP
http://www.egnite.de/egnite-shop/ethernut-13/ethernut-bulk-13h.html
http://www.propox.com/products/t_245.html?lang=en
http://ics.nxp.com/support/microcontrollers/motor.control/
http://www.lpctools.com/evaluationboardskits.aspx
http://www.sparkfun.com/products/9931
http://elmicro.com/de/lpc1700-proto.html
http://elmicro.com/de/mbed-nxp-lpc1768.html
NXP library for motor control, MCPWM
Application Notes: AN10898.pdf AN10661.pdf
Luminary Micro / TI
The EKC-LM3S8962 may be a good starting point for development (Farnell �94)
3ph-PWM, 2x quadrature decoder with velocity, A/D(10bit), IEEE 1588 PTP, lwIP and uIP
Ubuntu 10.10 64bit Hardware http://www.luminarymicro.com/products/lm3s8962_can_ethernet_evaluation_kit.html Software http://www.luminarymicro.com/products/software_updates.html download SW-EK-LM3S8962-6852.exe
I installed with Synaptic: upload:arm-linux-gnueabi-gcc.png
sudo apt-get install openocd sudo rmmod ftdi_sio
assume pwd=<???> extract SW-EK-LM3S8962-6852.exe (nautilus:open context menue, extract here) cd SW-EK-LM3S8962-6852 gedit makedefs and change the PREFIX to:
#PREFIX=${shell type arm-stellaris-eabi-gcc > /dev/null 2>&1 &&
PREFIX= arm-linux-gnueabi check that /???/StellarisWare/Lib/SW-EK-LM3S8962-6852/boards/ek-lm3s8962/hello/gcc exists make clean check that /???/StellarisWare/Lib/SW-EK-LM3S8962-6852/boards/ek-lm3s8962/hello/gcc not exists make check that /???/StellarisWare/Lib/SW-EK-LM3S8962-6852/boards/ek-lm3s8962/hello/gcc exists and hello.bin is there
http://openocd.berlios.de/web/ Userguide is here http://openocd.berlios.de/doc/pdf/openocd.pdf look to /usr/share/openocd/scripts/
/usr/share/openocd/scripts/interface/luminary.cfg is for the build-in jtag interface with lsusb see the id's my lm3s8962.cfg
if { [info exists CHIPNAME] } {
set _CHIPNAME $CHIPNAME
} else {
set _CHIPNAME lm3s8962
}
if { [info exists CPUTAPID ] } {
set _CPUTAPID $CPUTAPID
} else {
set _CPUTAPID 0x3ba00477
}
jtag_khz 500
jtag_nsrst_delay 100
jtag_ntrst_delay 100
reset_config srst_only
jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 1 -irmask 0xf -expected-id $_CPUTAPID
set _TARGETNAME $_CHIPNAME.cpu
target create $_TARGETNAME cortex_m3 -chain-position $_CHIPNAME.cpu -variant lm3s
$_TARGETNAME configure -work-area-phys 0x20000000 -work-area-size 0x4000
set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME stellaris 0 0 0 0 0 $_TARGETNAME
mkdir <arm-dir> && cd <arm-dir> cp /usr/share/openocd/scripts/interface/luminary.cfg luminary.cfg lm3s8962.cfg is in <arm-dir> <arm-dir>$ openocd -f luminary.cfg -f lm3s8962.cfg
Open On-Chip Debugger 0.4.0 (2010-10-08-15:44) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html 500 kHz jtag_nsrst_delay: 100 jtag_ntrst_delay: 100 srst_only separate srst_gates_jtag srst_open_drain Info : clock speed 500 kHz Info : JTAG tap: lm3s8962.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : lm3s8962.cpu: hardware has 6 breakpoints, 4 watchpoints
open a new terminal and
jjf@jf-q4:~$ telnet localhost 4444
Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger
> scan_chain
TapName Enabled IdCode Expected IrLen IrCap IrMask
0 lm3s8962.cpu Y 0x3ba00477 0x3ba00477 4 0x01 0x0f
>halt
target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x81000000 pc: 0x00000118 msp: 0x200000f8
> flash probe 0
flash 'stellaris' found at 0x00000000
flash protect_check 0
successfully checked protect state
> flash info 0
#0 : stellaris at 0x00000000, size 0x00040000, buswidth 0, chipwidth 0 # 0: 0x00000000 (0x400 1kB) not protected # 1: 0x00000400 (0x400 1kB) not protected ... #255: 0x0003fc00 (0x400 1kB) not protected TI/LMI Stellaris information: Chip is class 1 (Fury) LM3S8962 rev A2 did1: 0x10a6402d, arch: 0x10a6402d, eproc: ARMv7M, ramsize: 64k, flashsize: 256k master clock: 12000kHz (±30%), rcc is 0x7802810, rcc2 is 0x0 pagesize: 1024, pages: 256, lockbits: 128, pages per lockbit: 2
>flash erase_sector 0 0 4
erased sectors 0 through 4 on flash bank 0 in 0.132000s
> flash write_image hello.bin 0 bin
wrote 3144 bytes from file hello.bin in 0.280015s (10.965 kb/s)
>reset
JTAG tap: lm3s8962.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
and you see Hello World! in the display!
2011-02-18
unfortunately enet_io example do not work with this compiler version!
download http://www.codesourcery.com/sgpp/lite/arm/portal/package7813/public/arm-none-eabi/arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 works on 64bit compiling enet_io extract to <path> export PATH=<path>/arm-2010.09/bin:$PATH change in makedefs PREFIX=arm-none-eabi Ping statistics for non-realtime for enet_io example
jjf@jf-q4:$ ping -c 20 192.168.1.170 PING 192.168.1.170 (192.168.1.170) 56(84) bytes of data. 64 bytes from 192.168.1.170: icmp_req=1 ttl=255 time=0.150 ms 64 bytes from 192.168.1.170: icmp_req=2 ttl=255 time=0.167 ms ... 64 bytes from 192.168.1.170: icmp_req=19 ttl=255 time=0.137 ms 64 bytes from 192.168.1.170: icmp_req=20 ttl=255 time=0.133 ms
--- 192.168.1.170 ping statistics --- 20 packets transmitted, 20 received, 0% packet loss, time 18995ms rtt min/avg/max/mdev = 0.123/0.144/0.182/0.021 ms
http://gandalf.arubi.uni-kl.de/avr_projects/arm_projects/index.html http://www.kunen.org/uC/LM3S1968/part1.html (a bit outdated) http://www.mikrocontroller.net/articles/Linksammlung#ARM http://www.dwelch.com/lumicro/ (on the bottom bootloader) http://www.open-research.org.uk/ARMuC/ (wiki) http://gandalf.arubi.uni-kl.de/avr_projects/arm_projects/openocd_cortex/index.html