реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Данные в FLASH, Вопрос по Keil
IEC
сообщение Dec 28 2006, 13:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Люди! Хелп!
Раскажите, как выделить кусок памяти в FLASH в С среды Keil под переменные?
В IARе для AVR это выглядело так
int __flash m[200];

А как это делается в арме? cranky.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2006, 13:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



По-идее, должно хватить const int m[200]; - линкер разместит RO-данные там, где надо.

Или определять секции и писать скрипт для линкера.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Dec 28 2006, 13:45
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(aaarrr @ Dec 28 2006, 13:28) *
По-идее, должно хватить const int m[200]; - линкер разместит RO-данные там, где надо.

А компилятор разве потом разрешит менять m[200]???? Если она const
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2006, 13:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(jorikdima @ Dec 28 2006, 13:45) *
А компилятор разве потом разрешит менять m[200]???? Если она const

Нет, разумеется. А как он может модифицировать флеш память, о которой ему ничего не известно?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Dec 28 2006, 13:52
Сообщение #5


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



А вопрос был
Цитата
Раскажите, как выделить кусок памяти в FLASH в С среды Keil под переменные?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2006, 13:58
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(jorikdima @ Dec 28 2006, 13:52) *
А вопрос был
Цитата

Раскажите, как выделить кусок памяти в FLASH в С среды Keil под переменные?


А Вам известно, что переменные бывают константными?
Go to the top of the page
 
+Quote Post
IEC
сообщение Dec 28 2006, 15:05
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Просто хотелось бы выделить несколько страниц памяти, а потом ее изменять. Но что_бы компилятор контролировал наползание кода!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2006, 15:10
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(IEC @ Dec 28 2006, 15:05) *
Просто хотелось бы выделить несколько страниц памяти, а потом ее изменять. Но что_бы компилятор контролировал наползание кода!

Так выделить надо под константы? Или программно менять планируете?
Go to the top of the page
 
+Quote Post
IEC
сообщение Dec 28 2006, 15:28
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Менять! Обязательно менять!
Изменение будет производиться постраничной записью.
Но проблема в том, как компилятору сообщить о занятости куска памяти?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 28 2006, 15:36
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(IEC @ Dec 28 2006, 15:28) *
Но проблема в том, как компилятору сообщить о занятости куска памяти?

Создать свою секцию данных, нужные данные направить туда соответствующей #pragm'ой и написать скрипт для линкера, где указать физическое положение и размер секции.
Go to the top of the page
 
+Quote Post
IEC
сообщение Jan 2 2007, 12:15
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Цитата(aaarrr @ Dec 28 2006, 15:36) *
Цитата(IEC @ Dec 28 2006, 15:28) *

Но проблема в том, как компилятору сообщить о занятости куска памяти?

Создать свою секцию данных, нужные данные направить туда соответствующей #pragm'ой и написать скрипт для линкера, где указать физическое положение и размер секции.


Спасибо! Совет наверное класный! Если можно, пожалуйста, вариант реализации. wub.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 2 2007, 12:46
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(IEC @ Jan 2 2007, 12:15) *
Спасибо! Совет наверное класный! Если можно, пожалуйста, вариант реализации. wub.gif

Для RVCT:

Объявление блока данных:
Код
#pragma arm section rodata = "my_data"
const int m[200] = {0x01, 0x02, 0x03, 0x04};
#pragma arm section rodata


Скрипт линкера:
Код
FLASH 0x00000000 0x00010000
{
    FLASH 0x00000000 0x0000f000
    {
        start.o (startup, +First)
        * (+RO)
    }
    FLASH1 0x0000f000 FIXED 0x00001000
    {
        * (my_data)
    }
    RAM 0x00200000 0x00004000
    {
        * (+RW, +ZI)
    }
}


Данные секции my_data всегда будут размещаться по адресу 0x0000f000.
Go to the top of the page
 
+Quote Post
IEC
сообщение Jan 5 2007, 14:21
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Большое спасибо! Попробую реализовать!
Go to the top of the page
 
+Quote Post
OlegHmt
сообщение Jan 13 2007, 18:06
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 5-12-06
Пользователь №: 23 146



Если можно, подскажите, пожалуйста, как такая же задача должна решаться в Rowley CrossWorks
Go to the top of the page
 
+Quote Post
boez
сообщение Jan 15 2007, 11:36
Сообщение #15


Частый гость
**

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



В кроссворксе гнутый компилятор. У него размещение по секциям делается директивой
__attribute__ ((section("section-name")))
В хелпе правда написано что это годится только для инициализированных переменных, но это вроде бы обходится атрибутом nocommon
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01463 секунд с 7
ELECTRONIX ©2004-2016