www.elektronik.si
ŠARM, linux

www.elektronik.si -> Linux, unix razprave

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Sre Mar 12, 2008 4:20 pm    Naslov sporočila: icon_idea ŠARM, linux
----------------------------------------------------------------------------
Prosim če prestavite temo, če ni na primernem mestu.

Ideja je v tem, da bi ŠARM programiral v linuxu. Na voljo je odprtokodna resitev za JTAG debagiranje npr.
openocd.

Tezava je v tem, da ima SARM JTAG razhroscevalnik na sami plati. Kolikor sem z asistenti govoril, je na plosci za dodat JTAG konektor in onemogocit JTAG debuger na plosci.

Se je kdo ze kaj ukvarjal stem?


Nazadnje urejal/a _Mitto_ Ned Apr 27, 2008 9:28 pm; skupaj popravljeno 2 krat

Avtor: chaosKraj: Zagorje ob Savi PrispevekObjavljeno: Sre Mar 12, 2008 4:36 pm    Naslov sporočila: icon_idea Re: S-ARM, linux
----------------------------------------------------------------------------
Ja, zadeva je (dokaj) preprosta:

- na šarma nalotaš 2x10 letvico, z jumperjem (J9?) onemogočiš on-board debugger.
- nabaviš / narediš si JTAG vmesnik. Za samogradnjo bi bil primeren paralelni wiggler - kompatibilni (načrtov je na netu veliko - išči wiggler jtag). Kupiš pa lahko recimo Olimexov USB-OCD.
- zbuildaš si okolje na linuxu - gcc, newlib, binutils ... (poglej na gnuarm.com)
- za debuggiranje / flashanje priporočam program openocd -- podpira veliko arm procesorjev + podpira wiggler JTAG vmesnike. Da se ga uporabljati skupaj z Eclipse okoljem.

LP!

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Sre Mar 12, 2008 11:36 pm    Naslov sporočila:  Eclipse plug-in
----------------------------------------------------------------------------
Odlično, najlepša hvala za odgovor. Primer za wiggler klik oz. klik2
Eclipse mi dobro služi za c, javo, php, ... zato se že veselim dela z ARMom.

Kako pa je z gnuarm plug-inom?


Nazadnje urejal/a _Mitto_ Sre Mar 26, 2008 8:44 pm; skupaj popravljeno 1 krat

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Pet Mar 28, 2008 11:00 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Wiggler (link) dela,

Zadevo zaenkrat poženem:
Koda:
openocd -f ~/Documents/ARM/sarm.cfg --log_output ~/Documents/ARM/sarm_error.log


Rešitve za napako (v sarm_error.log) :
Koda:
Error:   arm_jtag.c:38 arm_jtag_set_instr_error_handler(): setting the new JTAG instruction failed, debugging is likely to be broken

pa na netu ne najdem. Sad

sarm.cfg za pa zgleda takole:
Koda:
#daemon configuration
telnet_port 4444
gdb_port 3333

#interface
interface parport
parport_port /dev/parport0
parport_cable wiggler
jtag_speed 2
#use combined on interfaces or targets that can't set TRST/SRST separately
reset_config trst_and_srst

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset
#target <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4
target_script 0 reset h2294_init.script
run_and_halt_time 0 30
working_area 0 0x40000000 0x40000 nobackup

#flash configuration: *** LPC2138 (32KB RAM, 512KB flash) ***
flash bank lpc2000 0x0 0x7D000 0 0 lpc2000_v2 0 24000 calc_checksum
#flash bank lpc2000 0x0 0x40000 0 0 lpc2000_v1 0 14765 calc_checksum
flash bank cfi 0x80000000 0x400000 2 2 0


Kje naj iščem rešitev, oz. mi zna kdo pomagat?

Avtor: chaosKraj: Zagorje ob Savi PrispevekObjavljeno: Tor Apr 01, 2008 9:58 pm    Naslov sporočila:  
----------------------------------------------------------------------------
A si wiggler-ja naredil sam? Si dobro preveril vezje?

Drugače ti mogoče pride prav moja config skripta (je preizkušena):

arm7_usb-ocd.cfg:
Koda:

#daemon configuration
telnet_port 4444
gdb_port 3333

#commands specific to the Amontec JTAGKey
interface ft2232
ft2232_device_desc "Olimex OpenOCD JTAG A"
ft2232_layout "olimex-jtag"
ft2232_vid_pid 0x15BA 0x0003
jtag_speed 9
jtag_nsrst_delay 333
jtag_ntrst_delay 333

#use combined on interfaces or targets that can't set TRST/SRST separately
#reset_config trst_and_srst srst_pulls_trst
reset_config trst_and_srst trst_pulls_srst

#jtag scan chain
#format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE)
jtag_device 4 0x1 0xf 0xe

