|
|
  |
vector table address, не могу изменить в STM32F405 + Keil |
|
|
|
Jun 18 2012, 08:22
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 29-12-05
Из: Екатеринбург
Пользователь №: 12 692

|
Может кто знает, никак не могу найти отгадку. Надо освободить нулевой сектор для записи данных, поэтому указываю линкеру, что flash начинается с первого сектора, соответственно меняю размер: в диалоге Target изначально было IROM1: 0x8000000 (start) и 0x100000 (size) делаю IROM1: 0x8004000 (start) и 0xFC000 (size) линкер вроде слушается, в map-е видно это, RESET находится по адресу 0x08004000, но после прошивки камень прыгает на адрес 0x8000000...
Сообщение отредактировал zhek - Jun 18 2012, 08:22
|
|
|
|
|
Jun 18 2012, 09:04
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 29-12-05
Из: Екатеринбург
Пользователь №: 12 692

|
Цитата vector table смотрели что там? Эх, если бы знать, где смотреть)
|
|
|
|
|
Jun 18 2012, 10:51
|
Участник

Группа: Участник
Сообщений: 42
Регистрация: 29-12-05
Из: Екатеринбург
Пользователь №: 12 692

|
Спасибо scifi за ответ, пока решил проблему извращённо: забрал последний сектор. Нездоровая ситуация - для хранения 40 байт резервировать 128 кБайт, зато всё работает  А flash и наполовину ещё не потрачена. Со временем попытаюсь забрать первый сектор, но чувствую, это будет сложнее.
|
|
|
|
|
Jun 18 2012, 11:05
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(zhek @ Jun 18 2012, 14:51)  Спасибо scifi за ответ, пока решил проблему извращённо: забрал последний сектор. Нездоровая ситуация - для хранения 40 байт резервировать 128 кБайт, зато всё работает  Вместо сектора 0 можно использовать секторы 1, 2, 3: они тоже имеют размер 16 кБайт (кстати, стираются быстрее, чем 128 кБайт). Написав свой scatter-файл, можно заставить линкер размещать код в секторах 0, 2, 3 и т.д. Цитата(zhek @ Jun 18 2012, 14:51)  А flash и наполовину ещё не потрачена. Со временем попытаюсь забрать первый сектор, но чувствую, это будет сложнее. Почти нереально. Если только сможете гарантировать, что первые 8 байт всегда будут содержать то, что нужно для запуска программы. Если предусматривается стирание сектора, то гарантировать это сложно: если стирание будет прервано пропаданием питания, то устройство перестанет запускаться.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|