Jump to content

    

Andrew_Q

Участник
  • Content Count

    36
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Andrew_Q

  • Rank
    Участник

Контакты

  • ICQ
    Array

Recent Profile Visitors

676 profile views
  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.