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

хедърчета/демо проект за Луминари?
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=7472
Страница 1 от 1

Автор:  miro_atc [ Вто Яну 19, 2010 5:06 pm ]
Заглавие:  хедърчета/демо проект за Луминари?

Както се казва гледам и не вярвам на ушите си....

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

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

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

Автор:  Nikola Kirov [ Вто Яну 19, 2010 5:58 pm ]
Заглавие: 

От IAR разбира се ;)
Само не знам нещастното GCC дали ще се оправи директно с разните структури там или ще трябва да преправяш.

Автор:  miro_atc [ Вто Яну 19, 2010 6:23 pm ]
Заглавие: 

Е па ти съвсем ще ме довършиш....

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


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

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

Автор:  Nikola Kirov [ Вто Яну 19, 2010 7:31 pm ]
Заглавие: 

Трябва да качиш последния IAR. Ъпдейта излезе тази година. Дръпни си евалюшъна от сайта им. Само не знам колко ще ти коства борбата с GCC да тръгне с иарския. C99 спецификациите мисля че са проблема. В гнуста май се включват с някакъв допълнителен ключ.

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

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

Автор:  Dimitar [ Вто Яну 19, 2010 10:00 pm ]
Заглавие: 

Миро, 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.

Автор:  Dimitar [ Вто Яну 19, 2010 11:31 pm ]
Заглавие: 

Миро, ето ти хедър за 9b90 от последната версия на библиотеките:

Прикачени файлове:
lm3s9b90.zip [54.74 KiB]
111 пъти

Автор:  miro_atc [ Сря Яну 20, 2010 11:40 am ]
Заглавие: 

Никола, мерси но IAR-ските хедъри не ми вършат работа... Те са за хората дето ползват IAR ;-)

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

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

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

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

Автор:  Dimitar [ Сря Яну 20, 2010 3:57 pm ]
Заглавие: 

Цитат:
Та заключението до което стигам е, че по-добре да ползвам разните "hw_xxx.h" които се надявам че са универсални и важат за всички луминарита.

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

Автор:  miro_atc [ Чет Яну 21, 2010 5:12 pm ]
Заглавие: 

с хедърчетата стана номера...

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

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

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

ТАСК А:
LDREX X

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

ТАСК А:
STREX X


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


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

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