реклама на сайте
подробности

 
 
10 страниц V  « < 5 6 7 8 9 > »   
Reply to this topicStart new topic
> startup asm
aaarrr
сообщение Jan 21 2009, 23:53
Сообщение #91


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jan 22 2009, 02:30) *
'Здесь' некие действия с негарантированным результатом и непредсказуемым продолжением.

Укажите, почему это здесь "негарантированный результат" и "непредсказуемое продолжение". Только конкретно.

Голословные обвинения не рассматриваются.

Цитата(zltigo @ Jan 22 2009, 02:30) *
Был задан вопрос о недостатках приведенного решения.

У приведенного решения недостатков я не вижу. printf, ввод/вывод и прочую требуху придумали Вы, а не я.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 22 2009, 08:24
Сообщение #92


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(aaarrr @ Jan 22 2009, 01:53) *
У приведенного решения недостатков я не вижу.



Причины и как сделано у меня уже описал, и если все это "требуха", то это в общем-то проблемы того, кто так поступает. Лично мня отладка локализующая проблему только в паректных условиях не устраивает.   


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 09:06
Сообщение #93


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jan 22 2009, 11:24) *
Лично мня отладка локализующая проблему только в паректных условиях не устраивает.   

Опять 25! Последний раз спрашиваю: где паркетные условия, как она ломается?

Цитата(zltigo @ Jan 22 2009, 11:24) *
Причины и как сделано у меня уже описал, и если все это "требуха", то это в общем-то проблемы того, кто так поступает.

Требуха - это то, что Вы мне пытаетесь навязать:
Цитата
Угу, только вот произвольная функция начинает требовать побольше места под стек, вызывать, например, printf(), захочет воспользоваться прерываниями....

Совершенно высосанные из пальца претензии.
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 22 2009, 17:30
Сообщение #94


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Каждый человек индивидуальный, как и его решения, конкретных ошибок ведь нет?
А стоит возвращаться, или нет после exeption это не такая уж проблема smile.gif
объясните пожалуйста, по векторам в aic регистры AIC_SVR0-31 содержат вектора
прерываний от 0 до 31, регистры AIC_SMR0-31 настраивают прерывания от 0 - 31
приоритеты,фронты. Регистр AIC_SMR0 настраивает прерывание FIQ, регистры AIC_SVR0 и AIC_FVR содержат
вектора прерывания FIQ, получается у FIQ два вектора почему два и если приоритет не
для FIQ не действует тогда что настраивает регистр SMR0?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 17:40
Сообщение #95


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergey sva @ Jan 22 2009, 20:30) *
AIC_SVR0 и AIC_FVR содержат вектора прерывания FIQ, получается у FIQ два вектора

AIC_FVR - read only регистр, из которого можно прочитать только содержимое AIC_SVR0.

Цитата(sergey sva @ Jan 22 2009, 20:30) *
что настраивает регистр SMR0?

Цитата
The fast interrupt logic of the AIC has no priority controller. The mode of interrupt source 0 is
programmed with the AIC_SMR0 and the field PRIOR of this register is not used even if it reads
what has been written. The field SRCTYPE of AIC_SMR0 enables programming the fast interrupt
source to be positive-edge triggered or negative-edge triggered or high-level sensitive or
low-level sensitive
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Jan 22 2009, 18:11
Сообщение #96


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Еще одна неясность возникла, вот код из файла описания AT91sam7s256.h
Код
// *****************************************************************************
//               PERIPHERAL ID DEFINITIONS FOR AT91SAM7XC256
// *****************************************************************************
#define AT91C_ID_FIQ    ((unsigned int)  0) // Advanced Interrupt Controller (FIQ)
#define AT91C_ID_SYS    ((unsigned int)  1) // System Peripheral
#define AT91C_ID_PIOA   ((unsigned int)  2) // Parallel IO Controller A
#define AT91C_ID_PIOB   ((unsigned int)  3) // Parallel IO Controller B
#define AT91C_ID_SPI0   ((unsigned int)  4) // Serial Peripheral Interface 0
#define AT91C_ID_SPI1   ((unsigned int)  5) // Serial Peripheral Interface 1
#define AT91C_ID_US0    ((unsigned int)  6) // USART 0
#define AT91C_ID_US1    ((unsigned int)  7) // USART 1
#define AT91C_ID_SSC    ((unsigned int)  8) // Serial Synchronous Controller
#define AT91C_ID_TWI    ((unsigned int)  9) // Two-Wire Interface
#define AT91C_ID_PWMC   ((unsigned int) 10) // PWM Controller
#define AT91C_ID_UDP    ((unsigned int) 11) // USB Device Port
#define AT91C_ID_TC0    ((unsigned int) 12) // Timer Counter 0
#define AT91C_ID_TC1    ((unsigned int) 13) // Timer Counter 1
#define AT91C_ID_TC2    ((unsigned int) 14) // Timer Counter 2
#define AT91C_ID_CAN    ((unsigned int) 15) // Control Area Network Controller
#define AT91C_ID_EMAC   ((unsigned int) 16) // Ethernet MAC
#define AT91C_ID_ADC    ((unsigned int) 17) // Analog-to-Digital Converter
#define AT91C_ID_AES    ((unsigned int) 18) // Advanced Encryption Standard 128-bit
#define AT91C_ID_TDES   ((unsigned int) 19) // Triple Data Encryption Standard
#define AT91C_ID_20_Reserved ((unsigned int) 20) // Reserved
#define AT91C_ID_21_Reserved ((unsigned int) 21) // Reserved
#define AT91C_ID_22_Reserved ((unsigned int) 22) // Reserved
#define AT91C_ID_23_Reserved ((unsigned int) 23) // Reserved
#define AT91C_ID_24_Reserved ((unsigned int) 24) // Reserved
#define AT91C_ID_25_Reserved ((unsigned int) 25) // Reserved
#define AT91C_ID_26_Reserved ((unsigned int) 26) // Reserved
#define AT91C_ID_27_Reserved ((unsigned int) 27) // Reserved
#define AT91C_ID_28_Reserved ((unsigned int) 28) // Reserved
#define AT91C_ID_29_Reserved ((unsigned int) 29) // Reserved
#define AT91C_ID_IRQ0   ((unsigned int) 30) // Advanced Interrupt Controller (IRQ0)
#define AT91C_ID_IRQ1   ((unsigned int) 31) // Advanced Interrupt Controller (IRQ1)
#define AT91C_ALL_INT   ((unsigned int) 0xC00FFFFF) // ALL VALID INTERRUPTS

