Страница 1 из 2
проблема с китайским J-LINK 8 или же проблема с at91sam7s64
Добавлено: Пн сен 30, 2013 20:07:58
tolstiybh
Всем привет.
Решил Сам собрать себе дисковери кит на базе at91sam7s64-ek. Подарили мне китайский J-Link 8 c прошивкой 3.20. Недолго думая я посетил сайт производителя SEGGER и скачал от туда версию 4.76е. Пере прошил проггер на эту версию с новым серийником. Использовал кейген для лицензий (установились все кроме GDBserver). Использую IAR ARM 6.3, ОС - Windows 7 ultimate. Пробовал зашить его и включить debug, но выдал ошибку по RDI, перезагрузил программатор и плату, потом выдал ошибку: BAD JTAG communication write to IR: expected 0x1, got 0x0 <TAP command : 15> @ off 0x5. Потом опять перезагрузил, но выдало уже FAiled to measure total IRlen. И так замкнутый круг.
Запустил J-link arm консоль.
Выдал:
VTARGET: 3.31 V
IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE
Значит проц то J-LINK видет. НО!!!!
Запускаю команду testwspeed на скорости 100 кГц. И выдает Write test failed. Пробую testcspeed - выдает NO RAM available @ address 0x0. Пробовал на скоростях от 10 кГц и выше
Опять перезагружаю все вместе с программой J-link arm , но выдает уже IRLEN: 04, UNKNOWN DEVICE.
Опять перезагружаю. Появляется IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE, выставляю скорость в 4 кГц, выдает BAD JTAG communication...
Со стороны своей платы все прозвонил - ничего не замыкает, все ножки правильно подключены к J-LINK. Все необходимые линии подтянуты, как на схеме ATmel.
Пробовал и с JTAG_SEL играть - резистором 5 кОм на + и на -. На плюс подтягивал - совсем не работало. На минус - работало. По описанию по идее там внутренняя подтяжка 15 кОм
на землю. Так что я думаю это излишне.
Со стороны J-LINK не припаял только nTRST - потому что некуда.
Не могу понять в чем дело. Народ, пожалуйста, подскажите где и куда копать? В чем проблема может быть?
Заранее спасибо.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вс окт 06, 2013 19:26:56
РадиоЛоматель
Тоже долго мучался с J-LINK 8, у меня китайский клон. В итоге, программатор заработал только с одной прошивкой и драйверами v4.75. Прошивал атмеловским бутлоадером. Вот там уже писал об этом:
http://radiokot.ru/forum/viewtopic.php?p=1745358#p1745358
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Пн окт 14, 2013 20:29:15
misyachniy
tolstiybh писал(а):Запускаю команду testwspeed на скорости 100 кГц. И выдает Write test failed. Пробую testcspeed - выдает NO RAM available @ address 0x0. Пробовал на скоростях от 10 кГц и выше
Опять перезагружаю все вместе с программой J-link arm , но выдает уже IRLEN: 04, UNKNOWN DEVICE.
Опять перезагружаю. Появляется IRLEN: 04, IRPrint 0x1, ARM7TDMI CORE, выставляю скорость в 4 кГц, выдает BAD JTAG communication...
at91sam7s исходно запускается на частоте 32кГц с допуском по моему+/- 20%.
При прошивке, IAR через JTAG загружает в ОЗУ прошивальщик (flashloader).
Этот flashloader разгоняет PLL до 30-40Мгц. Только после этого обмен по JTAG может идти на частотах 100 кГц и выше.
Лучше всего найти в папке с установленным IAR пример. В типовом случае Examples\Atmel\Sam7S-EK.
В настройках проекта найти J-LINK и на второй вкладке проверить/установить птичку "Use flashloader".
Проект обычно имеет две конфигурации RAM и Flash.
Нужно выбрать Flash.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Пн окт 14, 2013 22:25:53
tolstiybh
Всем Привет.
Проблема решилась.
Дeло оказалось в PLL. И очень странная ситуация: Сначала использовал обвеску из 1.5 кОм, 1 нФ, 10 нФ с настройками PLL: делитель 5, умножитель 25, PLL_counter 28 (845 мкС). Это не работало. Скачал программу калькулятор PLL. И оказалось совсем другое, что резистор нужен не 1.5 кОм, а 1 кОм, а для конденсаторов 1 нФ и 10 нФ, нужно выставить делитель не 25, а 23. Заработало, но с глюками. Выставил PLL_counter 33 (1000 uS) - глюки пропали.
Почему такая разница??? В чем кроется подвох?
Кварц стоит на 18.432 МГц, но обвязка из конденсаторов не по 15 пФ, а по 12 пФ. Но я не думаю, что они могут влиять так. Или я не прав?
Да и 2 танталовых конденсатора по 10 мкФ по питанию ядра и регулятора напряжения. Но по идее это тоже не должно влиять. На осциллографе помех и искажений по питанию не наблюдал.
Программирую через SAM-BA. Почему-то, если не отключусь от PA16 (ножка для SAM-BA), то может не запуститься ARM, а может и заработать моя прошивка. В чем может быть причина?
Да и почему-то не обрабатывает одновременное нажатие 2-х кнопок и даже не инициализируется процессор. Но это лишь в том случае, если этот код используется (не закомментирован). А когда я его комментирую, то проблем нет и я их использую по отдельности. процессор инициализируется.
Код:
#define button3 ((m_pPio->PIO_PDSR)&(BIT27|BIT28)) // 27, 28 - ноги
void delay (volatile unsigned long int a) { while (--a!=0); }
int main (void) {
...
while (1) {
...
if (!button3) {
delay(10000)
if (!button3!) {
setLED1;
delay(1000000);
clearLED1;
setLED2;
delay(1000000);
clearLED2;
while (!button3);
}
};
}
}
Данным способом я уже давно пользуюсь, но только на 8 битках и он работает на УРА. В чем может быть проблема?
Заранее спасибо
Забыл указать, что среда программирования IAR ARM 6.30
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Пн окт 14, 2013 22:32:29
tolstiybh
РадиоЛоматель. На сайте segger версии 4.75 нету. Только 4.74 и 4.76
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 15, 2013 11:54:20
misyachniy
По поводу запуска кварца.
Маловероятно чтобы при конденсаторах 15пФ запускался, а при 12 сбоил.
Обычно плохая пайка или некачественная промывка.
По поводу неработы кнопок
if (!button3) {
delay(10000)
if (!button3!) {
Что за второй восклицательный знак в третьей строке?
И как определены BIT27 и BIT28?
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 15, 2013 15:38:13
tolstiybh
Прошу прощения за второй восклицательный знак. Ошибка. На самом деле в коде его нет.
Бит 27 и 28 - это 27 и 28 ноги процессора.
#define BIT27 0x08000000
#define BIT28 0x10000000
Но на самом деле, когда у меня проц. инициализировался, то светодиоды должны гаснуть. А они горят. Значит инициализацияне прошла. Но почему. Вот это вопрос?!
Хотя, когда я не использую выше написанныый код, то инициализация проходит и все работает.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 15, 2013 18:21:20
misyachniy
tolstiybh писал(а):Бит 27 и 28 - это 27 и 28 ноги процессора.
#define BIT27 0x08000000
#define BIT28 0x10000000
Номер вывода процессора - это что-то подозрительное и непонятное.
Процессор имеет 32 разрядный порт ввода/вывода PIOA
Вот пример как правильно обозначать выводы:
#define AT91C_PIO_PA28 ((unsigned int) 1 << 28) // Pin Controlled by PA28
#define AT91C_PIO_PA29 ((unsigned int) 1 << 29) // Pin Controlled by PA29Взято здесь:
http://www.keil.com/dd/docs/arm/atmel/s ... sam7s128.hКроме этого нужно включить тактирование на порт в регистре PMC_PCER
И правильно переключить на вывод требуемые выводы порта.
Если просто переключить направление ввода вывода, то установка состояния происходит
записью единички в соответствующий разряд регистра
Для установки в 1 используется PIOA_SODR; // Set Output Data Register
Для установки в 0 - PIOA_CODR; // Clear Output Data Register
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 15, 2013 19:44:39
tolstiybh
Тактирование контроллера PIO включено.
p_pPMC->PMC_PCER = 1 << AT91C_ID_PIOA;
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Ср окт 16, 2013 20:19:30
tolstiybh
У меня j-link заработал и пошла отладка как положено. Но не долго мнет пришлось радоваться.
Выяснилось по ходу дебагинга, что проблема нажатия двух была в 3 ошибках:
the stack pointer for stack "CSTACK" (corrently 0x00000000) is outside the stack range (0x00200050 to 0x00200450)
the stack pointer for stack "IRQ_CSTACK" (corrently 0x00000000) is outside the stack range (0x00200050 to 0x00200450)
the stack pointer for stack "FIQ_CSTACK" (corrently 0x00000000) is outside the stack range (0x00200050 to 0x00200450)
Решил добавить инициализацию и передачу данных по юуарт и АЦП.
2 ошибки показала:
the stack pointer for stack "IRQ_CSTACK" (corrently 0x00200450) is outside the stack range (0x00200460 to 0x00200460)
the stack pointer for stack "FIQ_CSTACK" (corrently 0x00200450) is outside the stack range (0x00200460 to 0x00200460)
Линкер использую нестандартный - at91sam7s64.icf. Настройки см. в фотографии.
Со стандартным IARовским линкером вообще работать не хочет!!!
Что может служить проблемой? Где к роится подводный камень?
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Чт окт 17, 2013 13:15:00
misyachniy
tolstiybh писал(а):
the stack pointer for stack "CSTACK" (corrently 0x00000000) is outside the stack range (0x00200050 to 0x00200450)
the stack pointer for stack "IRQ_CSTACK" (corrently 0x00000000) is outside the stack range (0x00200050 to 0x00200450)
the stack pointer for stack "FIQ_CSTACK" (corrently 0x00000000) is outside the stack range (0x00200050 to 0x00200450)
Я уже писал
Лучше всего найти в папке с установленным IAR пример. и его перекраивать.
Линкеру то указано как связывать части проекта в прошивку.
Но в проекте ще должны быть функции, которые установят указатели стека(-ов) в нужное значение, обнулят неиинициализированые переменные, инициализируют переменные с начальными значениями, установят правильно вектора прерывания.
Все эти задачи решают функции поставляемые разработчиком компилятора.
В типовом случае это файлы со словом startup в имени и расширением "c" или "s".
Например: "startup_stm32f10x_xxx.s "
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Пн окт 21, 2013 22:40:33
tolstiybh
Все правильно проблема была в startupe. Все работает как часы!!!
Сейчас я юзаю прерывания и т.д. и т.п.
Есть какой-нибудь пример или библиотека по использованию HID для обмена данными с компом? И смогу ли я использовать этот пример с программами, написанными с использованием библиотеки JvHID (jedi) для dcelphi?
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Пн окт 21, 2013 22:52:58
tolstiybh
есть ли статья в интернете или посты на форуме о написании драйвера на комп для USB устройства и как обмениваться данными с устройством, не HID?
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 22, 2013 16:33:08
balmer
tolstiybh писал(а): как обмениваться данными с устройством, не HID?
Можешь глянуть мою
статейку там в исходниках идет общение с Пиноном для PC.
Для libusb есть стандартные драйвера для Windows, надо только id в ini файле указывать и все, будет прямое общение с endpoint.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 22, 2013 18:12:14
misyachniy
tolstiybh писал(а):есть ли статья в интернете или посты на форуме о написании драйвера на комп для USB устройства и как обмениваться данными с устройством, не HID?
balmer привел наверное оптимальное решение.
Правда проект переименован в libusb0.
Драйвер для компа написать не просто, но можно скомпилировать подходящий пример имеющийся в Windows DDK
Я раньше так и делал:
http://njnmnp.narod.ru/proj/usb_bulk_sa ... _sam7.htmlСейчас использую libusb0.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 22, 2013 19:56:09
tolstiybh
Спасибо за ответ. А чем libusb0 отличается от bulkusb? В инете нашел только libusb0.dll. Это то что нужно?
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Вт окт 22, 2013 21:07:58
balmer
Фиг его знает. Заходи лучше на сайт
http://www.libusb.org/ и читай документацию.
У меня просто уже года полтора нет дома компьютера с Windows, поэтому не могу давать советы по установке драйверов.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Ср окт 23, 2013 09:32:22
misyachniy
tolstiybh писал(а):Спасибо за ответ. А чем libusb0 отличается от bulkusb? В инете нашел только libusb0.dll. Это то что нужно?
libusb0 работает со всеми типами enpoints, bulkusb только с bulk.
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Ср окт 23, 2013 12:59:48
tolstiybh
Поробовал я bulkusb с проектом AVRx51 - windows xp распознал устройство, я задал путь к дарайверу для его установки. Как только установка дошла до конца, компьютер вместо того, чтобы успешно завершить установку драйвера, перезагружается. Драйвер в итоге установлен неправильно - устройство распознается, как неизвестное.
на windows 7 устройство вообще не только не распознается. но и сразу автоматически устанавливается, как неизвестное, в дальнейшем драйвер обновить невозможно.
Настройки не менял. Размер входной и выходной конечной точки по 64 байта (0х40).
В чем может быть пролема и как ее решить? Где кроится подводный камень
Еще вопрос: как можно переписать *.inf под себя и изменить название устройства при первом его подключении к компьютеру?
Re: проблема с китайским J-LINK 8 или же проблема с at91sam
Добавлено: Ср окт 23, 2013 15:17:05
balmer
Подозрительно, попробуй ради интереса скачать драйвер отсюда
http://www.fischl.de/usbasp/файл usbasp-windriver.2011-05-28.zip
Он точно устанавливается и работает.
Соответственно как пример inf файла можно смотреть usbasp.inf внутри архива.