Skip to content

Commit

Permalink
Squashed commit of the following:
Browse files Browse the repository at this point in the history
commit f2141a3
Author: iamsaywhat <[email protected]>
Date:   Tue Jan 21 14:52:04 2020 +0300

    Убрал из под контроля мусор

commit df3ae8f
Author: iamsaywhat <[email protected]>
Date:   Tue Jan 21 14:08:00 2020 +0300

    Версия ПО 0.31.2 (1.0.1/2.0.0)

    1) ZPZ
    * изменения в протоколе отмена:
    запросы к снс и свс теперь имеют свои собственные заголовки, но коды команд теперь могут иметь пересечения.
    поэтому необходимо было реализовать ветвление не только по коду команды, но и по типу заголовка;
    * добавлены новые заголовки запросов к макроопределениям;
    * функции работы с запросами к СНС и СВС теперь тоже должны отвечать соответствующим заголовком, поэтому исправил;
    * изменил принцип поиска пакета - сначала ждем признак начала пакета, потом принимаем два байта следующего за ним заголовка,
    и проверяем имеется ли принятый заголовок среди перечня макроопределений, если нет - пришел мусор, возвращаемся к ожиданию символа начала пакета;
    если да, то переходим к приёму остальной части пакета;

commit e92e2db
Author: iamsaywhat <[email protected]>
Date:   Mon Jan 20 19:30:29 2020 +0300

    Версия ПО 0.31.1 (1.0.1/2.0.0)

    Обнаружилось, что система повисает. Причина была в том, что прерывания от обычного таймера перебивали прерывания от SysTick;
    поэтому все контроли таймаута не выполнялись, время не считалось; пришлось явно задать приоритеты;

    bugfix:
    1) otherlib
    * всем используемым таймерам назначены приоритеты:
    SysTick наивысший - 0;
    Остальные таймеры  следующий по уровню - 1;

    2) SelfTesting:
    * при вставленой шпильке и/или отключенном реле питания БИМ связь проверить невозможно,
    но и не исправностью считать нельзя, поэтому в таком случае ставим статус - исправен;
    иначе модуль будет пытаться перезапустить реле;

