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

 
 
> mspgcc4 и MSP430F2132, Компилятор ругается на структуру TLV_bits
dimay192
сообщение Aug 23 2010, 17:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 20-08-08
Пользователь №: 39 711



Вот собственно проблема...
Структура TLV_bits - структура, содержащая калибровочные константы в сегмента А флеш памяти.
Она описана в заголовочном файле msp430/include/msp430/tlv.h компилятора mspgcc4.
Само собой разумеется, что ее инициализировать не надо (она содержит заводские установки).
Но вот как это объяснить комлилятору, который на нее ругается следующими словами:

/opt/msp430-gcc-4.4.3/lib/gcc/msp430/4.4.3/../../../../msp430/include/msp430/tlv.h:125: ошибка: структура ‘TLV_bits’ с неинициализированными константными элементами
/opt/msp430-gcc-4.4.3/lib/gcc/msp430/4.4.3/../../../../msp430/include/msp430/tlv.h:125: ошибка: неинициализированная константа ‘TLV_bits’
make: *** [main.o] Ошибка 1

Может подсунуть компилятору опции какие?... но вот какие?
в make-файле я задаю следующие:

CC = msp430-gcc
CXX = msp430-g++
CFLAGS = -mmcu=${CPU} -O0 -Wall -g
CXXFLAGS = -mmcu=${CPU} -O0 -Wall -g -fno-rtti
что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Aug 23 2010, 17:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Не пользую GCC. Можно для интереса приаттачить этот хедер к вашему сообщению? Откуда константы в хедере? Там же обычно только типизация данных бывает.

P.S. Чудеса какие-то. Не могу скачать mspgcc-20081230.exe с sourceforge.net sad.gif Файл нулевого размера качается.
Go to the top of the page
 
+Quote Post
dimay192
сообщение Aug 23 2010, 18:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 20-08-08
Пользователь №: 39 711



Цитата(rezident @ Aug 23 2010, 23:43) *
...Откуда константы в хедере? Там же обычно только типизация данных бывает.


Эммм.... ну все верно! В хидере tlv.h нет никаких констант!...
По сути структура TLV_bits является интерефейсом к данным, зашитым на заводе в калибровочной области контроллера

Цитата(rezident @ Aug 23 2010, 23:43) *
Можно для интереса приаттачить этот хедер к вашему сообщению?


Файл не получается загрузить! Полностью процитирую его содержимое ниже:
Код
#ifndef __msp430_headers_tlv_h
#define __msp430_headers_tlv_h

/* tlv.h
*
* mspgcc project: MSP430 device headers
* tlv structures
*
* (c) 2008 by Sergey A. Borshch <sb-sf@users.sf.net>
*
* $Id: tlv.h,v 1.2 2009/01/11 23:11:48 sb-sf Exp $
*/

/* Switches: none */


/* TLV Calibration Data Structure */
#define TAG_DCO_30             0x01      /* Tag for DCO30  Calibration Data */
#define TAG_ADC12_1            0x10      /* Tag for ADC12_1 Calibration Data */
#define TAG_EMPTY              0xFE      /* Tag for Empty Data Field in Calibration Data */

#define TLV_CHECKSUM_          0x10C0    /* TLV CHECK SUM */
sfrw(TLV_CHECKSUM, TLV_CHECKSUM_);
#define TLV_DCO_30_TAG_        0x10F6    /* TLV TAG_DCO30 TAG */
sfrb(TLV_DCO_30_TAG, TLV_DCO_30_TAG_);
#define TLV_DCO_30_LEN_        0x10F7    /* TLV TAG_DCO30 LEN */
sfrb(TLV_DCO_30_LEN, TLV_DCO_30_LEN_);
#define TLV_ADC12_1_TAG_       0x10DA    /* TLV ADC12_1 TAG */
sfrb(TLV_ADC12_1_TAG, TLV_ADC12_1_TAG_);
#define TLV_ADC12_1_LEN_       0x10DB    /* TLV ADC12_1 LEN */
sfrb(TLV_ADC12_1_LEN, TLV_ADC12_1_LEN_);

#define CAL_ADC_25T85          0x0007    /* Index for 2.5V/85Deg Cal. Value */
#define CAL_ADC_25T30          0x0006    /* Index for 2.5V/30Deg Cal. Value */
#define CAL_ADC_25VREF_FACTOR  0x0005    /* Index for 2.5V Ref. Factor */
#define CAL_ADC_15T85          0x0004    /* Index for 1.5V/85Deg Cal. Value */
#define CAL_ADC_15T30          0x0003    /* Index for 1.5V/30Deg Cal. Value */
#define CAL_ADC_15VREF_FACTOR  0x0002    /* Index for ADC 1.5V Ref. Factor */
#define CAL_ADC_OFFSET         0x0001    /* Index for ADC Offset */
#define CAL_ADC_GAIN_FACTOR    0x0000    /* Index for ADC Gain Factor */

#define CALDCO_16MHZ_         0x10F8    /* DCOCTL  Calibration Data for 16MHz */
sfrb(CALDCO_16MHZ, CALDCO_16MHZ_);
#define CALBC1_16MHZ_         0x10F9    /* BCSCTL1 Calibration Data for 16MHz */
sfrb(CALBC1_16MHZ, CALBC1_16MHZ_);
#define CALDCO_12MHZ_         0x10FA    /* DCOCTL  Calibration Data for 12MHz */
sfrb(CALDCO_12MHZ, CALDCO_12MHZ_);
#define CALBC1_12MHZ_         0x10FB    /* BCSCTL1 Calibration Data for 12MHz */
sfrb(CALBC1_12MHZ, CALBC1_12MHZ_);
#define CALDCO_8MHZ_          0x10FC    /* DCOCTL  Calibration Data for 8MHz */
sfrb(CALDCO_8MHZ, CALDCO_8MHZ_);
#define CALBC1_8MHZ_          0x10FD    /* BCSCTL1 Calibration Data for 8MHz */
sfrb(CALBC1_8MHZ, CALBC1_8MHZ_);
#define CALDCO_1MHZ_          0x10FE    /* DCOCTL  Calibration Data for 1MHz */
sfrb(CALDCO_1MHZ, CALDCO_1MHZ_);
#define CALBC1_1MHZ_          0x10FF    /* BCSCTL1 Calibration Data for 1MHz */
sfrb(CALBC1_1MHZ, CALBC1_1MHZ_);

#define CAL_DCO_16MHZ          0x0000    /* Index for DCOCTL  Calibration Data for 16MHz */
#define CAL_BC1_16MHZ          0x0001    /* Index for BCSCTL1 Calibration Data for 16MHz */
#define CAL_DCO_12MHZ          0x0002    /* Index for DCOCTL  Calibration Data for 12MHz */
#define CAL_BC1_12MHZ          0x0003    /* Index for BCSCTL1 Calibration Data for 12MHz */
#define CAL_DCO_8MHZ           0x0004    /* Index for DCOCTL  Calibration Data for 8MHz */
#define CAL_BC1_8MHZ           0x0005    /* Index for BCSCTL1 Calibration Data for 8MHz */
#define CAL_DCO_1MHZ           0x0006    /* Index for DCOCTL  Calibration Data for 1MHz */
#define CAL_BC1_1MHZ           0x0007    /* Index for BCSCTL1 Calibration Data for 1MHz */

#ifndef __ASSEMBLER__
/* Structured declaration */
typedef enum
{
    DCO_30_TAG      = 0x01,
    ADC12_1_TAG     = 0x10,
    EMPTY_TAG       = 0xFE,

} tlv_tags_t;

typedef struct
{
    unsigned char tag;
    unsigned char length;
    struct
    {
        unsigned char DCO_16MHZ;
        unsigned char BC1_16MHZ;
        unsigned char DCO_12MHZ;
        unsigned char BC1_12MHZ;
        unsigned char DCO_8MHZ;
        unsigned char BC1_8MHZ;
        unsigned char DCO_1MHZ;
        unsigned char BC1_1MHZ;
    } value;
} const dco_30_tag_t;

typedef struct
{
    unsigned char tag;
    unsigned char length;
    struct
    {
        unsigned int ADC_GAIN_FACTOR;
        unsigned int ADC_OFFSET;
        unsigned int ADC_15VREF_FACTOR;
        unsigned int ADC_15T30;
        unsigned int ADC_15T85;
        unsigned int ADC_25VREF_FACTOR;
        unsigned int ADC_25T30;
        unsigned int ADC_25T85;
    } value;
} const adc12_1_tag_t;

typedef struct
{
    unsigned char tag;
    unsigned char length;
} const empty_tag_t;

struct
{
    unsigned int checksum;
    empty_tag_t  empty;
    unsigned int dummy[11];
    adc12_1_tag_t adc12_1;
    dco_30_tag_t dco_30;
} const volatile TLV_bits asm("0x10c0");
#endif  // __ASSEMBLER__

#endif  /* __msp430_headers_tlv_h */


Как видиде, структура TLV_bits определена как const volatile и привязана к фиксированному адресу.
Вот с ней то компилятор и не подружился!!!!!

Цитата(rezident @ Aug 23 2010, 23:43) *
P.S. Чудеса какие-то. Не могу скачать mspgcc-20081230.exe с sourceforge.net sad.gif Файл нулевого размера качается.


логичнее взять отсюда http://mspgcc4.sourceforge.net/ (свежайшая сборка, базируется на gcc-4.4.3) - можно вытянуть сборку, а можно и собрать из исходников
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 25 2010, 10:30
Сообщение #4


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

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



Цитата(dimay192 @ Aug 23 2010, 22:26) *
логичнее взять отсюда http://mspgcc4.sourceforge.net/ (свежайшая сборка, базируется на gcc-4.4.3) - можно вытянуть сборку, а можно и собрать из исходников