// *****************************************************************************

Понятно что этот код описывает номера регистров SMR ,то есть какой регистр SMP отвечает за какую периферию.
прерывание от юсб будет настраиваться в smp11 USART 0 в smr6, а AT91C_ID_SYS, это прерывание в каком случае возникает,
или AT91C_ID_IRQ0 это ,прерывание от контроллера прерываний, в каком случае может возникнуть для чего это может понадобится ?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 18:20
Сообщение #97


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergey sva @ Jan 22 2009, 21:11) *
AT91C_ID_SYS, это прерывание в каком случае возникает

Прерывание от System Controllera (DBGU, PITC etc).

Цитата(sergey sva @ Jan 22 2009, 21:11) *
или AT91C_ID_IRQ0

Прерывание от внешнего пина.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 22 2009, 18:23
Сообщение #98


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(sergey sva @ Jan 22 2009, 19:30) *
Каждый человек индивидуальный, как и его решения,


Допущенные системные ошибки вполне объективны sad.gif. А вот Ваша и aaarrr оценка серьезности этих системных ошибок индивидуально-субьективна sad.gif, это да smile.gif.  

Цитата
конкретных ошибок ведь нет?


Конкретных? Вычитывать не стал, но уж если собрались куда-то корректно "возвращаться" из exceptions для начала подумайте, куда возвратитесь по минус 4 от LR и куда хотели возвратиться. 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 18:32
Сообщение #99


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jan 22 2009, 21:23) *
Допущенные системные ошибки вполне объективны sad.gif

Еще раз спрашиваю: где они? Пока все Ваши утверждения остаются абсолютно голословными.

Цитата(zltigo @ Jan 22 2009, 21:23) *
Конкретных? Вычитывать не стал, но уж если собрались куда-то корректно "возвращаться" из exceptions для начала подумайте, куда возвратитесь по минус 4 от LR и куда хотели возвратиться.

Цитата
After fixing the reason for the abort, the handler should execute the following
irrespective of the state (ARM or Thumb):
SUBS PC,R14_abt,#4 for a prefetch abort, or
SUBS PC,R14_abt,#8 for a data abort
This restores both the PC and the CPSR, and retries the aborted instruction.

Цитата
After emulating the failed instruction, the trap handler should execute the following
irrespective of the state (ARM or Thumb):
MOVS PC,R14_und
This restores the CPSR and returns to the instruction following the undefined
instruction.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 22 2009, 20:34
Сообщение #100


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(aaarrr @ Jan 22 2009, 20:32) *
Еще раз спрашиваю:



Перечитайте, если это все еще кажется Вам несущественным, то это Ваши проблемы.

Приведннные цитаты мне? Я то знаю, по этой причине и спросил. А что там в сишной функции-то "для исправления"-то сделаете и куда попадете возвращению без разбору по типу аборта на -4?  


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 20:47
Сообщение #101


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jan 22 2009, 23:34) *
Перечитайте, если это все еще кажется Вам несущественным, то это Ваши проблемы.

