Отговори на тема  [ 9 мнения ] 
хедърчета/демо проект за Луминари? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение хедърчета/демо проект за Луминари?
Както се казва гледам и не вярвам на ушите си....

Почвам нов проект с Луминари/ТИ и първото нещо дето естествено ми трябва са хедъри с дефиниции на регистри на чипа.
Имам една демо платка оригинална със СД, но вътре сорсове йок. Що за евал е това дето поне един hello word няма ?!
Всъщност има някакъв StelarisWare дето инсталира сорсове май на библиотечки и няколко примера и даже има хедърчета...

Обаче:
1) Проца не е този който ми трябва, дори не съвпада с тоя от демоплатката... Съответно хедърите за тоя проц може би не са тия дето ми трябват.
2) Include директорията ми изглежда твърде обемиста, вероятно заради Луминарските библиотеки. А пък те са с лицензи някакви и не искам да се забърквам с тях. Искам си само хедъри за чипчето...

Та въпросът е откъде да изкопая минималния набор хедъри? Евентуално версия за асемблер (без структури, енъми и т.н.) и С/Ц++ версия...


Вто Яну 19, 2010 5:06 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
От IAR разбира се ;)
Само не знам нещастното GCC дали ще се оправи директно с разните структури там или ще трябва да преправяш.


Вто Яну 19, 2010 5:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Е па ти съвсем ще ме довършиш....

Преди малко го инсталирах и тоя IAR за just in case.... Първо има само най-старите чипове, а мен ми трябва сравнително нов (lm3s9b90) и второ IAR-ските хедъри са съвсем различни от всичко познато ми досега...


От друго някакво бордче изкарах някакви хедъри, само дето не мога да им схвана концепцията. Има един супер голям lm3s9b90.h в който има описание и на регистрите и на техните адреси. Отделно има множество хедъри за различни периферии, но само дефиниции без адреси.

Изглежда като че ли са алтернативни - или инклудваш огромния хедър за целия процесор, или парчета за конкретните периферии... Изглежда логично, само че на практика май не е изпипано добре, щото въпреки че е супер голям процесорния хедър не включва цялата информация. Поне аз не мога да намеря нещо толкова елементарно като това откъде почват flash, ram.. и съответно техните размери. А в парчетата има такава информация.... Иди че го разбери както се казва ;-)


Вто Яну 19, 2010 6:23 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Трябва да качиш последния IAR. Ъпдейта излезе тази година. Дръпни си евалюшъна от сайта им. Само не знам колко ще ти коства борбата с GCC да тръгне с иарския. C99 спецификациите мисля че са проблема. В гнуста май се включват с някакъв допълнителен ключ.

А къде са ти паметите при IAR е в линкерския файл. Не го търси в хедъра. Автоматично ти се генерират съответните константи които можеш да ползваш в C кода. Това със сигурност ще трябва да си го въведеш ръчно при теб.

Не съм качвал последния при мен иначе щях да ти дам направо необходимия хедър.


Вто Яну 19, 2010 7:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Миро, inc файловете с в поддерикторията inc, където се инсталира StelarisWare и за тях не ти трябват никакви лицензи. Отделно поне според мен са си в нормален вид. Ето ти част от един файл да сравниш:
Код:
//*****************************************************************************
//
// General-Purpose Input/Outputs (PORTA)
//
//*****************************************************************************
#define GPIO_PORTA_DATA_BITS_R  ((volatile unsigned long *)0x40004000)
#define GPIO_PORTA_DATA_R       (*((volatile unsigned long *)0x400043FC))
#define GPIO_PORTA_DIR_R        (*((volatile unsigned long *)0x40004400))
#define GPIO_PORTA_IS_R         (*((volatile unsigned long *)0x40004404))
#define GPIO_PORTA_IBE_R        (*((volatile unsigned long *)0x40004408))
#define GPIO_PORTA_IEV_R        (*((volatile unsigned long *)0x4000440C))
#define GPIO_PORTA_IM_R         (*((volatile unsigned long *)0x40004410))
#define GPIO_PORTA_RIS_R        (*((volatile unsigned long *)0x40004414))
#define GPIO_PORTA_MIS_R        (*((volatile unsigned long *)0x40004418))
#define GPIO_PORTA_ICR_R        (*((volatile unsigned long *)0x4000441C))
#define GPIO_PORTA_AFSEL_R      (*((volatile unsigned long *)0x40004420))
#define GPIO_PORTA_DR2R_R       (*((volatile unsigned long *)0x40004500))
#define GPIO_PORTA_DR4R_R       (*((volatile unsigned long *)0x40004504))
#define GPIO_PORTA_DR8R_R       (*((volatile unsigned long *)0x40004508))
#define GPIO_PORTA_ODR_R        (*((volatile unsigned long *)0x4000450C))
#define GPIO_PORTA_PUR_R        (*((volatile unsigned long *)0x40004510))
#define GPIO_PORTA_PDR_R        (*((volatile unsigned long *)0x40004514))
#define GPIO_PORTA_SLR_R        (*((volatile unsigned long *)0x40004518))
#define GPIO_PORTA_DEN_R        (*((volatile unsigned long *)0x4000451C))
#define GPIO_PORTA_LOCK_R       (*((volatile unsigned long *)0x40004520))
#define GPIO_PORTA_CR_R         (*((volatile unsigned long *)0x40004524))



