|
mspgcc4 и MSP430F2132, Компилятор ругается на структуру TLV_bits |
|
|
|
Aug 23 2010, 17:23
|
Участник

Группа: Участник
Сообщений: 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 что я делаю не так?
|
|
|
|
|
 |
Ответов
|
Aug 23 2010, 18:26
|
Участник

Группа: Участник
Сообщений: 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) - можно вытянуть сборку, а можно и собрать из исходников
|
|
|
|
|
Aug 25 2010, 10:30
|

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

|
Цитата(dimay192 @ Aug 23 2010, 22:26)  логичнее взять отсюда http://mspgcc4.sourceforge.net/ (свежайшая сборка, базируется на gcc-4.4.3) - можно вытянуть сборку, а можно и собрать из исходников Давненько там не бывал, и где там откуда чего вытягивать? В "Downloads" вытягивается какой-то непонятный zip на 400кБ, в котором некоторое борохло и какой-то лянчер, непонятно чего делающий Люди! Помогите научиться собирать MSPGCC под виндой! Ну и вообще, собирать...
Сообщение отредактировал MrYuran - Aug 25 2010, 11:04
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 25 2010, 11:47
|
Участник

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

|
Цитата(MrYuran @ Aug 25 2010, 16:30)  Давненько там не бывал, и где там откуда чего вытягивать? В "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
|
|
|
|
|
Aug 25 2010, 12:09
|
Участник

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

|
Цитата(MrYuran @ Aug 25 2010, 18:00)  configure make install ?  Да не, вызовом скрипта buildgcc.sh: svn checkout https://mspgcc4.svn.sourceforge.net/svnroot/mspgcc4cd mspgcc4 && sh buildgcc.sh
|
|
|
|
|
Aug 25 2010, 13:50
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
Сообщений в этой теме
dimay192 mspgcc4 и MSP430F2132 Aug 23 2010, 17:23  demiurg_spb Попробуйте обойтись без асмовых вставок.
Кодtypede... Aug 23 2010, 18:46   MrYuran Цитата(demiurg_spb @ Aug 23 2010, 22:46) ... Aug 24 2010, 04:38 dimay192 Создал пустой проект (в котором только одна пустая... Aug 24 2010, 11:08 MrYuran Может, ключиками какими поиграть, чтобы эти ошибки... Aug 24 2010, 11:14 dimay192 Цитата(MrYuran @ Aug 24 2010, 17:14) Може... Aug 24 2010, 11:51 Сергей Борщ Цитата(dimay192 @ Aug 24 2010, 14:51) Воп... Aug 24 2010, 20:12
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|