 |

|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 12 22, 01:46. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » lūžta programa ant ARM7TDMI
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
 |
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 17, 21:35 |
|
|
|
|
sveiki. bandau paleist ARMTDMI procesorių. jis lygtais ir pradeda vykdyti programą, bet paskui lūžta ir pradeda keliaut po flashą (debuginu kol kas ramuose).
| Kodas: |
int main(void) {
cpu_init();
@ lcd_init();
*tcmpb1 = 0; //keičiamas lcd ryškumas,
@ long a, b;
int x, y;
@ x = 0;
y = 0;
while (1)
{
for (a = 0; a<1000; a++)
for (b = 0; b<5000; b++)
@ b++;
x++;
set_pixel(x, y,255);
y = y+2;
if (x>100) x=0;
if (y>100) y = 0;
}
.....
|
iki 3 taško viską praeina normaliai. ketvirto jau nebepasiekia. labiausiai neaišku dėl ko lūžta tokioje vietoje, suprasčiau funkcijose, tai ten galėjau ko nors neteisingai initializuot ar nustatys, bet dabar...
crt0.s failas truputį pakeistas, nes kompiliatorius mesdavo klaidą:
| Kodas: |
// file: crt0.s
.global main // int main(void)
.global _etext // -> .data initial values in ROM
.global _data // -> .data area in RAM
.global _edata // end of .data area
.global __bss_start__ // -> .bss area in RAM
.global __bss_end__ // end of .bss area
@ .global __stack_start__ // top of stack
// Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs
.set MODE_USR, 0x10 // User Mode
.set MODE_FIQ, 0x11 // FIQ Mode
.set MODE_IRQ, 0x12 // IRQ Mode
.set MODE_SVC, 0x13 // Supervisor Mode
.set MODE_ABT, 0x17 // Abort Mode
.set MODE_UND, 0x1B // Undefined Mode
.set MODE_SYS, 0x1F // System Mode
.equ I_BIT, 0x80 // when I bit is set, IRQ is disabled
.equ F_BIT, 0x40 // when F bit is set, FIQ is disabled
.text
.code 32
.align 2
// Setup the operating mode & stack.
// ---------------------------------
.global _start, start, _mainCRTStartup
.func _start
_start:
start:
_mainCRTStartup:
mrs r0,cpsr // get PSR
orr r0,r0,#I_BIT|F_BIT // disable IRQ and FIQ
msr cpsr,r0 // set up status register
@ ldr r0,=__stack_start__
mov sp,r0
// Clear .bss
// ----------
mov r0,#0 // get a zero
ldr r1,=__bss_start__ // -> bss start
ldr r2,=__bss_end__ // -> bss end
2: cmp r1,r2 // check if data to clear
strlo r0,[r1],#4 // clear 4 bytes
blo 2b // loop until done
ldr r1,=main
mov lr,pc
bx r1 // enter main()
.size _start, . - _start
.endfunc
.end
|
parsisiųstam startup'e šiam procesoriui vietoje __stack_start__ buvo _stack, bet čia visgi neesminis skirtumas.
cpuinit() tiktais sukonfiguruojami portai.
lcd initializacija taip pat pakopinta.
kas galėtų būti? kompiliuoju su CrossStudio for ARM |
|
|
|
|
|
 |
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 17, 23:10 |
|
|
|
|
Idomi sintakse for (b = 0; b<5000; b++)
@ b++;
tikrai ten antra karta tu nori padaryti b++; ? nesakau kad cia klaida, ale nera prasmes taip daryti, zutektu b<2500 :) juolab kad gal but cia ir gali but bugas |
|
_________________ -----
That's what she said. |
|
|
|
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 18, 09:44 |
|
|
|
|
| čia tik užlaikymas, o ta b++ palikau dėl to, kad tų ciklų kompiliatorius nesugalvotų optimizuot |
|
|
|
|
|
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 18, 10:10 |
|
|
|
|
| Ok, bet tu keitalioji ciklo kintamojo reiksme. Nemanau kad tai gera mintis. Velgi greiciausiai nesusijusi su luzimu. |
|
_________________ -----
That's what she said. |
|
|
|
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 19, 22:01 |
|
|
|
|
asembleri tai tikrai tingiu skaityt ir gilintis, jei kompiliatorius mesdavo klaida, tai ne siai sau. jei kazka keitei, tai turi suprast ka darai. tas crt0 labai glaudziai susietas su linkerio skriptu. tai pirmiausiai i tai siulyciau demesi atkreipt.
poto, jei viskas gerai su inicializacija, pasitikrint visus pointerius. nes bent jau man dauguma klaidu yra buve butent su pointeriais. |
|
|
|
|
|
 |
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 19, 23:12 |
|
|
|
|
problema turbut bus su pertraukimais jei tokius naudoji. o luzta toje vietoje todel kad ten daugiausia laiko praledzia.
beje reiketu pasiziureti ant kokio exception sustoja (kokia klaida ivyksta)
tada galima ant jo padeti breakpointa ir ziureti is kurios vietos ten patekai.
jei problema su pointeriu tai labai gretai surasi is kurios vietos. bet sio atveju tai abejoju kad bus taip.
beje idomu ar tau sigle step veikia? man tas tas crosstudio daugumos breakpointu tesingai nepadeda, ir singles tep veikia kazkaip absurdiskai |
|
|
|
|
|
 |
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 19, 23:19 |
|
|
|
|
| jedas rašo: |
| Ok, bet tu keitalioji ciklo kintamojo reiksme. Nemanau kad tai gera mintis. Velgi greiciausiai nesusijusi su luzimu. |
idomu kodel manai kad mintis bloga?
ciklo kintamuosius galima kaitalioti kada norsi arba galima isvis ju nenaudoti. galima pvs padaryti toki cikla
for (;
amzinas ciklas
for (;a<20;)
for (c=1;b>0;a++)
ir kaip tik nori kitaip |
|
|
|
|
|
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 20, 08:11 |
|
|
|
|
| Digix: daugiau subjektyvi nuomone. Prie kazkokiu salygu buvo ten labai nepastebimas bugas, ir nuo to laiko vengiu tokiu dalyku. Readability irgi nepagerina tokia sintakse kaip parasei :) O prisikabinau prie tos vietos, kuri man vienintele kazkiek itartina pasirode. |
|
_________________ -----
That's what she said. |
|
|
|
 |
lūžta programa ant ARM7TDMI |
Parašytas: 2007 12 24, 18:34 |
|
|
|
|
pagaliau išsiaiškinau kame buvo problema - tam ųC pagal defaulta buvo įjungiamas watchdogas, tai jis ir resetindavosi kas kažkiek laiko. o kankinausi tai nemažai prie tokio dalyko. įdomu kam gamintojams normaliems žmonėms nervus gadint? prireiks watchdogo, tai ir įsijungs..  |
|
|
|
|
|
|
 |
Google paieška forume |
|
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Must have farming mods
Farming simulator modhub,
Best farming simulator mods |
|

|
 |