UM10360, страница 620 мне говорит, что на LPC17xx всё, о чём я говорил выше применительно к СТМ32, точно также работает для LPC17хх.
Значит вам надо ещё раз перечитать этот мануал. Программирование флешь в LPC осуществляется через IAP-API. И ни какое автоматическое перепрограммирование флеша, размещением там переменных - не будет работать.
С флэш во всех МК работают по одной и той же схеме: разблокировали, стёрли сегмент/страницу, записали, заблокировали. Тем более оба на ARM.
Вот передо мной лежат два ПЛК, мой на STM32F411 и китайский на LPC1768. Я пишу программы и загружаю их во флэш МК. И запускаю.
jcxz писал(а):
Знаете что такое "переменная"?
Я- да. Если я могу в процессе работы программы изменить содержимое какой-либо области памяти, то эта область, естественно, называться "переменной". Видимо, jcxz смутило слово "const" из арсенала С++. Его я использовал, чтобы компилятор блокировал явную запись в эти области. Даже если я уберу "const", линковщик всё равно уложит эти переменные во флэш и выдаст мне адреса, по которым он их разместил, чтобы я мог в процессе работы своей программы писать в эти области, предварительно сняв с них блокировку и очистив страницу, в которой эти переменные размещены.
Переменные константы флеш ld-скрипты, все собрали.
Создаете структуру, в ней переменные, выравнивание по границе 1024, размер куска для стирания, эти 1024 байта будут зарезервированы под структуру, и линковщик не помещает туда программный код, уж всяко проверил. Кроме всего прочего, начало этой таблицы всегда с начало страницы. Адрес первого элемента структуры и будет, начало страницы.
У структуры-то? Жесть какая! И куча флеша коту под хвост. И МК сдохнет намного быстрей. Советую-таки почитать, как правильно организовывать эмуляцию EEPROM во FLASH! Записываешь первую структуру. Дальше, если надо поменять настройки, по следующему адресу пишешь вторую. И так далее, пока вся флеш-память не кончится. Как кончилась, стираешь все нафиг и пишешь сначала. Получается очень приличная экономия по сравнению с "записали 10 раз структуру, флешь кончилась, стерли и пишем заново", а размер структуры — байт 40!.. Для того, чтобы при старте МК не тупить несколько секунд в линейном поиске, нужно использовать поиск бинарный. Все легко и просто. А для того, чтобы знать, откуда ж начинается "хранилище", и нужна секция, выровненная на размер блока сразу после прошивки.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Это если у тебя куча памяти, а если нет, а если ты ограничен, а если у тебя всего 16к, и программный код занимает 12-14к, тогда как?
Eddy_Em писал(а):
а размер структуры — байт 40!
Вот если каждый раз сдвигать в пределах одной страницы памяти эти 40 байт, тогда да, я с тобой соглашусь. Я зря наверное написал "переменная", надо было "const".
СпойлерПомню одно оборудование, не важно какое, так там ресурс флеш микросхемы был 10к циклов, в инструкции к оборудованию это было написано, так мы тыкали тыкали, потом в город отправили, тот тыкал тыкал, потом из города приехало опять к нам, и опять мы тыкали тыкали, а оно, оборудование, все работало и работало, я имею ввиду сохраняла настройки.
Так что для сохранения настроек ресурса в 10к хватит.А если тебя это смущает, то можно явно указать адрес последней страницы флеш.
Кстати Eddy_Em, твой алгоритм uart-dma-tx на f0 плохо работает, капризничает, я тебе потом оставлю это в коде, на доработку.
На каких скоростях плохо работает? Тестировал до мегабода, проблем не было. Да и фотометр с двумя платами на F030 уже который год исправно работает... А на всех других железках у меня подключение по USB или CAN. 232 или 485 уже давно не использовал.
_________________ Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 173
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения