|
2 прошивки в памяти, Странное поведение |
|
|
|
Apr 25 2011, 10:59
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 10-01-11
Из: Санкт-Петербург
Пользователь №: 62 125

|
Хочу записать во флешку две прошивки и при необходимости грузиться либо с одной, либо с другой. Первая прошивка пишется с начала флешки. Все нормально работает. Вторую прошивку пишу с адреса 0x8000. с середины флешки. если ее записывать на пустую флешку, все тоже нормально работает. если записать обе прошивки, то не работают. Файл конфиг для IAR
cfgxm64a3_.txt ( 3.36 килобайт )
Кол-во скачиваний: 271Прошивка с 0 адреса
Flash.txt ( 191.32 килобайт )
Кол-во скачиваний: 115Прошивка с 0х8000 адреса
FLASHdef.txt ( 101.42 килобайт )
Кол-во скачиваний: 123Подскажите что я делаю не так?
|
|
|
|
|
 |
Ответов
|
Apr 25 2011, 11:08
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 10-01-11
Из: Санкт-Петербург
Пользователь №: 62 125

|
Цитата(Палыч @ Apr 25 2011, 15:07)  Вы бы сами на файлы погляlели бы: неиспользованная память - заполнена FF А чем ее нужно было заполнять?
|
|
|
|
|
Apr 25 2011, 11:17
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 10-01-11
Из: Санкт-Петербург
Пользователь №: 62 125

|
Цитата(Палыч @ Apr 25 2011, 15:12)  Её, как раз, ничем заполнять не нужно Пересобрал прошивки без заполнителя. Результат тот же. При считывание памяти МК неиспользуемая память все равно заполнена FF
|
|
|
|
|
Apr 25 2011, 11:26
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(qVlad @ Apr 25 2011, 15:17)  При считывание памяти МК неиспользуемая память все равно заполнена FF Ага, значит записываете, всё-така в память программ... FF - это, нормально, стёртая память читается как FF Цитата(qVlad @ Apr 25 2011, 15:17)  Пересобрал прошивки без заполнителя. Результат тот же. А у Вас начало памяти программ заполнено разными данными в обоих файлах!
|
|
|
|
|
Apr 25 2011, 11:31
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 10-01-11
Из: Санкт-Петербург
Пользователь №: 62 125

|
Цитата(Палыч @ Apr 25 2011, 15:26)  А у Вас начало памяти программ заполнено разными данными в обоих файлах! Это меня тоже смущает потому что программы абсолютно одинаковые. В одном случае при сборке в настройках linkera говорю использовать приложенный конфиг. В другой сборке снимаю все галочки, чтобы использовался стандартный конфиг. Допустим начало памяти разное, сначала я записываю прошивку,которая начинается с 0х8000 адреса. потом записываю прошивку которая начинается с 0 адреса, по идеи хотя бы та что с нулевого должна же грузится. А у меня контроллер не подается признаков того что прошивка начинает работу
|
|
|
|
|
Apr 25 2011, 11:40
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(qVlad @ Apr 25 2011, 15:31)  Допустим начало памяти разное, сначала я записываю прошивку,которая начинается с 0х8000 адреса. потом записываю прошивку которая начинается с 0 адреса, по идеи хотя бы та что с нулевого должна же грузится. А у меня контроллер не подается признаков того что прошивка начинает работу Каждый файл начинается с расположенной по адресу 0 команды перехода на начало программы: 0C94624B или 0C949551. Первые два байта - одинаковые, а вот адреса переходов - разные. при программировании в предварительно стёртой памяти (содержит FF) "прописываются" нолики, при записи второго файла - эти ячейки уже не будут содержать FF, но "добавятся" нолики из другого файла. И, вообще, - не понятно: как вы собираетесь запускать программу из второй половины памяти? Вектора у Вас разделятся между программами как будут?
|
|
|
|
|
Apr 25 2011, 11:45
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 10-01-11
Из: Санкт-Петербург
Пользователь №: 62 125

|
Цитата(Палыч @ Apr 25 2011, 15:40)  Каждый файл начинается с расположенной по адресу 0 команды перехода на начало программы: 0C94624B или 0C949551. Первые два байта - одинаковые, а вот адреса переходов - разные. при программировании в предварительно стёртой памяти (содержит FF) "прописываются" нолики, при записи второго файла - эти ячейки уже не будут содержать FF, но "добавятся" нолики из другого файла. И, вообще, - не понятно: как вы собираетесь запускать программу из второй половины памяти? Вектора у Вас разделятся между программыми как будут? Это все равно не объясняет проблемы что не грузиться даже прошивка расположенная в начале памяти. Ведь получается все данные для нее верные. Или я что-то не понимаю? Помимо двух прошивок еще есть бутлоадер, который собственно и будет указывать с какого адреса стартовать программе. Сейчас он не используется.
|
|
|
|
|
Apr 25 2011, 12:04
|

