Отговори на тема  [ 206 мнения ]  Отиди на страница Предишна  1 ... 7, 8, 9, 10, 11, 12, 13, 14  Следваща
Изпитан toolchain за Cortex M3. 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Какъв start-up код и линкер скрипт ползваш?

Че в мойте има някой неща дето не ми допадат особенно......

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Окт 18, 2010 4:24 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

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

Ако кажеш ще ти го дам, няма проблем. А за стартъп кода, значи то няма много-много инициализации... Може директно да тръгнеш на Ц... аз все пак имам някакви инициализации ама те са ми част от кърнела, а ти такива работи не ползваш...

едит: а пък за ягартото само да кажа, че има проблем с GCC 4.5. Явно при прехода от arm-elf- към arm-none_eabi- нещо се генерира различен ELF-файл и GDB не може да намери сорса на някои класове/функции. Нямам много време да го боря, затова просто върнах версия 4.4.2 от старото yagarto.
бтв. "сварката" на fan е с 4.6 там може и да е оправено, не съм пробвал...


Пон Окт 18, 2010 6:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
То стартъп се оказа, че и ST си давали, гледам май грамотно е направен че и по стандарт :)

Иначе то и аз имам линкерски скрипт от преди някакъв, не че не работи. Ама и моя е пълна каша, щото е преправян от 7ца.... :) Мислех, че в Ягартото може да има някакъв написан прясно, ама и там се мъдри един дето обикаляше по форумите отпреди 2 години :) От codesourcery пък не мога да открадна, щото там май са го наврели в проектния файл гадовете в някакъв си техен формат. Или поне никъде не можах да го намеря....

Значи викаш да не тургам gcc 4.5? Ми тогава и аз ще взема да ръгна 4.4 от CodeSourcery. На тия някак си им имам повече доверие, щото все пак пари вадят от това.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Окт 18, 2010 8:06 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Ами нали ти пратих преди време една сглобка, що не погледна до сега! Там Всичко е на С.


Пон Окт 18, 2010 8:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Щото нали знаеш, че като ми пратиш нещо дето не е на дневен реди и директно го слагам в графата "друг път" от където рано или късно изчезва безследно :).

Я прати нещо по въпроса. Ама само линкерски скрипт и стартъп фаил за STM32 да видя при теб как е направено :) Не ми пращай цялата сглобка, че на компютъра ми в момента има инсталирани сигурно 5 сглобки и стана пълна каша.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Окт 19, 2010 8:43 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Най-лесно е да си свалиш CoIDE от Coocox-a.
Там всичко е подредено и ясно, а щом се интересуваш и от това - модерно. :)
http://ifile.it/baug7yh
Линкерския скипт е разделен на две - memory.ld за адресното пространство на конкретния контролер и link.ld за самия скрипт.
За стартъпа погледни startup_stm32f10x_md.c


Вто Окт 19, 2010 9:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Мда. Малко по прегледно изглежда тоя скрипт :)

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Окт 19, 2010 11:15 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
Код:
/*
* GENERATED FILE - DO NOT EDIT
* (C) Code Red Technologies Ltd, 2008-9   
* Generated C linker script file for LM3S9B96
* (created from lmi_cm3_c.ld (v2.0.22 (200912111009)) on Mon Aug 30 17:48:43 GMT+02:00 2010)
*/

INCLUDE "pr1_Debug_lib.ld "
INCLUDE "pr1_Debug_mem.ld "

ENTRY(ResetISR)

SECTIONS
{
   .text :
   {
      KEEP(*(.isr_vector))
      *(.text*)
      *(.rodata*)

   } > MFlash_256


   /* for exception handling/unwind - some Newlib functions (in common with C++ and STDC++) use this. */
   
   .ARM.extab :
   {
      *(.ARM.extab* .gnu.linkonce.armextab.*)
   } > MFlash_256

   __exidx_start = .;
   .ARM.exidx :
   {
      *(.ARM.exidx* .gnu.linkonce.armexidx.*)
   } > MFlash_256
   __exidx_end = .;

   _etext = .;
      
   .data : AT (__exidx_end)
   {
      _data = .;
      *(vtable)
      *(.data*)
      _edata = .;
   } > RAM_96

   /* zero initialized data */
   .bss :
   {
      _bss = .;
      *(.bss*)
      *(COMMON)
      _ebss = .;
   } > RAM_96
   
   /* Where we put the heap with cr_clib */
   .cr_heap :
   {
      end = .;
      _pvHeapStart = .;
   } > RAM_96

/*
   Note: (ref: M0000066)
   Moving the stack down by 16 is to work around a GDB bug.
   This space can be reclaimed for Production Builds.
*/   
   _vRamTop = __top_RAM_96 ;
   _vStackTop = _vRamTop - 16;
}



