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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> spi и usb на stm32
BvDV
сообщение Sep 27 2013, 09:35
Сообщение #16


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 8-12-12
Из: Б.М.
Пользователь №: 74 760



Цитата(Tapochka @ Sep 27 2013, 11:45) *
нашел как увеличить стек http://www.coocox.org/forum/topic.php?id=917
однако не могу найти файл arm-gcc-link.ld, где он находится хоть примерно?

у меня тут C:\CooCox\CoIDE\configuration\ProgramData\myUSB
может у Вас так же. Если получится отпишитесь.

Сообщение отредактировал BvDV - Sep 27 2013, 09:36
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 27 2013, 09:42
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



хм... а что значит вообще стек увеличить то?

если задачка не в ос делается то там вроде один стек и он просто растет в сторону уменьшения адресов, если кто то на стек наползает или наоборот на кого то стек то единственный путь его увеличения - сменить контроллер с большим озу

или я что то путаю?

а в кокосе у меня было два .ld файла и они находились в корне проекта
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 27 2013, 09:59
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



стэк один факт и он растет когда надо - тоже факт. Но где его начало?
Есть шанс что он лежит
Память данных + размер стэка. И если размер стека меньше чем на самом деле, то когда он начинаете расти он затирает данные. меняет значения переменных, и прочие неприятности. А иногда ваши попытки записать что-то в переменные которые лежат там куда залез стэк рушит его самого. Как то так...

Вообщем иногда бывает что на границе стэка лежит что-то полезное, потому хорош бы посмотреть карту памяти как там что где разложено, и не вылезает ли стэк за свои пределы.
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 27 2013, 10:16
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



с этим согласен да посмотреть бы хорошо, вот про увеличить звучит как фантастика, разве что запретить линкеру что то размещать в больших адресах тогда он просто не соберет исполняемый файл и итог один смена контроллера

тапочка а дебагер то работает?
Go to the top of the page
 
+Quote Post
Tapochka
сообщение Sep 27 2013, 11:09
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 26-02-13
Пользователь №: 75 799



дебагер работает, как ни странно rolleyes.gif

Цитата
у меня тут C:\CooCox\CoIDE\configuration\ProgramData\myUSB
может у Вас так же. Если получится отпишитесь.

спасибо за подсказку, примерно там же был и у меня, однако по вышеприведенной ссылке добавил кусок кода и это ничего не дало(

Сообщение отредактировал Tapochka - Sep 27 2013, 11:09
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 27 2013, 11:22
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



и чего говорит дебагер? вылетает в исключение или крутится по программе?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 27 2013, 11:43
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(сарматъ @ Sep 27 2013, 14:16) *
с этим согласен да посмотреть бы хорошо, вот про увеличить звучит как фантастика, разве что запретить линкеру что то размещать в больших адресах тогда он просто не соберет исполняемый файл и итог один смена контроллера

тапочка а дебагер то работает?


может я чего уже не помню. Но размер стэка это конкретно задаваемая величина. Как минимум потому что есть еще куча, размер которой может быть больше, а может меньше и прочие сегменты памяти. И стэк можно сделать маленьким, и его не хватит, чего неужели в настройках проекта нет на какосе нет стэк сайза?
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 27 2013, 11:48
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



можно впихнуть в ld файл просто я то говорю о том, что ежели ломается стек в проекте с одим стеком значит не хватает озу, если задать линкеру не размещать данные в верхней памяти (миним гарантированный размер стека) то линкер просто не соберет проект

вообще я к тому что просто надо дебагером пройти пошагово и посмотреть где что не срабатывает

и это... где то я натыкался что usb встречает грабли при совместной работе с последовательными интерфейсами, но тут могу врать ибо не великий специалист в этой области

Сообщение отредактировал сарматъ - Sep 27 2013, 11:50
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 27 2013, 12:39
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(сарматъ @ Sep 27 2013, 15:48) *
и это... где то я натыкался что usb встречает грабли при совместной работе с последовательными интерфейсами, но тут могу врать ибо не великий специалист в этой области

Граблей нет. Тут как-то выкладывал проект usb-cdc и usb-hid с различными "примочками".
Все работает: гонял даже данные с цифрового микрофона на пределе пропускной способности USB (с микрофоном общался как раз по SPI).
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 27 2013, 12:43
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



на прошлой страничке я давал ссылку на эти грабли. Там уарт и ножка усб конфликтовали...
Go to the top of the page
 
+Quote Post
nx6310
сообщение Sep 27 2013, 15:31
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



размер стека в кококсе находится в файле cmsis_boot/startup/startup_stm32f10x_md.c
Код
/*----------Stack Configuration-----------------------------------------------*/  
#define STACK_SIZE       0x0000500      /*!< The Stack size suggest using even number     */
__attribute__ ((section(".co_stack")))
unsigned long pulStack[STACK_SIZE];

У меня usb отваливалось когда в определенном месте я проводил чтение по spi из флешки. Причем чтение из флешки из другого места программы к таким результатам не приводил. По-моему стека не хватает когда подряд вызываются много функций одна в другой, в стек пишется соответствующая инфа по каждой функции плюс прерывания заполняют стек. в итоге проц вываливается. Возможно я ошибаюсь.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 27 2013, 16:56
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(nx6310 @ Sep 27 2013, 19:31) *


да нет вы правы, вызов любой функции сохраняет текущие состояние регистров в стэк, потом добавляет в стэк временные переменные выхыванной функции, если вызывать функцию одну в другой много раз - это верный способ забить стэк.

Сообщение отредактировал IgorKossak - Sep 27 2013, 17:37
Go to the top of the page
 
+Quote Post
BvDV
сообщение Sep 30 2013, 16:39
Сообщение #28


Частый гость
**

Группа: Свой
Сообщений: 80
Регистрация: 8-12-12
Из: Б.М.
Пользователь №: 74 760



что нибудь получилось в результате?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:32
Рейтинг@Mail.ru


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