| Автор |
Съобщение |
|
todor
Ранг: Минаващ
Регистриран на: Сря Апр 12, 2006 10:20 am Мнения: 41 Местоположение: gr.Plovdiv
|
 Проблеми с управлението на външна RAM с компилатор MCC18
Има ли някой с опит с управление на външна RAM с компилатора на microchip mcc18?В момента изграждам база от данни във външна RAM от типа 62100 за процесор pic18c801.При отчаяните ми опити открих следните грешки ,които допуска компилаторът:
1.Компилаторът различава указателите декларирани за RAMа на процесора и такива декларирани за външната област(тези създадени с детективата ROM).Има пълна несъвместимост мейду двата типа.Това е така ,заштото за първия компилаторът заделя 2 байта,като може да адресира област до 64kBt,а за втория заделя 3 байта,като може да адресира до 1.67MBt.Моята база е разположена на адрес над 64кBt и следователно ползувам втория тип указатели.
2.Не мога да създам структури за външната област ,заштото надежният запис в тях е невъзможен.Това естествено е следствие и нагорната точка.
3.Компилаторът греши и при деклариране на следния код:
rom far unsigned int *data_ptr
unsigned int br
data_ptr = data_ptr + br;
Грешката се получава при преизчисляване на адреса извън 64kBt област.
4.Компилаторът не може да управлява динамично външна RAM .Това е много съштествен недостатък що се касае за качествено управление на RAMa.
Програмирането с този компилатор по-специално ,що се касае за бази от данни е много трудно.
Може ли някой да ми посочи компилатор,при който тези проблеми са отстранени и може да се програмира много по лесно.
_________________ tig072
|
| Сря Апр 12, 2006 12:52 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Сблъсках се с проблемите които изтъкваш преди 2 години. И тогава решение нямаше (писа се много по форумите и супорта). Предполагам че и сегашната версия на компилатора гледа на външния РАМ по начин различен от този на вътрешния (GPR).
По принцип PIC18 не е удачен за такова нещо, това се обуслява от хардварската му архитектура. Просто това си е контролер за управление. Бързи прости инструкции, бърз прост достъп до паметта, малко видове адресация. Това че се появиха процесори с изведена шина идеята беше да има повече място за код. Сам виждаш че е изведена шината за програмна памет, а не тази за бързите GPRs. А че може на тази външна шина да закачиш РАМ си е просто една добавка. Но тази памет по нищо не прилича на GPR. И понеже компилатора по презумпция смята че РАМ=GPR идват и всичките бели.
Но както казах архитектурата му е на контролер за управление, а не за бази данни.
Това което ти се опитваш да направиш приляга на Войнюмановата архитектура. Според мен най добре е да смениш процесора (има достатъчно евтини решения). А ако си вързан с конкретния процесор, не ти остава нищо друго освен да си направиш някакви тунелни функции които да ти работят с външната памет на ниско ниво, а приложението да комуникира с тях. Кофти решение ама не виждам друго. А и едва ли има компилатор за PIC18 който да менажира външната РАМ памет прозрачно за юзера.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Сря Апр 12, 2006 1:47 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Погледнах и в IAR-ския компилатор има ли нещо вградено в него по въпроса но и там няма. Цецо е съвсем прав.
|
| Сря Апр 12, 2006 1:53 pm |
|
 |
|
todor
Ранг: Минаващ
Регистриран на: Сря Апр 12, 2006 10:20 am Мнения: 41 Местоположение: gr.Plovdiv
|
 Мерси за обстойния отговор!
Все пак кой просесор ми препоръчваш конкретно за моя случай? И кой компилатор съответно. Предварително благодаря за отговора Цецо!
_________________ tig072
|
| Сря Апр 12, 2006 2:15 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
1. Колко памет трябва да обработваш?
2. Колко бързо? Има ли по сложни сметки (умножение, делене, запетайки)?
3. Каква периферия ти е необходима (АДЦ, УАРТ...)?
4. Компилатора налага ли се да е легален?
5. Трябва ли ти нещо което го има на момента в магазина или нямаш проблем да изчакаш доставка?
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
Последна промяна Цецо на Сря Апр 12, 2006 4:02 pm, променена общо 1 път
|
| Сря Апр 12, 2006 3:41 pm |
|
 |
