Pull to refresh
35
0

никто

Send message
я об этом и написал :-)
одну две команды все равно вручную посылать нужно…
Опять таки DMA это хорошо, но все таки нужно понимать как происходит работа изнутри…
можно здоровую критику?

. . .
;----	первый способ
	LDR      r2, text1	; загружаем адрес текста 1 в регистр r2
. . .

text1	DCD	txt		; содержит адрес "Hello"
. . .

txt	DCB	 "Hello",0	; содержит буквы H, e, l, l, o и 0


помоему конструкция излишне сложная… можна написать проще:
. . .
;----	первый способ
	LDR      r2, =txt	; загружаем адрес txt в регистр r2
. . .

txt	DCB	 "Hello",0	; содержит буквы H, e, l, l, o и 0

то есть промежуточная константа text1 просто не нужна!
и наверное он прав…
в какой то мере одно это достоинство перевешивает все его недостатки :-)
и если «вдруг» реклама вернется — то большинство точно будет мигрировать на другие браузеры…
вот и решил на хабре написать…
все таки ресурс достаточно хорошо индексируется поисковиками, может быть кто то набредет до статьи раньше чем напишет не правильный код…
тем более что неправильно написанный код еще и нервов портит — потому что вроде работает, но что нить изменишь и уже не работает!..
посмотрел бегло по даташитам
STM32F1, STM32F2, STM32F4 — имеют одинаковый по функциональности SPI
в STM32F3 — по все видимости вообще организован FIFO 3x32!!!

про 16 бит у меня написано, да и не ставилась цель рассказывать про битность… это узкоцелевая статья — про работу флагов интерфейса SPI

DMA и прерывания вы не сможете удобно и эффективно использовать при передаче «солянки» из данных и команд…

Что за дисплей подключали?
это понятно, у меня у самого примерно такая ситуация была…
проблемы стали возникать когда я стал менять скорость SPI — вся работа с дисплеями стала рушиться! и вот тогда я понял что работаю с дисплеем не правильно…

сейчас у меня все модули работы с дисплеями работают как минимум от 1 мгц до максимума… — это как раз самый лучший показатель что все написано верно…
а может быть сделаете статью про написание ОС для арм процессоров?

