Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись во флэш при прошивке
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
S1LENCE
Здравствуйте,

подскажите как записать данные во флэш по определенному адресу только во время прошивки контроллера LPC2148 в Keil.
Я так понимаю надо что-то в scatter-файле написать...
Но что?

Спасибо
kovigor
Цитата(S1LENCE @ Jul 6 2011, 11:08) *
Я так понимаю надо что-то в scatter-файле написать...
Но что?


Для таких простых случаев SCATTER не нужен. Адрес можно задать соотв. директивой, например, так:

const unsigned int csr_dword __attribute__((at(0x000001fc))) = 0x87654321; //CRP word ...

А можно выделить отдельную область для блоков данных или кода (Project -> Options for target -> Target -> ...)
S1LENCE
Цитата(kovigor @ Jul 6 2011, 11:33) *
Для таких простых случаев SCATTER не нужен. Адрес можно задать соотв. директивой, например, так:

const unsigned int csr_dword __attribute__((at(0x000001fc))) = 0x87654321; //CRP word ...

А можно выделить отдельную область для блоков данных или кода (Project -> Options for target -> Target -> ...)


У меня эти значения будут изменятся во время работы программы, нужно чтоб новые значения оставались там же
kovigor
Цитата(S1LENCE @ Jul 6 2011, 12:00) *
У меня эти значения будут изменятся во время работы программы, нужно чтоб новые значения оставались там же


Там и останутся. Но за то, где они останутся, отвечаете вы, а не Кейл. Вы же не в ОЗУ пишете, а во Flash. То, что вы описали, потребует реализации IAP. А что и куда запишется в процессе IAP - за это отвечаете только вы ...
S1LENCE
И при рестарте контроллера останнутся значения которые будут записаны через IAP??
Что-то данный синтаксис (csr_dword __attribute__((at(0x000001fc))) = 0x87654321; //CRP word ...) не работает в Keil...
kovigor
Цитата(S1LENCE @ Jul 6 2011, 13:54) *
И при рестарте контроллера останнутся значения которые будут записаны через IAP??
Что-то данный синтаксис (csr_dword __attribute__((at(0x000001fc))) = 0x87654321; //CRP word ...) не работает в Keil...


Да, там и останутся.
Не работать это не может, это взято из готового проекта, компилятор RealView (не CARM !!!). Эта строка предписывает компилятору при формировании образа прошивки для записи его (т.е., образа) программатором положить в образе это число по этому смещению, но никак не записать это число во Flash в процессе выполнения программы. Для выполнения последней задачи привлекается IAP ...
S1LENCE
Цитата(kovigor @ Jul 6 2011, 14:20) *
Да, там и останутся.
Не работать это не может, это взято из готового проекта, компилятор RealView (не CARM !!!). Эта строка предписывает компилятору при формировании образа прошивки для записи его (т.е., образа) программатором положить в образе это число по этому смещению, но никак не записать это число во Flash в процессе выполнения программы. Для выполнения последней задачи привлекается IAP ...


Ааа, теперь все понятно, спасибо большое - это именно то что нужно!
И таки работает, обязательно нужно две скобки а не одну перед at.
kovigor
Цитата(S1LENCE @ Jul 6 2011, 14:36) *
И таки работает, обязательно нужно две скобки а не одну перед at.


Не работать оно ну никак не может ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.