Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблеми с управлението на външна RAM с компилатор MCC18
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2199
Страница 1 от 2

Автор:  todor [ Сря Апр 12, 2006 12:52 pm ]
Заглавие:  Проблеми с управлението на външна 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.
Програмирането с този компилатор по-специално ,що се касае за бази от данни е много трудно.
Може ли някой да ми посочи компилатор,при който тези проблеми са отстранени и може да се програмира много по лесно.

Автор:  Цецо [ Сря Апр 12, 2006 1:47 pm ]
Заглавие: 

Сблъсках се с проблемите които изтъкваш преди 2 години. И тогава решение нямаше (писа се много по форумите и супорта). Предполагам че и сегашната версия на компилатора гледа на външния РАМ по начин различен от този на вътрешния (GPR).

По принцип PIC18 не е удачен за такова нещо, това се обуслява от хардварската му архитектура. Просто това си е контролер за управление. Бързи прости инструкции, бърз прост достъп до паметта, малко видове адресация. Това че се появиха процесори с изведена шина идеята беше да има повече място за код. Сам виждаш че е изведена шината за програмна памет, а не тази за бързите GPRs. А че може на тази външна шина да закачиш РАМ си е просто една добавка. Но тази памет по нищо не прилича на GPR. И понеже компилатора по презумпция смята че РАМ=GPR идват и всичките бели.

Но както казах архитектурата му е на контролер за управление, а не за бази данни.

Това което ти се опитваш да направиш приляга на Войнюмановата архитектура. Според мен най добре е да смениш процесора (има достатъчно евтини решения). А ако си вързан с конкретния процесор, не ти остава нищо друго освен да си направиш някакви тунелни функции които да ти работят с външната памет на ниско ниво, а приложението да комуникира с тях. Кофти решение ама не виждам друго. А и едва ли има компилатор за PIC18 който да менажира външната РАМ памет прозрачно за юзера.

Автор:  Nikola Kirov [ Сря Апр 12, 2006 1:53 pm ]
Заглавие: 

Погледнах и в IAR-ския компилатор има ли нещо вградено в него по въпроса но и там няма. Цецо е съвсем прав.

Автор:  todor [ Сря Апр 12, 2006 2:15 pm ]
Заглавие:  Мерси за обстойния отговор!

Все пак кой просесор ми препоръчваш конкретно за моя случай? И кой компилатор съответно. Предварително благодаря за отговора Цецо!

Автор:  Цецо [ Сря Апр 12, 2006 3:41 pm ]
Заглавие: 

1. Колко памет трябва да обработваш?
2. Колко бързо? Има ли по сложни сметки (умножение, делене, запетайки)?
3. Каква периферия ти е необходима (АДЦ, УАРТ...)?
4. Компилатора налага ли се да е легален?
5. Трябва ли ти нещо което го има на момента в магазина или нямаш проблем да изчакаш доставка?

Автор:  Bezmozachen [ Сря Апр 12, 2006 3:49 pm ]
Заглавие: 

Според мен някой ARM с външна шина ще свърши работа, но не знам от къде може да се вземе.

Автор:  TheWizard [ Сря Апр 12, 2006 5:02 pm ]
Заглавие: 

6. RAM (executable and storage) OR (only storage) ?
7. DRAM or SRAM or ...?

Автор:  todor [ Сря Апр 12, 2006 5:32 pm ]
Заглавие:  За Цецо!!!

Цецо написа:
1. Колко памет трябва да обработваш?
2. Колко бързо? Има ли по сложни сметки (умножение, делене, запетайки)?
3. Каква периферия ти е необходима (АДЦ, УАРТ...)?
4. Компилатора налага ли се да е легален?
5. Трябва ли ти нещо което го има на момента в магазина или нямаш проблем да изчакаш доставка?


1.Максимално до 2МBt. RAM.,4МBt Flash.
2.От периферията ми е необходимо UART,i2c,cpi,АЦП 3 канала минимум, да има и някой друг входен порт.
3.По възможност не,поне в началото само за проба :)
4.Може и да се дочака доставка.
6.Чрез компилатора да мога да декларирам масив от 20000 структури във външната RAM по 8 елемента и да мога лесно да управлявам всеки от тях.
7.Да има възможност за динамично управление на RAMa.
8.Процесора лесно да може да сортира символни низове от по 20знака максимум.
Предварително благодаря за отговора!

Автор:  TheWizard [ Сря Апр 12, 2006 7:31 pm ]
Заглавие: 

погледни 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:35 pm ]
Заглавие: 

Майко мила. И как смяташе това да стане с PIC? Че неговия компилатор ще умре сигурно на 256тата структура :)

Ами то това твойто си плаче за сериозен процесор. Мисля че АРМ най-добре те урежда.

Погледни например LPC2214 на Philips. Друг пройзводител на ARM е ATMEL. Има и други, ама на тия им е изведена шината.

LPC2214 можеш да го тормозиш със KEIL, IAR, CrossWorks, GreenHills - това са комерсиални (но ще се намерят, ако поискаш) и GCC което си е OpenSource. Всичките подържат динамична памет, мисля че който и да решиш - все тая.

Филипса е под 10$ за големи количества естествено. Но за малки, мисля че около 16$ ми го доставиха от Акерман.

Със сигурност има и други решения - мощни контролери - бол. ARM-а обаче се ползва от много хора и ако запецнеш по лесно ще получиш подкрепа.

Автор:  Nikola Kirov [ Сря Апр 12, 2006 8:37 pm ]
Заглавие: 

Явно че трябва да учиш нов процесор.
Ако имаш време достатъчно точно ARM7 ти е доста добър вариант.
Ако те притиска времето малко трудно ще зацепиш бързо да работиш с ARM.
Ако е такъв случая една ATmega128 ти е добър вариант. За Компилатор IAR. Ще стане стига да не ти трябват много мипсове.

Автор:  Цецо [ Сря Апр 12, 2006 9:51 pm ]
Заглавие: 

Много памет му трябва, а има ли меги с изведени шини?

Освен това аз не съм голям спец в мегите, ама те не са ли харвардска архитектура като пиковете?

Автор:  Nikola Kirov [ Сря Апр 12, 2006 10:07 pm ]
Заглавие: 

Има с изведени шини,даже и от малките. Мега162 е с изведени шини от малките модели. Мега128 е от големите предполагам че има и други.
Архитектурата не го бърка,не е казал че му трябва да изпълнява код от рама.
Просто това му го дадох като вариант ако го притискат сроковете. На външна памет маи само 8 мипса можеше да се достигне.
Определено е по на далавера да се хване с ARM

Автор:  Цецо [ Сря Апр 12, 2006 10:55 pm ]
Заглавие: 

Ами той не иска да изпълнява от РАМ-а, а да пази данни. Ама то при пиковете това е проблема, че е изведена програмната шина, а не тая за данни. А те нали при харвардската архитектура са отделно. На него му трябва данновата шина да е навън. Незнам при мегите как е.

Автор:  Nikola Kirov [ Сря Апр 12, 2006 11:59 pm ]
Заглавие: 

Със сигурност може да им се вързава external Ram но самия достъп как става не знам. не ми се е налагало да връзвам допълнителна памет на мега досега. Но съм виждал че връзват хората

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/