commit e2da79e
Merge: 6462cf9 cb5aaf4
Author: iamsaywhat <[email protected]>
Date:   Mon Jan 20 17:30:40 2020 +0300

    Версия ПО 0.31.0 (1.0.1/2.0.0)

    Краткое описание основных изменений:
    1) Добавлена работа SysTick таймера (1мс для подсчета системного времени);
    2) Все таймауты перенесены на новый функционал SysTick;
    3) Перепроектированы модули СНС и СВС, повышена стабильность работы СНС;
    4) Исправлена ошибка при загрузке полетного задания, когда невалидные пакеты все равно записывались в память.
    5) СНС даётся время на включение (5 сек по документации), в это время производится ининиализация
    и диагностика сопровождаемая мигающей индикацией;

    Добавлено:
    * Папка lit - Каталог с описанием протоколов обмена и даташиты
    * map_flash_layout.h Файл разметки flash памяти под полетное задание и карту;
    * bupboard - Модуль поддержки платы БУП. Здесь находится вся информация по распиновке процессора,
    выделения и назначения аппаратных модулей, а так же содержит подробную таблицу.

    changelog::
    1) ZPZ:
    * обнаружено, что в процессе загрузки полетного задания, входящий невалидный пакет все равно записывался во flash;
    контрольная выгрузка задания показала это. Происходило это по той причине, что несмотря контроль валидности по crc,
    пакет укладывался во flash параллельно приёму. Когда пакет был принят, контрольные суммы не сходились, выбрасывалось
    соответствующее сообщение хост, которые начинал повторную передачу данного пакета, однако, flash уже не пуста, так как стирается
    единожны при пакете инициации загрузки. Соответственно, невалидный пакет оставался во flash.
    Таким образом возникла необходимость предварительной буферизации пакета, а после успешной проверки crc, только инициировалась запись
    во flash. В настоящий момент выделелен статический буфер размером с пакет данного типа. Пока свободная ОЗУ позволяет это.
    (!) Вариант с буферизацией во flash в свободных секторах тоже возможен, но тогда необходимо делать подобие кольцевого буфера, для
    равномерного износа секторов (за одну загрузку задания - 400 пакетов, значит в простейшем варианте 400 стираний при 15к цикле стирания\записи)
    (!!) Позже необходимо рассмотреть динамическое размещение памяти.
    * все макросы касаемые разметки flash под карту, вынесены в map_flash_layout.h
    * теперь все функции модуля по облуживанию команд взаимодействуют через один общий буфер;
    пришлось убрать много лишних буферов осуществялющих передачу дачу между request и response функциями;
    * убраны ненужные(неиспользуемые) типы структур
    * коды возвращаемые коды ошибок в функциях решено убрать,
    так как возврат кода ошибки хосту гораздо информативнее;
    * идентификаторы режима работы вынесены в отдельный тип, глобальная переменная хранящаая состояние режима теперь данного типа;
    * функции под режим ВПЗ изменены под новый принцип управления индикацией (по сути теперь это обёртки функций из discrete_io, а так же убраны ненужные теперь переменные;
    * так как мигающая индикация теперь не может сама себя отключить (ранее был принцип WDT), необходимо это контролировать самостоятельно.
    для этого был отдельный таймаут под удержание режима ВПЗ. так где раньше счетчик сбрасывался, теперь обновляется таймаут; на входе в функцию обслуживания запросов
    проверяется его статус, если  таймаут давно не обновлялся - происходит переключение режима;
    * команда PIN_STATE и все с ней связанное убрано, так как больше не используется;

    2) HeightMap_conf_and_pd:
    * теперь модуль для работы с картой использует разметку предоставляемую map_flash_layout.h;
    * своя разметка удалена;

    3) otherlib:
    * завел системный таймер на 1мс;
    * реализованы функции контроля таймаута (с мин временем 1мс);
    * добавлена функция delay_ms (реализована легко и просто);
    * переделана функция delay_us (сделана чуть сложнее, так как дискретность системного времени 1 мc,
    поэтому пришлось ловить тики процессора прям из счетчика SysTick)
    хотел отказаться от неё вообще, но SPI flash требуют микросекундные задержки.
    можно использовать задержки и больше, но намерено снижать быстродействие системы не хочется;
    * переименовал некоторые функции;
    * добавлено описание модуля;
    * сделал для модуля функцию-болванку, которую просто расместил в обработчике прерывания в irq.
    таким образом и функция обработчик на должном месте и решена проблема доступа к сокрытым членам модуля;
    * Pin_init была переписана под bupboard;
    * добавлены функции-обёртки для установки/сброса/чтения пинов;
    * добавлена фунция конфигурации пина в состояние по-умолчанию (фактически сброса конфигурации);
    * из инициализации АЦП была вынесена конфигурация пинов;

    4) irq
    * возвращены функции обработчики, используются функции болванки;
    * функцию обработки прерывания ТАЙМЕРА 2 теперь занимает discrete_io;
    * исправлено описание в связи с изменениями;

    5) bup_data_store
    * функции преобразования в нужные единицы изменения теперь перенесены в модуль СНС;
    * СНС и СВС теперь сами хранят свои данные, поэтому нет необходимости хранить дубликат данных еще и тут;
    * сбор данных от СНС и СВС теперь ведется через функции доступа этих модулей;

    6) debug
    * добавлено описание модуля в header;
    * реализован таймаут по времени;

    7) M_Model
    * очистил от мусора оставшегося с прошлых версий за ненадобностью;

    8) bupboard:
    * все настройки относящиеся к плате и конфигурации вынесены в данный файл;
    * реализован новый тип для удобного конфигурирования пинов;

    9) SelfTesting
    * функция восстановления соединения с бимами теперь с реализацией таймаута от systick;

    10) SNS
    * функции преобразования в нужные единицы изменения теперь перенесены сюда и скрыты внтури модуля;
    * модуль теперь имеет локальное хранилище последних полученных данных всех типов;
    * добавлены функции доступа к полям локального хранилища через функции преобразования:
      SNS_get......
    * некоторые старые функции были переименованы;
    * увеличил время ожидания ответа от СНС до 40 мс, но уменьшил количество повторных запросов в случае неудачи до 5;
    * добавил макроопределение задержки на включения СНС;
    * таймаут-счетчики заменены, на таймауты по времени;
    * в headers добавлены макросы с определением величины таймаутов;

    11) SWS
    * модуль теперь имеет своё локальное хранилище;
    * к хранилищу открыт доступ, и реализованы функции доступа SWS_get....
    * теперь он сам может пытаться получить пакет несколько раз, пока происходят ошибки,
    поэтому нет необходимости контролировать попытки получить данные за пределами модуля;
    * в headers добавлены макросы с определением величины таймаутов;
    * таймаут-счетчики заменены, на таймауты по времени;

    12) discrete_io
    * управление миганием теперь отдано этому модулю;
    * добавлена реализация функций запуска, остановки мигающей индикации;
    * имеется возможность гибко настраивать пин, которым решено "моргать";

    13) analog_io
    * убрал инициализацию резервных каналов;
    * инициализация аналоговых пинов вынесенная из ADC_init в otherlib теперь здесь;
    * она же инициализирует и АЦП;

    14) main
    * добавлена инициализация SysTick;
    * алгоритмические задержки в боевом режиме теперь реализованы через delay_ms();
    * конфигурацию пинов  модулей больше не нужно делать самому;
    * реализована инидикация на время инициализации, тестирования и ожидания включения СНС;
    * форматирован код;

    15) Во всех неописанных тут модулях изменения в основном связаны с:
    * переименованием функций других модулей;
    * изменением способа доступа к данным (СНС и СВС);
    * с введением таймаутов по SysTick;
    * выненением информации о пинах и блоках в bupboard.
  • Loading branch information
