svl.soft
Участник-
Постов
31 -
Зарегистрирован
-
Посещение
Весь контент svl.soft
-
Контроллеры Kinetis от Freescale пробовали? Рекомендую, STM и NXP курят в стороне. Kinetis и по цене дешевле, характеристики и функционал впечатляет.
-
Два проекта на одном кристалле
svl.soft ответил svl.soft тема в ARM, 32bit
Спасибо за помощь и Ваши рекомендации, Уважаемый aaarrr! :) -
Два проекта на одном кристалле
svl.soft ответил svl.soft тема в ARM, 32bit
Спасибо за ответ. Т.е. взять стартап программы Б, создать в нем AREA и прописать импорт имен функций по адресам расположенных в программе А? Вот стартап дефолтный. startup_MK60N512MD100.zip Это как я понимаю, при условии использования RTX. -
Keil + Ulink mini
svl.soft ответил zovsilab тема в ARM, 32bit
А через штатный загрузчик LPC2xxx, с помощью вот этого не подойдет? -
Два проекта на одном кристалле
svl.soft опубликовал тема в ARM, 32bit
Здравствуйте коллеги. Есть две программы, А и Б. Программа А представляет собой не только загрузчик, но и содержит различные "полезные" функции; криптография, PRNG, CRC, etc. Загрузчик по какому нибудь комбинаторному состоянию, загружает проект (программа Б) в память и передает ей управление, стандартная операция, тут вопросов нет. Вопрос в следующем, как из программы Б, вызвать эти "полезные" функции программы А? У Кейла примеров и описаний данного изврата не нашел, а может плохо искал... Про сохранение стека, счетчик команд, размещение функции по указанному адресу и т.д. это понятно, но не достаточно. Язык С, компилятор Keil, чип Cortex-M4. Может кто сталкивался с такой задачей? Заранее спасибо. -
Привет всем, продолжаем тему. :) Кто уже "катался" на TOWER-KIT, к примеру TWR-K60N512-KIT ? Как впечатление от чипов?
-
О да! И загоняли бы стек при каждом вызове функции подсчета CRC... Объявление static const uint_least32_t Crc32Table[256] = {... // Размещение массива в памяти программ (flash) Для каждого компилятора, объявления различны.
-
#include <stddef.h> #include <stdint.h> /* Name : CRC-32 Poly : 0x04C11DB7 x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1 Init : 0xFFFFFFFF Revert: true XorOut: 0xFFFFFFFF Check : 0xCBF43926 ("123456789") MaxLen: 268 435 455 байт (2 147 483 647 бит) - обнаружение одинарных, двойных, пакетных и всех нечетных ошибок */ const uint_least32_t Crc32Table[256] = { 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D }; uint_least32_t Crc32(const unsigned char * buf, size_t len) { uint_least32_t crc = 0xFFFFFFFF; while (len--) crc = (crc >> 8) ^ Crc32Table[(crc ^ *buf++) & 0xFF]; return crc ^ 0xFFFFFFFF; } И маленький совет. Если буфер данных загнать в подсчет CRC(любой) вместе с принятой контрольной суммой от отправителя, в вашем случае 20 байт, при совпадении СRC на выходе функции получите просто 0, тем самым дополнительно ничего пересчитывать не нужно.
-
Вопрос по толерантности портов ARM`а к 5В.
svl.soft ответил Freeman_Only тема в ARM
Чип хороший, но в данной теме не подойдет. При его питании Vcc = 5v (нам же нужна на выходе 5v логика), 0,7*Vcc = 3,5v (минимум для единицы) 0,3*Vcc = 1,5v (максимум для нуля) -
Что значит переделывать? Это же обычный Си. Я не совсем Вас понимаю, как в микроконтроллере, с использованием функции, аппаратно посчитать CRC? Ну это уже из темы ALTERA или XILINX.
-
Вопрос по толерантности портов ARM`а к 5В.
svl.soft ответил Freeman_Only тема в ARM
Под скоростью Вы наверное имели в виду "завал" фронта? Ну так резюк там не причем. Диоды "пифагорят"... Доп. емкость в цепи. Как правильно изложил artur_off, именно на вход. Вы уверенны что микросхема интерфейса CAN, ждет от вас уровня лог.1 в 3 вольта? Наверное не уверенны :) По этому лучше установить подобный чип 74HC4050. И беречь порты нужно, ой как беречь. -
Сделано в первую очередь. Ножка звенит на корпус. Площадка в порядке.
-
Да конечно, VIGON`ом под ультразвуком как все всегда. Я еще заметил другие фокусы данного чипа, например порт USB в режиме GPIO не работает, хотя в кейловском отладчике наблюдаю правильно настроенные регистры. Возможен и такой вариант, плата многослойная и по этой цепи, два переходных проходят через два слоя питания... Хотя подложку изготавливали с электроконтролем, а наши входную приемку через рентген проводят, хотя могли "проглазеть". А на изгиб, четырехслойку размером 60х40 взять тяжело. :blink:
-
Здравствуйте. Использую LPC2378 + внешняя RAM с батарейкой + Power manager. Чип ОЗУ, подключен к интерфейсу внешней памяти камня. После сборки устройства на печатной плате, проверил работу ОЗУ, путем записи случайных данных с контрольной суммой, с последующим считыванием и т. д. В общем все отлично и бесподобно. Перекинулся на другие модули проекта, вчера дошел до работы с ОЗУ. Чувствую, что то не так :laughing: Я в отладчик, да, дублирует данные. В общем ножка A11 на земле в камне. Соединения с ОЗУ, пин в пин, длина дорожки не более 40 мм. Было у кого такое, или я свитер неудачно рядом с платой снял?
-
Здравствуйте. Стоит задача подключения офисного принтера к USB HOST LPC2478. Если есть у кого нибудь опыт в данной теме, прошу разъяснить хотя бы где "рыть" информацию... Спасибо.
-
Здравствуйте. В даташите LPC2378, сказано к описанию функций портов: 5 V tolerant pad providing digital I/O functions with TTL levels and hysteresis. Но, доверяя, и как говорится, проверяй... :) В прототипе у меня LCD1602 5v, подключён к LPC2378, месяц пока пишу софт, страшного не произошло. Вопрос. Есть у кого нибудь серийные проекты работающие с 5в уровнями, и как себя чувствует при этом LPC2378? Стоит ли ставить резисторы, последовательно по линии порта на 5 вольтовый индикатор, дабы точок чуть прибрать? Или дядя Филипс усё предусмотрел таки?
-
Вопрос в следующем: Инициализировано три внешних прерывания EINT0,1,2. Проект работает нормально. После инициализации EINT3, его вектор становится одинаков с GPIO interrupts (PORT0, PORT2). Стр. 91 of 684 User manual. External Interrupt 3 (EINT3). Note: EINT3 channel is shared with GPIO interrupts Но ноги этих портов (P0.xx, P2.xx)у меня задействованы (кнопки, светодиоды etc.). Соответственно события на этих портах вызывают обработчик EINT3. Как задействовать EINT3 без GPIO interrupts (PORT0, PORT2)?
-
Здравствуйте. Есть ли возможность задействовать External Interrupt 3 (EINT3) в LPC2378 без shared with GPIO interrupts? Т.е. EINT3 функционально одинаковый с EINT0,1,2. Спасибо.
-
Vitaliy_ARM, большое спасибо. Помогло, всё работает.
-
Здравствуйте. В самом деле с этой флешкой работал давно, стыковать с 51 или с AVR, труда не составляло. С LPC 2378 бьюсь два дня, не получается. Запутался в режимах статуса I2STA. Если есть какой нибудь пример, или ссылка, подскажите пожалуйста. Заранее благодарен.
-
Работа с Battery RAM в LPC2378
svl.soft ответил svl.soft тема в В помощь начинающему
Пишу в Кейле под RTX, питание от литиевой батарее подано, RTC "тикает", есть необходимость использовать RAM 2K, использую способ: #define USER_RAM_BASE_ADDR 0xE0084000 #define NUM_DEVICE (*(volatile unsigned long *)(USER_RAM_BASE + 0x000)) . . . ВОПРОС! Имеется ли библиотечные функции работы с ОЗУ 2к(область памяти внутри микроконтроллера), питающиеся от лития? Или иной пример. Способы вроде: volatile int *i = 0xE0084000; Выдают ошибку компиляции... Следующий способ: typedef struct __ram { BYTE SerialNum; DWORD Value1; DWORD Value2; } UserData; UserData User1; Не сохраняет данные по выкл. питания ессно... ПРИ ЧЁМ ТУТ КЛОКИ?????? Я же не задал вопрос касабельный таймерам, PWM или UART? <<Память она и есть память?>> Если не можете ответить на вопрос, не обязательно перемещать тему! Просьба вернуть назад в форум ARM! Спасибо. -
Работа с Battery RAM в LPC2378
svl.soft опубликовал тема в В помощь начинающему
Есть ли пример работы с RAM (адрес 0xE0084000) под Keil? Спасибо.