реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> MSPGCC->Проблема->Нид Хелп, Кто реально работал с MSPGCC - помогите плз
MrYuran
сообщение Feb 29 2008, 11:56
Сообщение #1


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Проблема имеет следующий характер:

Откомпилированная в MSPGCC программа на рабочем кристалле работать не хочет.
Даже самая простейшая.
Даже leds из встроенных примеров.

Вернее, она подаёт признаки жизни, но какие-то загадочные и трудно сопоставимые с исходником.
Короче, живёт своей внутренней жизнью.

У меня подозрение, что проблемы начинаются со стартапа, с инициализации стека или ещё чего-нить.

Может, кто сталкивался с данной проблемой и успешно её преодолел?
Помогите найти зацепку.

Судя по отзывам на форумах, с MSPGCC либо вообще никто не работал
(отсылают с умным видом типа иди-ка ты на... sourceforge...mspgcc - там всё есть)
либо проблем не возникает (в чём я очень сомневаюсь)

Короче: жду советов, свои идеи закончились.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
cornflyer
сообщение Feb 29 2008, 12:15
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 166
Регистрация: 11-07-06
Из: Dubna
Пользователь №: 18 729



тут есть пример кода http://electronix.ru/forum/index.php?showt...42599&st=15

/////// main.c //////////////////////////////////////////////////////////////////////////////

#include "io.h"
#include "signal.h"

int main(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT

BCSCTL1 &= ~XT2OFF; // XT2on

do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG) != 0); // OSCFault flag still set?

BCSCTL2 |= SELM1+SELS; // MCLK = SMCLK = XT2

UCTL1 = CHAR; // 8-bit character
UTCTL1 = SSEL1; // UCLK = SMCLK
UBR01 = 0x80; // 8Mhz/115200 - 69.44
UBR11 = 0x01; //
UMCTL1 = 0x2C; // modulation
ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
IE2 |= URXIE1; // Enable USART1 RX interrupt
P3SEL |= 0xC0; // P3.6,7 = USART1 option select
P3DIR |= 0x20; // P3.6 = output direction
_EINT(); // Enable interrupts

for (;;); // Do nothing
return 0 ;
}

interrupt (UART1RX_VECTOR) usart1_rx (void)
{
while ((IFG2 & UTXIFG1) == 0); // USART1 TX buffer ready?
TXBUF1 = RXBUF1; // RXBUF1 to TXBUF1
}

/////// makefile ////////////////////////////////////////////////////////////////////////////////

# makfile configuration
NAME = bpv
OBJECTS = main.o
CPU = msp430x169

ASFLAGS = -mmcu=${CPU} -D_GNU_ASSEMBLER_
CFLAGS = -mmcu=${CPU} -O2 -Wall -g

#switch the compiler (for the internal make rules)
CC = msp430-gcc
AS = msp430-gcc
LD = msp430-ld

.PHONY: all FORCE clean download download-jtag download-bsl dist

#all should be the first target. it's built when make is run without args
all: ${NAME}.elf ${NAME}.a43 ${NAME}.lst

#confgigure the next line if you want to use the serial download
download: download-jtag
#download: download-bsl

#additional rules for files
${NAME}.elf: ${OBJECTS}
${CC} -mmcu=${CPU} -o $@ ${OBJECTS}

${NAME}.a43: ${NAME}.elf
msp430-objcopy -O ihex $^ $@

${NAME}.lst: ${NAME}.elf
msp430-objdump -dSt $^ >$@

download-jtag: all
msp430-jtag -e ${NAME}.elf

download-bsl: all
msp430-bsl -e ${NAME}.elf

clean:
rm -f ${NAME}.elf ${NAME}.a43 ${NAME}.lst ${OBJECTS}

#backup archive
dist:
tar czf dist.tgz *.c *.h *.txt makefile

#dummy target as dependecy if something has to be build everytime
FORCE:

#project dependencies

main.o: main.c
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Feb 29 2008, 14:15
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



07.gif
помещаю ваш makefile в рабочую папку, пишу make и вижу:
MAKE Version 5.2 Copyright © 1987, 2000 Borland
Error makefile 29: Command syntax error
Error makefile 32: Command syntax error
Error makefile 35: Redefinition of target 'bpv.elf'
Error makefile 35: Command syntax error
Error makefile 38: Redefinition of target 'bpv.elf'
Error makefile 38: Command syntax error
Error makefile 41: Redefinition of target 'bpv.elf'
Error makefile 41: Redefinition of target 'bpv.a43'
Error makefile 41: Redefinition of target 'bpv.lst'
Error makefile 41: Command syntax error
Error makefile 45: No match found for wildcard 'dist.tgz'
Fatal makefile 45: Rule line too long