iamsaywhat committed Jan 23, 2020
1 parent cb5aaf4 commit ee08e66
Show file tree
Hide file tree
Showing 19 changed files with 322 additions and 24,445 deletions.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
\Trash
\Objects
\Listings
BUP.uvguix.Юзер33
BUP.uvguix.User33
debug.log
81 changes: 14 additions & 67 deletions BUP.uvoptx
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>DLGTARM</Key>
<Name>(1010=75,104,485,651,0)(1007=105,137,282,402,0)(1008=1318,144,1684,370,0)(1009=1600,398,1834,936,0)</Name>
<Name>(1010=1094,359,1504,906,0)(1007=105,137,282,402,0)(1008=1140,131,1506,357,0)(1009=1600,398,1834,936,0)</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
Expand All @@ -140,40 +140,7 @@
<Name>-UV0010M9E -O142 -S0 -C0 -P00 -N00("ARM CoreSight JTAG-DP") -D00(4BA00477) -L00(4) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO23 -FD20000000 -FC8000 -FN1 -FF01986BE9x.FLM -FS08000000 -FL020000 -FP0($$Device:MDR1986BE93$Flash/1986BE9x.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>121</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134225882</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\bup_data_store.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>440</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134252008</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\SelfTesting.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<Breakpoint/>
<WatchWindow1>
<Ww>
<count>0</count>
Expand All @@ -193,20 +160,15 @@
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>TimeoutCounter</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>TaskManager</ItemText>
</Ww>
<Ww>
<count>5</count>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>bupFirmwareVersion</ItemText>
</Ww>
<Ww>
<count>6</count>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>systemTime,0x10</ItemText>
</Ww>
Expand All @@ -215,62 +177,47 @@
<Ww>
<count>0</count>
<WinNumber>2</WinNumber>
<ItemText>SystemState,0x10</ItemText>
<ItemText>Left_BIM</ItemText>
</Ww>
<Ww>
<count>1</count>
<WinNumber>2</WinNumber>
<ItemText>buff</ItemText>
<ItemText>Right_BIM</ItemText>
</Ww>
<Ww>
<count>2</count>
<WinNumber>2</WinNumber>
<ItemText>Left_BIM</ItemText>
<ItemText>debug_vars</ItemText>
</Ww>
<Ww>
<count>3</count>
<WinNumber>2</WinNumber>
<ItemText>Right_BIM</ItemText>
<ItemText>BUP_DataStorage</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>2</WinNumber>
<ItemText>debug_vars</ItemText>
<ItemText>rtU</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>2</WinNumber>
<ItemText>BUP_DataStorage</ItemText>
<ItemText>rtDW</ItemText>
</Ww>
<Ww>
<count>6</count>
<WinNumber>2</WinNumber>
<ItemText>SNS_Position</ItemText>
<ItemText>rtY</ItemText>
</Ww>
<Ww>
<count>7</count>
<WinNumber>2</WinNumber>
<ItemText>SNS_Orientation</ItemText>
<ItemText>systemState</ItemText>
</Ww>
<Ww>
<count>8</count>
<WinNumber>2</WinNumber>
<ItemText>SWS_Data</ItemText>
</Ww>
<Ww>
<count>9</count>
<WinNumber>2</WinNumber>
<ItemText>rtU</ItemText>
</Ww>
<Ww>
<count>10</count>
<WinNumber>2</WinNumber>
<ItemText>rtDW</ItemText>
</Ww>
<Ww>
<count>11</count>
<WinNumber>2</WinNumber>
<ItemText>rtY</ItemText>
<ItemText>systemTime</ItemText>
</Ww>
</WatchWindow2>
<MemoryWindow1>
Expand Down Expand Up @@ -755,7 +702,7 @@
<GroupNumber>6</GroupNumber>
<FileNumber>31</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<Focus>0</Focus>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
Expand Down
14 changes: 12 additions & 2 deletions CustomDrivers/otherlib.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ void SysTick_init(void)
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
SysTick_CTRL_ENABLE_Msk |
SysTick_CTRL_TICKINT_Msk ;
/* Системный таймер имеет наивысший приоритер среди прерываний */
NVIC_SetPriority(SysTick_IRQn, 0);
}

