Евгений
14.09.2017
13:38:20
Привет!
Столкнулся с такой проблемой в STM32F427 + NAND.
Работаю с NAND через FMC. Работа с nand идет в потоке фриртос. Если запустить в этом потоке в цикле стирание блоков, то начинают "тормозить" прерывания.
В частности в ПО есть прерывание таймера раз в 10мкс, которое инкрементирует счетчик. Во время стираний счетчик начинает меняться значительно реже.
такое впечатление, что как будто бы стирание оформляется в крит. секцию, при выходе из нее срабатывают все обработчики прерываний.
Но никакого запрета/разрешения прерываний я не делаю...
В даташите не нашел указаний на то, что во время ожидания NAND не работают прерывания...
Andy
14.09.2017
16:04:50
Ht3
14.09.2017
18:40:08
Если мк выполняет код с нанд, которая еще и стираетсо, то естественно, что милисекундные (?) задержки могут быть, если контроллер ожидает сигнала готовности и не может считать код
Это лишь мои фантазии лишь, лишь
Google
Maxim
14.09.2017
18:43:01
Думаю, что в этом случае контроллер таки выполняет код с флеша
Ibh
14.09.2017
19:27:28
тут другой вопрос на самом деле: было ли у кого-нибудь такое, чтобы работа на stm32 FMC(без прерываний и дма) - блокировала прерывания?
тут или freertos вносит свою лепту, или корявая настройка NVIC или реальный внутрикристальный баг
Евгений
15.09.2017
06:29:59
упростил программу до максимума - ОС выкинул, оставил цикл в main(), в котором стираются блоки по очереди плюс прерывание таймера на 10 мкс
в прерывании инвертится ножка Timer
Перед стиранием ножка Erase ставится в 1, после стирания - в 0
Перед началом цикла со стираниями - задержка (прерывание срабатывает четко). После начала стирания прерывание срабатывает только между стираниями
Стирание, судя по даташиту на память, занимает порядка 1 мс. По факту получается около 500 мкс. В эти 500 мкс прерывания НЕ РАБОТАЮТ ?
Программа выполняется из флэша, все как обычно.
Используется аппаратное ожидание ножки R/B (флаг FMC_PCR2_PWAITEN)
Мануал на STM32F4 вчера еще раз тщательно проглядел и не нашел там указаний, что во время этого ожидания блокируются прерывания...
Vasiliy
15.09.2017
07:08:41
Там нигде отключение прерывания не используется?
Евгений
15.09.2017
08:59:03
Нет.
eraseBlock(BlockInd block) {
Debug1.set(true);
const uint32_t pageAddr = block * 64;
command = 0x60;
addr = pageAddr;
addr = (pageAddr»8);
addr = (pageAddr»16);
command2 = 0xD0;
command2 = 0x70;
byte d = data;
Debug1.set(false);
return (d & 1) == 0 ? eOk : eOther;
}
int main() {
...
while (true) {
for (unsigned i = 0; i < 4096; ++i) {
if (!drv.isBadBlock(i))
drv.eraseBlock(i);
}
}
}
Andy
15.09.2017
09:20:24
Dolphin
15.09.2017
09:22:18
а если настройки под NAND по-дефолту выставить?
Евгений
15.09.2017
09:41:31
по дефолту таймауты 0, просто работать не будет
Dolphin
15.09.2017
10:16:41
FSMC_Bank2->PCR2 = 0x00000018;
FSMC_Bank2->SR2 = 0x00000040;
FSMC_Bank2->PMEM2 = 0xFCFCFCFC;
FSMC_Bank2->PATT2 = 0xFCFCFCFC;
Так не будет?
Google
Dolphin
15.09.2017
10:18:39
а вижу, ок
Евгений
15.09.2017
13:17:42
Убрал флаг FMC_PCR2_PWAITEN, добавил ручное ожидание R/B и ручное же управление CE. Заработали прерывания во время ожидания
Странно это все...
Dolphin
15.09.2017
13:18:31
Хокейний
17.09.2017
14:57:34
Как искать блок/систему кнопок с фиксацией, среди который может быть нажата только одна?
metaclass
17.09.2017
15:23:26
переключатель этот советский называется п2к
а вот насчет интерлока это вопрос
http://zapadpribor.com/p2k-perekluchatel/
интересно, есть ли у них западные аналоги
shadowsoul
17.09.2017
15:25:50
заливаю пдф обширный по кнопкам и переключателям, западне
посмотрите тут
sifun
17.09.2017
15:25:54
есть но думаю давно сняты
shadowsoul
17.09.2017
15:26:24
может еесть
metaclass
17.09.2017
15:27:44
http://www.farnell.com/datasheets/104875.pdf
ищется частично по interlocking push button switch bank и похожим фразам
dimcha
17.09.2017
21:38:29
У кого есть опыт прошивки MTK65xx под линухом? MTKDroidTool под wine'ом не видит устройство, из-за этого не могу ROM в прошивку конвертнуть (кнопка неактивна). Может есть что-то консольное или весь чина-хакинг удел виндузятников?
Artem
18.09.2017
01:48:41
Nikita
18.09.2017
02:26:13
Помню проебался долго, пока не запучтил тулзу прд XP
Petr
18.09.2017
02:27:38
Виртуалки нынче изобрели
オレンジ
18.09.2017
04:20:17
Чайнахакинг лучше под виндой
shadowsoul
18.09.2017
04:22:55
чисто потому что китайские утилиты кривые как пиздец изначально
Google
dimcha
18.09.2017
07:04:39
Вы все правы. Adb дает дебаг андрюши, но дампом и конвертацией прошивок MTK он не занимается.
Виртуалки есть, но вопрос в решении задачи средствами линя.
Я смотрю на китайский софт и тихо охуеваю - таких говноподелий еще поискать надо. С элементрной обработкой ошибок и чувством прекрасного у парней ОГРОМНЫЕ проблемы. Для сохранении психики в стабильном состоянии использование китайского железа в своих разработках противопоказано.
shadowsoul
18.09.2017
07:07:32
dimcha
18.09.2017
07:08:59
При наличии анлим времени - с удовольствием написал бы сам.
Keroronsk
18.09.2017
10:31:49
кто-нибудь с PIC32 дело имел? Не могу настроить порт RG7 на выход (все остальные порты работают как надо). ANSELG=0, TRISG=0, LATG=FF. на выходе 0. что еще можно проверить?
kaktys
18.09.2017
12:18:49
кто знает аналог 75HC595 но на 12 или 16 бит, и что б не экзотика ?
sifun
18.09.2017
12:21:17
экзотика
Petr
18.09.2017
12:21:33
+
sifun
18.09.2017
12:22:00
может быть дешевле поставить стм8с003ф3п6
Petr
18.09.2017
12:22:21
+++
kaktys
18.09.2017
12:22:40
и пины для прошивки каждого, а надо 10
Petr
18.09.2017
12:22:57
Плис простую?