dr_alexey
Участник-
Постов
15 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о dr_alexey
-
Звание
Участник
Контакты
-
Сайт
Array
-
ICQ
Array
Информация
-
Город
Array
-
Действительно... Все оказалось весьма просто, спасибо
-
Приветсвтую! Суть вопроса: имеется проект в Keil MDK-ARM v 4.11. Проект содержит исходники рабочей программы и загрузчика. Соответственно, имется две цели сборки - собственно программа и загрузчик. В зависимости от цели подключаеются разные стартапы и дефайны, но никак не могу разобраться, как использовать разные scatter-файлы при сборке (в одном случае __main должна находится в загрузчике, а в другом соответственно в программе). Есть ли возможность в Keil задать используемый scatter-файл в зависимости от собираемой цели ?
-
LPC23xx - записать во флеш "из программы"
dr_alexey ответил evgen2 тема в ARM, 32bit
На сходный вопрос представители NXP ответили мне следующее: В большинстве кристаллов (особенно более поздних) загрузчик прошит в ROM памяти, и не может быть стерт/заменен пользователем. Для остальных кристаллов hex-файл загрузчика есть на сайте NXP и его можно записать по JTAG в случае чего. Конкретно по кристалам узнавать у техподдержки поставщиков. -
LPC23xx - записать во флеш "из программы"
dr_alexey ответил evgen2 тема в ARM, 32bit
Не путайте функции для работы со встроенной flash и целый программны модуль. Вот код функции для записи во встроенную flash: #define IAP_LOCATION 0x7ffffff1 typedef void (*IAP)(unsigned long[], unsigned long[]); #define IAP_CMD_CopyRAMToFlash 51 static unsigned long command[5] = {0,0,0,0,0}; static unsigned long result[3]= {0,0,0}; static IAP iap_entry = (IAP) IAP_LOCATION; unsigned long IAP_CopyRAMToFlash (unsigned long dst, unsigned long src, unsigned long count) { command[0] = IAP_CMD_CopyRAMToFlash; command[1] = dst; command[2] = src; command[3] = count; command[4] = OSCclk / 1000; iap_entry(command, result); return result[0]; } Что именно скомпилирует RealView (который Вы называете Keil) и не скомпилирует GCC? Другое дело специфичные для компилятора вещи, например запрещение прерываний: __ARMLIB_disableIRQ(); // Взято из примера на Сахаре (полагаю для GCC) __disable_irq(); // Для RealView P.S. давайте воздержимся от предположений по поводу опыта друг друга. Форум не для этого -
LPC23xx - записать во флеш "из программы"
dr_alexey ответил evgen2 тема в ARM, 32bit
Не надо выдумывать проблем, которых нет. В приведенном Application Note есть два варианта кода - ассемблерный и C. Если используемый Вами C компилятор соблюдает соглашение ARM о вызове функций, то первые 4 параметра будут переданы через регистры. Другого способа записи встроенной flash из кода, кроме как использование функций встроенного загрузчика нет, насколько мне известно. -
LPC23xx - записать во флеш "из программы"
dr_alexey ответил evgen2 тема в ARM, 32bit
Посмотрите user manual, сайт www.nxp.com и этот форум на предмет "In application programming". Программирование встроенной Flash в LPC армах осуществляется через функции встроенного загрузчика. Вот, например аппликашка с сайта nxp: http://www.nxp.com/acrobat_download/applic...s/AN10256_1.pdf -
Да, WDT не иницилизирую
-
Доброго времени суток! Есть программа для проца LP2368 (C++, RealView MDK-ARM 3.50) - вывод символов в последовательный порт. Под отладчиком (MT-Link) работает отлично, пробую зашить во флэш - на порту тишина. Контрольная сумма в таблицу векторов при прошивке добавляется, на входе P2.10 подтяжка к питанию. Аналогичная программа на С запускается без проблем. В чем может быть дело?
-
Алиса, я им ничего не сказал... (с) Устройство самое по нынешним временам обычное - GPS/ГЛОНАСС трекер + чтение некоторых параметров по CAN + GSM модем. Спасибо Step_Arm за информацию - как раз то, для чего создавалась тема. В конце-концов остановились на lpc2366/68 - решение проверенное, куча наработок, в последствии можно будет заменить на 17хх - по пинам совместимы. В lpc2294 не хватает uart-ов, а так машинка не плохая.
-
Спасибо всем откликнувшемся. Склоняюсь к lpc1768 (будем ставить не под капот), всзвязи с этим вопрос - имеется JTAG-адаптер MT-link v5, он заработает с этим контроллером (скачал нежадный Keil 3.50)?
-
Спасибо! Действительно, это температурный диапазон. В общем, насколько я понимаю, можно спокойно брать lpc? А с lpc17xx кто-нибудь работал уже? Нашлись багофиксы уже?
-
Это понятно, нормальной разводки платы никто не отменял, другое дело электромагнитная совместимость самого контроллера - чувствительность к помехам по цепи питания например, которые все равно будут в этих условиях работы. У Renesas например есть специальный документ - Automotive MCU, в котором перечеслены контроллеры, расчитанные на работу в сложных условиях. Да и у NXP есть аналогичная серия мк, правда только на 51-м ядре.
-
Здравствуйте! Есть потребность сделать устройство, которое будет работать в автомобилях, питаясь от ботовой сети. По функционалу/цене подходят контроллеры lpc2368 (может быть lpc1768), однако на сайте nxp применение automotive заявлено только для 51 серии :crying: Всвзязи с эти вопрос: кто-нибудь использовал эти контроллеры (или вообще армы от nxp) в автомобилях? как они себя проявляют в плане emc? Не хотелось бы менять серию устройств, когда выяснится, что контроллеры глючат, если на свечах изоляция плохая...
-
pppd в uClinux
dr_alexey ответил Carolinus тема в Операционные системы
Спасибо Carolinus, проблема решилась. Привожу порядок действий, может кому пригодится. 1. Включаем поддержку ppp в ядре: Networking support Networking options->TCP/IP Networking, IP Tunneling Network Device support PPP PPP filtering PPP support for async serial ports Устанавливаем приложения pppd (MPPE enabled) и chat 2. Должно присутствовать устройство /dev/ppp. У меня например это делается добавлением строки ppp,c,108,0 в секцию DEVICES по адресу <путь к ядру>/vendors/EmbeddedArtists/LPC2468OEM_Board/Makefile 3. В /etc/ppp/peers создаем файлы gprs и chat_connect, в /etc/ppp файлы pap-secrets и chap-secrets: файл gprs содержимое (для модема на ttyS1 и скорости 19200, опсос mts): # Most GPRS phones don't reply LCP echo's lcp-echo-failure 0 lcp-echo-interval 0 # Debug info from pppd: debug # Serial device to which the GPRS modem is connected: /dev/ttyS1 # Serial port line speed 19200 # Hardware flow control crtscts # Use modem signal lines modem # Connect script to initialize the GPRS modem and start the connection connect '/bin/chat -v -e -V -f /etc/ppp/peers/chat_connect' # pppd must not propose any IP address to the peer! noipdefault # Accept peers idea of our local address ipcp-accept-local # Accept peers idea of its (remote) address ipcp-accept-remote # Add the ppp interface as default route to the IP routing table defaultroute # DNS servers from the modem usepeerdns # The phone is not required to authenticate noauth # Username user "mts" файл chat_connect содержимое (одной строкой!!!): SAY "\nstaring chat... \n" '' AT TIMEOUT 12 ABORT 'BUSY' ABORT 'NO CARRIER' ABORT 'VOICE' ABORT 'NO DIALTONE' ABORT 'NO ANSWER' OK ATH OK ATE1 OK 'AT+CGDCONT=1,"IP" ,"internet.mts.ru"' OK ATD*99***1# TIMEOUT 22 SAY "\nwaiting for connect... \n" CONNECT "" SAY "\nConnected." файл pap-secrets (идентичен chap-secrets) tele2 * tele2 * megafon * megafon * mts * mts * beeline * beeline * 4. Запуск соединения: pppd call gprs. Просмотр состояния соединения - ifconfig (должен появится интерфейс ppp0). P.S. На моей плате установлен проц LPC2468 без MMU-модуля и в используемом uClinux не поддерживается fork, как следствие pppd при запуске остается подцепленным к консоли, несмотря на параметр updetach. Лечится запуском pppd в фоновом режиме: pppd call gprs& P.P.S. Еще раз спасибо за помощь Carolinus -
pppd в uClinux
dr_alexey ответил Carolinus тема в Операционные системы
Доброго времени суток! Пытаюсь запустить pppd в ucLinux (ядро 2.6.21, патч от EmbeddedArtists для проца LPC2468). В ядре включена поддержка ppp и chat, в /dev создаю устройтство ppp,c,108,0. При запуске pppd выдается сообщение: munmap of non-mmaped memory by process 138 (pppd): a0ba8600 и возвращаемся в командную строку. Скрипты для подключения и вывод терминала привожу ниже. скрипт gprs: lcp-echo-failure 0 lcp-echo-interval 0 тodetach debug connect /etc/ppp/peers/chat_connect /dev/ttyS1 19200 crtscts local :10.0.0.1 noipdefault ipcp-accept-local ipcp-accept-remote defaultroute usepeerdns nopcomp noaccomp novj novjccomp nopcomp noaccomp noauth user mts mtu 576 скрипт chat_connect: #!/bin/sh /bin/chat -v \ TIMEOUT 5 \ ECHO ON \ ABORT '\nBUSY\r' \ ABORT '\nERROR\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nNO CARRIER\r' \ ABORT '\nNO DIALTONE\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ TIMEOUT 12 \ SAY "Press CTRL-C to close the connection at any stage!" \ SAY "\ndefining PDP context...\n" \ OK ATZ \ OK AT+CGDCONT=1,"IP","internet.mts.ru" \ OK ATD*99***1# \ TIMEOUT 22 \ SAY "\nwaiting for connect...\n" \ CONNECT "" \ SAY "\nConnected." \ SAY "\nIf the following ppp negotiations fail,\n" \ SAY "try restarting the phone.\n" вывод терминала: # pppd call gprs munmap of non-mmaped memory by process 138 (pppd): a0ba8600 # Есть идеи, в чем проблема?