Това е за луминари, едва ли ти върши някаква работа, но за сметка на това е кратко , ясно и лакони4но :)


pr1_Debug_mem.ld " :
Код:
/*

MEMORY
{
  /* Define each memory region */
  MFlash_256 (rx) : ORIGIN = 0x0, LENGTH = 0x40000 /* 256k */
  RAM_96 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x18000 /* 96k */
  EPI_MAPPED_PERIPHERAL (rwx) : ORIGIN = 0x60000000, LENGTH = 0x10000000 /* 262144k */

}
  /* Define a symbol for the top of each memory region */
  __top_MFlash_256 = 0x0 + 0x40000;
  __top_RAM_96 = 0x20000000 + 0x18000;
  __top_EPI_MAPPED_PERIPHERAL = 0x60000000 + 0x10000000;



"pr1_Debug_lib.ld ":


Код:
GROUP(libcr_c.a libcr_nohost.a libcr_eabihelpers.a)


Вто Окт 19, 2010 1:52 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Здравейте!
За който го интересува споделям малко инфо:

Eclipse Embedded Systems Register View
http://sourceforge.net/projects/embsysregview/
- При дебъг показва предварително избрани периферни регистри.
За сега в списъка са тези на:
STM32Fxx, LPC13xx, LPC17xx, LPC23xx, LPC24xx, Luminary, EnergyMicro.


Eclipse Hex Editor Plugin
http://sourceforge.net/projects/ehep/files/
- плъгин за хекс едитор...

и нещо лично от мен и ... не само
http://ifile.it/yfwnhlt
- За подсещане ...
:)


Последна промяна fan на Вто Окт 26, 2010 12:35 pm, променена общо 1 път



Пон Окт 25, 2010 8:10 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

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

Специално за дебъгването... преди години щях да бъде много щастлив да имам подобно Register View... но сега съм щастлив, че не съм имал такива глезотии и поради неволята понаучих чат-пат GDB.
Истината е че GDB изглежда много чепат, но е невероятно мощен дебъгер. Тъй че който смята да се занимава сериозно по-добре да отдели време да го научи, отколкото да се залъгва с подобни плъгини.

Първо да кажа, че за да се работи с GDB е необходима удобна конзола. А CDT плъгина на Eclipse така и не можах да се сработя с него. Затова продължавам да ползвам Zylin който отдавна не се съпортва, но.... линкът за инсталация (в Eclipse Help->install new...):
http://www.zylin.com/zylincdt

Второ, бих препоръчал Ц++ вместо Ц. Ще направя една уговорка само, че Ц++ изисква малко усилия и в началото има само проблеми и лоши резултати (повече код и т.н.), но като посвикне човек нещата си идват на място ;-)

И сега за регистрите... Аз съм си ги направил на класове (по-точно POD-структури) и естествено същестуващите периферии са дефинирани като променливи от съответния тип. От тук нататък има два прости начина да се ползват:
1) Може да се разглеждат визуално като просто в таб-а variables цъкъш на ичилцата добавяш UART1 примерно и той ти излиза почти по същия начин както в Register View. Удобството на тоя начин е че изглежда както сте свикнали, включително и като степ-неш се оцветяват промени и т.н. Неудобството е, че виждаш ограничен брой неща, освен това като добавиш повечко неща за гледане те се опресняват на всяка стъпка, дебъгера става тромав и т.н.

