реклама на сайте
подробности

 
 
> Скрытый баг, О вреде копипасты
Genadi Zawidowsk...
сообщение Jul 3 2013, 06:24
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Столкнулся я с тем, что проект, ранее работавший на STM32F101, STM32F105 перестал работать на STM32F103 (буквочки не важны).
Вернее, проект работал, но "отваливался" дебаг порт SWD - помогала только загрузка через замыкание BOOT0. Радостно потирая руки, начал писать демонстрацию бага...
Внимательное чтение документации выявило причину.
Пока - код-загадка, который после программирования в STM32F103RC делал его "невидимым" для J-FLASH.

CODE
#include "stm32f10x.h"

#define STACK_SIZE 0x600

static __attribute__ ((aligned(8), section(".noinit"))) uint32_t pdwStack [STACK_SIZE] ;

typedef void IntFunc(void);
typedef IntFunc * IntFuncP;

static IntFunc ResetException;


static
__attribute__((used, section(".vectors"))) IntFuncP exception_table [256] = {

(IntFuncP) (& pdwStack [STACK_SIZE]),
ResetException,
};


static void ResetException(void)
{
/* Используется только SWD */
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
AFIO->MAPR = (AFIO->MAPR & ~ AFIO_MAPR_SWJ_CFG) | AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // PA15, BP3 & PB4 pins free for use.

/* ... много кода */
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
AFIO->MAPR |= AFIO_MAPR_SPI1_REMAP;
/* ... инициализация SPI1 */

/* ... много кода */
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; /* I/O port B clock enable */
// Set PB3 as output
GPIOB->CRL = GPIO_CRL_CNF3_0;


/* ... много кода */
for (;;)
;
}



ps: вот тут
мучаются с похожей проблемой, но не нашли решения...


Сообщение отредактировал Genadi Zawidowski - Jul 3 2013, 07:01
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Fujitser
сообщение Jul 7 2013, 05:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925



Быдлокод и возможность reuse - это совершенно ортогональные понятия. Можно написать библиотеку с быдлокодом, можно написать статическую конфигурацию правильно и хорошо.
Хотя я за библиотеки.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Jul 7 2013, 22:38
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(Fujitser @ Jul 7 2013, 09:23) *
Быдлокод и возможность reuse - это совершенно ортогональные понятия. Можно написать библиотеку с быдлокодом, можно написать статическую конфигурацию правильно и хорошо.

Одноразовый стаканчик, конечно, можно помыть и использовать повторно, но обычно так не делают. В то же время чайный сервиз, как правило, никто не выкидывает в помойку, после первого чаепития.
С кодом та же история. Возможно, зависимость быдлокод/reuse неочевидна, но она есть и вполне осязаема, т.е. ортогональности минимум.
Go to the top of the page
 
+Quote Post
Fujitser
сообщение Jul 8 2013, 13:31
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 294
Регистрация: 28-02-05
Из: Екатеринбург
Пользователь №: 2 925



Цитата(Tahoe @ Jul 8 2013, 04:38) *
Возможно, зависимость быдлокод/reuse неочевидна, но она есть и вполне осязаема, т.е. ортогональности минимум.


Да, неочевидна. Возможно, вы хотели сказать, что библиотеки прекрасны, как чайные сервизы, а одноразовый код всегда уродлив? Если бы...
Возможно, фирменные библиотеки или известные open-source библиотеки сделаны хорошо (гм, не всегда), но что касается библиотек, которые пишутся на предприятиях "для себя", это ужас-ужас.

Ситуация на рынке труда сейчас такова, что программированием зачастую занимаются случайные люди, что в совокупности с огромной текучестью приводит к тому, что на код часто нельзя смотреть без слёз.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Jul 8 2013, 16:48
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(Fujitser @ Jul 8 2013, 17:31) *
Да, неочевидна. Возможно, вы хотели сказать, что библиотеки прекрасны, как чайные сервизы, а одноразовый код всегда уродлив? Если бы...

Нет. Я о том, что назначение предмета тянет за собой выбор материала, из которого он изготовлен. Reuse кода подразумевает некие явные и неявные правила его написания, суть - ограничения буйной фантазии программера, что, в свою очередь, ограничивает "быдлокодерство". В этом и проявляется не ортогональность.

Развивая пример выше, сколько ни пытайся сделать из пластика полноценную чашку, все равно будет получаться больше похожее одноразовый стаканчик. До тех пор, пока материал не будет заменен на фарфор или стекло, что потянет за собой технологию и остальное.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Genadi Zawidowski   Скрытый баг   Jul 3 2013, 06:24
- - SSerge   Цитата(Genadi Zawidowski @ Jul 3 2013, 13...   Jul 3 2013, 07:45
|- - demiurg_spb   Цитата(SSerge @ Jul 3 2013, 11:45) P.S. Х...   Jul 3 2013, 08:18
|- - Tahoe   Цитата(demiurg_spb @ Jul 3 2013, 12:18) В...   Jul 3 2013, 13:21
- - Genadi Zawidowski   Я решил просто - свой функцией, которая подставляе...   Jul 3 2013, 19:04
|- - Tahoe   Цитата(Genadi Zawidowski @ Jul 3 2013, 23...   Jul 4 2013, 08:26
|- - _Pasha   Цитата(Tahoe @ Jul 4 2013, 11:26) Так про...   Jul 4 2013, 08:43
|- - Genadi Zawidowski   Цитата(_Pasha @ Jul 4 2013, 12:43) Reus...   Jul 4 2013, 10:43
|- - Tahoe   Цитата(_Pasha @ Jul 4 2013, 12:43) Reus...   Jul 4 2013, 11:05
|- - _Pasha   Цитата(Tahoe @ Jul 4 2013, 14:05) Хотя Па...   Jul 4 2013, 13:37
|- - Tahoe   Цитата(_Pasha @ Jul 4 2013, 17:37) Чушь к...   Jul 4 2013, 14:12
|- - _Pasha   Цитата(Tahoe @ Jul 4 2013, 17:12) Или one...   Jul 7 2013, 06:04
- - Genadi Zawidowski   ЦитатаP.S. Хорошие грабли, я по ним уже ходил Но п...   Jul 3 2013, 20:20
|- - toweroff   Цитата(Genadi Zawidowski @ Jul 4 2013, 00...   Jul 3 2013, 22:17
- - _Pasha   Цитата(demiurg_spb @ Jul 3 2013, 11:18) В...   Jul 4 2013, 06:48


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01758 секунд с 7
ELECTRONIX ©2004-2016