|
Bezmozachen
Ранг: Популярен
Регистриран на: Сря Апр 27, 2005 2:47 pm Мнения: 349 Местоположение: Varna
|
Според мен някой ARM с външна шина ще свърши работа, но не знам от къде може да се вземе.
|
| Сря Апр 12, 2006 3:49 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
6. RAM (executable and storage) OR (only storage) ?
7. DRAM or SRAM or ...?
|
| Сря Апр 12, 2006 5:02 pm |
|
 |
|
todor
Ранг: Минаващ
Регистриран на: Сря Апр 12, 2006 10:20 am Мнения: 41 Местоположение: gr.Plovdiv
|
 За Цецо!!!
1.Максимално до 2МBt. RAM.,4МBt Flash.
2.От периферията ми е необходимо UART,i2c,cpi,АЦП 3 канала минимум, да има и някой друг входен порт.
3.По възможност не,поне в началото само за проба
4.Може и да се дочака доставка.
6.Чрез компилатора да мога да декларирам масив от 20000 структури във външната RAM по 8 елемента и да мога лесно да управлявам всеки от тях.
7.Да има възможност за динамично управление на RAMa.
8.Процесора лесно да може да сортира символни низове от по 20знака максимум.
Предварително благодаря за отговора!
_________________ tig072
|
| Сря Апр 12, 2006 5:32 pm |
|
 |
|
TheWizard
Ранг: Форумен бог
Регистриран на: Сря Апр 27, 2005 12:48 pm Мнения: 6094
|
погледни Infineon XC167 - 16 битов, 40 мипса мах / 160 МHz
256k Internal FLASH
по-малко от 16M адресно пространство
периферия има
USART BOOT
директно управление на външни SRAM/FLASH (4/3 pina hard chip select)
Hardware пригоден за RTOS
IDE, С, АSМ - Keil or Tasking
ASM сходен с Микрочип
|
| Сря Апр 12, 2006 7:31 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Майко мила. И как смяташе това да стане с PIC? Че неговия компилатор ще умре сигурно на 256тата структура
Ами то това твойто си плаче за сериозен процесор. Мисля че АРМ най-добре те урежда.
Погледни например LPC2214 на Philips. Друг пройзводител на ARM е ATMEL. Има и други, ама на тия им е изведена шината.
LPC2214 можеш да го тормозиш със KEIL, IAR, CrossWorks, GreenHills - това са комерсиални (но ще се намерят, ако поискаш) и GCC което си е OpenSource. Всичките подържат динамична памет, мисля че който и да решиш - все тая.
Филипса е под 10$ за големи количества естествено. Но за малки, мисля че около 16$ ми го доставиха от Акерман.
Със сигурност има и други решения - мощни контролери - бол. ARM-а обаче се ползва от много хора и ако запецнеш по лесно ще получиш подкрепа.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Сря Апр 12, 2006 7:35 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Явно че трябва да учиш нов процесор.
Ако имаш време достатъчно точно ARM7 ти е доста добър вариант.
Ако те притиска времето малко трудно ще зацепиш бързо да работиш с ARM.
Ако е такъв случая една ATmega128 ти е добър вариант. За Компилатор IAR. Ще стане стига да не ти трябват много мипсове.
|
| Сря Апр 12, 2006 8:37 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Много памет му трябва, а има ли меги с изведени шини?
Освен това аз не съм голям спец в мегите, ама те не са ли харвардска архитектура като пиковете?
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Сря Апр 12, 2006 9:51 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Има с изведени шини,даже и от малките. Мега162 е с изведени шини от малките модели. Мега128 е от големите предполагам че има и други.
Архитектурата не го бърка,не е казал че му трябва да изпълнява код от рама.
Просто това му го дадох като вариант ако го притискат сроковете. На външна памет маи само 8 мипса можеше да се достигне.
Определено е по на далавера да се хване с ARM
|
| Сря Апр 12, 2006 10:07 pm |
|
 |
|
Цецо
Ранг: Форумен бог
Регистриран на: Пон Сеп 27, 2004 9:22 am Мнения: 15501 Местоположение: София
|
Ами той не иска да изпълнява от РАМ-а, а да пази данни. Ама то при пиковете това е проблема, че е изведена програмната шина, а не тая за данни. А те нали при харвардската архитектура са отделно. На него му трябва данновата шина да е навън. Незнам при мегите как е.
_________________ "Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.
|
| Сря Апр 12, 2006 10:55 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
Със сигурност може да им се вързава external Ram но самия достъп как става не знам. не ми се е налагало да връзвам допълнителна памет на мега досега. Но съм виждал че връзват хората
|
| Сря Апр 12, 2006 11:59 pm |
|
|