Например TDA7294

Форум РадиоКот • Просмотр темы - Как пользоваться переменными в ld-cкрипте?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн фев 23, 2026 05:06:48

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 26 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Как пользоваться переменными в ld-cкрипте?
СообщениеДобавлено: Чт окт 28, 2021 17:06:54 
Мудрый кот

Карма: -8
Рейтинг сообщений: 196
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1704
Рейтинг сообщения: 0
UM10360, страница 620 мне говорит, что на LPC17xx всё, о чём я говорил выше применительно к СТМ32, точно также работает для LPC17хх.
Значит вам надо ещё раз перечитать этот мануал.
Программирование флешь в LPC осуществляется через IAP-API. И ни какое автоматическое перепрограммирование флеша, размещением там переменных - не будет работать.

Добавлено after 2 minutes 33 seconds:
А вот как в эти сегменты размещаются данные:
Спойлер
Код:
...

const uint8 __PLC_params[ SIZE_BYTE_PARAMS ] \
    __attribute__ ( (section( ".plc_params" ), used ) ) =
{
    MAX_STEP / 1000, 0x00,  // 00 0x0000 -- SIZE IN STEP 16000
    0x00, 0x00,             // 02        --
    0x00, 0x00,             // 04        --
    0x00, 0x00,             // 06        --

    0x20, 0x20,             // 08 0x0008 -- PASSWORD 0
    0x20, 0x20,             // 10        -- PASSWORD 1
    0x20, 0x20,             // 12        -- PASSWORD 2
    0x20, 0x20,             // 14        -- PASSWORD 3

    'S', 'K',               // 16 0x0010 -- PLC NAME 0
    '2', 'N',               // 18        -- PLC NAME 1
    '-', 'F',               // 20        -- PLC NAME 2
    '4', '1',               // 22        -- PLC NAME 3
    '1', 'R',               // 24        -- PLC NAME 4
    'E', '-',               // 26        -- PLC NAME 5
    'B', 'o',               // 28        -- PLC NAME 6
    'k', 'r',               // 30        -- PLC NAME 7
    'a',  0,                // 32        -- PLC NAME 8
     0,   0,                // 34        -- PLC NAME 9
     0,   0,                // 36        -- PLC NAME A
     0,   0,                // 38        -- PLC NAME B
     0,   0,                // 40        -- PLC NAME C
     0,   0,                // 42        -- PLC NAME D
     0,   0,                // 44        -- PLC NAME E
     0,   0,                // 46        -- PLC NAME F
    ...
};
const uint16 __PLC_prog[ MAX_STEP ] \
    __attribute__ ( (section( ".plc_prog" ), used ) ) =
{
    0x2800, 0xC801, 0x001C, // -|M0|-(M1)-
    0xFFFF,                 // ----[FEND]-
    0x000F                  // -----[END]-
};

const uint16 __PLC_D8XXX[ 256 ] \
    __attribute__ ( (section( ".plc_D8xxx" ), used ) ) =
{
    0x00C8,             // D8000 - WDT 200ms
   ...
};


const uint16 __PLC_storredRegisters[ STORRED_REGS_NUM ] \
    __attribute__ ( (section( ".plc_data_regs" ), used ) ) =
{
   0
};

...

И где же там хоть одна переменная? Вы разницу между переменной и константой понимаете???
Знаете что такое "переменная"?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как пользоваться переменными в ld-cкрипте?
СообщениеДобавлено: Чт окт 28, 2021 17:58:24 
Сверлит текстолит когтями

Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1281
Рейтинг сообщения: 0
С флэш во всех МК работают по одной и той же схеме: разблокировали, стёрли сегмент/страницу, записали, заблокировали. Тем более оба на ARM.

Вот передо мной лежат два ПЛК, мой на STM32F411 и китайский на LPC1768. Я пишу программы и загружаю их во флэш МК. И запускаю.

jcxz писал(а):
Знаете что такое "переменная"?

Я- да. Если я могу в процессе работы программы изменить содержимое какой-либо области памяти, то эта область, естественно, называться "переменной".
Видимо, jcxz смутило слово "const" из арсенала С++. Его я использовал, чтобы компилятор блокировал явную запись в эти области. Даже если я уберу "const", линковщик всё равно уложит эти переменные во флэш и выдаст мне адреса, по которым он их разместил, чтобы я мог в процессе работы своей программы писать в эти области, предварительно сняв с них блокировку и очистив страницу, в которой эти переменные размещены.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как пользоваться переменными в ld-cкрипте?
СообщениеДобавлено: Чт окт 28, 2021 22:31:02 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Переменные константы флеш ld-скрипты, все собрали.

Создаете структуру, в ней переменные, выравнивание по границе 1024, размер куска для стирания,
эти 1024 байта будут зарезервированы под структуру, и линковщик не помещает туда программный код, уж всяко проверил.
Кроме всего прочего, начало этой таблицы всегда с начало страницы.
Адрес первого элемента структуры и будет, начало страницы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как пользоваться переменными в ld-cкрипте?
СообщениеДобавлено: Чт окт 28, 2021 23:19:30 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Цитата:
выравнивание по границе 1024

У структуры-то? Жесть какая! И куча флеша коту под хвост. И МК сдохнет намного быстрей.
Советую-таки почитать, как правильно организовывать эмуляцию EEPROM во FLASH!
Записываешь первую структуру. Дальше, если надо поменять настройки, по следующему адресу пишешь вторую. И так далее, пока вся флеш-память не кончится. Как кончилась, стираешь все нафиг и пишешь сначала. Получается очень приличная экономия по сравнению с "записали 10 раз структуру, флешь кончилась, стерли и пишем заново", а размер структуры — байт 40!..
Для того, чтобы при старте МК не тупить несколько секунд в линейном поиске, нужно использовать поиск бинарный. Все легко и просто.
А для того, чтобы знать, откуда ж начинается "хранилище", и нужна секция, выровненная на размер блока сразу после прошивки.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Как пользоваться переменными в ld-cкрипте?
СообщениеДобавлено: Пт окт 29, 2021 08:38:20 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Eddy_Em писал(а):
И так далее, пока вся флеш-память не кончится.
Это если у тебя куча памяти, а если нет, а если ты ограничен, а если у тебя всего 16к, и программный код занимает 12-14к, тогда как?
Eddy_Em писал(а):
а размер структуры — байт 40!
Вот если каждый раз сдвигать в пределах одной страницы памяти эти 40 байт, тогда да, я с тобой соглашусь.
Я зря наверное написал "переменная", надо было "const".

СпойлерПомню одно оборудование, не важно какое, так там ресурс флеш микросхемы был 10к циклов, в инструкции к оборудованию это было написано, так мы тыкали тыкали, потом в город отправили, тот тыкал тыкал, потом из города приехало опять к нам, и опять мы тыкали тыкали, а оно, оборудование, все работало и работало, я имею ввиду сохраняла настройки.

Так что для сохранения настроек ресурса в 10к хватит.
А если тебя это смущает, то можно явно указать адрес последней страницы флеш.

Кстати Eddy_Em, твой алгоритм uart-dma-tx на f0 плохо работает, капризничает, я тебе потом оставлю это в коде, на доработку.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как пользоваться переменными в ld-cкрипте?
СообщениеДобавлено: Пт окт 29, 2021 08:47:24 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
На каких скоростях плохо работает? Тестировал до мегабода, проблем не было.
Да и фотометр с двумя платами на F030 уже который год исправно работает... А на всех других железках у меня подключение по USB или CAN. 232 или 485 уже давно не использовал.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 26 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 173


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y