не работает. Без `sysreset` - тоже не работает. В обоих случаях USB не отключается в системе (т.е. подтяжка остается поднятой). Здесь пишут, что практически такой же код работает!
Что за чертовщина?
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805356#p3805356"]Без `sysreset` - тоже не работает.[/uquote]C помощью SysReset ты попадаешь в аппаратный ресет и всё что написано дальше не имеет смысла. Если ты аппаратно поставишь Boot0 в "1", то попадёшь в загрузчик. Либо ты программно переходишь в загрузчик, то должен привести чип в начальное состояние, сделать ремап, установить стек и перейти по адресу.
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805356#p3805356"]В обоих случаях USB не отключается в системе (т.е. подтяжка остается поднятой).[/uquote]А чего бы ей самой отключиться? Её руками надо отключить.
VladislavS писал(а):C помощью SysReset ты попадаешь в аппаратный ресет
Не попадаю! Это - функция начальной инициализации таймеров и периферии. Просто пробовал ее вызывать, чтобы сбросить все прерывания и таймеры в умолчательное значение.
VladislavS писал(а):Если ты аппаратно поставишь Boot0 в "1", то попадёшь в загрузчик.
В смысле - можно просто подать на эту ножку 1 и перезагрузить МК? Но у меня там нет конденсатора, боюсь, не успеет. Но можно попробовать.
VladislavS писал(а):должен привести чип в начальное состояние, сделать ремап, установить стек и перейти по адресу
Вот и пытаюсь, но, судя по тому, что он либо просто перезагружается, либо где-то виснет, что-то идет не так.
VladislavS писал(а):Её руками надо отключить.
точно, сейчас попробую.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805441#p3805441"]Вот и пытаюсь, но, судя по тому, что он либо просто перезагружается, либо где-то виснет, что-то идет не так.[/uquote]Отладчик? Не, не слышали.
VladislavS, хватит уже со всякой ересью приставать! Я не пользуюсь внутрисхемной отладкой и считаю ее бредом!
Итак, отключение подтяжки вручную (USB_BCDR_DPPU) ничего не меняет.
Если выкинуть отмену прерываний (__disable_irq()), то МК просто перезагружается. Если же не выкидывать — зависает.
Буду пробовать ногу в 1 выставить. Жаль, сразу кондер туда не подпаял.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805446#p3805446"]Я не пользуюсь внутрисхемной отладкой и считаю ее бредом![/uquote]
Ну давай, давай
Добавлено after 1 minute 32 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805446#p3805446"]Итак, отключение подтяжки вручную (USB_BCDR_DPPU) ничего не меняет.[/uquote]Подождал пока хост заметит отключение?
[2008912.252304] usb 1-7: USB disconnect, device number 17
[2008912.252551] pl2303 ttyUSB0: error sending break = -19
[2008912.252767] pl2303 ttyUSB0: pl2303 converter now disconnected from ttyUSB0
[2008912.252789] pl2303 1-7:1.0: device disconnected
[2008913.702173] usb 1-7: new full-speed USB device number 18 using xhci_hcd
[2008913.816199] usb 1-7: device descriptor read/64, error -71
[2008914.033219] usb 1-7: device descriptor read/64, error -71
[2008914.249225] usb 1-7: new full-speed USB device number 19 using xhci_hcd
[2008914.363118] usb 1-7: device descriptor read/64, error -71
[2008914.585212] usb 1-7: device descriptor read/64, error -71
[2008914.687252] usb usb1-port7: attempt power cycle
[2008915.315111] usb 1-7: new full-speed USB device number 20 using xhci_hcd
[2008915.315270] usb 1-7: Device not responding to setup address.
[2008915.519278] usb 1-7: Device not responding to setup address.
Судя по разнице времени, оно таки не зависает, а пытается что-то сделать: активирует подтяжку USB и ничего не происходит.
ногу Boot0 установить в единицу нельзя: это не Boot1, на ней нет GPIO! Схемотехнически я положился на то, что в интернетах у народа "все работает", думал программно переходить в DFU, чтобы новый вариант прошивки записать, пока буду все это дело писать и отлаживать. Для stlink'а тоже выводы оставил, но что-то он глючит у меня: то ли провода плохие, то ли еще что (да и если вдруг повезет, и прошивка прошьется и проверится, то reset'а все равно не происходит и приходится вручную проводочком об землю).
Похоже, надо колхозить проводок между свободной ногой и boot0 + кондер на 0.1мкФ туда.
Последний раз редактировалось Eddy_Em Ср мар 11, 2020 17:43:45, всего редактировалось 1 раз.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
VladislavS, спасибо! Заработало!
Вот не пойму: на кой черт все в интернетах пишут __disable_irq()?
Вставил ваш код после отключения прерываний - не заработало. Убрал отключение прерываний - все в порядке!
Руками дергать пуллап не нужно.
В общем, вот такой код полностью работает как надо:
Теперь остается лишь написать `make dfuboot`, а после заливки нажать кнопочку reset. И никаких внешних приблуд не нужно...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда. Я на гитхабе, в ЖЖ
RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; Не обязательно. Ремап без него работает.
Добавлено after 6 minutes 50 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805459#p3805459"]Вот не пойму: на кой черт все в интернетах пишут __disable_irq()?[/uquote]Процессоры разные бывают. Где-то надо, где-то нет.
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3805459#p3805459"]Руками дергать пуллап не нужно.[/uquote]Да, его RCC_APB1RSTR_USBRST сбрасывает.
Добрый день вопрос FSMC, а именно по линиям Ax и NEy.
Как я понял, от x и y зависит адрес к которому будем обращаться.
В одном appnote нашел такую фразу.
Example: with NE2 and A4, the LCD base address will be 0x6400 0000 and 0x6400 0020;
with NE4 and A0, the LCD base address will be 0x6C00 0000 and 0x6C00 0002.
[uquote="baghear",url="/forum/viewtopic.php?p=3823837#p3823837"]Подскажите как производить расчет адреса?[/uquote]
4 банка по 64МБ, базовый адрес - 0x6000'0000. Для NE2 и A4 добавляем 64МБ и устанавливаем 4-й бит, но это для 8-ми битного доступа, для 16-ти битного еще сдвигаем его на 1 влево.
Что касается банков и вывода NEx понял.
Первый банк в свою очередь делится на 4 подбанка, это как-то влияет на адрес?
У меня NE1 A18, правильно ли понял для 16 битного доступа 0x6000'0000 и 0x60080000?
[uquote="baghear",url="/forum/viewtopic.php?p=3823861#p3823861"]Первый банк в свою очередь делится на 4 подбанка, это как-то влияет на адрес?[/uquote]
Я не совсем правильно выразился, говоря про 4 банка я имел в виду именно подбанки в первом банке для NOR/SRAM.
У меня NE1 A18, правильно ли понял для 16 битного доступа 0x6000'0000 и 0x60080000?
LCD - указатель на экземпляр структуры, лежащий по адресу 0x60080000, соответственно, LCD->LCD_REG - первые 16 байт по этому адресу, LCD->LCD_RAM - следующие 16 байт. Т.е. по сути, двухбайтовые данные, лежащие по адресам 0x60080000 и 0x60080002 соответственно.
[uquote="WiseLord",url="/forum/viewtopic.php?p=3823919#p3823919"]Т.е. по сути, двухбайтовые данные, лежащие по адресам 0x60080000 и 0x60080002 соответственно.[/uquote]
И работать оно будет только для A0.
Добавлено after 4 minutes 7 seconds:
[uquote="baghear",url="/forum/viewtopic.php?p=3823906#p3823906"]