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

 
 
 
Reply to this topicStart new topic
> первые вопросы по FreeRTOS, работа с примерами
studert
сообщение Dec 22 2009, 10:13
Сообщение #1


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

Группа: Свой
Сообщений: 76
Регистрация: 6-03-05
Из: Новосибирск
Пользователь №: 3 121



Только начал работу с АРМами, а именно с AT91SAM7x256. Пока выбрал среду ИАР, до этого с ней не работал. Возникли следующие вопросы:
1. При попытке запустить отладку uIP_Demo_IAR_ARM7 пишет: There were warnings while generating glash loader inputs, в логе 2 варнинга "Flash download warning: 64 out of 64 bytes from data record CODE: [0x0-0x3F] will not be flashed" и то же для 34292 байт по адресам 0x100 - 0x86F3. Пока это сообщение пропускаю, но хотелось бы понять в чем тут дело.
2. Запускаю только задания StartLEDFlashTasks, vErrorChecks и vAltStartComTestTasks из проекта для sam7s64 (езернета на плате пока нет). Работать вроде работают, по крайней мере светодиоды мигают, в ком порт тестовую последовательность летит, но при отладке говорит the stack pointer for stack 'CSTACK' (currently ...) is out side the stack range. Пробовал увеличить размер стека, не помогает. Например, если стек был по адресам (200000 - 200400), то текущее положение 200DF8, при увеличении стека до 800, текущее положение тоже увеличивается на 400 и становится 2011F8. Это нормально?
3. Определил функцию putchar, вроде работает. При запуске printf("hello from at91sam7x"), доходит только "h". Если же воспользоваться sprintf(message, "hello from at91sam7x") и putstring(message) сообщение доходит нормально.
Может конечно с этими вопросами нужно было в ветку по ИАР.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 22 2009, 16:02
Сообщение #2


Гуру
******

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



Цитата(studert @ Dec 22 2009, 13:13) *
Может конечно с этими вопросами нужно было в ветку по ИАР.

Moderator:
Перенесено в ветку для начинающих.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
microsin
сообщение Dec 25 2009, 07:13
Сообщение #3


Участник
*

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



Какой используете аппаратный отладчик (Wiggler, MT-LINK)? Когда задаете вопросы, побольше давайте исходной информации - тогда народу будет легче отвечать.

1. По этому вопросу не могу ответить, не сталкивался.

2. Насчет ошибок стека, которые вываливаются при отладке, не заморачивайтесь. Наверное, это особая "фича" IAR smile.gif . Больше года с этим живу, полет нормальный. Вот например, что выводит мой IAR 5.20 при пошаговой отладке с помощью JTAG MT-LINK (он же J-Link):
Fri Dec 25 09:59:08 2009: Loaded macro file: C:\asm\pkrc-m\ewp\..\at91lib\resources\flash.mac
Fri Dec 25 09:59:09 2009: DLL version: V3.96|, compiled Oct 31 2008 19:06:25
Fri Dec 25 09:59:09 2009: Firmware: J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5
Fri Dec 25 09:59:09 2009: JTAG speed is using adaptive clocking (RTCK signal)
Fri Dec 25 09:59:09 2009: Initial reset was performed
Fri Dec 25 09:59:09 2009: TotalIRLen = 4, IRPrint = 0x01
Fri Dec 25 09:59:09 2009: J-Link found 1 JTAG device(s). ARM core Id: 3F0F0F0F ARM7
Fri Dec 25 09:59:09 2009: Device at TAP0 selected
Fri Dec 25 09:59:09 2009: JLINK command: ProjectFile = C:\asm\pkrc-m\ewp\settings\pkrc-m_at91sam7x256_flash.jlink, return = 0
Fri Dec 25 09:59:09 2009: JLINK command: device = AT91SAM7X256, return = 0
Fri Dec 25 09:59:09 2009: TotalIRLen = 4, IRPrint = 0x01
Fri Dec 25 09:59:11 2009: 240893 bytes downloaded (120.45 Kbytes/sec)
Fri Dec 25 09:59:11 2009: Loaded debugee: C:\asm\pkrc-m\ewp\at91sam7x256_flash\Exe\at91sam7x256_flash.out
Fri Dec 25 09:59:12 2009: Target reset
Fri Dec 25 09:59:12 2009: execUserReset()
Fri Dec 25 09:59:12 2009: TotalIRLen = 4, IRPrint = 0x01
Fri Dec 25 09:59:12 2009: Hardware reset with strategy 0 was performed
Fri Dec 25 09:59:12 2009: Enable Main Oscillator
Fri Dec 25 09:59:12 2009: Set PLL to 96MHz
Fri Dec 25 09:59:12 2009: Set Master Clock to 48MHz
Fri Dec 25 09:59:13 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:20 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:21 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:21 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:22 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:23 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
Fri Dec 25 09:59:23 2009: The stack pointer for stack 'CSTACK' (currently 0x00000000) is outside the stack range (0x00206100 to 0x00207100)
... и так далее.

3. Если хотите, чтобы Вам что-то посоветовали, опять таки - нужно больше информации, чтобы не играть в телепатов (как Вы это сделали?). Есть уже готовые примеры и рекомендации в апноутах от Atmel. У меня вроде все получилось - я не парился, взял все готовенькое, из примеров Atmel для IAR. Сначала отправлял вывод printf в DBGU (для этого вообще ничего не надо делать, просто взять готовый пример, там уже все украдено до нас), а потом научился и на свой графический индикатор LCD. См. статью IAR EW ARM: как перенаправить вывод printf и putchar.
Причина редактирования: Излишнее цитирование
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 25 2009, 08:54
Сообщение #4


Гуру
******

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



Цитата(microsin @ Dec 25 2009, 10:13) *
Наверное, это особая "фича" IAR smile.gif .

Причем тут 'фича'? Вы своими руками переустанавливаете указатель стека для каждой из задач и он естественно показывает ЗА пределы того инициализированного при запуске стека о котором знает отладчик. Контроль за стеком отключаем.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
studert
сообщение Dec 25 2009, 10:22
Сообщение #5


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

Группа: Свой
Сообщений: 76
Регистрация: 6-03-05
Из: Новосибирск
Пользователь №: 3 121



Спасибо zltigo за разъяснения со стеком, я про себя догадывался, что все в порядке, но хотелось узнать в чем дело. Отладчик использую MT-LINK.

Что касается 3го вопроса: взял тест ком порта из демки ARM7_AT91SAM7S64_IAR. В примере есть функции vSerialPutString и vSerialPutChar в файле serial.с, сюда же добавил функцию
Код
int putchar (cOutChar) {
    xSerialPutChar(NULL,cOutChar,0);
}

В ИАРе для АВР, такой прием прокатил, printf "нашел" знакомую функцию и все получилось. Тут же отправляется только первый символ сообщения. Я и не понимаю в чем дело, функция по отправке символа работает исправно. Вывожу все в УАРТ0.

Сообщение отредактировал rezident - Dec 25 2009, 13:27
Причина редактирования: Правка вида цитаты исходника.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 25 2009, 10:41
Сообщение #6


Гуру
******

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



Цитата(studert @ Dec 25 2009, 13:22) *
Отладчик использую MT-LINK.

Это не отладчик, это адаптер JTAG - одна из множества железок. А отладчик у Вас C-Spy.
Цитата
xSerialPutChar(NULL,cOutChar,0);

Да уж sad.gif А хоть краем глаза глянуть чего этот монстрик xSerialPutChar() делает и какие параметры Вы ему подсунули совсем нельзя было?
Код
signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed char cOutChar, portTickType xBlockTime )
{
    /* Place the character in the queue of characters to be transmitted. */
    if( xQueueSend( xCharsForTx, &cOutChar, xBlockTime ) != pdPASS )
    {
        return pdFAIL;
    }

Чего-то Сopy-Paste sad.gif из одной с бодуна писанной демки в другую и ладно....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Dolcino
сообщение Jun 17 2013, 12:34
Сообщение #7





Группа: Новичок
Сообщений: 1
Регистрация: 17-06-13
Пользователь №: 77 191



Добрый день! У меня похожая проблема с IAR и SAM7A3.
Сначала выдает:

Жму ок.
Далее:
Код
Mon Jun 17, 2013 16:30:16: The stack pointer for stack 'CSTACK' (currently 0x001C9054) is outside the stack range (0x002002F0 to 0x002012F0)

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

Сообщение отредактировал Dolcino - Jun 17 2013, 12:36
Go to the top of the page
 
+Quote Post

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

 


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


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