ARM - rmu75/linuxcnc-wiki GitHub Wiki


date: '2012-07-07T21:16:57' title: ARM

How to Start with ARM Development

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

ARM Micros and Boards

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

My Setup

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

Compiler

I installed with Synaptic: upload:arm-linux-gnueabi-gcc.png

JTAG

sudo apt-get install openocd sudo rmmod ftdi_sio

Compile StellarisWare

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 &&

echo arm-stellaris-eabi || echo arm-none-eabi}

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

Download with openocd

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


target: lm3s8962

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

Links

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

⚠️ **GitHub.com Fallback** ⚠️