Вы уверены, что вот так просто это будет работать? Если да, то объясните, пожалуйста, как. Так как, как уже было замечено в одном из комментариев: контроллер, в самом начале прыгает по адресу 0x08000000 где ожидает увидеть начало таблицы векторов прерывания, после чего он. Именно по этому адресу у нас лежит начало стека (значение которое записывается в SP), то есть до функции main нам еще далеко, а мы уже должны получить значение из таблицы прерывания. Потом мы идем по значению из 0x08000004 что бы запустить Reset_Handler и только после этого запускается наша функция main. Единственный вариант когда это может работать, если у нас уже во флешь памяти, по адресу 0x08000000 уже записано 16 байт, которые ведут на адреса в RAM. И если первое значение +/- всегда одно и тоже, то вот второе надо специально прописать равным начала Reset_Handler из RAM что бы фокус удался.
Я не могу с уверенностью сказать, что система оценки пассажиров — это плохая или хорошая идея. Но то, что пассажир платит, не дает ему право вести себя как чудак на букву «М». Но, к сожалению, многие считают именно так. И ровно так же как хороший пассажир заслуживает качественно услуги от таксомоторной компании, ровно так же водители таски имеют право пассажиров которые способны вести себя «по-человечески». И я даже не говорю, чаевых или «здрасти/до свидания». У нас все еще предостаточно хамства в отношении друг друга. Как с одной стороны, так и с другой (почти, наверное, в равной степени). За примерами далеко ходить не надо: Один из печальных примеров.
Если бы мне сказали, что мои данные были потеряны из за пожара, скочка напряжения или другого случая, я бы еще подумал о том, что бы понять и простить. Однако, может я странно рассуждаю, но среди всего этого, именно человеческий фактор выглядит как то уж очень не подобающе для такой компании. Случиться может все что угодно, от этого ни кто не застрахован. Но в моем понимание этот человеческий фактор выглядит как: «ой, да тут всего одно значение поправить, оно точно не может половать ни каких тестов, это же элементарно, ща поправим и быстренько в прод зафигачим и все ок будет». Это как то уж на слишком халатный случай смахивает и плохо продуманные техпроцессы. Имхо.
Да, согласен. Но так продукт бездумно набивается «от души». Ведь куда приятнее запилить что то новое а не фиксить баги =) А большое количество клиентов так как они почти монополисты на этом ранке. Ну и потом… не смотря на то, что я не владею большой информации по развитию этого проекта, смею предположить что большое количество клиентов приводит к появлению так называемых «спонсоров» которые «спонсируют» не сам проект а определенные фичи, которые там в большом количестве появляются. А это, в свою очередь, как раз таки и сваливает проект от теплого и лампового open source в сторону ужасного и требовательного бизнеса. В этом плане golang наверное ближе к идеологии opne source чем gitlab. Имхо.
Я бы разделил бизнес и ИТ, чтобы программированием могли заниматься только некоммерческие организации.
Мне кажется, то что вы предлагаете, хорошо находит свое отражение в OpenSource. В котором бизнес не ставит ограничения по срокам. В тоже время, в OpenSource, для того, что бы оставаться конкурентоспособным стремятся решить проблему, в первую очередь качественно а не быстро.
bitbucket.org и gitlab — это конечно же хорошо, однако…
Имхо gitlab уж слишком развесистый. Для своих поделок там слишком много лишнего, а вот к bitbucket.org у меня просто не лежит душа, хотя ничего плохого сказать о нем я не могу.
Для себя же я выбрал следующее: gogs.io (кто не знает: еще один аналог github и gitlub) установленный на личный VPS (благо они сейчас от ~300р) + таким решением я получаю не только «хранилище кода» но и место где их можно запускать, причем не важно на чем бы они было написаны.
Вы уверены, что вот так просто это будет работать? Если да, то объясните, пожалуйста, как. Так как, как уже было замечено в одном из комментариев: контроллер, в самом начале прыгает по адресу
0x08000000где ожидает увидеть начало таблицы векторов прерывания, после чего он. Именно по этому адресу у нас лежит начало стека (значение которое записывается в SP), то есть до функции main нам еще далеко, а мы уже должны получить значение из таблицы прерывания. Потом мы идем по значению из0x08000004что бы запустить Reset_Handler и только после этого запускается наша функция main. Единственный вариант когда это может работать, если у нас уже во флешь памяти, по адресу0x08000000уже записано 16 байт, которые ведут на адреса в RAM. И если первое значение +/- всегда одно и тоже, то вот второе надо специально прописать равным начала Reset_Handler из RAM что бы фокус удался.В этом случае мы сразу сразу пропускаем пункты с 0 по 6 из заключения статьи.
P.S.
Правда в этом случае линтер ругаться будет если мы не заинклудим unistd.h
Но в этом случае достаточно просто определить этот write.
В итоге это:
И компилится и работает без каких либо проблем.
А еще бы разложение на множители и прощай криптография =)
Мне кажется, то что вы предлагаете, хорошо находит свое отражение в OpenSource. В котором бизнес не ставит ограничения по срокам. В тоже время, в OpenSource, для того, что бы оставаться конкурентоспособным стремятся решить проблему, в первую очередь качественно а не быстро.
Видимо имелось в виду «принципами»
Имхо gitlab уж слишком развесистый. Для своих поделок там слишком много лишнего, а вот к bitbucket.org у меня просто не лежит душа, хотя ничего плохого сказать о нем я не могу.
Для себя же я выбрал следующее: gogs.io (кто не знает: еще один аналог github и gitlub) установленный на личный VPS (благо они сейчас от ~300р) + таким решением я получаю не только «хранилище кода» но и место где их можно запускать, причем не важно на чем бы они было написаны.