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

 
 
> Данные в 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
 
Start new topic
Ответов
IEC
сообщение Dec 28 2006, 15:28
Сообщение #2


Местный
***

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



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


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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   Данные в FLASH   Dec 28 2006, 13:03
- - aaarrr   По-идее, должно хватить const int m[200]; - линкер...   Dec 28 2006, 13:28
- - jorikdima   Цитата(aaarrr @ Dec 28 2006, 13:28) По-ид...   Dec 28 2006, 13:45
|- - aaarrr   Цитата(jorikdima @ Dec 28 2006, 13:45) А ...   Dec 28 2006, 13:49
- - jorikdima   А вопрос был ЦитатаРаскажите, как выделить кусок п...   Dec 28 2006, 13:52
|- - aaarrr   Цитата(jorikdima @ Dec 28 2006, 13:52) А ...   Dec 28 2006, 13:58
- - IEC   Просто хотелось бы выделить несколько страниц памя...   Dec 28 2006, 15:05
|- - aaarrr   Цитата(IEC @ Dec 28 2006, 15:05) Просто х...   Dec 28 2006, 15:10
- - IEC   Большое спасибо! Попробую реализовать!   Jan 5 2007, 14:21
- - OlegHmt   Если можно, подскажите, пожалуйста, как такая же з...   Jan 13 2007, 18:06
- - boez   В кроссворксе гнутый компилятор. У него размещение...   Jan 15 2007, 11:36
- - boez   Да, а добавить секцию в кроссворксе оказывается со...   Jan 15 2007, 12:56
- - OlegHmt   На выходных я более-менее разобрался и запустил ко...   Jan 15 2007, 14:29


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:37
Рейтинг@Mail.ru


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