Перейти к содержанию
    

Goodvin26

Участник
  • Постов

    12
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. Здравствуйте, уважаемые. Пишу на С++ в IAR. Не могу скомпилировать следующий код: class ex; typedef void (ex::*Tr)(void); class ex { public: Tr fptr; ex(); void func(void); }; ex::ex() { fptr=&ex::func; } void ex::func(void) { } void main() { ex A; (A.*func)(); } Компилятор выдает ошибку: Error[Pe020]: identifier "func" is undefined. Не могу понять в чем дело. Порылся по книгам, форуму и инету - везде именно так и говорят делать, но увы. Если закомментировать последнюю строку, то компиляция проходит и программа работает. Такое ощущение, что компилятор не видит func, хотя указанно, что этот указатель принадлежит классу ex. Подскажите, где я мог сделать ошибку? Заранее спасибо за помощь.
  2. А зачем мне ставить демультиплексор? У меня на FSMC будет висеть только одна SRAM'оподобная FRAM память. Вопрос в том, насколько реально прикрутить ее к 100-пиновому МК. Там FSMC можно включить в режиме NOR multiplexed, тогда, как Вы и писали, будут мультиплексироваться DA[15:0]. Вот я переживаю о том, как FSMC отработает и понравиться ли это памяти. По хорошему, для этого нужно провести эксперимент, но времени маловато. Конечно, больше склоняюсь к более надежному варианту, но красиво тоже хочется сделать.
  3. Спасибо, Шаманъ. Я об этом как раз и размышлял. Думаю, что придется организовывать что-то типа контроллера доступа к внешней памяти, т.к. у меня есть данные, которые должны автоматом лететь в нее и будет простое обращение к памяти. Первые данные - периодично появляются и довольно часто остальные реже. Вот планирую освобождать FSMC к моменту появления первых данных, а со вторыми работать в промежутках. Скажите, а в других сериях STM можно работать в режиме "multimaster FSMC access"? К стати, откуда эту фразу взяли, в DataSheet'е ее не заметил? Сейчас мучаюсь с тем, что не могу выбрать какой МК использовать. В МК с 144 пинами полноценный FSMC, а в 100 пиновом нет. Уважаемые люди говорят, что дружили 100 пиновый МК с SRAM памятью (у меня FM28V100), но я сомневаюсь. Вроде по временным диаграммам должно работать, но я все равно сомневаюсь. Ставить МК с 144 пинами расточительно - много места занимает, дороже, куча ног просто висеть будет. Эхх.
  4. Dron_Gus и все же, какая память у Вас стояла? Хочу посмотреть ее временные диаграммы. И еще, правильно ли мы друг друга поняли, что у Вас мультиплексировались именно линии адреса и данных (не только ИС)?
  5. А как это у Вас получилось на одну шину 4 устройства, там же всего 1 или 2 /CS? А что за SRAM была? Я бы посмотрел на нее документацию.
  6. STM32 + параллельная FRAM.

    Здравствуйте, коллеги. В проекте необходимо хранить данные, поступающие с датчика (SPI), в энергонезависимой памяти. Планируется использовать параллельную FRAM память и повесить ее на FSMC. С STM32 до этого не работал, поэтому возникли некоторые вопросы. Я сравнил временные диаграммы памяти и FSMC. Судя по диаграммам, их получится подружить, но данная FRAM память медленная - цикл записи 140ns. Где то на форуме встречал, что уже при 70ns люди вводили задержки. Вот возникли вопросы: 1) Можно ли писать во внешнюю память посредством DMA? Т.е. у DMA использовать решим MEM2MEM, а в качестве адреса назначения указать адрес внешней памяти так чтобы данные подхватил FSMC и записал во внешнюю память. 2) Если так можно сделать, то нужно ли будет вводить задержки или DMA и FSMC подружатся сами? (сомневаюсь, но вдруг) Если позволите, то задам еще несколько вопросов по FSMC: 3) Указанная FRAM память имеет интерфейс SRAM памяти. Только контроллеры со 144 пинами умеют работать с внешней SRAM, хотя FSMC есть у МК со 100 пинами, но он урезанный - работает с NOR памятью в мультиплексном режиме. Я посмотрел на временные диаграммы и возникло подозрение, что SRAM память можно подружить с FSMC работающем в режиме NOR (мультиплексном). Кто нибудь так делал? Как думаете, получится? 4) Кто подключал внешнюю память на FSMC подскажите, какие подводные камни могут возникнуть? 5) Кто нибудь подключал NOR память посредством FSMC? Как получилось? С уважением, goodvin.
  7. Доброго времени суток!!! Вообщето тоже думал об этом. В обработчике прерываний проверять что сейчас работает (bootloader или прикладная программа) и в зависимости от этого прыгать на определенный адрес. Вы это имели ввиду? По поводу работы bootloader'а "по готовности" еще не размышлял вплотную (все таки кажется правильнее с прерываниями). Загвоздки в другом (даже скорее и не загвоздка; просто не думал пока об этом, т.к. привожу в порядок полученную информацию): при загрузке с нулевого адреса будем уходить на bootloader, но тогда этот нулевой адрес (там у нас адрес начала прикладной программы) нужно сохранять в заранее известное место. Стартапы смотрел. В принципе все понятно, но было бы круто, если б кто нибудь закоментил стартап какого либо своего проекта...
  8. Доброго времени суток!!! Думаю поступить так: bootloader расположить в начальных адресах. В стартапе bootloader'а переопределить все вектора прерывания (кроме тех, что используются в bootloader'е) на адреса, где во флеше будет таблица прерываний прикладной программы. Тогда по прерыванию контроллер идет по адресу прописаному в документации, а там ему говорят иди по новому адресу. Придя по новому адресу он обрабатывает прерывание. Но получается, что если я в bootloader'е буду использовать прерывания по UART'у и таймеру, то в прикладной программе их юзать уже на получится? Еще вариант расположить bootloader в последних адресах. Тогда прикладная программа при прерываниях не будет скакать по адресам, но там другие загвоздки есть. Я правильно уловил логику "колдования" со стартапом? Уважаемый barabek, не могли бы Вы написать о стартапе или дать ссылку.
  9. Доброго времени суток!!! А может быть в памяти программ 2 таблицы векторов прерываний (одна bootloader'a вторая прикладной программы)? Так, что бы пока bootloader работает, выполнялись его обработчики прерываний, а когда выполняется прикладная программа, то исполняются ее обработчики. 2Редактор А нельзя ли поподробнее о STARTUP'е, а то я не догоню что-то.
  10. Доброго времени суток!!! Вчера попробовал сместить адреса в Кейле. Делается это, как описывает уважаемый barabek: project->options for target->bl51 locate снимаем галачку "Use Memory Layuot..." в поле "Code Range" изменяем первый адрес на тот, который нужно. В моем случае, для CC1010, адрес можно менять на число байт, кратное 128, это следует из страничной организации памяти программ этого контроллера (256 страниц по 128 байт в каждой). Hex генерируется что надо, но таблица векторов прерывания все равно идет с нулегого адреса, что не удивительно: БЫЛО: :020000020000FC :100000000211E1000000000000000002114E4B2F21 :100010000E58000041FC9C0280604844810AFFC0E9 :10002000000000020FB2EF4E70038D9922AF058FD2 :10003000C12200000000000000000002108000004B :10004000000000020EDEBB010689828A83E0225096 :1000500002E722BBFE02E32289828A83E49322BB69 :10006000010CE58229F582E5833AF583E02250060A :10007000E92582F8E622BBFE06E92582F8E222E5C0 :100080008229F582E5833AF583E49322BB01068950 :10009000828A83F0225002F722BBFE01F322F8BBD2 :1000A000010DE58229F582E5833AF583E8F02250D7 :1000B00006E92582C8F622BBFE05E92582C8F222A0 СТАЛО: :020000020000FC :1000000002121B0000000000000000021188000026 :1000100000000000000000000000000000000000E0 :10002000000000020FEC00000000000000000000D3 :1000300000000000000000000000000210BA0000F4 :10004000000000020F180000000000000000000087 :1000500000000000000000000000000000000000A0 :100060000000000000000000000000000000000090 :100070000000000000000000000000000000000080 :10008000BB010689828A83E0225002E722BBFE027E :10009000E32289828A83E49322BB010CE58229F55D :1000A00082E5833AF583E0225006E92582F8E622CC :1000B000BBFE06E92582F8E222E58229F582E58386 Правда в hex'нике изначальном в начале, где вектора прерывания, еще что-то есть, но я не знаю что это (например адрес 0x000E) Щас думаю как в сложившейся ситуации разместить bootloader и как что будет работать. Уважаемый Палыч, не понял фразу "загрузчик работает исключительно по готовности" это как, нельзя ли описать по подробнее? И еще, как вы принемаете прошивку, если bootloader работает не по прерываниям? Думаю, что в моем случае не получится реализовать Ваше решение из-за страничной организации памяти.
  11. Доброго времени суток!!! Столкнулся с такой-же задачей - программно прошивать CC1010. У контроллера CC1010 есть функция перепрошивки себя любимого, но, в отличае от Атмелов, у него нет "аппаратного" bootloader'а. Поделюсь своими мыслями по повод решения данной задачи и с удовольствием вышлушаю Вашу критику. Загрузчин думаю разместить с 0-го адреса, тогда при загрузки сразу будет запускаться bootloader. После загрузки он в течении некоторого времени "слушает" UART. Если по UART'у пришла команда перехода в режим программирования, то по тому-же UART'у кусками принемаем прошивку и шьем ее во флеш начиная с определенного адреса. Т.к. прошивается флеш по страницам в 128 байт, то адрес начала основной программы будет определяться так: адрес начала следующей, после конца bootloader'а, страницы (если bootloader заканчивается на середине третьей страницы, то основная программа начинается с четвертой). Если по UART'у команда перехода в режим программирования не пришла, пришла не та команда или уже все прошили, то прыгаем на адрес начала основной программы программы. Если действительно можно приказать Кейлу, чтобы он собирал hex начиная с определенного адреса так, чтобы вся программа, включая таблицу векторов прерывания, была тупо смещена, то проблем не должно быть. Что скажите Господа? Кейл правда умеет такое делать? Заранее спасибо.
  12. ChipCon 1010

    Доброго времени суток!!! Необходим USB программатор для cc1010. LPT'шный есть, но нужно шить через USB. Здесь http://electronix.ru/forum/index.php?showt...35954&st=30 at90 собрал кусок кита EB04, который позволяет шить сс1110. Силабовский контроллер, который там стоит, имеет выходы, которые обозначены (В даташите на EB04) как выходы SPI(MOSI, MISO...). Возникает вопрос: а не тот ли это SPI, которым СС1010 прошивается, т.е можно ли прошить СС1010 тем, что представленно по ссылке выше?
×
×
  • Создать...