За тоя новия процесор ще ти трябва версия 5.41.1 на IAR.


Вто Яну 19, 2010 10:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Миро, ето ти хедър за 9b90 от последната версия на библиотеките:


Прикачени файлове:
lm3s9b90.zip [54.74 KiB]
110 пъти
Вто Яну 19, 2010 11:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
Никола, мерси но IAR-ските хедъри не ми вършат работа... Те са за хората дето ползват IAR ;-)

Иначе и аз мога да си вкарвам и си вкарвам някои неща в линкерския скрипт, пък и константите си ги знам, но целта е както се казва "да го направя като хората"... Затова повече ме интересува каква е практиката, отколкото самите хедъри.

Dimitar, и аз успях да намеря тоя файл както писах по-горе. Но още не съм сигурен, че им схващам идеята... Проблемът е, че като гледам никой не го използва, което е нормално като се има предвид скромния размер от 11,000 реда. Вместо това има "разбивки" по периферии и гледам че като че ли това е по-разумния начин на работа с хедъри?

Още повече, че има и друг момент - аз сега ползвам един чип, но утре мога да го сменя със сходен. Демек ако сега наблъскам #include "lm3s9b90.h" навсякъде из сорсовете в последствие ще трябва да ги оправям. А това е кофти идея...

Та заключението до което стигам е, че по-добре да ползвам разните "hw_xxx.h" които се надявам че са универсални и важат за всички луминарита.
Само за асемблера още не съм решил как да подходя, щото някои хедъри могат да се ползват и от асемблер други не... Кофти малко.... При Атмел нещата поне бяха чисти - един хедър за С и втори универсален дето може да се използва и от асемблер и всичко беше просто и ясно... Тук с Луминари ми е малко объркващо ;-)


Сря Яну 20, 2010 11:40 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
Цитат:
Та заключението до което стигам е, че по-добре да ползвам разните "hw_xxx.h" които се надявам че са универсални и важат за всички луминарита.

Аз също ползвам тях и досега поне не съм имал проблеми като съм компилирал един и същи сорс за няколко различни процесора :) .


Сря Яну 20, 2010 3:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение 
с хедърчетата стана номера...

Сега се боря с exclusive достъпите (LDREX, STREX) - някой ползва ли ги?

Не мога да намеря информация дали помни адреса който се заключва... От АРМ казват "implementention defined", демек може и да помни, може и да не помни... А от Луминари не намирам нищо по въпроса...

Всъщност мъча се да реша дали трябва да прекъсвам достъпите с CLREX при влизане в прекъсване или смяна на контекст. Бих могъл да го спестя ако помни адресите, т.е. ако имам:

ТАСК А:
LDREX X

TАСК Б:
LDREX Y
STREX Y
LDREX Z

ТАСК А:
STREX X


В тая ситуация ако не помни адреси, всички записи би трябвало да минат успешно. Но ако помни адреса няма да мине последната, щото ще очаква запис на адрес Z, a не на X.


И още един въпрос свързан с приоритетите... В документацията намекват, че не толерират инверсия на приоритетите, така ли е?
Примерно ако искам да използвам SVC съм ограничен да го ползвам само от прекъсвания с по-нисък приоритет?


Чет Яну 21, 2010 5:12 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни