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

 
 
 
Reply to this topicStart new topic
> __segmein_end() __segment_begin(), размещение возвращаемого указателя во флеш
ih_
сообщение Apr 25 2010, 17:28
Сообщение #1


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Вводная:
- IAR XLINK 4.60K (4.60.11.0);
- IAR Assembler for MSP430 V4.10A/W32 (4.10.1.9);
- пишу на Си под MSP430F155;
- функция __segment_end("CODE");

Вопрос:
Как указатель от фукции __segment_end(), разместиь в виде константы во флеш?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 25 2010, 17:40
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ih_ @ Apr 25 2010, 19:28) *
Как указатель от фукции __segment_end(), разместиь в виде константы во флеш?

Вы чего спрашиваете-то? Это не функция, это он самый и есть, и его не надо никуда размещать, им надо пользоваться.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ih_
сообщение Apr 25 2010, 17:44
Сообщение #3


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(zltigo @ Apr 25 2010, 21:40) *
Вы чего спрашиваете-то? Это не функция, это он самый и есть, и его не надо никуда размещать, им надо пользоваться.
Не могу разместить его как константу во флеш памяти. Но не в сегменте "CODE", а например в DATA16_C.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 25 2010, 18:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Зачем?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ih_
сообщение Apr 25 2010, 18:10
Сообщение #5


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(zltigo @ Apr 25 2010, 22:02) *
Зачем?
Хочу прочитать ее из *.hex файла и узнать карту размещения сегментов.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 25 2010, 18:15
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ih_ @ Apr 25 2010, 20:10) *
Хочу прочитать ее из *.hex файла и узнать карту размещения сегментов.

Еще дальше в лес sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ih_
сообщение Apr 26 2010, 05:21
Сообщение #7


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(zltigo @ Apr 25 2010, 22:15) *
Еще дальше в лес sad.gif
Затем послать ее в bootloader, чтоб он перегрузился в не используемое новой прошивкой пространство и принял ее.

Сообщение отредактировал ih_ - Apr 26 2010, 05:50
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 26 2010, 07:07
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Ну так и посылайте сразу сие значение, благо оно известно.
Так-же никто на запрещает разместить после всех сегментов свой сегмент с например, контрольной суммой. Ну а по ее адресу будет получен заодно и конец прошивки.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ih_
сообщение Apr 26 2010, 07:28
Сообщение #9


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(zltigo @ Apr 26 2010, 11:07) *
Ну так и посылайте сразу сие значение, благо оно известно.
Оно известно изнури, но не снаружи. Перед передачей прошивки в контроллер, хотел ему сообщить, карту размещения новой прошивки.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 26 2010, 07:32
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ih_ @ Apr 26 2010, 09:28) *
хотел ему сообщить

Ну находясь ВНУТРИ и сообщите ему. Какие проблемы?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ih_
сообщение Apr 26 2010, 08:23
Сообщение #11


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(zltigo @ Apr 26 2010, 11:32) *
Ну находясь ВНУТРИ и сообщите ему. Какие проблемы?

О задаче:
- есть файл прошивки;
- есть устройство куда прошивку нужно записать;
- есть программа на ПК, которая передает файл с прошивкой в устройство;
- в устройстве есть bootLoader, который принимает новую прошивку;

Под задача:
- разместить адреса границ сегментов в виде констант во флеш;

Алгоритм снаружи:
- анализируем файл с прошивкой, получам карту распределения сегментов;
- передаем в bootLoader адрес, куда ему нужно переписаться, чтоб его не стерла новая прошивка;
- принимаем ответ о готовности bootLoader принять прошивку;
- передаем прошивку;

Алгоритм внутри:
- ждем комадну на принятие новой прошивки;
- переписываем bootLoader по новому адресу;
- исправляем вектора прерываний;
- передаем управление bootLoader;
- принимаем новую прошивку;
- сброс устройства;
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 26 2010, 08:34
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ih_ @ Apr 26 2010, 10:23) *
Под задача:
- разместить адреса границ сегментов в виде констант во флеш;

зачем, если для поставленной задачи этого совершенно не требуется.
Цитата
Алгоритм снаружи:
- анализируем файл с прошивкой, получам карту распределения сегментов;

Зачем, если единственно, что надо знать о прошивке это ее размер и начальный адрес загрузки на который она слинкована, ну возможно адрес запуска. Эта информация есть в HEX файле.
Цитата
- передаем в bootLoader адрес, куда ему нужно переписаться, чтоб его не стерла новая прошивка;

Да пусть бедняга остается на своем месте, а прошивка шьется всегда за ним. К чему лишние проблемы себе создавать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ih_
сообщение Apr 26 2010, 09:26
Сообщение #13


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Под задача решена. Тему можно закрыть. Прошу прощения у модераторов, много флуда из ничего.

Решение:
- *.xcl файл:
Код
// RAM
-Z(DATA)bootData=0200-03FF

// ROM
-Z(CODE)beginCode=C000-FFDF
-P(CODE)CODE=C000-FFDF
-Z(CODE)endCode=C000-FFDF
-Z(CODE)bootCode#C000-FFDF

// *.hex file
-Ointel-extended

- *.c файл:
Код
__root void segmentationMap(void){
    // segmentation text id
    asm("DB 'Segmentaion:'");
    // RAM
    asm("DC16  SFB(DATA16_I)");asm("DC16  SFE(DATA16_I)");
    asm("DC16  SFB(DATA16_Z)");asm("DC16  SFE(DATA16_Z)");
    asm("DC16  SFB(DATA16_N)");asm("DC16  SFE(DATA16_N)");
//    asm("DC16  SFB(CSTACK)");asm("DC16  SFE(CSTACK)");
    asm("DC16  SFB(bootData)");asm("DC16  SFE(bootData)");
    // ROM
    asm("DC16  SFB(DATA16_C)");asm("DC16  SFE(DATA16_C)");
    asm("DC16  SFB(DATA16_ID)");asm("DC16  SFE(DATA16_ID)");
    asm("DC16  SFB(beginCode)");asm("DC16  SFB(endCode)");
    asm("DC16  SFB(bootCode)");asm("DC16  SFE(bootCode)");
    asm("DC16  SFB(INTVEC)");asm("DC16  SFE(INTVEC)");

};

- *.map файл:
Код
DATA16_I                                  0200                       dse    0
bootData                                  0200                       dse    0
DATA16_Z                               0200 - 029F              A0   rel    1
DATA16_N                               02A0 - 02D7              38   rel    1
CSTACK                                 03F6 - 03FF               A   stk    1
beginCode                                 C000                       dse    0
<CODE> 1                               C000 - D341            1342   rel    1
endCode                                   D342                       dse    0
DATA16_C                               D400 - D9FF             600   rel    9
DATA16_ID                              DA00 - DDFF             400   rel    9
bootCode                               FD78 - FFDF             268   rel    1
INTVEC                                 FFE0 - FFFF              20   rel    1

- *.hex файл:
Код
:10D1600030415365676D656E7461696F6E3A000298
:10D1700000020002A002A002D8020002000200D4B5
:10D1800000DA00DA00DE00C042D378FDE0FFE0FF05
:10D19000000030410A12023CB012E2D18293A80290
Go to the top of the page
 
+Quote Post

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

 


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


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