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

 
 
6 страниц V  « < 2 3 4 5 6 >  
Reply to this topicStart new topic
> Bootloader или загрузчик, расскажите по подробней...
Сергей Борщ
сообщение May 8 2009, 07:34
Сообщение #46


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 12 2009, 07:32
Сообщение #47


Участник
*

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



Был отвлечен другим делом, теперь можно вернуться к загузчику.

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


Спасибо за ссылку. Посмотрел.

Логику бутлоадера я понял, теперь дело в реализации, но еще не до конца понял как передается управление на основную(прошитую) программу
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 12 2009, 08:35
Сообщение #48


Участник
*

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



В IAP указано что можно писать до 4kB, а как быть с секторами которые "важут" 32kB?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jun 12 2009, 10:54
Сообщение #49


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Anatrulij @ Jun 12 2009, 11:35) *
В IAP указано что можно писать до 4kB, а как быть с секторами которые "важут" 32kB?

Не совсем понятно о чём вы. Если про запись блоками по 32кб, то набираете эти 32к мелкими блоками и записываете.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 12 2009, 11:08
Сообщение #50


Участник
*

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



Цитата(SasaVitebsk @ Jun 12 2009, 13:54) *
Не совсем понятно о чём вы. Если про запись блоками по 32кб, то набираете эти 32к мелкими блоками и записываете.


Извените, если не правельно задал вопрос - переформирую его.

в команде записи во флеш указываешь в какой сектор и сколько писать, так как размер 10 - 21 секторов 31кБ, а в команде можно указать не более 4 кБ, как мне записать остальные данные в этот сектор.

Сообщение отредактировал Anatrulij - Jun 12 2009, 11:09
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Jun 13 2009, 06:08
Сообщение #51


читатель даташитов
****

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



Цитата(Anatrulij @ Jun 12 2009, 14:08) *
Извените, если не правельно задал вопрос - переформирую его.

в команде записи во флеш указываешь в какой сектор и сколько писать, так как размер 10 - 21 секторов 31кБ, а в команде можно указать не более 4 кБ, как мне записать остальные данные в этот сектор.

Сектор надо стереть (очищается целиком), да и вообще размер сектора - это к стиранию относится. Записывать любыми кусками, но каждый кусок не более одного раза. То есть запишете 8 раз блок по 4кб.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 13 2009, 11:26
Сообщение #52


Участник
*

Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Jun 13 2009, 12:08
Сообщение #53


читатель даташитов
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 13 2009, 13:28
Сообщение #54


Участник
*

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



Цитата(HARMHARM @ Jun 13 2009, 15:08) *
Нет, нет. Читайте же документацию! Секторами происходит только стирание!
Параметр команды 51:


Тоесть, можно свободно указывать не сектор, а адрес, но адрес должен быть кратным 256???

З.Ы. Блин, сижу теперь и думаю: "кто меня на вел на мысль, что записывать нужно только секторами cranky.gif "

Сообщение отредактировал Anatrulij - Jun 13 2009, 13:30
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 17 2009, 07:42
Сообщение #55


Участник
*

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



Во флеш хочу писать блоками по 4кБ, для этого мне нужно сначала данные писать в RAM. Здесь было сказано, что "в 99,9999% запись по конкретным адресам RAM совершенно неразумное решение" - zltigo.

Еще я хотел создать массив на такой же размер(буффер), а потом скидывать в RAM и использовать команду Copy RAM to Flash, но массив тоже хранится в ОЗУ. Они не затрут друг-друга.

Как мне быть в этой ситуации?

Сообщение отредактировал Anatrulij - Jun 17 2009, 07:56
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Jun 17 2009, 08:37
Сообщение #56


читатель даташитов
****

Группа: Свой
Сообщений: 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.
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 17 2009, 08:40
Сообщение #57


Участник
*

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



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


Что значит выравнивание 4?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2009, 14:50
Сообщение #58


Гуру
******

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



Цитата(Anatrulij @ Jun 17 2009, 10:42) *
Как мне быть в этой ситуации?

Не писать по конкретным адресам smile.gif. На все есть переменные, массивы, менеджеры памяти, сегменты линковочные,... Они и только должны знать о конкретных адресах ЗАПРОШЕННОЙ Вами памяти. Вы пользуетесь только именами обьектов. Опишите, спросите, получите, пользуйтесь. Все.


Цитата(Anatrulij @ Jun 17 2009, 11:40) *
Что значит выравнивание 4?

Скорее всего для Вас пока ничего - "само" получится.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Anatrulij
сообщение Jun 17 2009, 19:01
Сообщение #59


Участник
*

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



Цитата(zltigo @ Jun 17 2009, 17:50) *
Не писать по конкретным адресам smile.gif.

Я бы с радостью smile.gif, но при работе с флеш этого не избежать. Сначала я данные пишу в RAM по конкретному адресу, а потом этот адрес скармливаю команде 51.

Так что, затру ли я свой 4кБ-вый массив данными которые буду писать в RAM для оправки во флеш???

Сообщение отредактировал Anatrulij - Jun 17 2009, 19:10
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2009, 21:22
Сообщение #60


Гуру
******

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



Цитата(Anatrulij @ Jun 17 2009, 22:01) *
Я бы с радостью smile.gif, но при работе с флеш этого не избежать.

Работа с флешью или не с чем-то другим ну никак не относится к делу.
Цитата
Сначала я данные пишу в RAM

Да
Цитата
по конкретному адресу,

Зачем? Чем '0x12345678' привлекательнее 'buffer'
Цитата
а потом этот адрес скармливаю команде 51.

Без проблем.
Цитата
Так что, затру ли я свой 4кБ-вый массив данными которые буду писать в RAM для оправки во флеш???

smile.gif Если я брошу куда-нибудь кирпич, то я чего-нибудь сломаю???


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

6 страниц V  « < 2 3 4 5 6 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:14
Рейтинг@Mail.ru


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