Hey,
Ik heb een ARM- microcontroller met een LPC2106 microchip
van elektor.
http://www.elektor.nl/artikelen-als-pdf/2005/april/armee-ontwikkelsyst…
Nu heb ik een aangepaste versie van een sample project dat in C geschreven is omgezet naar een hex-file door middel van µVision IDE van Keil. Het programma werkt, want de ontwerper van deze microcontroller heeft het getest op zijn microcontroller. Er zijn dan ook geen warnings of errors.
Nu wil ik deze hex-file in mijn microcontroller uploaden.
Hiervoor heeft semiconductors 2 programmas ontwikkeld, namelijk:
1) flashmagic
2) LPC2000 flash utility
Bij flashmagic worden een aantal stappen doorlopen:
- in de eerste stap wordt er communicatie gemaakt met de
microchip. Dit lukt.
- in de tweede stap gaat hij een aantal blokken erasen
volgens de hex-file. Dit lukt.
- in stap drie wordt de hexfile gemodified. Dit lukt ook
- maar in de laatste stap: 'verify after programming'
krijg ik steeds deze error:
Error verifying. There is a difference in the hex file value and the stored value.(address 0x000000)
Uiteindelijk finished hij wel het proces maar met resultaat dat mijn looplicht niet werkt. Tijdens het hele proces reageren mijn UART singnals (Tx en Rx) wel degelijk. Ik heb ook overal de gewenste spanningen en de jumpers die I/O delen met de microchip juist geplaatst. Ik gebruik een serieele RS232 kabel.
Als ik het dan probeer via LPC200 flash utility krijg ik het volgende. ( ook hier moet ik een aantal stappen doorlopen)
- Eerst vraagt dit programma om het part ID en Bootloader
ID. Dit lukt.
- Dan kan je de stappan blank check en erase doen als je
dit wenst, hiermee heb ik ook geen problemen.
- tenslotte kan je je hex-file selecteren en upload to
'upload to flas' aanklikken, ook hier lukt het en geeft
hij geen errors.
- als ik nu op de knop 'compare flash' klik krijg ik de
volgende error:
File compare failed.
Nu kan je via flashbuffer operations kijken waar het foutgaat.
Als ik 'upload to flash' doe dan krijg ik het bovenstaande.
Dit stemt overeen met mijn hex-file.
Maar als ik nu 'download flash' doe krijg ik dit:
Overal FF wat wil zeggen dat het programma de flash nog niet heeft bereikt.
Dus ook hier loop ik vast en werkt mijn looplicht niet.
Ik weet echt niet wat ik fout doe, ik zoek hier al lange tijd op zonder resultaat...
Misschien om een duidelijker beeld te krijgen over de situatie, kan je een pdf downloaden op deze link, waar het totale schema van mijn microcontroller op staat.
http://www.elektor.nl/artikelen-als-pdf/2005/april/armee-ontwikkelsyst…
Alvast bedankt voor de hulp.
[Bericht gewijzigd door Henry S. op (1%)]
Marcel
AVR C tutorial http://expand.xs4all.nl/avr
Ik heb geen ARM ervaring, dus wellicht sla ik de plank volledig mis. Heb je toevallig een kopieer/protectie bit aan staan, waardoor je wel kan wissen/programmeren, maar het resultaat niet kan uitlezen. Het programmeren zou in dat geval wel goed gaan. Je kan het natuurlijk even testen door iets simpels met een knipperende LED te programmeren.
Ik kan je uitleg volgen, maar ik heb eerlijk gezegd geen flauw idee waar ik kan zien of die bit nu aan of uit staat.
Kan je dit aan de hand van mijn programma zien of heeft dit
met iets anders te maken, ik denk maar aan instellingen of misschien zelfs aan de hardware...
In ieder geval, hier is anders de code die ik gebruik, dit kan misschien handig zijn, voor het helpen bij mijn probleem.
Vriendelijke groeten, Mathias
[Bericht gewijzigd door Henry S. op (29%)]
Zo'n laadprogramma komt toch altijd me een terugmelding of het gelukt is?
Ik zou inderdaad een zeer simpele app maken (uigang aansturen, meer niet) en dat werkend proberen tekrijgen.
maaar simpel of niet, het moet werken! Degene die die microcontroller en de programmas ontworpen heeft, heeft het uitgetest op zijn microcontroller en bij hem werkt het...
Vriendelijke groeten, Mathias
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
is ergens een instelling ide niet juist is.
zit er geen hardware write protect switch op dat bordje ?
is je voeding stabiel ? het lijkt erop dat je inderdaad niet kan schrijven in de flash. das ofwel een write protect of de voeding die niet in orde is. of je hebt stomweg een defecte chip.
Heb je ook rekening gehouden, dat je de selectie lijn voor de bootloader moet weghalen? en vervolgens de ARM microcontroller met resetten om het te laten opstarten. Voor Flash magic hoeft dit gedeelte niet, maar dit weet ik niet 100% zekerheid meer.
Op 8 juni 2008 12:58:48 schreef rebelater:
- als ik nu op de knop 'compare flash' klik krijg ik de
volgende error:File compare failed.
Nu kan je via flashbuffer operations kijken waar het foutgaat.
Dat de compare functie niet werkt klopt. Dat heb ik zelf ook. Als je op 'manual reset' klikt, dan zal je programma moeten starten.
Je zou wel het flash geheugen weer uit de chip moeten kunnen laden (de 2106 heeft geen beveiliging tegen uitlezen). Kennelijk staat er ergens een offset verkeerd ingesteld. Ik gebruik altijd 'load to flash' (erase gaat vanzelf) en 'manual reset' vanuit het hoofdscherm om software te laden.
[Bericht gewijzigd door Henry S. op (41%)]
Op 8 juni 2008 17:43:10 schreef free_electron:
is ergens een instelling ide niet juist is.
zit er geen hardware write protect switch op dat bordje ?
is je voeding stabiel ? het lijkt erop dat je inderdaad niet kan schrijven in de flash. das ofwel een write protect of de voeding die niet in orde is. of je hebt stomweg een defecte chip.
Hardware write protect switch? Ik zou niet weten wat dat is, waar kan ik dat beest vinden? Ik heb wel een 8-polige DIL-schakelaar op mijn microcontroller, maar die dient alleen voor het compileren:d.
Maar eum, met mijn voeding is normaaal niks aan de hand, ik heb daarvan egt alles in detail uitgemeten, en overal krijg ik de gewenste impedanties en spanningen.
Dus ligt het volgens jou aan dat protect switch dinges?
Op 8 juni 2008 18:03:19 schreef Rhino:
Heb je ook rekening gehouden, dat je de selectie lijn voor de bootloader moet weghalen? en vervolgens de ARM microcontroller met resetten om het te laten opstarten. Voor Flash magic hoeft dit gedeelte niet, maar dit weet ik niet 100% zekerheid meer.
De selectielijn weghalen, bedoel je dan gewoon resetten? Ik heb egt geen flauw idee hoe ik dit anders moet doen... Heeft dit te maken met de software?
Op 8 juni 2008 19:00:42 schreef Nico.c:
[...]
Dat de compare functie niet werkt klopt. Dat heb ik zelf ook. Als je op 'manual reset' klikt, dan zal je programma moeten starten.Je zou wel het flash geheugen weer uit de chip moeten kunnen laden (de 2106 heeft geen beveiliging tegen uitlezen). Kennelijk staat er ergens een offset verkeerd ingesteld. Ik gebruik altijd 'load to flash' (erase gaat vanzelf) en 'manual reset' vanuit het hoofdscherm om software te laden.
Bedoel je dat je na upload to flash nog eens moet manual resetten voor het programmatje werkt? Nu ben ik heel even niet meer mee...
En waar kan ik die offsets dan juist zetten, ik heb dit al nog van iemand onlangs gehoord dat het probleem daaraan zou kunnen liggen. Maar toen ik vroeg hoe of wat, heeft hij nooit meer terug geantwoord.
[Bericht gewijzigd door Henry S. op (24%)]
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
Lees http://www.circuitsonline.net/forum/faq voordat je verder gaat.
-> /Schoolvragen
[Bericht gewijzigd door Henry S. op (13%)]
Beste moderator, kan je mij aub weer naar digitaal zetten,
wat ik hier post heeft nieks te maken met school... Ik ben egt al zo lang op zoek naar waar de fout zit, maar ik kan niks vinden, dan doe ik mijn best om een mooie topic te plaatsen, krijg ik als reactie: -> /schoolvragen
Komaan he, zij keer serieus, bij schoolvragen leest niemand mijn vragen.
Greets, Mathias
[Bericht gewijzigd door rebelater op (24%)]
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
Als het topic niet gelezen wordt ligt het aan je vraagstelling en ik zie toch heel duidelijk GIP 2007/2008 staan.
Dus gewoon in schoolvragen, en inzet wordt beloond.
Op 9 juni 2008 19:28:13 schreef Henry S.:
Als het topic niet gelezen wordt ligt het aan je vraagstelling en ik zie toch heel duidelijk GIP 2007/2008 staan.Dus gewoon in schoolvragen, en inzet wordt beloond.
Als ge dit goed leest:
http://www.circuitsonline.net/forum/faq
dan staat daar, dat het de bedoeling is om het hier zo aangenaam mogelijk te maken voor iedereen, en als ge mij constant bij elke post van mij zo afbreekt...
Vriendelijke groeten, Mathias
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
Maar dat geldt voor jou net zo goed, je bent bij het aanmelden accoord gegaan met de hier geldende regels.
En dat het jou niet bevalt kan ik niet helpen, lees de FAQ zelf nog eens goed door. Ik breek je niet af maar corrigeer je omdat je dat blijkbaar nodig bent.
Einde discussie, de rest doe je maar via mail, maar kom dan met betere argumenten, inhoudelijk reageren heb je nog niet gedaan.
[Bericht gewijzigd door Henry S. op (16%)]
Error verifying. There is a difference in the hex file value and the stored value.(address 0x000000)
Als je dit (begrijpend) leest word er hier verteld dat je hex file in de buffer niet matched met wat er in je processor staat op Address 0x000000 en verder. Ofwel je programmer werkt niet.
Daar was je zelf ook al achter gekomen :
Overal FF wat wil zeggen dat het programma de flash nog niet heeft bereikt.
Dus ook hier loop ik vast en werkt mijn looplicht niet.
Klopt, je programmer werkt niet en een lege processor voert ook geen programma uit. Wat je dr in programmeert is ook niet relevant om te testen, hoeft niet eens een werkend programma te zijn om je programmer te testen.
Ik heb wel een 8-polige DIL-schakelaar op mijn microcontroller, maar die dient alleen voor het compileren:d.
Dat hoofdstuk zou ik nog maar eens nalezen.
- in de tweede stap gaat hij een aantal blokken erasen volgens de hex-file. Dit lukt.
Weet je dat zeker ?? De hex file is om je flash te VULLEN, wissen doet ie op een andere manier, en werkt dit echt of blijft ie gewoon leeg ??
- in stap drie wordt de hexfile gemodified. Dit lukt ook
Je hexfile wordt niet volgens mij niet gemodificeerd.
Groeten, Bram
[Bericht gewijzigd door bprosman op (18%)]
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
dit verhaal begint gatenkaas te worden. dipswitchen om te compileren .. programmas die zichzelf modificieren...
en als dit inderdaad voor gip 2008 is. we zijn 8 juni ... kom in september nog maar eens terug dan ...
Overal FF wil zeggen dat je flash leeg is.
Stomme vraag : moet je op die processor niet instellen waar de flash moet zitten ? zijn er geen pinnekes om aante geven vanwaar de cpu moet starten ? ( welke offset )
de meeste arm processoren hebben dat. Kijk eens waarvoor die dipswitchen dienen. waarchijnlijk moeten die in de juiste stand staan alvorens je kan proggen.
zit er bij dat bord geen voorbeeld voor keil ? in dien je : laad dat voorbeeld eens. de project settings zullen de juiste linker informatie hebben om je programma daar neer te gooiene waar het moet staan (en dat is NIET noodzakelijk op 0x00000000 ! )
Je zou ook een kunnen proberen om de flash te beschrijven via JTAG. (hebben ze op school geen jtag dongle?)
@f_e: die dipswitches op het ARMee devel board zijn gewoon om signaal op de input pinnen te zetten, ze hebben verder niets te maken met de werking van den arm.
Als ik me goed herinner hebben die LPCxxxx arms een ingebouwde bootloader op adres 0x0000, die is niet beschrijfbaar, in de datasheet staat waar het entry point van het programma moet staan om het te laten uitvoeren.
PS: voor je GIP 2008 is het wel laat als de hardware nog niet werkt...
Roland van Leusden
It's the rule that you live by and die for It's the one thing you can't deny Even though you don't know what the price is. It is justified.
Al contact opgenomen met elektuur / het daar op het forum gezet ? Meer kans dat je daar mensen met ook zo'n bordje treft.
Het geen wat ik bedoelde met bootloader selectie lijn, is pin BL (ik geloof dat dit pin 14 was bij de lpc2106), Door deze te selecteren wordt de eerste volgende dat de micrcotronoller wordt gereset het geprogrammeerde programma gekozen of de booltoader zelf. De bootloader is een programma's in de microcontroller(standaaard al in ARM7 geprogrammeerd), die het mogelijk maakt om je microcontroller te programeren zonder een programmer. Het is van belang dat je nader informatie opzoekt over dit stuk.
Het feit dat je aangeeft, dat de microcontroller wel rageert bij de opvraag van de ID, doet me sterk vermoeden, dat je constant bootloader als, maar blijft selecteren een algemeen veel voorkomende fout, wanneer je met ARM7 begint.
Op 9 juni 2008 19:54:46 schreef bprosman:
[...]Als je dit (begrijpend) leest word er hier verteld dat je hex file in de buffer niet matched met wat er in je processor staat op Address 0x000000 en verder. Ofwel je programmer werkt niet.
Mijn hex-file komt wel degelijk overeen met mijn addressen.
Nu probeer ik met de 'fill-buffer' een gewone value upteloaden in mijn microcontroller, maaar ook hier kan ik
deze uploaden zonder error ofzo, hij zegt egwoon van: succesfully finished, maar als ik deze dan weer wil downloaden krijg ik weer allemaal FF's, lege addressen dus..
zit er bij dat bord geen voorbeeld voor keil ? in dien je : laad dat voorbeeld eens. de project settings zullen de juiste linker informatie hebben om je programma daar neer te gooiene waar het moet staan (en dat is NIET noodzakelijk op 0x00000000 ! )
In de datasheet vond ik dit:
the On-Chip Non-Volatile Memory is at address 0x00000000, there's no offset
Volgens wat ik hieruit afleid heb ik wel degelijk 0x00000000 nodig...
Vriendelijke groeten, Mathias
schreef Uranium:
Je zou ook een kunnen proberen om de flash te beschrijven via JTAG. (hebben ze op school geen jtag dongle?)
Neen dat hebben we niet.
Als ik me goed herinner hebben die LPCxxxx arms een ingebouwde bootloader op adres 0x0000, die is niet beschrijfbaar, in de datasheet staat waar het entry point van het programma moet staan om het te laten uitvoeren.
Zie vorige post, ik vind niks wat betreft het 'entry point'
in de datasheet.
PS: voor je GIP 2008 is het wel laat als de hardware nog niet werkt...
Klopt maar ik ben dan ook al superlang bezig naar het zoeken van dit probleem...
[quoteschreef Roland van Leusden:
Al contact opgenomen met elektuur / het daar op het forum gezet ? Meer kans dat je daar mensen met ook zo'n bordje treft.
[/Quote]
Bedankt voor het idee, ik heb de post geplaatst al ben ik er niet van overtuigd dat ze daar zullen reageren...
http://www.elektor.nl/forum/forum/algemene-forums/forum/forum/algemene…
Vriendelijke groeten, mathias
[Bericht gewijzigd door Henry S. op (11%)]
Sorry wat die entry point betrefte. Dat is niet van toepassing bij deze cpu.
Op 12 juni 2008 23:36:05 schreef Rhino:
Het geen wat ik bedoelde met bootloader selectie lijn, is pin BL (ik geloof dat dit pin 14 was bij de lpc2106), Door deze te selecteren wordt de eerste volgende dat de micrcotronoller wordt gereset het geprogrammeerde programma gekozen of de booltoader zelf. De bootloader is een programma's in de microcontroller(standaaard al in ARM7 geprogrammeerd), die het mogelijk maakt om je microcontroller te programeren zonder een programmer. Het is van belang dat je nader informatie opzoekt over dit stuk.
Dit is inderdaad pin 0.14,dit stond in de pdf die ik kon downlaoden:
Ik heb dit dan ook zo gedaan...
Het feit dat je aangeeft, dat de microcontroller wel rageert bij de opvraag van de ID, doet me sterk vermoeden, dat je constant bootloader als, maar blijft selecteren een algemeen veel voorkomende fout, wanneer je met ARM7 begint.
Is het mogelijk om dit eens te heruitleggen? En hoe kan ik dit oplossen?
Op 13 juni 2008 15:17:35 schreef Uranium:
Sorry wat die entry point betrefte. Dat is niet van toepassing bij deze cpu.
Geen probleem! Tog bedankt!
[Bericht gewijzigd door Henry S. op (8%)]
free_electron
Silicon Member
Professioneel ElectronenTemmer - siliconvalleygarage.com - De voltooid verleden tijd van 'halfgeleider' is 'zand' ... US 8,032,693 / US 7,714,746 / US 7,355,303 / US 7,098,557 / US 6,762,632 / EP 1804159 - Real programmers write Hex into ROM
als die jumper aan staat kan je NIET schrijven nar 0x0000000 !! de btooloader hermapt zichzelf op 0x00000000 de echte flash zit dan ergens anders. Daar moet je naar schrijven.
Henry S.
Moderator
Confucius says chà bù duo. Deze post is niet door ChatGPT gegenereerd. De 2019 CO labvoeding.
@rebelator:
-Lees http://www.circuitsonline.net/forum/faq nog eens wat quoten en posten betreft, ben je hardleers of laks?
-Lees je eigen posts ook eens na, ik heb alle nieuwe posts veranderd en 4 verwijderd wegens je geknoei.
Op 13 juni 2008 14:46:18 schreef rebelater:
Klopt maar ik ben dan ook al superlang bezig naar het zoeken van dit probleem...
Als ik al ergens een hekel aan heb dan is het wel liegen!
Nee hoor, niks met school te maken... 
Als dank red je je r**t maar even, zondag mag je verder.