/****************************************************************************************
Expand Down Expand Up @@ -271,14 +273,22 @@ void Timer_init (MDR_TIMER_TypeDef* TIMERx, unsigned long ticks)
TIMER_ITConfig(TIMERx,TIMER_STATUS_CNT_ARR,ENABLE);

/* Разрешаем прерывания по достижению CNT значения ARR (Period) на уровне NVIC */
/* Приоритет у обычных таймеров в системе наивысший после SysTick */
if(TIMERx == MDR_TIMER1)
{
NVIC_EnableIRQ(Timer1_IRQn);

NVIC_SetPriority(Timer1_IRQn, 1);
}
else if (TIMERx == MDR_TIMER2)
{
NVIC_EnableIRQ(Timer2_IRQn);

NVIC_SetPriority(Timer2_IRQn, 1);
}
else if (TIMERx == MDR_TIMER3)
{
NVIC_EnableIRQ(Timer3_IRQn);
NVIC_SetPriority(Timer3_IRQn, 1);
}

/* Включаем таймер */
TIMER_Cmd(TIMERx,ENABLE);
Expand Down
4 changes: 2 additions & 2 deletions SelfTesting.c
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ SelfTesting_STATUS_TYPE SelfTesting_LEFT_BIM(void)
}
// Питание на БИМ отсутствует, проверить их нельзя, будем считать, что исправны
else
SelfTesting_SET_FAULT(ST_Left_BIM);
SelfTesting_SET_OK(ST_Left_BIM);

return (SelfTesting_STATUS_TYPE)SelfTesting_STATUS(ST_Left_BIM);
}
Expand Down Expand Up @@ -321,7 +321,7 @@ SelfTesting_STATUS_TYPE SelfTesting_RIGHT_BIM(void)
}
// Питание на БИМ отсутствует, проверить их нельзя, будем считать, что исправны
else
SelfTesting_SET_FAULT(ST_Right_BIM);
SelfTesting_SET_OK(ST_Right_BIM);

return (SelfTesting_STATUS_TYPE)SelfTesting_STATUS(ST_Right_BIM);
}
Expand Down
Loading

0 comments on commit ee08e66

Please sign in to comment.