#target configuration
daemon_startup reset

#target <type> <startup mode>
#target arm7tdmi <reset mode> <chainpos> <endianness> <variant>
target arm7tdmi little run_and_init 0 arm7tdmi-s_r4
run_and_halt_time 0 30

# flash-options LPC2138
#target_script 0 reset openocd_lpc2138_flash.script
working_area 0 0x40000000 0x4000 nobackup
# LPC2378 @ 12MHz / 0x80000 from 512*1024
## up to version SVN188:
#flash bank lpc2000 0x0 0x7D000 0 0 lpc2000_v2 0 12000 calc_checksum
## from Version SVN189:
flash bank lpc2000 0x0 0x7D000 0 0 0 lpc2000_v2 12000 calc_checksum


# For more information about the configuration files, take a look at:
# http://openfacts.berlios.de/index-en.phtml?title=Open+On-Chip+Debugger


pa še cmd skripta za zagon openocd-ja:
Koda:

@echo off
echo ---
echo This script will setup path variable
echo and start OpenOCD
echo ---
@echo on

REM Variables:
SET YAGARTO_ROOT=D:\Programs\yagarto

REM SET WORKING_DIR=D:\

SET OPENOCD_BIN=openocd-ftd2xx.exe
SET OPENOCD_PARAMS=-d -f
SET OPENOCD_CONFIG=D:\Programs\yagarto\openocd\bin\arm7_usb-ocd.cfg

REM Set PATH variable:
SET PATH_BAK=%PATH%
SET PATH=%YAGARTO_ROOT%\bin;%YAGARTO_ROOT%\arm-elf\bin;%YAGARTO_ROOT%\openocd\utils;%YAGARTO_ROOT%\openocd\bin;%PATH%

REM Start OpenOCD
%OPENOCD_BIN% %OPENOCD_PARAMS% %OPENOCD_CONFIG%

pause


Potem se pa samo še telnet-aš na port 4444 (oziroma uporabiš gdb) ... moraš pa seveda imeti priključen (delujoč) jtag vmesnik na ploščo ...

LP!

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Pet Apr 04, 2008 6:28 pm    Naslov sporočila:  Nov wiggler
----------------------------------------------------------------------------
Wiggler sem sestavu sam.
Učeraj sem naredil nov wiggler (po isti shemi), če bi imel pri prvem kak hladen spoj in bi zaradi tega dobival ta error.

Sedaj sem uporabil ta del:
Koda:

jtag_speed 9
jtag_nsrst_delay 333
jtag_ntrst_delay 333


In to je rešitev. Errorja ni več in ponavljajoče Debug vrstice (do konca log datoteke) ni več.

Sedaj moram še eclipse zrihtat in juhu bruhu. Very Happy

Avtor: hazzardKraj: Miren PrispevekObjavljeno: Čet Maj 14, 2009 7:40 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Pozdravljeni!



Sem se odločil da napišem kar sem, ker se je govora točno o tem kar potrebujem!


šarma pa bom nabavil naslednji teden, zdaj bi rad najprej malo si pripravil teren!

Torej hočem programirati šarma v ubuntu, inštaliral sem eclipse in zylin CDT plugin. imam tudi gnuarm toolchain, vendar samo pač v eni mapi, nič ni blo potrebno inštaliranje le PATH lahko definiraš če hočeš.

nameščen imam tudi Insight debugger, ki je GUI, zraven pa še openOCD.


upam da je vse pravilno...?



opisovali ste uporabo JTAG debuggerja preko paralelnega porta, jaz pa tega na prenosniku seveda nimam.

Torej prva težava, kakšen debugger naj uporabim?? kaj s tistim na plošči ni mogoče nič delat?

če se da bi rad naredil kaj doma...


Če je pa že kdo si nastavil eclipse za tak primer, naj mi prosim pomaga, v eclipse pa še nisem nikoli delal.

Torej kako spravim zadevo da bi delala?


Hvala

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Pet Dec 11, 2009 1:24 pm    Naslov sporočila:  WinIDEA preko wine
----------------------------------------------------------------------------
Ni ravno o temi, kateri se pogovarjamo, vendar ni offtopic.

WinIDEA lepo deluje preko zadnje verzije windows emulatorja WINE (v ubuntuju je označen z 1.2, dejansko je pa 1.1.34)

Seveda ostane problem USB driverjev za š-arm. Ima kdo kakšne izkušnje s tem?

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Pet Dec 11, 2009 2:10 pm    Naslov sporočila:  
----------------------------------------------------------------------------
hazzard je napisal/a:

opisovali ste uporabo JTAG debuggerja preko paralelnega porta, jaz pa tega na prenosniku seveda nimam.