Гуру
     
Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954

|
Цитата(qVlad @ Apr 25 2011, 15:45)  Или я что-то не понимаю? Ещё раз: при программировании - "прошиваются" нолики. У Вас в первых четырех байтах одной прошивки 0C94624B, второй - 0C949551... После прошивки памяти этими двумя прошивками: первые четыре байта будет содержать 0С940041 (нолики из обоих файлов - сложатся, добавятся к содержимому ячеек памяти)... Цитата(qVlad @ Apr 25 2011, 15:45)  Помимо двух прошивок еще есть бутлоадер, который собственно и будет указывать с какого адреса стартовать программе. Сейчас он не используется. А откуда BootLoader узнает стартовые адреса ваших программ. При "нормальной"(раздельной) загрузке Ваших файлов вектор 0 содержит команду перехода на "стартовый" адрес (у Вас там ещё какой-то вектор используется, и, может, - не один). Вектора всегда (за исключением BootLoader'а) используют фиксированные адреса для векторов прерываний. Они то и портятся при "заливке" двух прошивок одновременно... То, что под вторую программу Вы отвели вторую половину памяти, не означает, что "стартовый" адрес второй программы = 8000. С этого адреса распологаются команды, но, команда, которая должна выполнится первой - совсем не с этого адреса!
|
|
|
|
|
Apr 25 2011, 12:15
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 10-01-11
Из: Санкт-Петербург
Пользователь №: 62 125

|
Цитата(Палыч @ Apr 25 2011, 16:04)  Ещё раз: при программировании - "прошиваются" нолики. У Вас в первых четырех байтах одной прошивки 0C94624B, второй - 0C949551... После прошивки памяти этими двумя прошивками: первые четыре байта будет содержать 0С940041 (нолики из обоих файлов - сложатся, добавятся к содержимому ячеек памяти)... А откуда BootLoader узнает стартовые адреса ваших программ. При "нормальной"(раздельной) загрузке Ваших файлов вектор 0 содержит команду перехода на "стартовый" адрес (у Вас там ещё какой-то вектор используется, и, может, - не один). Вектора всегда (за исключением BootLoader'а) используют фиксированные адреса для векторов прерываний. Они то и портятся при "заливке" двух прошивок одновременно... Спасибо. С этим теперь стало понятно. Цитата(Палыч @ Apr 25 2011, 16:04)  То, что под вторую программу Вы отвели вторую половину памяти, не означает, что "стартовый" адрес второй программы = 8000. С этого адреса распологаются команды, но, команда, которая должна выполнится первой - совсем не с этого адреса! А как же мне тогда быть. Нельзя ли команду перехода перенести из начала памяти в заданную область опять же в 8000 чтобы при переходе туда можно было загрузить вторую программу. Или тут есть какое-то иное, более правильное решение?
|
|
|
|
Сообщений в этой теме
qVlad 2 прошивки в памяти Apr 25 2011, 10:59          Палыч Цитата(qVlad @ Apr 25 2011, 16:15) Или ту... Apr 25 2011, 12:32           qVlad Цитата(Палыч @ Apr 25 2011, 16:32) 1. Одн... Apr 25 2011, 12:41            Палыч Цитата(qVlad @ Apr 25 2011, 16:41) Такой ... Apr 25 2011, 12:52             qVlad Файлы Flash.txt и FlashDef.txt содержат код одной ... Apr 25 2011, 12:57            Палыч Цитата(qVlad @ Apr 25 2011, 16:41) А вот ... Apr 25 2011, 13:02             qVlad Цитата(Палыч @ Apr 25 2011, 17:02) ... Apr 25 2011, 13:15              Палыч Цитата(qVlad @ Apr 25 2011, 17:15) Неужел... Apr 25 2011, 14:29               qVlad Цитата(Палыч @ Apr 25 2011, 18:29) Э-э-э-... Apr 25 2011, 14:45                Палыч Цитата(qVlad @ Apr 25 2011, 18:45) ... Пр... Apr 25 2011, 15:12                 qVlad Цитата(Палыч @ Apr 25 2011, 19:12) Другим... Apr 25 2011, 15:19                  Палыч Цитата(qVlad @ Apr 25 2011, 19:19) Это я ... Apr 25 2011, 16:01 Schulz_K Насколько я понимаю - тут должны быть два разных п... Apr 26 2011, 09:28 defunct ЦитатаНо это не гарантирует 100% работу.
это призн... Apr 29 2011, 16:09
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|