27.09.2014, 22:13
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Как разместить программу в STM32F4xx начиная с сектора 1
Проблема возникла в связи с необходимостью размещения констант (которые меняются в процессе работы устройства) в программной памяти. В STM32F407 FLASH с адреса 0х8000000. В линкере (например Keil) устанавливаю начало с адреса 0x08004000 (сектор 1). По идее по адресу 0х8000000 должен быть переход на ячейку 0x08004000, и программа должна размещаться с этого адреса. Вроде все просто, но ничего не выходит. Программа на С. Можно использовать для констант последние сектора, но они начиная с сектора 5 по 128Кб и работать с ними невозможно (нужен большой буфер RAM - на 128Кб).
|
|
|
|
27.09.2014, 22:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
В первом секторе вектора прерываний
Редактируй startup_stmXXX.S
|
|
|
|
27.09.2014, 22:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Сообщение от vvv998
|
Можно использовать для констант последние сектора, но они начиная с сектора 5 по 128Кб и работать с ними невозможно (нужен большой буфер RAM - на 128Кб).
|
Это для каких нужд такой буфер в RAM нужен?
|
|
|
|
27.09.2014, 22:44
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Дело в том, что в проекте Keil 5 (взял пример Blink) нету файла startup.
Есть только STM32F40xxx_41xxx_OPT.s в котором не указана точка входа.
|
|
|
|
27.09.2014, 22:46
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Буфер выбирается для чтения содержимого ВСЕГО сектора перед стиранием.
Запись даже одного байта требует стирания всего сектора и его перезаписи.
|
|
|
|
27.09.2014, 22:57
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Файл startup нашел, но точка входа там не указана. А как ее ввести не знаю.
|
|
|
|
27.09.2014, 23:18
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Речь идет о Keil 5 for ARM. В Keil 4 for C51 точка входа нормально указывается в линкере как и должно быть.
|
|
|
|
27.09.2014, 23:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Сообщение от vvv998
|
Буфер выбирается для чтения содержимого ВСЕГО сектора перед стиранием.
Запись даже одного байта требует стирания всего сектора и его перезаписи.
|
Вы уверены в этом? Перезапись. а не запись (чувствуете разницу ?) по одному и тому же адресу требует стирания сектора. Что мешает писать последовательно до конца сектора, затем на следующий сектор, а предыдущий стереть ?
|
|
|
|
28.09.2014, 00:24
|
|
Временная регистрация
Регистрация: 19.08.2014
Сообщений: 60
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
Такова природа записи информации в Flash. Запись производится ТОЛЬКО посекторно. Записать можно ТОЛЬКО в стертый (все ячейки 0хFF) сектор. Если надо записать один байт, то необходимо прочитать содержимое ВСЕГО сектора в буфер, изменить в буфере нужную ячейку, стереть сектор, переписать содержимое буфера в сектор. Иначе НЕЛЬЗЯ.
|
|
|
|
28.09.2014, 00:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Как разместить программу в STM32F4xx начиная с сектора 1
да не может бытьтакого
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:18.
|
|