Jump to content

    

Aaron

Свой
  • Content Count

    257
  • Joined

  • Last visited

Everything posted by Aaron


  1. Есть еще приборы лабораторные типа toneohm 950 - цепляешь электроды в разных местах, а потом щупом/пробником ищешь и локализуешь место, в котором обрыв/кз. Можно во всякие метрологические лаборатории позвонить, может кто имеет нечто подобное.
  2. По идее, можно в начало готового бинарника подставить переадресацию на начало вашего загрузчика (&sp и &Reset_Handler), чтобы он стартовал. Далее, в коде загрузчика явным образом должны храниться адреса &sp и &Reset_Handler, взятые из оригинального бинарника. В конце работы загрузчика эти сохранённые адреса используете, чтобы задать __set_MSP() и прыгнуть в Reset_Handler оригинального бинарника. Принципиальных проблем не вижу, но сам не пробовал. Напишите, если на практике всё получится. Тема интересная. А ещё прошивки иногда создают в свободном пространстве флеша структуры с данными. И загрузчик соответственно может тупо затереться.
  3. По теме - если возврат в resethandler (или куда там еще у кого) не предполагается - то у сишных функций аттрибут noreturn надо ставить - и стек не будет использоваться.
  4. Интересный вы человек. У вас устройство не работает, и вы не понимаете почему, но при этом не хотите проверять те советы, которые вам дают. Инфа о VID/PID даст однозначный ответ - есть у вас физически обмен по USB, или его нет. Следующие вопросы важны, т.к. чтобы устройство могло проинициализироваться, ему нужен хороший USB тракт. У вас инициализации даже нет (если VID/PID = 0000/0000), а вы про обмен данными думаете... Тем более некорректно сравнивать мосты USB2.0 FullSpeed (12Мбит/с) и USB2.0 HighSpeed (480Мбит/с) - к ним требования по качеству трассы абсолютно разные. Ещё вариант - контакт №59 PWRSAV# подтянут к питанию? на схеме 4.1 он не используется - болтается в воздухе. Попробуйте подтянуть.
  5. И всё же, пока драйвера не установлен, будет неизвестное устройство, в свойствах которого можно посмотреть VID/PID. Дайте точный ответ - у вас там 0х0000/0х0000? Тип корпуса QFN или TQFP? В качестве пайки полностью уверены? Если где-то ложная пайка, попробуйте пальцем надавить на микруху и включить. Далее: по питанию у вас всё нормально? ёмкости достаточные стоят - прямо как по схеме рисунка 4.1, других потребителей без ёмкости нет? в качестве разводки платы уверены? длина дифф. линий, волновые сопротивления, опорные слои? подключение земли и корпуса со стороны USB-разъёма тоже через 0 Ом резистор осуществляется, как и в схеме рисунка 4.1? Попробуйте поменять перемычку 0 Ом на параллельные 1 МОм и 1000 пФ. кабель USB стандартный используете, с ним проблем не может быть? Просто если у вас одинаковое поведение на всех платах, то проблема скорее всего в качестве схемотехники/топологии. Надо в ту сторону копать.
  6. в диспетчере устройств usb vid/pid определяет или нули одни? Если нули, то это просто передергивание линии. Почему pwren# в 1? У него активный ноль. То есть не может стартануть? По документации на вход можно сигнал с генератора подавать?
  7. Хочу заметить, что USB очень капризный интерейс. Вы зря объединили gnd и shield на разъеме. Развяжите их - между ними поставьте в параллель резистор 1МОм 250В и кондер 1000пФ 250В. Еще можно ферритовое колечко на usb кабель надеть. Вторая мысль - может у вас кварц хреново работает на входе в ft2232? емкости к кварцу правильно подобраны? Usb не терпит шалостей с тактовой.
  8. > полностью перестает работать ... Можно уточнить, перестаёт работать только на время флуда, и потом самовосстанавливается? Или всё же подразумевается, что после прекращения флуда уже не восстанавливается работоспособность стека?
  9. > 1) как это можно сделать в Си, учитывая, что код формируется до вызова main() Вам надо написать функцию reset handler (точное имя определено в crt..s). Вы её можете написать на Си. Или возьмите исходник crt ассемблерный и под себя его перепишите. > 2) как указать в линкере, чтобы стек был в нужном месте, нужного размера. Вы же уже ответили сами строчкой выше: .section my_stack, stack, address(0x1800) .space 0x100 Определите глобальные константы исходя из этой секции, аналогичные __SP_init и __SPLIM_init - и используйте свои константы в своём файле инициализации. в gcc это всё можно задать .ld файлом, в keil - scatter. Для pic надо мануалы курить, наверняка тоже есть нечто аналогичное.
  10. В стандартах кодирования обычно разжёвывается каждое правило - в первую очередь их смотрите. Все они в чём-то похожи, в чём-то отличаются. MISRA C JPL Coding Standard for C SEI CERT C Coding Standard http://google.github.io/styleguide/cppguide
  11. #ifndef Config_H_ ........................ TstackLow Test; <<<<<!!!!!Ошибка!!!!!!!! #endif *рукалицо* К сожалению, таких горе-программистов сейчас полно. Когда так делают, рассуждают типа "этот файл всё равно локальный и будет добавлен только в одно конкретное место в одном сишном файле. препроцессор их объединяет перед компиляцией, а мне удобнее прямо здесь и сейчас объект объявить". А потом внезапно: @pokk, по вашему вопросу: почитайте литературу на тему высокой связности кода и больше никогда так не делайте.
  12. RCALL __psv_init RCALL __crt_start_mode, __crt_start_mode_normal RCALL __data_init, __data_init_da и ещё сам код верхнего уровня - тоже название функции надо знать - типа reset_handler, __reset, __crt_reset - map-файл посмотреть. Про синтаксис компилятора не подскажу, но судя по всему вы знаете что и как делать. Первый момент. Вам надо в линковщике все эти функции явно объявить внутри секции, относящейся к бутлодеру. Второй момент. Если вы всё делаете в рамках одного проекта, то у вас секция .bss и .data будут содержать сведения как о загрузкике, так и о приложении. Переписывая приложение, размер занимаемого места секциями может измениться - вы всё равно влиять будете на загрузчик. Чтобы это исключить, вам надо в явном виде все константы и переменные, относящиеся к приложению, определять в коде в секцию приложения. Имхо это слишком большой гемор, лучше сделать два независимых проекта bootloader и app. Могу предположить, что вы хотели сэкономить место на общих функциях - типа, в бутлодере есть инициализация и функции по работе с периферией, которые в основной проге тоже используете. В таком случае выделите в отдельную секцию в явном виде по конкретному адресу место под структуру, которая будет хранить ссылки на ваши "общие библиотечные" функции. Тогда в основном приложении вам достаточно объявить просто прототипы этих функций, взять ссылки на них из предопределённой структуры - вот и будет экономия места. Других причин создавать загрузчик и приложение в одном проекте я не вижу.
  13. На заметку - ещё при работе с double могут быть подводные камни в части выравнивания адресов до размера sizeof(double) - стек выравнивается по-умолчанию обычно на 4 байта (на примере corte-m) и по размеру и по адресу, надо до 8 байт выравнивать. Иначе тоже может в строку попасть не то, что вы ожидаете.
  14. лови готовый код, а то ещё потом подводные камни встретишь... JumpToApplication(ADDR_USER_START); обрати внимание - в NVIC_SetVectorTable смещение относительное задаётся, а не абсолютный адрес void JumpToApplication(uint32_t addr) { typedef void (*pFunction)(void); pFunction Jump_To_Application; uint32_t JumpAddress; if(addr < ADDR_USER_START) { // printf("Try to start User App from BL code area!\r\n"); return; } /* Test if user code is programmed starting from address "ADDR_USER_START" */ uint32_t estack_label = (*(__IO uint32_t*)addr) & 0x2FFE0000; // printf("estack_label @ 0x%08X: 0x%08X\r\n", addr, estack_label); // printf("ADDR_RAM_START, RAM_SIZE: 0x%08X, 0x%08X\r\n", ADDR_RAM_START, RAM_SIZE); if (estack_label == ADDR_RAM_START) { __disable_irq(); // __disable_fault_irq(); NVIC_SetVectorTable(NVIC_VectTab_FLASH, FLASH_BL_SIZE); JumpAddress = *(__IO uint32_t*) (addr + 4); Jump_To_Application = (pFunction) JumpAddress; /* Initialize user application's Stack Pointer */ __set_MSP(*(__IO uint32_t*) addr); __set_CONTROL(0x00000000); // switch to "main" stack pointer PSP // код найден по ссылке code from http://www.freertos.org/FreeRTOS_Support_Forum_Archive/July_2011/freertos_Cortex_M3_port_fault-stack_MSP_setup_4606104.html // Ensure that normal processing runs on PSP ("Process" Stack // Pointer, in "thread mode" or "normal mode"). Processor starts // out of reset using MSP, so unless the RTL has already switched, we // need to switch here. // printf("CONTROL register=%08lX, stack in use is %s\n", // __get_CONTROL(), (__get_CONTROL()&0x2) ? "PSP, need to switch." : "MSP, OK."); // if( (__get_CONTROL()&0x2) != 0 ) { // // Ooops, we're using PSP "Process" Stack Pointer // // Set up "main" stack pointer and switch to it // //__set_MSP(__get_PSP()); // copy current stack pointer value into PSP // __set_MSP(*(__IO uint32_t*) addr); // __set_CONTROL(0x00000000); // switch to "main" stack pointer PSP // //__set_CONTROL(0x00000002); // switch to "process" stack pointer PSP // printf("After stack pointer switch: CONTROL register=%08lX, stack in use is %s\n",__get_CONTROL(), (__get_CONTROL()&0x2)?"PSP":"MSP"); // } Jump_To_Application(); } else { printf("No UserApp!\n"); }; }
  15. Электрическая надежность STM32.

    stm32 очень любят подделывать, шибко популярные камни. Отсюда скорее всего и проблемы с портами. Покупайте в надёжных проверенных конторах, - у нас с stm32 проблем никогда не было.
  16. Требуется опытный (ведущий) инженер-электроник, специализация человек-оркестр Сразу предупреждаю! В наших реалиях требуется человек-оркестр, как любят говорить на этом форуме. Если ещё не испугались - читаем дальше... Место работы: г. Москва, г. Зеленоград, АО «НТЦ ЭЛИНС» 1. Обязательные требования: 1.1 отличное знание цифровой схемотехники; 1.2 понимание особенностей работы силовых схем; 1.3 хорошее знание аналоговой схемотехники; 1.4 опыт проектирования крупных сложных схем (условно, схема Э3 на 50 страниц формата А3); 1.5 опыт проектирования с учётом ЭМ совместимости; 1.5 отличное знание современной элементной базы (как импортной, так и отечественной); 1.6 хорошее знание технического английского (плотная работа с документацией производителей); 1.7 опыт работы с системами контроля версий; 2. Желательные требования: 2.1 практический опыт разработки "цифры" для совместной работы с аналоговыми ВЧ-схемами; 2.2 опыт разработки простых проектов для CPLD (типа логического управления вентилями); 2.3 опыт разработки кода на C/C++ под микроконтроллеры (PIC / ARM Cortex-M3) и под ПК; - простые проекты под 1-2 задачи; - проекты средней сложности с pthreads, RTOS, mutex/samaphores; - технологическое ПО для ПК для проверки работы устройств; 2.4 опыт использования систем управления проектами (mantis, redmine и т.п.); 2.5 опыт работы в Mentor Graphics; 2.5 опыт в разработке топологии (формулирование требований / проверка тополога / непосредственное участие в трассировке); 3. Характер выполняемой работы: 3.1 разработка архитектуры устройства; 3.2 разработка структурных, функциональных, электрических схем: - использование процессорных модулей форм-фактора COM-ETX, COM-Express и т.п. - периферия самая разнообразная - релейные сигналы, панели ЖКИ, мосты PCI/PCIe, Ethernet 1G, проприетарные протоколы и стандарты передачи данных... - проектирование устройств для работы в условиях -50С/+60С и круче 3.3 планирование объёма и перечня задач, декомпозиция на подзадачи и распределение работ в команде разработчиков (2-4 человека); 3.4 постановка и распределение задач конструкторам, техническим писателям; 3.5 моделирование отдельных узлов электрических схем (LTSpice); 3.6 взаимодействие с Cи-программистами и VHDL-программистами или самостоятельная разработка кода ПЛИС/МК/ПК; 3.7 сопровождение изделий в производстве: - решение вопросов в цеху - первичная отладка изделий - регулировка изделий, разработка инструкций по регулировке 3.8 внутрисхемная отладка разрабатываемого кода, самостоятельная и совместная регулировка как отдельных плат, так и изделий/комплексов в целом; 4. Зарплата: 4.1 в зависимости от результатов собеседования, чистыми на руки: - от 55 до 70 тыс. руб. - если не удовлетворяете основным требованиям, но мы готовы вас брать на "обучение" - от 70 до 90 тыс. руб. - если удовлетворяет всем основным требованиям - от 90 до 110 тыс. руб. - если может самостоятельно программировать - от 110 тыс. руб. и выше - если покажете себя действительно тем человеком, которого мы ищем 4.2 структура зарплаты: оклад + 30% премии. Премии выплачиваются всегда, срезаются только за серьёзную провинность, случаи единичны; 4.3 на время испытательного срока 3 месяца з/п выплачивается по результатам работы. Итоговая з/п назначается по результатам испытательного срока (может быть пересмотрена как в меньшую, так и в большую сторону); 4.4 повышение зарплаты по решению руководства – если к работе нет претензий, то стабильно раз в год повышаем; если человек профессионально растёт, то уровень повышения з/п опережает уровень инфляции; 5. Условия работы: 5.1 полная занятость 5/2; 5.2 оформление по ТК РФ; 5.3 полностью «белая» зарплата, выплачивается стабильно 2 раза в месяц, перебоев за 10+ лет не было; 5.4 график отпусков согласовывается заранее, с разбивкой по 2 недели между сезонами весна/лето и осень/зима; 5.5 есть доп. соц. пакет для сотрудников, вносящих значительный вклад в развитие предприятия; 6. О предприятии: 6.1 область разрабатываемых изделий: радиоприёмопередающие средства связи; наземные приёмные комплексы средств радиосвязи; бортовые телеметрические системы; системы питания и автоматического управления СВЧ усилительных модулей; специализированные ЭВМ; в среднесрочной перспективе (до 5 лет) – системы управления ФАР, АФАР; 6.2 в отделе работает 20 человек (инженеры-электроники: схемотехники/программисты); 6.3 средний возраст разработчиков в отделе менее 30 лет; 6.4 все проекты находятся под SVN контролем; 6.5 постановка задач, планирование, контроль, взаимодействие с другими службами – через собственную внутреннюю PDM систему, созданную на базе Redmine; 6.6 электронный документооборот, автоматическая генерация СП, ПЭ3 и ВП из проектов MG; 6.7 стабильный рост предприятия, количества и сложности ставящихся задач. Приоритеты - стабильность и расширение спектра компетенций. 6.8 общий штат сотрудников 1000+ человек, из них инженерный состав - около 400 человек. 7. От себя: 7.1 есть уголок отдыха: играем в обед в настольные игры; коллектив представляет собой опытную команду диванных экспертов и аналитиков в области футбола и большой политики :) 7.2 рядом с работой есть спортивная площадка и зоны отдыха; 7.3 Сама разработка схемотехники в жизненном цикле разработки изделий у нас занимает не так много времени, поэтому и занимаемся попутно другими делами - помогаем с топологией, где-то сами разработчики всё разводят, сами и программируем. Опять же, оформление документации по ЕСКД никто не отменял - не забываем про ТУ, ПМ и т.п. - есть разделы документов, которые никто кроме разработчика описать и не сможет. 7.4 К сожалению, у нас хронические проблемы с цехом, и очень часто регулировку изделий приходится брать на себя - частично проблема связана с качеством самой РКД и инструкций 7.5 более подробно о работе и условиях могу рассказать только при личных контактах! Здесь я не могу всё писать. Контакты: В последнее время на форуме не появляюсь, лучше звоните (915) 228-02-33 – Константин. P.S.: зная особенности троллинга на нашем форуме, сразу прошу воздержаться от "профессиональных" комментариев и обмусоливания отдельных пунктов объявления. Требования вполне реальные, всё обсуждаемо по телефону. При составлении требований ориентируюсь на своих ребят. Работы много, и один человек не обязан да и не сможет охватить сразу весь спектр задач.
  17. Такой интерес к обсуждению затравки "человек-оркестр"! :) Прикольно, что в соседних ветках куча объявлений, где требуются по факту те же самые "человеки-оркестры", (и схему разработать, и плату развести, писать код, регулировать и оформлять ЭД) но никто там не хочет тему мусолить. Ладно, давайте все помои сюда! =) Шучу... Если кто-то считает себя узким специалистом, но зато полным профи своего дела - прошу, звоните - пообщаемся! Николай Семёнович, я вас убедительно прошу - ваш неугасающий интерес к этой теме, а также многочисленные истории из своей жизни и о своей жизни рассказывать в разделе "Общение".
  18. И снова попытка натянуть стандартный шаблон. Форумчане уже досконально знают, кто и как у нас работает, как мы все спиногрызы сидим и мучаем бедных спецов. Затронул тему живую, её можно мусолить вечно будет - это как политика, верно? Заинтересовавшихся прошу связываться со мной, а не разводить флуд.
  19. Итак, кого смущает фраза "человек-оркестр", перефразирую: ищем специалиста, желательно универсала. С вопросами по существу - звоните. Предложение актуально всё время, т.к. вал новых работ идёт, нам рук не хватает, все сотрудники перегружены.
  20. Я специально расписал вакансию подробно, чтобы было максимально честное и полное представление о том, чем будет человек заниматься. А то как у нас бывает часто в фирмах - приходит на одну должность, а в итоге приходится и самому платы разводить, и самому программировать их, ещё и стендовое оборудование продумывать и проги для ПК писать. Разве не так? ))) Я очень рад за тех, кому удаётся занять полностью своё место, и заниматься исключительно любимым делом (например, прогать микроконтроллеры, и чтобы к нему не приставали с оформлением по ЕСКД/ЕСПД). А ещё есть люди, которым просто всё интересно, которые могут действительно заниматься разными задачами. Честно, мне прикольно вас читать! У вас настолько поверхностные и ошибочные суждения! Насчёт тех, кто "видел наш коллектив" - отдельная дискуссия. А что именно видели? Кого? У нас, извините, отделов разработчиков на фирме только 25. С кем вы имели опыт общения? Я за других людей вообще не могу говорить и не смею. Кстати, в догонку, есть люди, которые у нас работали и которые показали себя скверными специалистами, наверное и комментариев потом от таких людей лестных ждать не стоит?.. Психология - хобби. Мне 33 года, на фирме работаю начиная с института с 2006г (у нас тогда было около 6-8 человек), прошёл полный путь от техника-электроника до руководителя (сейчас у нас 65 человек, в т.ч. люди старшего поколения и пенсионеры), к сожалению последнее время в силу должности приходится заниматься в основном бумажками, но иногда выбиваю время и на разработку. За это время делал схемы, писал код под PIC/C51/AVR/ARM7/CM3, под ПК, разводил топологии плат до 12 слоёв с HiSpeed и аналоговыми ВЧ трактами. В хвост и гриву гонял все ГОСТЫ, ЕСКД. Есть в коллективе универсалы, есть спецы узкого профиля. Если человек говорит, что он не знает и не хочет заниматься топологией, то он и не будет. У нас есть свой конструкторский отдел с топологами для этого. Смотрите и читайте первый пост внимательно. Весь. Есть требования, есть желания. Может, уже хватит мусолить личности и фирму? Есть предложение, жду спрос. Кто не хочет - я же не заставляю. Зато достаточно общался с людьми с разных городов и знаю, в каких улосвиях многие работают.
  21. Николай Семёнович хочет устроиться к нам в фирму, судя по первому вопросу, ничего про нас не знает, звонить нам не звонил, но зато судит от души. Коллеги, это смешно! Пока я вообще не увидел, кого и за что уважать из комментаторов - возраст и опыт сам по себе не делает человека мудрее и лучше. Здесь на трёх страницах вижу только "самость" - скозит из всех щелей. Как психолог могу сказать - нашли себе отдушину и отрываетесь тут за все прошедшие годы и накопленные обиды на тех, с кем довелось работать.
  22. Очень жаль, что здесь устроили флуд и рефлексию. Для чатика есть раздел "Общение". А модераторы такой флуд, видимо, приветствуют... Вы, матёрые волки, сидите здесь и бичеванием занимаетесь ради чего? Какую цель преследуете, понося совершенно неизвестных вам людей и целый коллектив? Стыдно на вас смотреть таких. В реальной жизни такое же отношение будет к молодым, небось. Вот и стереотипы появляются... Примечание: вопрос вам для размышлений, прошу на него здесь не отвечать. По существу: очень много людей, которые к нам приходят на собеседование, работают в таких же условиях - выполняют работу по разным направлениям, только в гораздо худшей форме, зачастую в одиночку. Мы стараемся всё же заниматься специализацией, насколько это возможно, и не заставляем человека заниматься тем, что ему не нравится. Тот, кому действительно нужна работа, может позвонить и со мной пообщаться, приехать и увидеть всё своими глазами. Я же не зря расписал разные требования и предложения - прекрасно понимаю, что идеального сотрудника найти почти невозможно.
  23. Скорее да, чем нет. Скорее всего просто в коллективе вам будет тяжело работать из-за большой разницы в возрасте (психологический барьер). Опыт подобной работы есть, пытались привлекать к работам людей 50+ - взаимодействия не получалось. Скажем так, руководство требует набирать людей, от нас требуют формализовать (в виде карточек по подбору персонала) требования к людям. Отдел кадров работает как может, через них к нам поступает много людей на собеседование, но вот в случае как сейчас - проще на форум написать. Как скажете, спорить не буду, вам конечно виднее.
  24. STM32F4Discovery + SDIO DMA

    посчитал. 112 байт не хватает в начале. а они точно нулевые? м.б. там нечитаемые символы, отличные от 0x00 и 0xFF?
  25. Keil uVision ARM v 5.16a странное поведение

    Цитатапрограмма иногда идёт иногда нет, зависит от порядка расположения переменных, функций. Если поменять их порядок местами, то иногда удаётся получить работающий код при O3 посмотрите map-файл, что располагается в памяти рядом с main() в нерабочих билдах, и что в рабочих билдах. Соседи меняются? Вот соседей и проверять дальше попробовать