Vitaliy_ARM
Свой-
Постов
508 -
Зарегистрирован
-
Посещение
Весь контент Vitaliy_ARM
-
IAR 5.11
Vitaliy_ARM ответил Laurica тема в IAR
Сложно. Получается, что с оберткой по-проще. Уже делал что-то подобное (прикрепил один из вариантов оберток). Еще пока не использовал наследование, пользовался подобными конструкциями: while(1) { if(Emac.CheckRx()) { // определяем указатель на приемный пакет Emac.RxData(&Buf,&Len); // обрабатываем ответ StUdp.EthDataProcess(&Buf,&Len); // отправляем ответ Emac.TxData(Buf,Len); } } Хотя, если использовать наследование, то можно это все превратить в одну функцию. Занялся формированием концепции программирования. Вы сказали для неторопливых, оценивали ли вы размер кода, когда несколько объектов наследуют один и тот же базовый класс? Непонятен момент, как компилируются функции этого базового класса. Для каждого наследника они дублируются или компилятор это как-то оптимизирует? isr.rar -
IAR 5.11
Vitaliy_ARM ответил Laurica тема в IAR
Хорошая ссылка. Привожу код для OpenIsr(): void OpenIsr(DWORD IntNum,DWORD Handler, DWORD Priority) { DWORD *vect_addr; DWORD *vect_cntl; VICIntEnClr = 1 << IntNum; if (IntNum < VIC_SIZE ) { vect_addr = (DWORD *)(VIC_BASE_ADDR + VECT_ADDR_INDEX + IntNum*4); vect_cntl = (DWORD *)(VIC_BASE_ADDR + VECT_CNTL_INDEX + IntNum*4); *vect_addr = Handler; *vect_cntl = Priority; VICIntEnable = 1 << IntNum; } } Немного конкретизирую идею Думал сделать отдельный класс TARGET, в котором будут находиться функции , а потом все классы сделать наследниками его. Класс, который написал - это просто пример. Наверное удобнее номер таймера передавать в конструкторе, а потом от этого прописывать прерывания в OpenIsr: typedef class _TIMER { public: _TIMER(DWORD TimerNum); void Init(); void Isr(); } Собственно на пути всего этого стоит то, что не могу передать функции OpenIsr адрес обработчика превывания (метод этого же класса), который она должна записать в регистр микроконтроллера (LPC2468). По ссылке, указанной вами, попытался создать в классе такой указатель: void (_TIMER::*pFunction) (); Потом в конструкторе попытался сделать так: _TIMER::_TIMER(void) { DWORD *p; pFunction = &_TIMER::Isr; p = static_cast<DWORD*>(pFunction); } На третью строчку в фигурных скобках таже ошибка, не может сконвертировать тип. Обертку C функции делать не очень хочется, каждый раз при создании класса ее придется тоже создавать. -
IAR 5.11
Vitaliy_ARM ответил Laurica тема в IAR
Потихоньку разбираюсь с C++. Не пойму один момент. Как известно, в ARM надо прописать адрес обработчика прерывания в VIC; Некоторый класс: typedef class _TIMER { public: void Init(); __arm void Isr(); }TIMER,*pTIMER; void _TIMER::Init() { ------------------- OpenIsr(TIMER1,(DWORD*)Isr,HIGH_PR); // определяем обработчик прерывания } __arm void _TIMER::Isr() { ---------------------- } Компилятор ругается, что нельзя сконвертировать тип. Пробовал и так конвертировать: OpenIsr(TIMER1,static_cast<DWORD*>(Isr),HIGH_PR); // определяем обработчик прерывания Ошибка таже: Error[Pa073]: invalid type conversion (from "__code __interwork void ()" to "DWORD*") Это вообще возможно или я в трех соснах блуждаю? -
PPPoE протокол
Vitaliy_ARM ответил Vitaliy_ARM тема в Сотовая связь и ее приложения
Оказывается возможно реализовать соединение между двумя компами. Делается сервер в интернете. На который заходят участники сети. Получают пути друг для друга. Потом уже связываются между собой, используя эти пути. Т.е. происходить соединение между ПК и сервером. Далее, скажем, другой инициатор сети, зная путь, прикидывается сервером и работает. -
IAR 5.11
Vitaliy_ARM ответил Laurica тема в IAR
Спасибо!!! Второй вариант заработал. :a14: -
IAR 5.11
Vitaliy_ARM ответил Laurica тема в IAR
Столкнулся с такой проблемой. Не могу в этом IAR експортировать функции (в данном случае __start_firmware()) из startup.s Прописал: SECTION .intvec:CODE:NOROOT(2) PUBLIC __vector PUBLIC __iar_program_start PUBLIC __vector_0x14 PUBLIC __start_firmware Тело функции: __start_firmware: ldr r0,=0x0 ldr r1,=0x0 ldr r2,=0x0 ldr r3,=0x0 ldr r4,=0x0 ldr r5,=0x0 ldr r6,=0x0 ldr r7,=0x0 ldr r8,=0x0 ldr r9,=0x0 ldr r10,=0x0 ldr r11,=0x0 ldr r12,=0x0 ldr r13,=0x0 ldr r14,=0x0 ldr pc, =(0x0008000) пытался вызвать: extern void __start_firmware(); main() { TargetInit(); __start_firmware(); } При компиляции выдается ошибка, что __start_firmware неопределена. В мануале написано, что для экспорта достаточно прописать PUBLIC __start_firmware. Может чего упустил? -
Хорошая идея. Если выбросить еще один ключ, и подать питание от LM2576 через диод на VBAT, CHG подключить тоже через диод (в этом случае можно использовать 5V стабилизатор, если падение на диодах будет >0,6 В). Батарею отключать одним ключем (все равно каким, p-канальным наверное немного лучше, проше батарею крепить, и стоят они не так дорого). Только придется на процессор питание брать с VBAT. Батарея будет дольше заряжаться. Терморезистор скорее всего придется повесить. Только как его вешать на такие аккумуляторы, как Lir14500.
-
Видимо оптимальнее будет повесить ключик на CHG SIM300D и ключ переменного тока на батарею. И управлять этим всем процессором. Наиболее дешевый вариант. :)
-
IAR 5.11 для ARM
Vitaliy_ARM ответил AlexeyVL тема в IAR
IAR синтаксис GCC не понимает :) Суть вопроса не меняется -
IAR 5.11 для ARM
Vitaliy_ARM ответил AlexeyVL тема в IAR
Что тут не понятного. Создать проект в IAR5.11. Поключить к нему заголовочный файл write_erase_secure_gnu.h. Повызывать из него функции, например. main() { TargetInit(); write_erase_secure_get_version(); } были так же поправлены строчки *.h файла на: extern __ramfunc WES_Return_Code write_erase_secure_user_sector(unsigned start, unsigned end, unsigned cclk); extern __ramfunc WES_Return_Code write_erase_secure_boot_sector(unsigned cclk); extern __ramfunc unsigned write_erase_secure_get_version(void); Добавил файл *.a в дерево проекта При компиляции компановщик выдает ошибку: Error[Li005]: no definition for "write_erase_secure_get_version()" [referenced from D:\BootLoader\Debug\Obj\main.o] что не так делаю? -
IAR 5.11 для ARM
Vitaliy_ARM ответил AlexeyVL тема в IAR
Хочу задать такой вопрос. (немного не по теме) Можно ли cкомпилировать библиотеки GCC ARM с расширением *.a в IAR? например эти: write.erase.secure.lpc2364.lpc2366.lpc2368.lpc2378.lpc2468.lpc2478.zip -
Коммутация сим-карт
Vitaliy_ARM ответил _zag_ тема в Сотовая связь и ее приложения
По хорошему надо найти спецификацию на симки. А то может получиться, что одни работают, а другие будут выгорать - на свой страх и риск. -
PPPoE протокол
Vitaliy_ARM ответил Vitaliy_ARM тема в Сотовая связь и ее приложения
Наверное буду пробовать этот вариант. С хамачи не все так просто, для доступа на сервер используется RSA шифрование, дабы это сервер не использовали кто попало. -
Коммутация сим-карт
Vitaliy_ARM ответил _zag_ тема в Сотовая связь и ее приложения
Где проверяли? -
Не заводится LPC2468
Vitaliy_ARM ответил Vitaliy_ARM тема в ARM
Нашел причину. Все оказалось банально. На внешнее прерывание INT0 был заведен сигнал, который при подаче питания был в 0 и запускался загрузчик. :07: -
Не заводится LPC2468
Vitaliy_ARM опубликовал тема в ARM
На плате стоит LPC2368 и стабилизатор LM2596-3.3 После подачи питания не заводится (как будто ФАПЧ не заводится). Стоит на короткое время перемкнуть пинцетом питание, все сразу работает. BrownOut детектор включен . Пробовал отключать - не помогает. Длительность фронта скачка питания на процессоре 0,5 мс. Сигнал чистый, без каких либо помех . При работе с J-TAG такой проблемы не наблюдается. Что это может быть? -
PPPoE протокол
Vitaliy_ARM ответил Vitaliy_ARM тема в Сотовая связь и ее приложения
Не проще. Зачем создавать клиентам проблемы. Протокол: запрос - ответ. Устройства будут в некотором интервале времени отсылать маленький пакетик серверу. Если ответа нет, значит сервер не доступен. Если доступен, начнется обмен. -
PPPoE протокол
Vitaliy_ARM ответил Vitaliy_ARM тема в Сотовая связь и ее приложения
Тема на границе между этой и сетями. Так как решаю задачу для GSM устройств, решил остаться здесь. Задача такая. Возможно устройство пойдет в серию. У клиентов может быть разный уровень доступа в интернет. Программе Хамачи все равно, каким способом пользователь получает доступ в интернет. Всегда можно соединить два компа. Собственно и хочу узнать, как это можно сделать из любой сети с любым уровнем иерархии. -------------------------------------------------------------------------- Про аську, если интересно, стучитесь -
PPPoE протокол
Vitaliy_ARM ответил Vitaliy_ARM тема в Сотовая связь и ее приложения
Да Вернее у него вообще нет IP для доступа к нему из вне. Доступ через прокси. -
PPPoE протокол
Vitaliy_ARM ответил Vitaliy_ARM тема в Сотовая связь и ее приложения
Формулирую точнее: Есть Пк, подключенный к интернету через прокси сервер (не столь важно). Есть три железки, в состав которых входит GSM модем и микроконтроллер. Задача, сделать связь между компьютером и этими тремя устройсвами. Существует три способа. 1. Сидеть с компа через телефон, у которого статический IP, но за это надо платить абонплату 2. Сидеть с телефона с динамическим IP. В этом случае надо использовать DDNS сервер типа dyndns.com, для того, чтобы устройсва узнавали IP адрес сервера. 3. Использовать туннелирование (PPP). Интересует версия 3. Немного начитался про хамачи. Вроде как он при старте заходит на свой сервер, регистрируется и получает некий IP адрес, при этом на сервере остается путь к этому компьютеру. Допустим на другом компьютере происходит тоже самое. После этого одному из пользователей нужно создать виртуальную сеть. Тогда второй может в нее зайти и между компьютерами устанавливается точка-точка. Что в действительности происходит не понятно. Посмотрел сниффером Ethernet пакеты. От моей машины идут пакеты протокола PPP, а ко мне два типа пакетов PPP и GTM. Пока разбираюсь что к чему. Может кто ссылку подкинет по теме -
Коммутация сим-карт
Vitaliy_ARM ответил _zag_ тема в Сотовая связь и ее приложения
А если попробовать что-то типа 74HC4066 и коммутировать все вместе с питанием? -
PPPoE протокол
Vitaliy_ARM опубликовал тема в Сотовая связь и ее приложения
Возникла необходимость управлять несколькими устройствами от одного компьютера через интернет, как по GPRS так и просто по интернет. Подобные темы обсуждались на этом форуме, например http://electronix.ru/forum/index.php?showt...&st=75& Но так и не увидел конечного решения для протокола PPP. Для компьютерных игр через интернет часто используют программу Хамачи: http://www.google.com/search?client=opera&...-8&oe=utf-8 Она создает некую вертуальную сеть. Зная имя сети и пароль можно зайти в нее. При этом устанавливается соединение точка-точка и ПК начинают видеть друг друга. Вопросы: 1. Не понятен алгоритм работы проги, может кто-нибудь осветить это? 2. Возможно ли сделать аналог этой проги в железе и связать устройства через сеть, которую создает хамачи? -
требуется совет по бутлоадеру
Vitaliy_ARM ответил romez777 тема в ARM
Тут смотря что за устройство. Если у вас часть инициализации вашего устройсва заложено в загрузчик, то можно сделать например так: После включения питания запускается загрузчик и ждет команд для загрузки, в этот момент вы можете перешивать фирмваре. Потом даете некую команду запуска приложения, после которой стартует приложение и на команды загрузчика не отвечает. Если у вас прикладная программа знать не знает про загрузчик. То надо их как-то разделить каким-то событием, например переключателем. Прибор после включения питания смотрит на этот переключатель, если режим загрузчика, грузите загрузчик, в противном случае грузится программа. -
В даташите написано, что может заряжать Ni-Cd, Ni-Mh и Li-ION, здесь есть плоские аккумуляторы: http://www.compel.ru/catalog/chem_sup/acc_li
-
Тоже не вижу смысла. Если ниже 3,4 В упадет, модем выключится. При подаче питания начать зарядку и включить модем. В принципе логика нормальная. Только что будет если батарея сдохнет? Повальная замена приборов по истечению срока эксплуатации батареи?