интересует привилегированный и обычный режимы процессора, минимальные функции и т.д.
:-(((

жаль…
интересна сама система!
очень интересно, плюсую, пошел смотреть исходники
(написал чтобы потом иметь возможность комментировать)
я вообще не понял анекдота про блокировки :-(

в гугле одна из первых ссылок rutracker.unblock.ga — это левак или их не будут блокировать?
имхо достаточно регистрировать новые домены каждый месяц и по поиску их будут находить…

p.s. сам пользовался рутрекером крайне редко — поэтому плагин обхода не ставлю, и судя по ссылке выше это и не нужно…
именно так,

вообще на территории РФ любая организация является налоговым агентом по отношению к физ. лицу — так что именно она должна удерживать НДФЛ…
во всех случаях когда НДФЛ не был удержан — вы должны сделать это сами подав декларацию в налоговую…

p.s. вопросы проверки подали вы или не подали — я не обсуждаю…
в общем реализовал ваш алгоритм со сдвигом

правда с небольшими уточнениями
.global LCD_PIXEL
LCD_PIXEL:                       
		CMP	R0, 48		@ проверим допустимость координат
		BPL	LCD_PIXEL_exit
		CMP	R1, 84
		BPL	LCD_PIXEL_exit

                PUSH	{R1, R3, R4}

		@ вычисляем адрес пиксела
		LDR	R3, =LCD_BUFF
		ADD	R3, R3, R1       @ ADR + x

		LSR	R1, R0, 3  	 @  y >> 3
		MOV	R4, 84           @
		MLA	R3, R1, R4, R3   @ R3=(y>>3)*84+ADR+x 

		LDRB	R1, [R3]         @ читаем байт бита

                @ новый вариант наложения маски символа (1 - ставим, 0 - стираем)		
		AND	R4, R0, 0x07
		ROR	R1, R1, R4
		RSB     R4, R4, 32
        	BFI	R1, R2, 0, 1
		ROR	R1, R1, R4		
		STRB	R1, [R3]	@ запись в буфер

	        POP	{R1, R3, R4}

LCD_PIXEL_exit:
		BX	LR


прирост скорости 80%!!! (38225 тактов на рисование третьего слайда)
Такую проверку координат не хочу:
lsr r3, r0, #3
mov r4, #48
mla r3, r4, r3, r1
movw r1, #(48/8*84)
cmp r3, r1
blt 1f

это не проверка координат а скорее проверка выхода за границы буфера экрана… да и при попытке задать допустимый параметр Y но не допустимый по X — потом замучаешься отлаживаться

а вот циклический сдвиг — это красивое решение!!!
ldrb r1, [r3]
ror r1, r1, r0
rsb r0, r0, #0
bfi r1, r2, #0, #1
ror r1, r1, r0
strb r1, [r3]


постараюсь попробовать сегодня вечером!
на счет стандартного ABI — спасибо за подсказку, посмотрел, подумаю…
просто на асме я давно программирую (это на ARM недавно стал смотреть по серьездному), и у меня всегда низшие регистры являются расходными…
а вот сколько их будет — я себя не ограничиваю…

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

в принципе список за исключением некоторых пунктов не такой уж и сложный, по крайней мере у меня в голове задача структурируется, и я потихоньку функциональность напишу… но вот что касается интерфейса программы — то тут я точно не смогу :-((( (ну по меньшей мере пока не начну погружаться по серьездному)
По поводу BIC / BFI — посмотрю, просто сам ассемблер только изучаю, и ресурсов в которых бы понятно объяснялась логика команд в сети от совсем мало до совсем нет (хотелось бы видеть примеры вида: на входе / на выходе, а везде только названия из которых не всегда понятно что они собой представляют) — на счет того что написано по Си-шному — в точку! со своего старого исходника на Си и делал! :-)

Теперь когда у меня появился вывод на LCD — у меня как раз запланировано изучение команд, я наметил себе следующую часть публикации именно по командам, чтобы полностью разобрать какая и как работает…

На счет сохранения регистров — ну по процедурам _INIT согласен, на счет других же — абсолютно не согласен! процедуры тогда и только тогда хороши — когда не нужно думать о том что будет после них… в том же драйвере дисплея есть подпрограммы проверки флагов, управления линиями управления дисплея — вот они регистры не сохраняют, и это уже моя забота была за этим следить… а все что отдается на .global — должно гарантировано не портить регистры (ну по крайней мере где это логично)

А какие из существующих подходят для ассемблера (я не про подсветку кода говорю это как раз низкоприоритетное желание)?
у меня вот получился следующий список желания (я еще не сортировал по очередности и нужности):
1) Подсветка кода ассемблера
2) Авто дополнение вводимого кода (PUSH -> POP, IT — IT Block, и т.д.)
3) Контроль глобальных и локальных меток
4) Подсказка по инструкциям ассемблера
5) Контроль параметров подпрограмм
6) Поддержка программ как модулей с возможностью их добавления и удаления
7) Контроль в редакторе опций условного исполнения
8) Перенаправление сообщений консоли на себя, компиляция и компановка при помощи GNU AS
9) Файлменеджер проекта с крупными значками
10) Закладки в файл менеджере (переход в нужную папку одним кликом)
11) Переход на метку программы в редакторе
12) Автоматическое формирование списка констант модуля и дописывание в начало
13) Система помощи по регистрам настройки микроконтроллера
14) Мастеркода (автосоставитель кода) — например для настройки GPIO, SPI, DCMI и т.д.
15) Эмуляция исполнения кода
16) Настраиваемые окна среды (все! а не только окно редактора)
17) Отладка (пока не понимаю как, но как задача висит)
К читателям:

вопрос на засыпку — в следующей части просто рассмотреть работу SPI или не тянуть кота за хвост и подключить какой нить простой SPI дисплей?
:-)
ну это понятно…

но ведь это вопросы безопасности — а значит нужно всегда рассматривать самый крайний с точки зрения негатива случай…
просто мне бы очень не хотелось чтобы кто-то обосновывал мою подлинность на основании данных о фактах которые ко мне лично никак не относятся…

а если я работаю в клиентском отделе, и у меня за стойкой в день по 150 человек проходят?

а если работа носит разъездной характер?

а если кому то понадобиться меня «заменить» — то отсканировать блютуз устройста в моем окружении, и wifi сети — сможет ВООБЩЕ ЛЮБОЙ ПЕРВОКЛАСНИК! причем потом в телефоны друзей запишет нужные (отсканированные) имена телефонов, в роутер — имя точки доступа — и что ???? — точность 90% говорите ?!!!

помоему гугл уже «воспитывали» не тему сканирования сетей wi-fi (к сожалению не знаю чем закончилось), — они теперь хотят еще этот процесс делать на телефоне каждого пользователя?

тогда фактически это система контроля за моим положением, моими перемещениями, контроль за тем с кем я общаюсь… вы тут переживаете за то что большой брат за вами следит? по сравнению с гуглом — слежка большого брата это детские игры в шпионов!

Пароль, пароль, и еще раз пароль…

а все остальное — это баловство!
мда…
ну вот я например пользуюсь какими то программами на работе, рядом у меня коллеги, wifi… все ОК, коэффициент доверия будет 90…
потом банально поехал в отпуск… и все ?!!!

ИМХО совсем сырая идея… совсем, совсем сырая… которая скорее всего скатится до банального сканирования лица (уже есть в андроид), сетчатки глаза (со всеми замечаниями, что уже написаны в комментариях выше), отпечатков пальцев (для телефонов в которых сканер отпечатков есть)…
ой, правильнее
CMP R1, R2
нужно было сделать в цикле…

Information

Rating
Does not participate
Location
Чукотский АО, Россия
Date of birth
Registered
Activity