2) Всяка променлива може да се разглежда в конзолата. Да не обяснявам всички GDB команди (то не и ги знам) но примерно print - т.е. пишеш "p UART1" и то ти го извежда.
Неудобното на тоя метод, е че може би изглежда "по-дървено". Но удобното е че може да видиш *всичко*. Практически чрез на print може да подадеш всякакъв Ц/Ц++ израз.
Иска се малко опит в началото докато свикнете, но после няма връщане ;-) Тук ще кажа само няколко трика - първо в .gdbinit може да си правите всякакви макроси, така че да не се налага постоянно да пишете като луди ;-)
Другото което е, че принт-а на GDB наистина може да ползва *всякакви* Ц/Ц++ изрази. Включително и да викате ваши функции от кода!
Да кажем, че UART-a има метод "GetChar" то като напишете в GDB конзолата:

Код:
p UART1->GetChar()

GDB ще извика тая функция, която забележете е ваша функция от вашия код и която чете 1 символ от UART1. Резултататът ви се извежда в GDB конзолата.... "найс а? ;-)
Разбира се, същото ще го направи и с просто Ц, но Ц++ е доста по-прегледно... Примерно аз си правя по-сложни класове и обикновено им добавям метод "dump()"... В тоя метод трейсвам обекта по някакъв по-симпатичен начин. Понякога викам dump() в самия код за да трейсна обекта. Но и докато дебъгвам винаги мога да спра и да дъмпна каквото си искам... Примерно имам дъмп за файловата си система, която дъмпва всички логически дискове/сектори/файлове... Имам си дъмп на динамичната памет, който листва всички заети парчета памет (върнати от malloc). всички дупки и т.н.
Не знам дали ме разбирате, ама това което "тъпата" GDB конзола позволява няма да го намерите като "view" в нито един лъскав плъгин ;-)


Пон Окт 25, 2010 9:52 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
О, супер е благодаря много!
А, по въпроса за Zylin, трябва да ти кажа, че продължават да го обновяват. Така, че дерзай!
Поздрави!


Пон Окт 25, 2010 10:08 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
fan, благодаря за линковете, но това един и същи линк два пъти :) Опитах да го сложа, но нищо ново не се появи в Еклипсето. Какво трябваше да се случи ? :oops:


Вто Окт 26, 2010 12:28 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
О, извинявайте! Коригирах линка! :?
Сега за Eclipse Embedded Systems Register View:
като се отвори интернет страничката му, не се натиска директно бутона за даунлоад! :)
Натиска се "View all files".
След което се изтегля "org.eclipse.cdt.embsysregview_0.1.6.jar".
Копира се в еклипс потдиректория plugins.
После копираш "org.eclipse.cdt.embsysregview_feature_0.1.6.jar" и го слагаш в features папката.
След това в еклипса:
Window->Preferences->C/C++->Debug->EmbSys Register View
избираш, конфигурираш, OK и излизаш от там!
Отваряш Debug перспективата и избираш:
Window->Show View->Other->Debug->EmbSys Register View
И се появява таба!
Активирането на съответния регистър става чрез двоен клик върху него. :)


Вто Окт 26, 2010 1:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Я ми кажи каква е далаверата, преди да съм се омазал с поредната инсталация на тоя Реджистри вию:)

Що е това - джамче на Еклипса да си ръчкам регистрите ли? На какъв принцип работи - трябва ли да имам някъде описание на регистрите или то си ги знае наизуст?

То и без това на старата сглобка, все нещо не ми излизаше като хората с дебъгването на регистрите. Аз ли не ги описвах като хората, Zylyn ли имаше проблем.... та ако има нещо да работи като хората....

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Окт 26, 2010 1:35 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Ами всичко си се появява като структури под формата на папки, само си избираш кои регистри да ти опресни нищо не въвеждаш допълнително. Що те е страх да си го сложиш и погледнеш?


Прикачени файлове:
EmbSys.jpeg
EmbSys.jpeg [ 150.96 KiB | Прегледано 1654 пъти ]


Последна промяна fan на Вто Окт 26, 2010 1:59 pm, променена общо 1 път

Вто Окт 26, 2010 1:38 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 206 мнения ]  Отиди на страница Предишна  1 ... 7, 8, 9, 10, 11, 12, 13, 14  Следваща

Кой е на линия

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


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

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