Я только проц сменил на 149, больше ничего
чё-то я вообще ничего не понимаю.
Может у меня gcc не тот?

Пробовал последней версией и предпоследней - без разницы


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 29 2008, 14:59
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(MrYuran @ Feb 29 2008, 16:15) *
MAKE Version 5.2 Copyright © 1987, 2000 Borland
Что-то я сомневаюсь, что в комплекте с mspgcc идет make имени Борланда. Похоже, у вас где-то стоит какой-то пакет от Борланда, он прописан в path первым и по умолчанию вызывается его make. А этот make сильно несовместим с make из GNU binutils. Что вы и наблюдаете.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 29 2008, 15:00
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(MrYuran @ Feb 29 2008, 19:15) *
07.gif
помещаю ваш makefile в рабочую папку, пишу make и вижу:
MAKE Version 5.2 Copyright © 1987, 2000 Borland
Может у меня gcc не тот?


make не тот:-) Пропишите в PATH путь к mspgcc до борландов.
Или батничек для компиляции:
Код
SET PATH=C:\mspgcc\bin;%PATH%
make


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 3 2008, 05:31
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Спасибо, я уж сам допёр, что борланд свой мэйк раньше прописал.
Совсем уже крышняк поехал...
Ладно, сегодня попробую залить в МСП.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 3 2008, 07:03
Сообщение #7


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Ну, короче, прошил - мало чего изменилось.
У девайса крышу сносит, время от времени звуковыми и световыми сигналами передаёт какие-то шифровки в центр.
Хотя должен тупо мигать светодиодами на порту P4

Вот листинг:

Disassembly of section .text:

00001100 <_reset_vector__>:
1100: b2 40 80 5a mov #23168, &0x0120 ;#0x5a80
1104: 20 01
1106: 3f 40 f0 11 mov #4592, r15 ;#0x11f0
110a: 3e 40 00 02 mov #512, r14 ;#0x0200
110e: 3d 40 00 02 mov #512, r13 ;#0x0200
1112: 0d 9e cmp r14, r13 ;
1114: 05 24 jz $+12 ;abs 0x1120
1116: fe 4f 00 00 mov.b @r15+, 0(r14) ;
111a: 1e 53 inc r14 ;
111c: 0e 9d cmp r13, r14 ;
111e: fb 2b jnc $-8 ;abs 0x1116
1120: 3f 40 00 02 mov #512, r15 ;#0x0200
1124: 3d 40 00 02 mov #512, r13 ;#0x0200
1128: 0d 9f cmp r15, r13 ;
112a: 05 24 jz $+12 ;abs 0x1136
112c: cf 43 00 00 mov.b #0, 0(r15) ;r3 As==00
1130: 1f 53 inc r15 ;
1132: 0f 9d cmp r13, r15 ;
1134: fb 2b jnc $-8 ;abs 0x112c
1136: 30 40 40 11 br #0x1140 ;

0000113a <__ctors_end>:
113a: 30 40 3e 11 br #0x113e ;

0000113e <_unexpected_>:
113e: 00 13 reti

00001140 <main>:
#include "hardware.h"


