Jump to content

    

Andrew_Q

Участник
  • Content Count

    36
  • Joined

  • Last visited

Everything posted by Andrew_Q


  1. Примерно так /* Define output sections */ SECTIONS { /* The startup code goes first into FLASH */ .isr_vector : { . = ALIGN(4); KEEP(*(.isr_vector)) /* Startup code */ . = ALIGN(4); } >FLASH /* Constant data goes into FLASH */ .rodata : { . = ALIGN(4); *(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ . = ALIGN(4); } >FLASH /* Flash EEPROM arrea */ .flash_eeprom : { . = ALIGN (0x04000); KEEP(*(.flash_page_0*)) . = ALIGN (0x04000); KEEP(*(.flash_page_1*)) . = ALIGN (0x04000); } >FLASH а в source: uint8_t __attribute__ ((section(".flash_page_0"))) EEPROM_page_0[FLASH_EEPROM_PAGE_SIZE]; uint8_t __attribute__ ((section(".flash_page_1"))) EEPROM_page_1[FLASH_EEPROM_PAGE_SIZE];
  2. Если перейти к указателю, то проинициализируется extern const int array_size; int *qwe = &array_size; Только я уже не уверен это ли требуется.
  3. _pv привел правильный подход, единственное что я бы поправил const int array_size = sizeof(array)/sizeof(array[0]);
  4. Если есть задачи, успех запуска которых зависит от последовательности запуска задач, то стоит порождать (запускать) эти задачи одну из другой.
  5. А вот это http://wiki.pic24.ru/doku.php/osa/ref/intro топикстартеру предлагали?
  6. Если Большие программисты будут читать даташиты, то они никогда не напишут свое Большое приложение. Поэтому есть мы - эмбеддеры, которые должны прочитать эти даташиты и написать ту прослойку (MCAL, BSP), которая даст возможность комфортно работать Большим программистам используя им понятные open(), read(), write() и т.д.
  7. Про то оборудование, что на плате, да можно считать его условно постоянным, а то что подключается к плате? Простой пример: Аналоговый вход, к нему могут в разных исполнениях подключаться разные датчики, как по назначению так и по характеристикам, приходится читать вход через драйвер, который выбирается при конфигурировании устройства. Это самый простой случай.
  8. Тут дело не только в сложности периферии, хотя это сегодня тоже имеет значение если Вы пишите для контроллеров с сильно навороченной периферией, а, в основном, если Вы работаете над проектом в команде, либо экспортируете свое ПО в другие проекты. Время!!!
  9. Я говорю о настройке самого модуля ПДП (он у меня один на три ядра), а каналы да, в задачах. Хотя да, можно проверять в драйвере поднят ли ПДП... Надо это поносить в голове. Да, есть такой хук, но как-то исторически сложилось... Да и своя задача на приоритете Idle всегда находит много "бестолковой" работы. :-)
  10. Инициализация периферии, используемой задачей, непосредственно в задаче, по моему опыту, упрощает последующий librarianing и повторное использование кода. 1. main инициализирует общие (тактирование, ДМА...) блоки, создает задачу-демона с приоритетом Idle , стартует шедулер. 2. задача-демон создает остальные задачи (уже в контексте ОС) по зависимостям, а потом либо умирает, либо работает (у меня обычно обрабатывает статистику работы устройства). 3. каждая задача инициализирует под свои нужды аппаратуру.
  11. CAN это physical layer и data link layer, а CAN OPEN, J1939 это application layer. В Вашем случае, полагаю, достаточно распатронить CAN ID и данные. 0х1Е1 это и есть CAN ID, 0х это стандартная форма написания чисел в 16-тиричном виде.
  12. Можно так http://we.easyelectronics.ru/os-rtos/freertos-opredelyaem-srednyuyu-zagruzku-yadra-mikroprocessora-cpu-utilization.html А можно статистику включить https://www.freertos.org/rtos-run-time-stats.html
  13. Из Wiki. It is physically possible for a value between 9–15 to be transmitted in the 4-bit DLC, although the data is still limited to eight bytes. Certain controllers allow the transmission or reception of a DLC greater than eight, but the actual data length is always limited to eight bytes. Ключевое слово: некоторые контроллеры допускают передачу.
  14. Python Вам понадобится, чтобы сформировать, а затем модифицировать словарь объектов. А сама целевая программа вся на C.
  15. Для Вашего контроллера я бы рекомендовал CanFestival. CanOpenNode нужен если ужиматься. Использовал оба, портируются легко. Но для CanFestival редактор словаря, на мой взгляд, интереснее. А DS-402, судя по описанной Вами задаче, Вам не нужен.
  16. Надо посмотреть чем отличаются fromISR функции от не fromISR и написать оберточку для обращения.
  17. А есть ли кто пользует сие поделие Infineon? Родной форум по Aurix Tricore совсем кислый. Или тех кто работаетс TriCore совсем мало?
  18. Добрый день, подсмотрел Ваше общение с Driver_GV.

    Меня интересует переезд в Ваши края с поиском работы.

    Резюме: https://krasnodar.hh.ru/resume/8ba255aeff0681fe920039ed1f364a7952776d

    1. warrior-2001

      warrior-2001

      День добрый!

      Я отправил ваше резюме руководителю подразделения встраиваемого ПО. Если будет интерес - он  вами свяжется.

  19. CubeMX генерирует драйвер не для LAN8720. Смотрите работу с PHY_SR.
  20. Актуально, добавлю резюме. https://krasnodar.hh.ru/resume/8ba255aeff0681fe920039ed1f364a7952776d#key-skills
  21. Мы выпускаем подобный речевой информатор, я его разработчик. Если интересно: kunev@mail.ru
  22. А ларчик просто не открывался :-)
  23. Смотрите что конкретно делает HAL_CAN_AddTxMessage(). Что берет? Куда кладет? Как выбирает мэйлбокс? Как его освобождает?