|
|
  |
Bootloader или загрузчик, расскажите по подробней... |
|
|
|
May 8 2009, 07:34
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Anatrulij @ May 7 2009, 14:38)  я как раз не знаю как это реализовать Посмотрите, как это реализовывали до вас. Вот, например, AVR231:AES Bootloader. Да, он для совершенно другого процессора, но описание достаточно подробное, а в С-коде разобраться нетрудно.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 12 2009, 07:32
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Был отвлечен другим делом, теперь можно вернуться к загузчику. Цитата(Сергей Борщ @ May 8 2009, 10:34)  Посмотрите, как это реализовывали до вас. Вот, например, AVR231:AES Bootloader. Да, он для совершенно другого процессора, но описание достаточно подробное, а в С-коде разобраться нетрудно. Спасибо за ссылку. Посмотрел. Логику бутлоадера я понял, теперь дело в реализации, но еще не до конца понял как передается управление на основную(прошитую) программу
|
|
|
|
|
Jun 12 2009, 08:35
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
В IAP указано что можно писать до 4kB, а как быть с секторами которые "важут" 32kB?
|
|
|
|
|
Jun 12 2009, 11:08
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Цитата(SasaVitebsk @ Jun 12 2009, 13:54)  Не совсем понятно о чём вы. Если про запись блоками по 32кб, то набираете эти 32к мелкими блоками и записываете. Извените, если не правельно задал вопрос - переформирую его. в команде записи во флеш указываешь в какой сектор и сколько писать, так как размер 10 - 21 секторов 31кБ, а в команде можно указать не более 4 кБ, как мне записать остальные данные в этот сектор.
Сообщение отредактировал Anatrulij - Jun 12 2009, 11:09
|
|
|
|
|
Jun 13 2009, 11:26
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Цитата(HARMHARM @ Jun 13 2009, 09:08)  Сектор надо стереть (очищается целиком), да и вообще размер сектора - это к стиранию относится. Записывать любыми кусками, но каждый кусок не более одного раза. То есть запишете 8 раз блок по 4кб. Если я правельно понял - то получается следующее: 1. стерли 10-й сектор 2. при записи указали 10 сектор и записать 256 байт 3.если мы сново укажим 10 сектор для записи, то сектор начьнет записываться начиная с 257-го байта????
Сообщение отредактировал Anatrulij - Jun 13 2009, 11:29
|
|
|
|
|
Jun 13 2009, 12:08
|

читатель даташитов
   
Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999

|
Цитата(Anatrulij @ Jun 13 2009, 14:26)  Если я правельно понял - то получается следующее: 1. стерли 10-й сектор 2. при записи указали 10 сектор и записать 256 байт 3.если мы сново укажим 10 сектор для записи, то сектор начьнет записываться начиная с 257-го байта???? Нет, нет. Читайте же документацию! Секторами происходит только стирание! Параметр команды 51: Цитата Destination flash address where data bytes are to be written. This address should be a 256 byte boundary.
|
|
|
|
|
Jun 13 2009, 13:28
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Цитата(HARMHARM @ Jun 13 2009, 15:08)  Нет, нет. Читайте же документацию! Секторами происходит только стирание! Параметр команды 51: Тоесть, можно свободно указывать не сектор, а адрес, но адрес должен быть кратным 256??? З.Ы. Блин, сижу теперь и думаю: "кто меня на вел на мысль, что записывать нужно только секторами  "
Сообщение отредактировал Anatrulij - Jun 13 2009, 13:30
|
|
|
|
|
Jun 17 2009, 07:42
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Во флеш хочу писать блоками по 4кБ, для этого мне нужно сначала данные писать в RAM. Здесь было сказано, что "в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение" - zltigo. Еще я хотел создать массив на такой же размер(буффер), а потом скидывать в RAM и использовать команду Copy RAM to Flash, но массив тоже хранится в ОЗУ. Они не затрут друг-друга. Как мне быть в этой ситуации?
Сообщение отредактировал Anatrulij - Jun 17 2009, 07:56
|
|
|
|
|
Jun 17 2009, 08:37
|

читатель даташитов
   
Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999

|
Цитата(Anatrulij @ Jun 17 2009, 10:42)  Во флеш хочу писать блоками по 4кБ, для этого мне нужно сначала данные писать в RAM. Здесь было сказано, что "в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение" - zltigo. ИМХО Zltigo имел в виду, что нужно пользоваться типами, а не лезть в память по адресам. Это к Вашей программе не отностится. Надеюсь. Цитата Еще я хотел создать массив на такой же размер(буффер), а потом скидывать в RAM и использовать команду Copy RAM to Flash, но массив тоже хранится в ОЗУ. Они не затрут друг-друга. Именно так - создаёте массив на 4 КБ с выравниванием 4, потом делаете Copy RAM to Flash.
|
|
|
|
|
Jun 17 2009, 08:40
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Цитата(HARMHARM @ Jun 17 2009, 11:37)  Именно так - создаёте массив на 4 КБ с выравниванием 4, потом делаете Copy RAM to Flash. Что значит выравнивание 4?
|
|
|
|
|
Jun 17 2009, 14:50
|

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

|
Цитата(Anatrulij @ Jun 17 2009, 10:42)  Как мне быть в этой ситуации? Не писать по конкретным адресам  . На все есть переменные, массивы, менеджеры памяти, сегменты линковочные,... Они и только должны знать о конкретных адресах ЗАПРОШЕННОЙ Вами памяти. Вы пользуетесь только именами обьектов. Опишите, спросите, получите, пользуйтесь. Все. Цитата(Anatrulij @ Jun 17 2009, 11:40)  Что значит выравнивание 4? Скорее всего для Вас пока ничего - "само" получится.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 17 2009, 19:01
|
Участник

Группа: Новичок
Сообщений: 64
Регистрация: 7-11-08
Пользователь №: 41 437

|
Цитата(zltigo @ Jun 17 2009, 17:50)  Не писать по конкретным адресам  . Я бы с радостью  , но при работе с флеш этого не избежать. Сначала я данные пишу в RAM по конкретному адресу, а потом этот адрес скармливаю команде 51. Так что, затру ли я свой 4кБ-вый массив данными которые буду писать в RAM для оправки во флеш???
Сообщение отредактировал Anatrulij - Jun 17 2009, 19:10
|
|
|
|
|
Jun 17 2009, 21:22
|

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

|
Цитата(Anatrulij @ Jun 17 2009, 22:01)  Я бы с радостью  , но при работе с флеш этого не избежать. Работа с флешью или не с чем-то другим ну никак не относится к делу. Цитата Сначала я данные пишу в RAM Да Цитата по конкретному адресу, Зачем? Чем '0x12345678' привлекательнее 'buffer' Цитата а потом этот адрес скармливаю команде 51. Без проблем. Цитата Так что, затру ли я свой 4кБ-вый массив данными которые буду писать в RAM для оправки во флеш???  Если я брошу куда-нибудь кирпич, то я чего-нибудь сломаю???
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|