Как разместить программу в STM32F4xx начиная с сектора 1
28.09.2014, 14:15
|
|
|
Прописка
Регистрация: 29.06.2010
Сообщений: 104
Сказал спасибо: 14
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Тебе же человек программу написал! неужели тяжело на практике проверить!
Используй на нужные адреса делов то! и недоумение отпадет в миг.
|
|
|
|
28.09.2014, 14:18
|
|
|
Прописка
Регистрация: 29.06.2010
Сообщений: 104
Сказал спасибо: 14
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Yurkin2014, А зачем каждый раз стирать 128 кило если можно один раз стереть а потом 128 раз писать по 1 кило, смещаясь соответственно!
|
|
|
|
28.09.2014, 14:26
|
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Сообщение от neyvert
|
|
А зачем каждый раз стирать 128 кило
|
Число стираний-записи во флеш ограничено, не более 10тыс. раз в одну и ту же ячейку.
Конечно, запись со сдвигом и стирание сектора только при заполнении доверху - это самый лучший способ. Тут я полностью согласен.
Проблема у ТС была со считыванием всего сектора и нехваткой ОЗУ.
Если константы изменяются редко, типа, раз в день, например при выключении прибора в конце смены, то можно оставить простой вариант. Писать на одно и то же место. Ресурса при такой ежедневной записи должно хватить на 30 лет.
|
|
|
|
28.09.2014, 14:37
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Да так и делаю, но запись сектора в 128Кб занимает много времени и не подходит в некоторых процессах.
|
|
|
|
28.09.2014, 14:39
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Сектор в 16Кб еще проходит.
|
|
|
|
28.09.2014, 15:58
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Мда... Трудно с Вами беседовать. Вы даже не понимаете, что паказан массив rez1, в который считываются данные из записаной флеши.
Дерзайте! А лучше учитесь! Например, почитайте как работают с SSD - там много раз пишут в нее
|
|
|
|
29.09.2014, 10:02
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Возможно я действительно не совсем понятно объяснил проблему, поэтому привожу скриношоты как разместить программу НЕ с адреса 0х0000 (начало Flash), а с другого адреса, например, с 0х0400 в Keil for C51.
То же самое нужно сделать для ST32F4xx , например, разместить программу с сектора 1 (начальный адрес сектора1 - 0x08004000). Дабы не уводить дискуссию в сторону причины рассматривать не будем. У меня это не получается ни в Keil 5.11 for ARM ни в СооСох ни в IAR. С другими не работал.
Последний раз редактировалось vvv998; 29.09.2014 в 10:06.
|
|
|
|
29.09.2014, 10:04
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
А вот скриншоты для программы с адреса 0х0000 (начало Flash) в Keil for C51.
|
|
|
|
29.09.2014, 12:12
|
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Да и еще:
Конечно я, например, в СооСох View-›Configuration[/i] вкладка Link пробовал устанавливать сектор 1 и сектор 2 и т.д.
Но :
- после программирования кода программа не работает;
- отладчик ее тоже не берет (выдает ошибку)
Я знаю, что с сектора 0 (0x08000000) размещается startup и таблица прерываний.
Но программа написана на С. Корректировку startup (адрес перехода на тело программы) и корректировку таблицы прерываний (точки входа) должен делать линкер.
Проблема в том, что и в Keil 5 для ST32 этого тоже зделать не могу (подобно как это делается в Keil C51).
|
|
|
|
29.09.2014, 12:50
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Сообщение от vvv998
|
Да и еще:
- после программирования кода программа не работает;
- отладчик ее тоже не берет (выдает ошибку)
|
Естественно программа работать не будет - по адресу 0x08000000 должен быть расположен загрузчик, который будет запускать вашу программу.
Сообщение от vvv998
|
|
Корректировку startup (адрес перехода на тело программы) и корректировку таблицы прерываний (точки входа) должен делать линкер.
|
Линкера не достаточно. Нужна вторая программа - загрузчик(bootloader).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:01.
|
|