3 раза перечитал. Никакой конкретики, кроме "стек сожрет" да "printf вызовет" от Вас слышно не было, а это, извините, бред и домыслы.

У меня, например, процедура, вызываемая из abort'а или выбрасывает диагностику в консоль и виснет, или пишет ее в память для последующего помещения в лог и рестартует процессор, в зависимости от настроек проекта debug/release.

Цитата(zltigo @ Jan 22 2009, 23:34) *
Приведннные цитаты мне? Я то знаю, по этой причине и спросил. А что там в сишной функции-то "для исправления"-то сделаете и куда попадете возвращению без разбору по типу аборта на -4?  

Тогда обратите внимание на этот пост, и не пытайтесь приписать мне чужие ошибки.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 22 2009, 21:30
Сообщение #102


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(aaarrr @ Jan 22 2009, 22:47) *
У меня, например, процедура, вызываемая из abort'а или выбрасывает диагностику в консоль



Ну а чего это Вы 'не заметили' замечания на счет того, что периферия может быть в общем случае находится в произвольном состоянии? А если консоль не UARTа USB? А с Ethernet поработать? 

Цитата
и виснет, или пишет ее в память для последующего помещения в лог и рестартует процессор, в зависимости от настроек проекта debug/release.


Отлично. Теперь почему-бы все эти 'суперфункции' просто не реализовать несколькими командами там-же в ASM? 

Цитата
Тогда обратите внимание на этот пост, и не пытайтесь приписать мне чужие ошибки.

Я обсуждаю представленный в текущей теме код. Ваши комментарии действительно не заметил sad.gif. Однако вопрос том, что в сишной функции было сделано для того, что-бы реально мог быть осуществлен остался без ответа, а сама функция по крайней мере в Вашей реализации
- без возврата, как и у меня.
- практически ничего не делающая, ну кроме попытки в UART выплюнуть сообщение.
Так о чем спор? О том, что я выдаю/сохраняя сообщения просто НОРМАЛЬНО ШТАТНО подняв систему после рестарта по интерфейсам любой сложности а не в экстремальных условиях и только в UART.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 21:48
Сообщение #103


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jan 23 2009, 00:30) *
Ну а чего это Вы 'не заметили' замечания на счет того, что периферия может быть в общем случае находится в произвольном состоянии?

Может быть, хотя вероятность почти нулевая. Проинициализировать UART для лобового вывода - дело нескольких команд.

Цитата(zltigo @ Jan 23 2009, 00:30) *
А если у консоль не UARTа USB? А с Ethernet поработать?

Да пожалуйста. В "представленном в текущей теме" коде пока и UART не упоминался. Вариантов масса, на каждый из них нужно свое решение, и это решение спокойно надстраивается над handler'ом.

Цитата(zltigo @ Jan 23 2009, 00:30) *
Отлично. Теперь почему-бы все эти 'суперфункции' просто не реализовать несколькими командами там-же в ASM? 

А почему бы все-таки не на C, а? У меня вот несколько платформ, asm-handler'ы для всех одинаковые, а надстройки меняются - очень удобно.

Цитата(zltigo @ Jan 23 2009, 00:30) *
Однако вопрос том, что в сишной функции было сделано для того, что-бы реально мог быть осуществлен остался без ответа

Кто осуществлен?

Цитата(zltigo @ Jan 23 2009, 00:30) *
Так о чем спор? О том, что я выдаю/сохраняя сообщения просто НОРМАЛЬНО ШТАТНО подняв систему по все доступным интерфейсам а не в экстремальных условиях и только в UART.

Если Вы не заметили, именно это (НОРМАЛЬНО ШТАТНО пишу в лог) я и делаю в "боевой" версии ПО.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 22 2009, 21:51
Сообщение #104


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(aaarrr @ Jan 22 2009, 23:48) *
Если Вы не заметили, именно это (НОРМАЛЬНО ШТАТНО пишу в лог) я и делаю в "боевой" версии ПО.

Заметил и по этому вообще не понимаю к чему было все это закусывание удил sad.gif? В чем цимус разделения на "боевые" и прочие? У меня вообще-то обработчики абортов и минимальные консоли вообще практически всегда принадлежность загрузчика и какие версии боевые али не очень вылетают на аборт без разницы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 22 2009, 22:14
Сообщение #105


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(zltigo @ Jan 23 2009, 00:51) *
В чем цимус разделения на "боевые" и прочие?

По мне так удобнее. Всяческая диагностика может мешать нормальному исполнению программы, поэтому ее проще включать/выключать одним дефайном. Хотя это скорее в случае достаточно жесткого реалтайма.
Go to the top of the page
 
+Quote Post

10 страниц V  « < 5 6 7 8 9 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01523 секунд с 7
ELECTRONIX ©2004-2016