Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » BootLoader без передёргивания Reset


BootLoader без передёргивания Reset

Сообщений 31 страница 40 из 40

31

-NMi- написал(а):

Измени условие, типа если этот равен тому -->> то GoTo на адрес бутлоадера, вроде, &h3c80 и не нужно будет ни транзистор ни ногу Reset "дёргать"


В самом первом посте про это писал, всё перепробовал, без Reset ничего не получилось.

0

32

emal-05 написал(а):

После прошивки бутлодера, первый раз моя прога заливается без сброса Reset

Вот и отследи, почему так происходит.

Если честно, то я вААще ничО нипонял из твоего вопроса  %-)   Какими ты аппаратными средствами пользуешься - ты не написАл.
Лично у меня есть десяток ардуин от микры до 2560 и все переписаны под баскомовский бутлоадер с переделанным кодом. Что и где переделать я писал на этом форуме, поищи.

Есть "недоардуины" т.е. платы без программатора, но с выводами Rx и Tx. На этих платах перепрошивка организована следующим образом:   есть сервисное меню, там есть пункт -- бутлоадер. Джойстиком (я люблю джойстики) выбираем пункт бутлоадер и в коде, как я уже писАл выше, имеем два варианта перехода в режим бута. Первый и самый простой - это переход на адрес загрузчика. Второй, более сложный - через флаг и вачдог, это если диспетчер задач построен на вачдоге а не на таймерах. Не знаю как у вас, но у меня всё работает. Правда сказать,  :blush:  с RTOS-ами опыта пока маловасто, но ничо, научусь... думаю...  :rofl:

По поводу "тупо" переход на адрес бутлоадера по команде сравнения или ещё как - вот здесь могут быть  "засады" , о которых я то-же писал в этой ветке. Тебе НЕОБХОДИМО отключить ВСЕ фичи проца на момент входа в бутлоадер! Или прямо во входной части бутлоадера отклюсай всё! Т.е. необходимо выключить прерывания, таймера, вачдог, настроить USART на нужную скорость.

0

33

-NMi- написал(а):

Лично у меня есть десяток ардуин от микры до 2560 и все переписаны под баскомовский бутлоадер с переделанным кодом. Что и где переделать я писал на этом форуме, поищи.


Здравствуйте! Стало интересно, этот Ваш ответ:

Какая разница между ардуиной и баскомом???
По моему они абсолютно одинаковые, языки программирования только разные.
Скажу больше, добавьте waitms_50 в тело бутлоадера баскома в цикл ожидания ответа по UART и не нужно будет нажимать на Reset чтобы залить прошивку в проц через MCS_Bootloader.


можете ткнуть, куда конкретно нужно добавить?

Код:
Do
<************************суда добавить waitms_50????******************
  Bstarted = 0                                              ' we were not started yet
  Csum = 0                                                  'checksum is 0 when we start
  Print Chr(nak);                                           ' firt time send a nack
  Do
<************************или суда добавить waitms_50????******************
    Bstatus = Waitkey()                                     'wait for statuse byte

    Select Case Bstatus
       Case 1:                                              ' start of heading, PC is ready to send
            Incr Bblocklocal                                'increase local block count
            Csum = 1                                        'checksum is 1
            Bblock = Waitkey() : Csum = Csum + Bblock       'get block
            Bcsum1 = Waitkey() : Csum = Csum + Bcsum1       'get checksum first byte
            For J = 1 To 128                                'get 128 bytes
              Buf(j) = Waitkey() : Csum = Csum + Buf(j)
            Next
            Bcsum2 = Waitkey()                              'get second checksum byte
            If Bblocklocal = Bblock Then                    'are the blocks the same?
               If Bcsum2 = Csum Then                        'is the checksum the same?
                  Gosub Writepage                           'yes go write the page
                  Print Chr(ack);                           'acknowledge
               Else                                         'no match so send nak
                  Print Chr(nak);
               End If
            Else
               Print Chr(nak);                              'blocks do not match
            End If
       Case 4:                                              ' end of transmission , file is transmitted
             If Wrd > 0 And Bkind = 0 Then                  'if there was something left in the page
                 Wrd = 0                                    'Z pointer needs wrd to be 0
                 Spmcrval = 5 : Gosub Do_spm                'write page
                 Spmcrval = 17 : Gosub Do_spm               ' re-enable page
             End If
            '  Waitms 100                                   ' OPTIONAL REMARK THIS IF THE DTR SIGNAL ARRIVES TO EARLY
             Print Chr(ack);                                ' send ack and ready

             Portb.3 = 0                                    ' simple indication that we are finished and ok
             Waitms 20
             Goto _reset                                    ' start new program
       Case &H18:                                           ' PC aborts transmission
             Goto _reset                                    ' ready
       Case 123 : Exit Do                                   'was probably still in the buffer
       Case 124 : Exit Do
       Case Else
          Exit Do                                           ' no valid data
    End Select
  Loop
  If Bretries > 0 Then                                      'attempte left?
     Waitms 1000
     Decr Bretries                                          'decrease attempts
  Else
     Goto _reset                                            'reset chip
  End If
Loop

Отредактировано NewUserBascom (2019-01-09 11:30:39)

0

34

Что б не плодить тему
В бутлоадере не силён. Пытаюсь разобраться. Киньте ссылкой, где разжёвана работа бутлоадера на АТМЕГА.
Вообще идея такая. Есть говорилка на 48 меге, которая считывает с Sd карты звук . Управляется она по UART. Есть желание прошивать с неё главный МК. Т.е. на карту записывать прошивку, и с неё, при помощи говорилки прошивать главный МК. Нюанс в том,что работает она на лету, и считывает/воспроизводит блоками 512 байт. Вот думаю, реально ли сделать прошивалку?

0

35

Реально. Бутлоадеру пабарабану откуда брать данные, SPI, I2C, USART или SD.  Подробнее о принципах работы RWW написано в секции Bootloader в датащях от камня. Есть примеры на ассемблере и С+

0

36

emal-05 написал(а):

В самом первом посте про это писал, всё перепробовал, без Reset ничего не получилось.

Программный  Авто_Reset для BootLoadera

0

37

Александр, с какой скоростью работает загрузчик? У меня больше 2400 вываливаются ошибки.

0

38

pchela5 написал(а):

Александр, с какой скоростью работает загрузчик? У меня больше 2400 вываливаются ошибки.


500 000 бод при 16 МГц проверял, работает без проблем и очень быстро.

В основном использую 38400 и 115200

0

39

Если можно, кинь в меня исходником.

0

40

pchela5 написал(а):

Если можно, кинь в меня исходником.


Здесь

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » BootLoader без передёргивания Reset