Для ^= он такую оптимизацию применить уже не догадывается.
Так для xor вроде бы нету атомарной операции изменения бита?
А так вполне ожидаемо, что на stm32 компилятор не самовольничает. Если в AVR для атомарной установки/сброса бита есть инструкция, то у stm-ок это отдельный регистр. И обращаться по другому адресу компилятор не в праве.
Есть еще такая штука как bit-band-регионы, области памяти, в которых обращение к определенному 32-битному слову эквивалентно обращению к соответствующему биту в другом регионе.
Что тянет VL — не знаю, проц там слабенький, но на STM32F103 mp3-шки даже с приличным битрейтом воспроизводились, а на F4 вообще видео воспроизводится.
Полезный девайс, только ценник огорчает. За те же деньги можно взять отдельно PCIe USB контроллер, ридер и еще останется.
Вообще странно, что таких USB-хабов на переднюю панель практически не делают.
Оригинальное оформление)
Пара моментов:
— Называть переменные капсом: GPIO_InitTypeDef PORT; — дурной тон. Оставьте капс для макрсов.
— Вот так: VDD_Pin_Port->ODR |= VDD_Pin; писать стоит очень аккуратно. Это типичная проблема Read-Modify-Write, если на середине эта операция прервется прерыванием, которое тоже что-то запишет в порт — получим редкий и трудноуловимый баг. В GPIO портах STM-ок для этого предусмотрены регистры BSR и BRR, обеспечивающие атомарную запись бита в порт.
В остальном неплохая статья для начинающих
Да, насчет 51 согласен. В свое время отказались от него по той причине, что писать нужно было на ассемблере исключительно. Сишный код раздувало нереально. Но сейчас они почти не используются.
На pic коллега как-то переводил программу с ассемблера на си, не сказал бы, что она стала сильно больше места занимать или медленнее работать.
PS что называть микроконтроллер, а что SoC — отдельная тема. На электрониксе была как-то дискуссия — сошлись на том, что SoC — скорее маркетинговый термин, чем технический.
Безосновательное заявление, сравните что ли результат работы того же gcc при -O0 и -O2 для ARMовских архитектур. Для x86 понятное дело оптимизаторы работают лучше, но там и спрос другой.
Вы это про «трансляцию» ассемблера?
Сишный код нынешние компиляторы замечательно оптимизируют, порой смотришь на листинги и узнаешь много новых способов использования инструкций проца)
Так давайте ссылок
Личный опыт показывает, что загрузка кода в SRAM не только бесполезна, но и вредна. На stm32f103 (без кеша) и stm32f407 (с кешем) это вызывало падение производительности.
TCM тоже совсем не панацея, по банальной причине, в тех мк с которыми мне довелось работать он сидел на D-bus, т.е. из него нельзя было выполнять код
PS копировать код по мере надобности — хороший способ достичь заявленной в названии поста цифры 1000 тактов на 10 команд
О том что писали-покупали — пошерстите их форум, если интересно. Самому сейчас лень искать, но где-то там проскакивали сообщения о том какие модули покупные, а какие свои.
А «нам» это кому? :)
Вообще в Россию они вполне себе поставляются, нужно только экспортную лицензию оформить. Показать, что использоваться компоненты будут не в военной технике, а, скажем, в какой-то научной аппаратуре где требуется высокая надежность.
А вам не приходилось видеть «изнутри» прошитое antifuse ПЗУ?
Действительно ли у них непрошитые ячейки, нули и единицы практически неразличимы, как это пиарят производители?
А вы прочтите мои и поймете, что качество микросхем совсем не причем. До недавних пор у нас в КА в легкую ставили обычные микросхемы в пластиковых корпусах, доступные в любом магазине, после ФГ стали гайки закручивать.
Кстати, производитель озвученной вами микросхемы — white electronic designs — находится в США.
На досуге обратите внимание, что у нас не только упавший ФГ есть. Множество спутников успешно летают и выполняют свои задачи.
А это уже называется подмена тезиса :) Дальше, действительно, уже может быть только спор ни о чем.
Как-то так… Альпинист свою задачу провалил, не смог взойти на Эверест, несмотря на годы подготовки. А я свою задачу выполнил — взошел на девятый этаж, несмотря на нулевую подготовку. Но разве я круче альпиниста?
и он перешёл в режим поддержания постоянной солнечной ориентации и ожидания команд с Земли
т.е. аппарат работал
PS это все к чему — сбои в космической технике — это норма, и восстановление после сбоев отдельная большая тема. Проблема с ФГ была организационной, а не аппаратной. Не предусмотрели возможность сбоя на низкой орбите, а он произошел.
А смартам на сбои наплевать, ну повисит, ну ребутнется — ничего страшного не произойдет. Я кстати так и не смог найти подробностей о режиме работы смартов — хотя бы включены ли они постоянно или по расписанию.
И сравнение в корне не корректное. ФГ — полноценная платформа, которая полностью управляет своим полетом — один сбой в непредусмотренной точке и привет. А смарт не выходил на орбиту, не управлял двигателями, его запустили, и вот он летает себе. Следуя этой логике (вашей, прошу заметить) ФГ успешно летал два месяца.
Ну вообще Хокинг давно работает с подобной техникой. Первая попавшаяся ссылка
Правда только для яблок, зато опорную картинку сразу можно скачать.
Судя по видюшке — каталог используется просто как опорная точка. Так что должна прокатить и распечатанная обложка.
Так для xor вроде бы нету атомарной операции изменения бита?
А так вполне ожидаемо, что на stm32 компилятор не самовольничает. Если в AVR для атомарной установки/сброса бита есть инструкция, то у stm-ок это отдельный регистр. И обращаться по другому адресу компилятор не в праве.
Есть еще такая штука как bit-band-регионы, области памяти, в которых обращение к определенному 32-битному слову эквивалентно обращению к соответствующему биту в другом регионе.
Вообще странно, что таких USB-хабов на переднюю панель практически не делают.
Пара моментов:
— Называть переменные капсом:
GPIO_InitTypeDef PORT;
— дурной тон. Оставьте капс для макрсов.— Вот так:
VDD_Pin_Port->ODR |= VDD_Pin;
писать стоит очень аккуратно. Это типичная проблема Read-Modify-Write, если на середине эта операция прервется прерыванием, которое тоже что-то запишет в порт — получим редкий и трудноуловимый баг. В GPIO портах STM-ок для этого предусмотрены регистры BSR и BRR, обеспечивающие атомарную запись бита в порт.В остальном неплохая статья для начинающих
На pic коллега как-то переводил программу с ассемблера на си, не сказал бы, что она стала сильно больше места занимать или медленнее работать.
PS что называть микроконтроллер, а что SoC — отдельная тема. На электрониксе была как-то дискуссия — сошлись на том, что SoC — скорее маркетинговый термин, чем технический.
Сишный код нынешние компиляторы замечательно оптимизируют, порой смотришь на листинги и узнаешь много новых способов использования инструкций проца)
Личный опыт показывает, что загрузка кода в SRAM не только бесполезна, но и вредна. На stm32f103 (без кеша) и stm32f407 (с кешем) это вызывало падение производительности.
TCM тоже совсем не панацея, по банальной причине, в тех мк с которыми мне довелось работать он сидел на D-bus, т.е. из него нельзя было выполнять код
PS копировать код по мере надобности — хороший способ достичь заявленной в названии поста цифры 1000 тактов на 10 команд
Вообще в Россию они вполне себе поставляются, нужно только экспортную лицензию оформить. Показать, что использоваться компоненты будут не в военной технике, а, скажем, в какой-то научной аппаратуре где требуется высокая надежность.
А вам не приходилось видеть «изнутри» прошитое antifuse ПЗУ?
Действительно ли у них непрошитые ячейки, нули и единицы практически неразличимы, как это пиарят производители?
Кстати, производитель озвученной вами микросхемы — white electronic designs — находится в США.
На досуге обратите внимание, что у нас не только упавший ФГ есть. Множество спутников успешно летают и выполняют свои задачи.
Как-то так… Альпинист свою задачу провалил, не смог взойти на Эверест, несмотря на годы подготовки. А я свою задачу выполнил — взошел на девятый этаж, несмотря на нулевую подготовку. Но разве я круче альпиниста?
А вы почему-то подтверждаете мои
т.е. аппарат работал
PS это все к чему — сбои в космической технике — это норма, и восстановление после сбоев отдельная большая тема. Проблема с ФГ была организационной, а не аппаратной. Не предусмотрели возможность сбоя на низкой орбите, а он произошел.
А смартам на сбои наплевать, ну повисит, ну ребутнется — ничего страшного не произойдет. Я кстати так и не смог найти подробностей о режиме работы смартов — хотя бы включены ли они постоянно или по расписанию.
И сравнение в корне не корректное. ФГ — полноценная платформа, которая полностью управляет своим полетом — один сбой в непредусмотренной точке и привет. А смарт не выходил на орбиту, не управлял двигателями, его запустили, и вот он летает себе. Следуя этой логике (вашей, прошу заметить) ФГ успешно летал два месяца.