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

 
 
> Bootloader для MSP430, как написать бутлоадер для МСП430
asket
сообщение Oct 15 2007, 10:09
Сообщение #1


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

Группа: Участник
Сообщений: 91
Регистрация: 24-08-06
Из: Москва
Пользователь №: 19 809



Я в этом деле новичок, недавно начал заниматься этой деятельностью, мне поручили написать Bootloader. Задача: имеется шина, будь это COM-порт или собственная шина, не важно какая, нужно по данной шине закачать с компьютера прошивку и залить его во флеш в целях ее обновления, вопрос: как это сделать это по умному? Кто и что посоветует? Может примерчик какой-нить.. К сожалению в отличии от других процев у MSP430 встроенных бутлоадеров я так понимаю нету. Компилятор IAR 3.42.

Заранее благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KARLSON
сообщение Oct 13 2011, 06:35
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Захотел я сделать прошивку с переходами между приложениями пока без использовании прерываний:
приложение 1
Код
#include "io430.h"

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR = BIT0;
  P1OUT = BIT0;
  char j=0;
  unsigned int k = 40000, z=2;
  
  while(1)
  {
    for(unsigned int i=0; i<k; i++);
    for(unsigned int i=0; i<z; i++);
    P1OUT ^= BIT0;
    ++j;
    if(j == 30)
    {
      ((void(*)() )0x2200)();
    }
  }
}

xcl файл приложения 1
Код
// -----------------------------------------------
// Read/write memory
//

-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1100-20FF
-Z(DATA)CODE_I
-Z(DATA)CSTACK+_STACK_SIZE#

// -------------------------------------
// Constant data
//

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=2100-FFBF

// -------------------------------------
// Code
//
-Z(CODE)CSTART,ISR_CODE,CODE_ID=EC00-FFBF
-P(CODE)CODE=EC00-FFBF

// -------------------------------------
// Interrupt vectors
//

-Z(CODE)INTVEC=FFC0-FFFF
-Z(CODE)RESET=FFFE-FFFF

прошивка приложения 1
Код
@EC00
31 40 00 21 B0 12 0C EC B0 12 4E EC 0A 12 0B 12
08 12 B2 40 80 5A 20 01 D2 43 22 00 D2 43 21 00
4A 43 3B 40 40 9C 28 43 0B 3C 1F 53 0F 98 FD 2B
D2 E3 21 00 5A 53 7A 90 1E 00 02 20 B0 12 00 22
0F 43 01 3C 1F 53 0F 9B FD 2B 0F 43 EF 3F 30 40
52 EC 30 40 56 EC FF 3F
@FFFE
00 EC


приложение 2
Код
#include "io430.h"

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR = BIT0;
  P1OUT = BIT0;
  char j=0;
  unsigned int k = 65535, z=65535;
  
  while(1)
  {
    for(unsigned int i=0; i<k; i++);
    for(unsigned int i=0; i<z; i++);
    P1OUT ^= BIT0;
    ++j;
    if(j == 30)
    {
      ((void(*)() )0xEC00)();
    }
  }
}


xcl файл приложения 2
Код
// -----------------------------------------------
// Read/write memory
//

-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1100-20FF
-Z(DATA)CODE_I
-Z(DATA)CSTACK+_STACK_SIZE#

// -------------------------------------
// Constant data
//

-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=2200-9FBF

// -------------------------------------
// Code
//
-Z(CODE)CSTART,ISR_CODE,CODE_ID=2200-9FBF
-P(CODE)CODE=2200-9FBF

// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=9FC0-9FFF
-Z(CODE)RESET=9FFE-9FFF


прошивка приложения 2
Код
@2200
31 40 00 21 B0 12 0C 22 B0 12 4C 22 0A 12 0B 12
08 12 B2 40 80 5A 20 01 D2 43 22 00 D2 43 21 00
4A 43 3B 43 38 43 0B 3C 1F 53 0F 98 FD 2B D2 E3
21 00 5A 53 7A 90 1E 00 02 20 B0 12 00 EC 0F 43
01 3C 1F 53 0F 9B FD 2B 0F 43 EF 3F 30 40 50 22
30 40 54 22 FF 3F
@9FFE
00 22
q


общая прошивка
Код
@2200
31 40 00 21 B0 12 0C 22 B0 12 4C 22 0A 12 0B 12
08 12 B2 40 80 5A 20 01 D2 43 22 00 D2 43 21 00
4A 43 3B 43 38 43 0B 3C 1F 53 0F 98 FD 2B D2 E3
21 00 5A 53 7A 90 1E 00 02 20 B0 12 00 EC 0F 43
01 3C 1F 53 0F 9B FD 2B 0F 43 EF 3F 30 40 50 22
30 40 54 22 FF 3F
@9FFE
00 22
@EC00
31 40 00 21 B0 12 0C EC B0 12 4E EC 0A 12 0B 12
08 12 B2 40 80 5A 20 01 D2 43 22 00 D2 43 21 00
4A 43 3B 40 40 9C 28 43 0B 3C 1F 53 0F 98 FD 2B
D2 E3 21 00 5A 53 7A 90 1E 00 02 20 B0 12 00 22
0F 43 01 3C 1F 53 0F 9B FD 2B 0F 43 EF 3F 30 40
52 EC 30 40 56 EC FF 3F
@FFFE
00 EC
q