Давненько там не бывал, и где там откуда чего вытягивать? cranky.gif
В "Downloads" вытягивается какой-то непонятный zip на 400кБ, в котором некоторое борохло и какой-то лянчер, непонятно чего делающий

Люди! Помогите научиться собирать MSPGCC под виндой! Ну и вообще, собирать...

Сообщение отредактировал MrYuran - Aug 25 2010, 11:04


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dimay192
сообщение Aug 25 2010, 11:47
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 20-08-08
Пользователь №: 39 711



Цитата(MrYuran @ Aug 25 2010, 16:30) *
Давненько там не бывал, и где там откуда чего вытягивать? cranky.gif
В "Downloads" вытягивается какой-то непонятный zip на 400кБ, в котором некоторое борохло и какой-то лянчер, непонятно чего делающий

Люди! Помогите научиться собирать MSPGCC под виндой! Ну и вообще, собирать...


Чуть ниже нужно спуститься: All Files -> Каталог gcc-4.4.3-gdb-7.0.1-20100218 -> 20100218-msp430-gcc-4.4.3-gdb-7.0.1-insight-6.8.exe (9,5МБ)
Это уже собранный пакет (mspgcc+gdb).
"борохло" - это для самостоятельной сборки.
Под виндой пользую готовую сборку, пол линухой - собрал самостоятельно, там это в два шага делается...
в винде мутки какие-то с цигвином или МинГВ... в общем, ересь какая-то... не стал я заморачиваться...

Сообщение отредактировал dimay192 - Aug 25 2010, 11:48
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 25 2010, 12:00
Сообщение #6


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

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



Цитата(dimay192 @ Aug 25 2010, 15:47) *
Под виндой пользую готовую сборку, пол линухой - собрал самостоятельно, там это в два шага делается...

configure
make install
?
rolleyes.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dimay192
сообщение Aug 25 2010, 12:09
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 20-08-08
Пользователь №: 39 711



Цитата(MrYuran @ Aug 25 2010, 18:00) *
configure
make install
?
rolleyes.gif


Да не, вызовом скрипта buildgcc.sh:

svn checkout https://mspgcc4.svn.sourceforge.net/svnroot/mspgcc4
cd mspgcc4 && sh buildgcc.sh
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 25 2010, 13:07
Сообщение #8


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

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



Цитата(dimay192 @ Aug 25 2010, 16:09) *
Да не, вызовом скрипта buildgcc.sh:

Да, это надо сильно постараться, чтобы не получилось...
А под MinGW чем отличается?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dimay192
сообщение Aug 25 2010, 13:50
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 20-08-08
Пользователь №: 39 711



Цитата(MrYuran @ Aug 25 2010, 19:07) *
Да, это надо сильно постараться, чтобы не получилось...
А под MinGW чем отличается?


чес слово, не знаю, не пробовал... желания такого не возникало...
Сейчас пытаюсь получить рабочую среду (редактор,компилятор, отладчик,...) для линукса, чтобы можно было полностью уйти от винды...
IAR - единственно, что меня держит на ней...

То самое "барахло" на 400КБ, тоже меня по-началу смутило... подумал, ну блин, с нуля собирать что ли...
качнул, установил цигвин (gcc, wget, perl и еще что-то там нужно добавить к установке по умолчанию),
распаковал "барахло" в домашний каталог (через файл-манагер из под винды можно закинуть)
запускаем цигвин
меняем каталог, где лежит скрипт (куда мы только что распаковали)
$ cd $HOME/mspgcc4-20100815
запускаем скрипт
$ ./buildgcc.pl
Далее, отвечаем на вопросы, которые по ходу дела вываливаются (о версиях софта, что мы желаем установить)...
Сборка начинается...
Что делать с собранным пакетом в винде... Х. её З.... (может с этого места кто другой рассказ продолжит...)
Дальше я наткнулся на готовую сброку (20100218-msp430-gcc-4.4.3-gdb-7.0.1-insight-6.8.exe (9,5МБ)), которую чудесным образом до того момента не замечал...
на том мои эксперименты по сборке mspgcc для винды завершились... Может прижмет... Тогда продолжу...

По ходу дела возникает другой вопрос: как приладить GDB7.0.1, который находится в этой сборке к eclipse?
С предыдущим вариантом отладчика все понятно было... Была инструкция (весьма удачная, считаю) написанная для дураков...
http://www.levap.ru/2009/11/eclipse-mspgcc/
http://www.levap.ru/2009/12/debug-eclipse-gdb/
Что делать с текущей версией? Утилита msp430-gdbproxy в ней не наблюдается... А это значит, что текущая версия gdb (7.0.1) обходится как то без нее!
Но как? Я не понял!
И поэтому запустил версию gdb-7.0.1 с msp430-gdbproxy из предыдущей сборки mspgcc (3.2.3)
Вроде заработало! но коряво...
Все хреного... Все шатается...
Убожество...!
Может кто знает другие методы запуска gdb-7.0.1 из под eclipse?

Сообщение отредактировал dimay192 - Aug 25 2010, 14:44
Go to the top of the page
 
+Quote Post



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

 


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


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