int main(void) {
1140: 31 40 f6 09 mov #2550, r1 ;#0x09f6
1144: 04 41 mov r1, r4 ;
int i,j;
int o = 0;
1146: 84 43 04 00 mov #0, 4(r4) ;r3 As==00

WDTCTL = WDTCTL_INIT; //Init watchdog timer
114a: b2 40 80 5a mov #23168, &0x0120 ;#0x5a80
114e: 20 01

P4OUT = P1OUT_INIT; //Init output data of port1
1150: c2 43 1d 00 mov.b #0, &0x001d ;r3 As==00
P5OUT = P2OUT_INIT; //Init output data of port2
1154: c2 43 31 00 mov.b #0, &0x0031 ;r3 As==00

P4SEL = P1SEL_INIT; //Select port or module -function on port1
1158: c2 43 1f 00 mov.b #0, &0x001f ;r3 As==00
P5SEL = P2SEL_INIT; //Select port or module -function on port2
115c: c2 43 33 00 mov.b #0, &0x0033 ;r3 As==00

P4DIR = P1DIR_INIT; //Init port direction register of port1
1160: f2 43 1e 00 mov.b #-1, &0x001e ;r3 As==11
P5DIR = P2DIR_INIT; //Init port direction register of port2
1164: f2 43 32 00 mov.b #-1, &0x0032 ;r3 As==11

P1IES = P1IES_INIT; //init port interrupts
1168: c2 43 24 00 mov.b #0, &0x0024 ;r3 As==00
P2IES = P2IES_INIT;
116c: c2 43 2c 00 mov.b #0, &0x002c ;r3 As==00
P1IE = P1IE_INIT;
1170: c2 43 25 00 mov.b #0, &0x0025 ;r3 As==00
P2IE = P2IE_INIT;
1174: c2 43 2d 00 mov.b #0, &0x002d ;r3 As==00

while (1) { //main loop, never ends...
for (j=0; j<8; j++, o++) {
1178: 84 43 02 00 mov #0, 2(r4) ;r3 As==00
117c: b4 92 02 00 cmp #8, 2(r4) ;r2 As==11
1180: 01 38 jl $+4 ;abs 0x1184
1182: fa 3f jmp $-10 ;abs 0x1178
P4OUT = (1<<j) | (0x80>>(o&7));
1184: 1f 43 mov #1, r15 ;r3 As==01
1186: 94 44 02 00 mov 2(r4), 6(r4) ;
118a: 06 00
118c: 0e 4f mov r15, r14 ;
118e: 1d 44 06 00 mov 6(r4), r13 ;
1192: 0d 93 cmp #0, r13 ;r3 As==00
1194: 03 24 jz $+8 ;abs 0x119c
1196: 0e 5e rla r14 ;
1198: 1d 83 dec r13 ;
119a: fd 23 jnz $-4 ;abs 0x1196
119c: 1f 44 04 00 mov 4(r4), r15 ;
11a0: 3f f0 07 00 and #7, r15 ;#0x0007
11a4: 3d 40 80 00 mov #128, r13 ;#0x0080
11a8: 84 4f 08 00 mov r15, 8(r4) ;
11ac: 0f 4d mov r13, r15 ;
11ae: 84 93 08 00 cmp #0, 8(r4) ;r3 As==00
11b2: 04 24 jz $+10 ;abs 0x11bc
11b4: 0f 11 rra r15 ;
11b6: 94 83 08 00 dec 8(r4) ;
11ba: fc 23 jnz $-6 ;abs 0x11b4
11bc: 4e df bis.b r15, r14 ;
11be: c2 4e 1d 00 mov.b r14, &0x001d ;
for (i = 0; i<0x4fff; i++) {
11c2: 84 43 00 00 mov #0, 0(r4) ;r3 As==00
11c6: b4 90 ff 4f cmp #20479, 0(r4) ;#0x4fff
11ca: 00 00
11cc: 01 38 jl $+4 ;abs 0x11d0
11ce: 05 3c jmp $+12 ;abs 0x11da
nop();
11d0: 03 43 nop
nop();
11d2: 03 43 nop
11d4: 94 53 00 00 inc 0(r4) ;
11d8: f6 3f jmp $-18 ;abs 0x11c6
11da: 94 53 02 00 inc 2(r4) ;
11de: 94 53 04 00 inc 4(r4) ;
11e2: cc 3f jmp $-102 ;abs 0x117c
}
}
}
}
11e4: 31 50 0a 00 add #10, r1 ;#0x000a
11e8: 30 40 ec 11 br #0x11ec ;

000011ec <__stop_progExec__>:
11ec: 02 df bis r15, r2 ;
11ee: fe 3f jmp $-2 ;abs 0x11ec
Disassembly of section .vectors:

0000ffe0 <InterruptVectors>:
ffe0: 3a 11 3a 11 3a 11 3a 11 3a 11 3a 11 3a 11 3a 11 :.:.:.:.:.:.:.:.
fff0: 3a 11 3a 11 3a 11 3a 11 3a 11 3a 11 3a 11 00 11 :.:.:.:.:.:.:...

05.gif Помогите кто может!


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Mar 3 2008, 09:45
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Mar 3 2008, 09:03) *
Ну, короче, прошил - мало чего изменилось.
У девайса крышу сносит, время от времени звуковыми и световыми сигналами передаёт какие-то шифровки в центр.
Хотя должен тупо мигать светодиодами на порту P4

Вот листинг:
...
05.gif Помогите кто может!

А пробовали выпонять по шагам?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 3 2008, 10:42
Сообщение #9


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(gotty @ Mar 3 2008, 12:45) *
А пробовали выпонять по шагам?

Пытался запустить GDB, но он чё-то ругается, а разбираться - у меня уже начинаются рвотные реакции от этого GNU-тья... wacko.gif
может есть у кого step-to-step мануал, как запустить симулятор на GDB?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Mar 3 2008, 10:54
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Mar 3 2008, 12:42) *
Пытался запустить GDB, но он чё-то ругается, а разбираться - у меня уже начинаются рвотные реакции от этого GNU-тья... wacko.gif
может есть у кого step-to-step мануал, как запустить симулятор на GDB?

Цитата
$msp430-gdb leds.elf
>target sim
>load leds.elf

Ну а прежде стоит изучить команды gdb, или попробовать прикрутить msp430-gdb к Eclipse, или воспользовать графическими фронтэндами типа Insight.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 3 2008, 11:28
Сообщение #11


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(gotty @ Mar 3 2008, 13:54) *
Ну а прежде стоит изучить команды gdb, или попробовать прикрутить msp430-gdb к Eclipse, или воспользовать графическими фронтэндами типа Insight.


C:\mspgcc\examples\leds>msp430-gdb leds.elf

GNU gdb 5.1.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-cygwin --target=msp430"...partial-sta
b.h:441: gdb-internal-error: sect_index_data not initialized

An internal GDB error was detected. This may make further
debugging unreliable. Continue this debugging session? (y or n) y

Create a core file containing the current state of GDB? (y or n) y

(gdb) target sim
Connected to the simulator.
(gdb) load leds.elf
``leds.elf'' has no bss section.
unable to load program
(gdb)

??? Что дальше?
что за секция bss в эльфе?
компилируется стандартным мэйком, может для отладки какой-нибудь ключ или флаг нужен?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Mar 3 2008, 11:48
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Mar 3 2008, 13:28) *
C:\mspgcc\examples\leds>msp430-gdb leds.elf

GNU gdb 5.1.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-cygwin --target=msp430"...partial-sta
b.h:441: gdb-internal-error: sect_index_data not initialized

An internal GDB error was detected. This may make further
debugging unreliable. Continue this debugging session? (y or n) y

Create a core file containing the current state of GDB? (y or n) y

(gdb) target sim
Connected to the simulator.
(gdb) load leds.elf
``leds.elf'' has no bss section.
unable to load program
(gdb)

??? Что дальше?
что за секция bss в эльфе?
компилируется стандартным мэйком, может для отладки какой-нибудь ключ или флаг нужен?

А версия binutils какая у вас? 2.17? Вот тут немецким по белому написано что такое может быть. Их рекомендация - ставить версию 2.16.1 ( возможно в 2.18 уже исправили)
P.S. Сам не пробовал, так что прошу сильно не пинать.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 3 2008, 11:53
Сообщение #13


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(gotty @ Mar 3 2008, 14:48) *
А версия binutils какая у вас? 2.17? Вот тут немецким по белому написано что такое может быть. Их рекомендация - ставить версию 2.16.1 ( возможно в 2.18 уже исправили)
P.S. Сам не пробовал, так что прошу сильно не пинать.


мерси за ссылку!

Блин, а я немецкий последний раз в школе изучал, до 8 класса...

А вообще у меня тоже подозрение, что наверно версия у меня не той системы - у всех получается, а у меня нет... Хотя нет, я тут глянул - mspgcc-20070216
так что не знаю...

Сообщение отредактировал MrYuran - Mar 3 2008, 12:37


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Mar 3 2008, 11:58
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Mar 3 2008, 13:53) *
мерси за ссылку!
Блин, а я немецкий последний раз в школе изучал, до 8 класса...

Это не беда. Вот например онлайн переводчик (по крайней мере смысл понять можно)
http://www.translate.ru/srvurl.asp?lang=ru
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 4 2008, 06:17
Сообщение #15


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



beer.gif
УРА ! ЗАРАБОТАЛО !
Всем спасибо, отбой.

всё было нормально, просто мспгсс генерит эльф, а конвертор из эльфа в ти-текст конвертит немного криво, и загрузчик бсл его немного неправильно понимает.

Как результат - абсолютно неадекватный процессор.

Достаточно сохранить загрузочный тхт как текст мс-дос и всё заработало!

Беру свои слова обратно, GCC рулез, жизнь прекрасна.

Одного не могу понять: чё за хрень насовали в стартап?
На мой взгляд, единственная рабочая инструкция в нём останавливает WDT, далее идёт переход на мэйн.
Так какого было огород городить, хотя может я не понимаю всех тонкостей.
Например, как вам такая конструкция?

110a: 3e 40 00 02 mov #512, r14 ;#0x0200
110e: 3d 40 00 02 mov #512, r13 ;#0x0200
1112: 0d 9e cmp r14, r13 ;

Какой смысл сравнивать 2 одинаковых регистра?
Причём в случае неравенства выполняется другой код, не менее загадочный.
Я не понимаю.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 22:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01511 секунд с 7
ELECTRONIX ©2004-2016