Changes for page API контроллеров AZ®
Last modified by Max on 2025/03/02 15:18
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -505,24 +505,24 @@ 505 505 ;.................................. 506 506 {{/code}} 507 507 508 -== 017: Getramdisk size,large==508 +== **017: Получить размер псевдодиска, большой** == 509 509 510 - Therearetwocommandstoget the size of a pseudo-disk,i.e.theAZnfile-imagemountedonthe selected pseudo-drive.511 -\\ IftheOSbeing used(oraprogramworkingwithdiskswithout an OS)canworkwithlarge(morethan32M)disks,youshouldusethecommandwith the code017.Thesequence of actions:resetthecontroller(p. 3.1),selectthedrive(p. 3.2)andsendthecode017to the CSR,andthen,withoutanywaiting,readfromDRfirstthe lower word,andthenthehigherwordofthesizeofthe selected drive(image file).512 -\\ IftheOSyouareusingcannotworkwithdiskslarger than32M(RT-11),youshouldusethe007command-getthepseudo-disksizewithalimit of up to32M.Thesteps are similar:resetthe controller,selectthe disk,sendthe007 code to theCSRandreade wordofthepseudo-disksize fromDR.Ifthesizeoftheimagefilemountedontheselectedpseudo-driveis larger than65534blocks,thecontrollerreturnsthenumber65534instead of this "large" size.Weremindyouthat the number65535isusedinsomeplacesforspecialpurposesandcannotbe the disk size.513 -\\ Wealsoremindyouthatiftheimagefileis not mounted on this drive,thesequenceofactionswill not work(command001selectdevice)andtheprogramexecutionwillsimplynotreachthis point.Therefore,thesecommandsdonotprovidefor errors.514 -\\ Exampleofaprogramwith large disks510 +Есть две команды получения размера псевдодиска, т.е. смонтированного на выбранный псевдопривод AZn файл-образа. 511 +\\Если используемая ОС (или программа, работающая с дисками без ОС) умеет работать с большими (больше 32М) дисками, следует пользоваться командой с кодом 017. Последовательность действий: сбросить контроллер (п. 3.1), выбрать накопитель (п. 3.2) и переслать в CSR код 017, а затем, без каких-либо ожиданий, считать из DR сначала младшее, и следом за ним старшее слово размера выбранного накопителя (файл-образа). 512 +\\Если используемая ОС не умеет работать с дисками бОльшими, чем 32М (RT-11), следует пользоваться командой 007 - получить размер псевдодиска с ограничением до 32М. Действия похожие: сбрасываем контроллер, выбираем диск, посылаем в CSR код [[007>>doc:||anchor="H007:41F43E43B44344743844244C44043043743C43544043F44143543243443E43443844143A430"]] и считываем из DR одно слово размера псевдодиска. Если размер файл-образа, смонтированного на выбранный псевдопривод, больше 65534 блоков, вместо этого "большого" размера, контроллер возвращает число 65534. Напоминаем, что число 65535 кое-где используется в специальных целях и не может быть размером диска. 513 +\\Также напоминаем, что если на этот накопитель не смонтирован файл-образ, последовательность действий не пройдет (команда 001 выбор устройства) и исполнение программы до этого места просто не дойдет. Поэтому ошибок у этих команд не предусмотрено. 514 +\\Пример программы с большими дисками 515 515 516 516 {{code language="assembler"}} 517 517 ;...................................... 518 518 519 -GetBig=017; Getthe"big"disksize519 +GetBig=017; Получить "большой" размер диска 520 520 521 -; Fromfragment3.2 (diskselection)wehaveinR3522 -; DR address(177222)521 +; От фрагмента 3.2 (выбор диска) у нас в R3 остался 522 +; адрес DR (177222) 523 523 524 - MOV #GetBig,-(R3); sendthe command525 - TST (R3)+; returntheaddressinR3backtoDR524 + MOV #GetBig,-(R3); пошлем команду 525 + TST (R3)+; вернем адрес в R3 назад, на DR 526 526 MOV @R3,BigSiz 527 527 MOV @R3,BigSiz+2 528 528 ;...................................... ... ... @@ -529,26 +529,27 @@ 529 529 {{/code}} 530 530 531 531 532 -== 020: Getextendeddiagnosticcode==532 +== **020: Получить расширенный код диагностики** == 533 533 534 - Commandcode020,afterresettingthecontroller,youshouldissuethiscommand in theCSRandthenreadtwowordsofextendeddiagnosticsfromDR.Thecommand is instant,nowaitingis required.534 +Код команды 020, после сброса контроллера следует выдать эту команду в CSR и затем прочитать два слова расширенной диагностики из DR. Команда мгновенная, ожидание не требуется. 535 535 536 536 537 -== 027: GetfirmwareversionAZ STM32 ==537 +== **027: Получить версию firmware AZ STM32** == 538 538 539 -Command code 027, returns 2 words 540 -\\first word - 06404 = high byte 13. this is the firmware version, low byte 4. this is the hardware version - i.e. AZБК in this case second word - 037 = this is the maximum mountable disk - 31. 539 +Код команды 027, возвращает 2 слова 540 +\\первое слово - 06404 = старший байт 13. это версия прошивки, младший байт 4. это версия железа - те AZБК в данном случае 541 +второе слово - 037 = это максимальный монтируемый диск - 31. 541 541 542 542 543 543 {{code language="assembler"}} 544 544 ;------------------------------------------------------------- 545 -; gettingSTM32firmware version-resultinR1 R1=0error546 +; получение версии прошивки STM32 - результат в R1 R1=0 ошибка 546 546 GTSTMV: MOV #AZ$CSR,R1 547 -1$: CLR (R1) ; Send"Reset"command548 - TSTB (R1) ; Checkcontrollerreadinessконтроллера549 - BPL 1$ ; Ifnot ready,resetagain548 +1$: CLR (R1) ; Пошлем команду "Сброс" 549 + TSTB (R1) ; Проверим готовность контроллера 550 + BPL 1$ ; Если не готов, сбрасываем еще 550 550 mov #27,(R1) 551 - TST (R1)+ ; Checkforerror552 + TST (R1)+ ; Проверяем на ошибку 552 552 BMI 2$ 553 553 mov (R1),R1 554 554 return ... ... @@ -558,10 +558,10 @@ 558 558 {{/code}} 559 559 560 560 561 -== 030: Nooperation==562 +== **030: Нет операции** == 562 562 563 - Themainpurposeofthiscommandistosettheinterrupt enable bit from the controller.Thecommandtransferstheinterrupt enable bit,whichisinthesamewordwith it,butisnotpartofit(remember,thecommandislocatedin bitsD0 - D5,andtheinterruptenablebitisD6),tothecorrespondingtriggerofthecontrolleranddoesnotaffecttheprocesses in the controller in any other way.Controlofthistriggerworkseveninthe"Thinking,pleasedonot interfere"state,andthisisthemainfeature of the"nooperation"command.564 -\\ Thecommandhasthe code0030.Sendingthecode0130totheCSRwill enable interrupts from the controller,sendingthecode0030willdisable them.Anexampleisnotgivendue to its triviality.564 +Основное назначение этой команды - устанавливать бит разрешения прерываний от контроллера. Команда передает бит разрешения прерывания, который находится с ней в одном слове, но не входит в ее состав (напоминаем, команда располагается в битах D0 - D5, а бит разрешения прерываний - D6), в соответствующий триггер контроллера и больше никак не влияет на процессы в контроллере. Управление этим триггером работает даже в состоянии "Думаю, прошу не мешать", и это главная особенность команды "нет операции". 565 +\\Команда имеет код 0030. Посылка в CSR кода 0130 разрешит прерывания от контроллера, посылка кода 0030 запретит их. Пример не приводится вследствие тривиальности его. 565 565 566 566 567 567 = **Блок команд работы с энергонезависимой памятью** =