Как стать автором
Обновить
2
0
Василий @catBasilio

Пользователь

Отправить сообщение

"Чуть выше я уже упомянул, что к OpenVPN сделали поддержку Pluggable Transport"

Не сделали, а делаете. Так как PR до сих пор open. И он аж с 21 года такой (посмотрел на календарь). И за весь 22 год там комментов 5 набежало.
Так что можно считать, что PR загнулся

Так нельзя.
фишка merge sort это именно сортировка 2-х списков. и она дает O(n* log N)
этапы там такие

  1. слияние 2-x списков длины 1 с их одновременной сортировкой

  2. разбиение на списки длины 2

  3. повторение с шага 1 для длины *2 пока разбиваться уже не будет

А что такое это Минцифры, и почему ФМС должна с ним считаться?

корпорации из США также поддерживают развитие архитектуры

А что мешает тем же США объявить санкции против тех, кто использует RISC-V? Под соусом того, что там есть американская интеллектуальная собственность.

Я тоже хочу "инвестировать" часть моей зарплаты на таких условия. Эй стартапы, никому мининвестиции не нужны?

". В свою очередь инвестор обязался не требовать возврата заемных средств до конца августа 2022 года"

То есть это фактически кредит в чистом виде? Я вам сейчас деньги, а вы-потом но с процентами.

Инвестмция ведь-это доля в бизнесе. Взлетел стартап - получил дивиденды. Не взлетел-потерял.
А тут просто кредит. Зачем это называть инвестиций?

И где тут нейронные сети? Все что вы описали, OpenCV делает без них.

А наоборот пробовали?
Тем же CSA проверить код PVS И опубликовать результаты.

Проблема в том, что к работодателю будут претензии по уходу от налогов, раз он не резидентов держит. Думаете он вам эти штрафы простит?

А как вы будете бороться с налоговой? Через полгода заграницы вы теряете статаус налогового резиденства, и налоговая впаяет огромный штраф вашему работодателю из-за того что не резиденты работают.

Есть ли бесплатные версии для DIY?

Кстати, тогда к вам вопрос, так как вы похоже чучше автора статьи в теме разбираетесь.
Как будет в итоге работать изначальный пример автора (переменная то не const)

uint32_t keyFlash __attribute__((at(0x08004000))) ;
...
{
KeyFlash =42;
}

Кейл будет какой-то инструментированный код делать чтобы во флеше перезаписать данные?

Тогда почему эксепшин не кидается?

Вот. Сразу видно грамотный ответ.
Спасибо. Теперь у меня все встало на свои места

у меня нет железа, у меня нет kail. и я не хочу тратить время на выяснение, почему у ВАС оно не работает.

Нет, это не отдельный вопрос, а именно тема статьи

Код правильный работать он должен. и он делает именно то, что было написано в заголовке статьи, до того, как вы его переименовали.

если хотите разобраться то приведите пожалуйста ассемблерный код.

volatile uint32_t p = (uint32_t)0x0800C000;
int main(void){
*p= 0xAAAAAAAA;
}

вот я непонимаю, вы сейчас серьезно, или пытаетесь меня троллить?
тот код, который вы написали выше в комменте - это даже не указатель.

То что на скриншоте - уже правильный код, и он должен работать.
Почему он не работает - это отдельный вопрос. Навскидку могу предположить:

  • Keil криво трэкает изменение содержимое памяти

  • Память по этому адресу - RO. и по какой-то причине не кидается исключение при попытке ее записи. Возможно нужно в какой-то регистр периферии скорфигурировать, чтобы эта память стала доступна на запить, но тут нужно больше контекста.

В итоге - посмотрите сгенерированный ассемблерный код и там сразу будет понятно, что и куда должно писаться.

А вообще, общее замечание вам, перед тем как писать статью, неплохо бы самому чуть глубже копнуть в предметную область, которую вы пытаетесь описать.

я не понимаю проблемы. Адрес можно написать любой. хоть на последнюю страницу, хоть на первую, хоть на срединную.
и при обновлении прошивки ничего затираться не будет так как это просто адрес. Если нужно указать, что память RO - то используйте const. Точно также const будет работать и для всяких экстеншинов arm cc.
volatile int * const some_perf - если адрес не нужно менять. и нужно чтоб он фиксированный был.
const volatile int *some_perf - ecли это память RO и нужно только читать
const volatile int *const some_perif - если все сразу.

Все бы ничего, но как подход gcc автор приводит код

#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000)

А это именно то, что я с Volatile написал

Если бы было

#define FLASH_SRCTOR_0 (*(Volatile int *)0x123456)

То код бы был равнозначный

А давайте я целую статью напишу о том как прикастить целое число к указателю?

Я без компилятора строку писал. По памяти. Я думал, что общая идея понятна. А оказывается вот оно как.

Блин, целую статью написали о том как переменную записать. Куда катится хабр?

volatile int *some_peirph = (uintptr_t)0x1234566;

всегда пользовался таким. И оно работает всюду. так как использует только стандартные (от слова standard) конструкции.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность