Jump to content

    

LessNik

Свой
  • Content Count

    106
  • Joined

  • Last visited

Community Reputation

0 Обычный

About LessNik

  • Rank
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва

Recent Profile Visitors

1360 profile views
  1. Компания объявляет об открытии двух вакансий: - Инженер-программист ПЛИС и микроконтроллеров - Инженер-программист Embedded Linux и Qt Резюме просьба высылать через https://hh.ru/employer/38891, раздел "Информационные технологии, интернет, телеком".
  2. АББ в России - крупная международная компания, лидер в области продуктов и технологий для электроэнергетики и автоматизации - объявляет об открытии двух вакансий: - Инженер-программист ПЛИС и микроконтроллеров https://hh.ru/vacancy/29343857 - Инженер-программист Embedded Linux и Qt https://hh.ru/vacancy/29441566 Резюме просьба высылать через hh.ru.
  3. АББ в России - крупная международная компания, лидер в области продуктов и технологий для электроэнергетики и автоматизации - объявляет об открытии вакансии Embedded Programmer (Разработчик встроенного ПО) Обязанности: Разработка системного ПО для программно-аппаратных комплексов, разрабатываемых в компании. Требования: - Опыт программирования на языках С/C++. - Опыт программирования на языке ассемблера (желательно для МК 8051). - Опыт работы с системой контроля версий. - Опыт работы с микроконтроллерами архитектуры 8051, ARM7, Cortex-M(0/3). - Знание IAR. - Опыт работы с интерфейсами SPI, IIC, UART, RS232/485. - Знание средств отладки. - Английский язык на уровне уверенного чтения технической документации. - Инициативность, целеустремленность, активность, готовность к обучению. Является плюсом: - Опыт применения и адаптации готового стека TCP/IP для встроенного ПО. - Опыт разработки под RTOS. - Опыт разработки под Linux. - Знание стандартов и протоколов IEEE 802.3, IEC61850, IEC60870-5-101/104, NTP/SNTP. - Знание UML. - Базовое знание Python Мы предлагаем: - Фиксированный оклад+бонусная система - Социальный пакет (оплачиваемое питание, мед.страховка, дополнительные льготы) - Офис расположен Москва, м. Авиамоторная Резюме просьба высылать в личные сообщения или через hh.ru: http://hh.ru/vacancy/10932795?query=embedded
  4. TEventFlag Cortex-M3 LPC1766

    Цитата(dxp @ Mar 16 2011, 06:03) Но все равно правильнее SignalISR использовать. Да, но проблема в том, что я не знаю откуда вызвалась функция, которая дёргает SignalISR. Она может вызваться не только из прерывания
  5. TEventFlag Cortex-M3 LPC1766

    Цитата(dxp @ Mar 15 2011, 14:31) А вот нехорошести могут происходить, если в обработчике прерываний не завели "обёртку" TISRW. И если это так, то это по-любому ошибка, любой ISR, использующий сервисы ОС, должен содержать объект этого класса. Да, действительно. Именно в этом прерывании и забыл TISRW. Спасибо. Заработало и с Signal.
  6. TEventFlag Cortex-M3 LPC1766

    Цитата(Сергей Борщ @ Mar 15 2011, 12:49) А как вы думаете, для чего была введена функция-член SignalISR? Да, обязан. В документации об этом сказано. В документации написано, что TEventFlag::SignalISR() "нельзя использовать вне кода обработчика прерываний", так я его и не использую вне обработчика. А вот про TEventFlag::Signal() не написано, что его нельзя использовать в обработчике прерывания. ЦитатаTEventFlag::Signal() «сигналить». Процесс, который желает сообщить посредством объекта TEventFlag другим процес- сам о том, что то или иное событие произошло, должен вызвать функцию Signal(). При этом все процессы, ожидающие указанное событие, будут переведены в состояние готовых к выполнению, а управление получит самый приоритетный из них (остальные в порядке очередности приорите- тов); А функция-член TEventFlag::SignalISR(), как написано, оптимизированный вариант для использования в прерываниях. ЦитатаTEventFlag::SignalISR() вариант вышеописанной функции, оптимизиро- ванный для использования в прерываниях (при использовании способа передачи управления на основе программного прерывания). Функция яв- ляется встраиваемой и использует специальную облегченную встраиваемую версию планировщи- ка. Этот вариант нельзя использовать вне кода обработчика прерываний.
  7. TEventFlag Cortex-M3 LPC1766

    Добрый день. Возникла проблема при использовании TEventFlag. Если в прерывании используестя метод SignalISR, то процесс, ожидающий событие просыпается, а если Signal, то не пробуждается. Причём перестают работать все процессы и крутимся в void TKernel::Sched(). Это так задумано, что в прерываниях я обязан использовать SignalISR или дело в чём-то другом? У кого-нибудь проявлялся данный эффект?
  8. Расчёт глубины стека для IAR for AVR

    Options\Linker: Generate linker listing, Static overlay map и т.д. Можно в виде HTML вывести
  9. И не забывайте о: http://blackjob.msk.ru/t6323.html http://electronix.ru/forum/index.php?showt...%CD%C8%C8%D5%CC http://electronix.ru/forum/index.php?showt...%CD%C8%C8%D5%CC http://baumanka.ru/forum/showthread.php?t=4280
  10. Проектирование ПО для микроконтроллеров: RUP + UML. И это работает
  11. Вообще-то и первоначальный код прекрасно собрался. Пришлось только типы объявить. Компилятор IAR 5.11B for AVR, что при Embedded C++, что при Extended Embedded C++. Что я не так делаю? Кодtypedef unsigned char uint8_t; typedef unsigned long uint32_t; typedef union {          uint32_t p;          float f; } tUnion; typedef struct {          uint8_t type;          uint8_t info[4];          tUnion u; } tItem; const tItem Item[] = {          {2, {1,2,4,2}, .u.f=1.5},          {1, {2,2,4,2}, .u.p=10},          {2, {3,2,4,2}, .u.f=2.3} }; P.S. Может расширение файла поменять нужно на cpp
  12. Цитата(Sergio66 @ Nov 4 2009, 14:14) Требуется объединить в одном проекте прикладной код и bootloader, котороый этот код собственно и апдейтит. Т.е. основной рабочий код размещает линкер, как обычно, а лоадер нужно разместить в BOOTSECTION. Хочется сделать все это одним проектом, а не грузить в контроллер 2 разных куска кода по разным адресам. Как в проекте ИАР 5.10 можно разместить код с указанного абсолютного адреса? Вариант с #define MYSEG 0x3700 #pragma segment="MYSEG" годится только для переменных, для кода - нет. Какие еще могут быть варианты? Заранее спасибо за помощь. Посмотри мой прикреплённый пример в этой теме http://electronix.ru/forum/index.php?showtopic=69248
  13. Цитата(igorenja @ Nov 11 2009, 09:33) Что сделает компилятор увидев такой код: Кодtwi_write_data(0,ptr, data[ptr++]); У меня выдаёт предупреждение: Warning[Pa081]: undefined behavior: the order of read and modification of variable "ptr" (or a value reached by some form of indirection through it) is undefined in this statement
  14. Как сделать дырку в коде

    Что-то не получилось сделать через опцию -P -P(CODE)CODE=100-1FF,240-440 Error[e104]: Failed to fit all segments into specified ranges. Problem discovered in segment CODE. Unable to place 1 block(s) (0x23c byte(s) total) in 0x261 byte(s) of memory. The problem occurred while processing the segment placement command "-P(CODE)CODE=100-1FF,240-440", where at the moment of placement the available memory ranges were "CODE:100-1ff,CODE:240-440" Линкер не может сам разбить блок кода на два более мелких блока и расположить их по нужным областям. Пока решил проблему при помощи создания нового сегмента и поместил в него некоторые функции. Пример прикрепил. Возможно кому-то интересно будет посмотреть. Чтобы линкер не ругался необходимо убрать комментарий перед #pragma location. Может у кого-нибудь есть рабочий пример через опцию -P ?
  15. Как сделать дырку в коде

    Цитата(zltigo @ Nov 6 2009, 18:07) Что это Вы написали??? Ещё раз по подробнее: Нужно сделать так, чтобы программа не занимала некоторые адреса. Решение мне видится так: 1. Либо положить по этим адресам что-то, для того чтобы линкер не положил туда часть программы. 2. Либо как-то перепрыгнуть эти адреса, желательно без помощи асма, а при помощи директив компилятора, линкера.