Lahko kupiš tole:
chaos je napisal/a:
Kupiš pa lahko recimo Olimexov USB-OCD.

http://www.olimex.com/dev/arm-usb-ocd.html

hazzard je napisal/a:
Torej prva težava, kakšen debugger naj uporabim?? kaj s tistim na plošči ni mogoče nič delat?

Kot že zgoraj piše .. uporabiš OpenOCD (OCD .. on čip debagr)

hazzard je napisal/a:
če se da bi rad naredil kaj doma...

wiggler z FTDI čipom

hazzard je napisal/a:
Če je pa že kdo si nastavil eclipse za tak primer, naj mi prosim pomaga, v eclipse pa še nisem nikoli delal.

Torej kako spravim zadevo da bi delala?


Zdej ko imam Kubuntu 9.10 bom poskusu kej napisat - drugič.

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Ned Nov 03, 2013 12:58 am    Naslov sporočila:  OpenOCD
----------------------------------------------------------------------------
Linux uporabniki začetniki, preden začnete na polno razvijat v Eclipse, naj zadeva najprej uspešno dela direktno.

OpenOCD (trenutne verzije 0.7.0) nima posebej lpc2138.cfg (mogoče bi bila že lpc2148.cfg povsem primerna)

Zato imam pripravljeno enostavno openocd.cfg v root mapi eclipse:
Koda:
source [find interface/olimex-arm-usb-ocd-h.cfg]

#####################################################
# Based on Philips LPC2138
# NXP LPC2138 ARM7TDMI-S with
# 512kB flash (12kB used by bootloader)
# 40kB SRAM (8kB for USB DMA)
# clocked with 12MHz crystal
source [find target/lpc2xxx.cfg]

# parameters:
# - chip_name - name of the chip, e.g. lpc2103
# - cputapids - TAP IDs of the core, should be quoted if more than one, e.g. 0x4f1f0f0f or "0x3f0f0f0f 0x4f1f0f0f"
# - flash_size - size of on-chip flash (available for code, not including the bootloader) in bytes, e.g. 0x8000
# - flash_variant - "type" of LPC2xxx device, lpc2000_v1 (LPC22xx and older LPC21xx) or lpc2000_v2 (LPC213x, LPC214x, LPC210[123], LPC23xx and LPC24xx)
# - workarea_size - size of work-area in RAM for flashing procedures, must not exceed the size of RAM available at 0x40000000, e.g. 0x2000
# - core_freq_khz - frequency of core in kHz during flashing, usually equal to connected crystal or internal oscillator, e.g. 12000
# - adapter_freq_khz - frequency of debug adapter in kHz, should be 8x slower than core_freq_khz, e.g. 1000
proc init_targets {} {
        # 500kB flash and 32kB SRAM
        # setup_lpc2xxx <chip_name> <cputapid> <flash_size> <flash_variant> <workarea_size> <core_freq_khz> <adapter_freq_khz>
        setup_lpc2xxx lpc2138 0x4f1f0f0f 0x7d000 lpc2000_v2 0x8000 12000 1500
}

#daemon configuration
telnet_port 4444
gdb_port 3333


V terminalu se postavim v mapo, kjer se nahaja zgornji openocd.
Na ŠARMa se z OpenOCD povežem z:
Koda:
openocd -f openocd.cfg

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Ned Nov 03, 2013 1:07 am    Naslov sporočila:  gdb
----------------------------------------------------------------------------
Ko je gdb povezava preko OpenOCD odprta,
se lahko z
Koda:
arm-none-eabi-gdb mojProgram.elf

povežem za začetek debugiranja

na primer:
Koda:
(gdb) l

vrne:

Koda:
1   // Date:   17.10.2011
2   // Author: Janez Puhan
3   
4   #include "inc/pwm.h"
5   #include "inc/gpio.h"
6   
7   int main()
8   {
9      return 0;
10   }


(za nek program pwm utripajoče lučke)

Avtor: _Mitto_Kraj: Vipava PrispevekObjavljeno: Sob Dec 07, 2013 10:01 pm    Naslov sporočila:  
----------------------------------------------------------------------------
GDB ima tudi terminalni grafični vmesnik.

Zaženeš ga z dodanim atributom: gdb -tui
Koda:
arm-none-eabi-gdb -tui mojProgram.elf

določeni toolchaini imajo kar pripravljen program:
Koda:
arm-none-eabi-gdbtui mojProgram.elf

tu je še nekaj komand za preklop med "okni":
- razdeli okno v več "notranjih oken":
Koda:
layout split

- fokusira "okno" za "brskanje" (skrolanje z miško, ...):
Koda:
fs {src | asm | regs | cmd}

kar tipkaš se vedno vnaša v komandno okno cmd


Pa ne pozabi, vedno dela
Koda:
help karMeZanima

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group