Прошил. Вроде работает. Первая прошивка часто моргает (~3Гц), затем переходит на вторую прошивку, моргает медленно (~1.5 Гц). И так бесконечно.
Я всё правильно сделал? Есть ли минусы?

Кстати, Сергей, пробовал делать переход на адрес вектора ((void(**)() )0x9FFE)(); в одном и ((void(**)() )0xFFFE)(); в другом приложении. Компилятор ругнулся на эти записи "Error[Pe109]: expression must have (pointer-to-) function type "

Сообщение отредактировал KARLSON - Oct 13 2011, 10:11
Прикрепленные файлы
Прикрепленный файл  perehod_po_prilogeniyam.rar ( 39.68 килобайт ) Кол-во скачиваний: 29
 


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- asket   Bootloader для MSP430   Oct 15 2007, 10:09
- - VAI   ЦитатаК сожалению в отличии от других процев у MSP...   Oct 15 2007, 10:36
|- - asket   Цитата(VAI @ Oct 15 2007, 14:36) Плохо по...   Oct 15 2007, 11:12
- - rezident   asket, вы сначала разберитесь как внутрипрограммно...   Oct 15 2007, 12:11
|- - asket   Цитата(rezident @ Oct 15 2007, 16:11) ask...   Oct 15 2007, 12:50
- - VAI   Нашел на http://tech.groups.yahoo.com/group/msp430...   Oct 15 2007, 13:21
|- - asket   Цитата(VAI @ Oct 15 2007, 17:21) Нашел на...   Oct 15 2007, 13:56
|- - rezident   Цитата(asket @ Oct 15 2007, 19:56) И еще ...   Oct 15 2007, 18:40
|- - asket   Цитата(rezident @ Oct 15 2007, 22:40) Дык...   Oct 19 2007, 08:10
|- - asket   Неужели останусь без ответа и привета?   Oct 19 2007, 14:56
|- - gotty   Цитата(asket @ Oct 19 2007, 11:10) Окей, ...   Oct 22 2007, 06:19
|- - asket   Еще такой вопрос по поводу сегментации флеш-памяти...   Oct 23 2007, 13:27
|- - gotty   Цитата(asket @ Oct 23 2007, 16:27) Еще та...   Oct 23 2007, 14:16
|- - asket   Цитата(gotty @ Oct 23 2007, 18:16) Можно ...   Oct 23 2007, 15:48
|- - NoName   Цитата(asket @ Oct 23 2007, 17:48) Это мн...   Nov 1 2007, 13:39
- - SSerge   Узнать размер именно функции нельзя. Но можно указ...   Oct 19 2007, 19:16
- - CAHTA_1939   я тут в msp430x1xx_user_guide прочитал что флеш па...   Oct 29 2007, 20:36
|- - rezident   Цитата(CAHTA_1939 @ Oct 30 2007, 01:36) я...   Oct 29 2007, 20:53
- - АДИКМ   Если Вам надо быстрое блочное программирование, то...   Oct 30 2007, 13:13
- - KARLSON   Здравствуйте. Собрался писать загрузчик. Т.к. в MS...   Oct 5 2011, 07:31
|- - rezident   Цитата(KARLSON @ Oct 5 2011, 12:31) - чт...   Oct 5 2011, 17:26
- - KARLSON   При двух проектах, ведь будет две функции main(); ...   Oct 10 2011, 05:20
|- - Сергей Борщ   QUOTE (KARLSON @ Oct 10 2011, 08:20) А пр...   Oct 10 2011, 06:57
- - KARLSON   И так. Создаю пример. Вопрос: правильно ли прописа...   Oct 10 2011, 11:34
|- - rezident   Цитата(KARLSON @ Oct 10 2011, 16:34) И та...   Oct 10 2011, 19:44
|- - Сергей Борщ   QUOTE (rezident @ Oct 10 2011, 22:44) Boo...   Oct 11 2011, 06:12
|- - rezident   Цитата(Сергей Борщ @ Oct 11 2011, 11:12) ...   Oct 11 2011, 15:08
|- - Сергей Борщ   QUOTE (rezident @ Oct 11 2011, 18:08) В в...   Oct 11 2011, 17:32
|- - rezident   Цитата(Сергей Борщ @ Oct 11 2011, 22:32) ...   Oct 11 2011, 17:59
|- - Сергей Борщ   QUOTE (rezident @ Oct 11 2011, 20:59) Дык...   Oct 11 2011, 22:32
- - rezident   Нет, Сергей, как сделать "перемещаемые" ...   Oct 11 2011, 23:16
|- - Сергей Борщ   QUOTE (rezident @ Oct 12 2011, 02:16) Нет...   Oct 12 2011, 06:14
- - KARLSON   А что делает запись ((void(*)() )0x2200)();? Если ...   Oct 12 2011, 12:42
|- - Сергей Борщ   QUOTE (KARLSON @ Oct 12 2011, 15:42) А чт...   Oct 12 2011, 13:07
|- - Сергей Борщ   QUOTE (KARLSON @ Oct 13 2011, 09:35) Кста...   Oct 13 2011, 15:56
- - Kurt   Мои пять копеек. Вариант, если в устройстве есть в...   Oct 21 2011, 04:49


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

 


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


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